summaryrefslogtreecommitdiff
path: root/arm
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-05-18 08:21:12 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-05-18 08:21:12 +0000
commite521f0bc060ead051102e4d68b98bb40ecc802b3 (patch)
tree39a1e32b826f17e359d22fc837a59fcac7db9aab /arm
parent521dac4e0d950e6128b266b27eac1875d79200f1 (diff)
Use freg <-> 2 ireg move instructions to fix up calling conventions
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1895 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'arm')
-rw-r--r--arm/PrintAsm.ml6
1 files changed, 2 insertions, 4 deletions
diff --git a/arm/PrintAsm.ml b/arm/PrintAsm.ml
index 48943e9..1f053df 100644
--- a/arm/PrintAsm.ml
+++ b/arm/PrintAsm.ml
@@ -432,11 +432,9 @@ let fixup_conventions oc dir tyl =
let fixup f i1 i2 =
match dir with
| Incoming -> (* f <- (i1, i2) *)
- fprintf oc " fmdlr %a, %a\n" freg f ireg i1;
- fprintf oc " fmdhr %a, %a\n" freg f ireg i2
+ fprintf oc " fmdrr %a, %a, %a\n" freg f ireg i1 ireg i2
| Outgoing -> (* (i1, i2) <- f *)
- fprintf oc " fmrdl %a, %a\n" ireg i1 freg f;
- fprintf oc " fmrdh %a, %a\n" ireg i2 freg f in
+ fprintf oc " fmrrd %a, %a, %a\n" ireg i1 ireg i2 freg f in
match tyl with
| Tfloat :: Tfloat :: _ ->
fixup FR0 IR0 IR1; fixup FR1 IR2 IR3; 4