summaryrefslogtreecommitdiff
path: root/rts/PrimOps.cmm
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2013-09-17 21:48:39 +0100
committerSimon Marlow <marlowsd@gmail.com>2013-10-01 11:10:08 +0100
commit11b5ce550d1a9bc84dd97629e1cca0b356054898 (patch)
tree5446e455f6165f50291c8877fdead17b74cae13f /rts/PrimOps.cmm
parent56084d76eb1b57ad96a9e1c55f3d3e2d134f98d5 (diff)
downloadhaskell-11b5ce550d1a9bc84dd97629e1cca0b356054898.tar.gz
Remove use of R9, and fix associated bugs
We were passing the function address to stg_gc_prim_p in R9, which was wrong because the call was a high-level call and didn't declare R9 as a parameter. Passing R9 as an argument is the right way, but unfortunately that exposed another bug: we were using the same macro in some low-level Cmm, where it is illegal to call functions with arguments (see Note [syntax of cmm files]). So we now have low-level variants of STK_CHK() and STK_CHK_P() for use in low-level Cmm code.
Diffstat (limited to 'rts/PrimOps.cmm')
-rw-r--r--rts/PrimOps.cmm2
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm
index e278bb70ab..e539c7cde3 100644
--- a/rts/PrimOps.cmm
+++ b/rts/PrimOps.cmm
@@ -2069,7 +2069,7 @@ stg_noDuplicatezh /* no arg list: explicit stack layout */
jump %ENTRY_CODE(Sp(0)) [];
}
- STK_CHK(WDS(1), stg_noDuplicatezh);
+ STK_CHK_LL (WDS(1), stg_noDuplicatezh);
// leave noDuplicate frame in case the current
// computation is suspended and restarted (see above).