summaryrefslogtreecommitdiff
path: root/rts/StgCRun.c
diff options
context:
space:
mode:
authorKarel Gardas <karel.gardas@centrum.cz>2011-07-06 21:05:13 +0200
committerManuel M T Chakravarty <chak@cse.unsw.edu.au>2011-08-10 22:03:41 +1000
commit454b34cb3b67dec21f023339c4d53d734af7605d (patch)
tree4983465d131fa3122ea364edc7e928b05b84dddf /rts/StgCRun.c
parent226541c418258e486399a6ebe3814bdac99af461 (diff)
downloadhaskell-454b34cb3b67dec21f023339c4d53d734af7605d.tar.gz
add support for STG floating-point regs using VFPv3
This patch adds mapping for STG floating point registers using ARM VFPv3. Since I'm using just d8-d11 also processors with just VFPv3-D16 implemented should work (e.g. NVidia Tegra2, Marvell Dove)
Diffstat (limited to 'rts/StgCRun.c')
-rw-r--r--rts/StgCRun.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/rts/StgCRun.c b/rts/StgCRun.c
index 6182775427..58db832a17 100644
--- a/rts/StgCRun.c
+++ b/rts/StgCRun.c
@@ -997,6 +997,7 @@ StgRun(StgFunPtr f, StgRegTable *basereg) {
* save callee-saves registers on behalf of the STG code.
*/
"stmfd sp!, {r4-r10, fp, ip, lr}\n\t"
+ "vstmdb sp!, {d8-d11}\n\t"
/*
* allocate some space for Stg machine's temporary storage.
* Note: RESERVER_C_STACK_BYTES has to be a round number here or
@@ -1027,6 +1028,7 @@ StgRun(StgFunPtr f, StgRegTable *basereg) {
/*
* restore callee-saves registers.
*/
+ "vldmia sp!, {d8-d11}\n\t"
"ldmfd sp!, {r4-r10, fp, ip, lr}\n\t"
: "=r" (r)
: "r" (f), "r" (basereg), "i" (RESERVED_C_STACK_BYTES)