diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-03-01 15:32:13 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-03-01 15:32:13 +0000 |
commit | 5020a5a07da3fd690f5d171a48d0c73ef48f9430 (patch) | |
tree | 3ddd75a3ef65543de814f2e0881f8467df73e089 /powerpc/PrintAsm.ml | |
parent | f401437a97b09726d029e3a1b65143f34baaea70 (diff) |
Revised Stacking and Asmgen passes and Mach semantics:
- no more prediction of return addresses (Asmgenretaddr is gone)
- instead, punch a hole for the retaddr in Mach stack frame and
fill this hole with the return address in the Asmgen proof.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2129 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'powerpc/PrintAsm.ml')
-rw-r--r-- | powerpc/PrintAsm.ml | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/powerpc/PrintAsm.ml b/powerpc/PrintAsm.ml index c9203ec..152a4f7 100644 --- a/powerpc/PrintAsm.ml +++ b/powerpc/PrintAsm.ml @@ -536,7 +536,8 @@ let print_instruction oc tbl pc fallthrough = function fprintf oc "%s jumptable [ " comment; List.iter (fun l -> fprintf oc "%a " label (transl_label l)) tbl; fprintf oc "]\n"; - fprintf oc " addis %a, %a, %a\n" ireg GPR12 ireg r label_high lbl; + fprintf oc " slwi %a, %a, 2\n" ireg GPR12 ireg r; + fprintf oc " addis %a, %a, %a\n" ireg GPR12 ireg GPR12 label_high lbl; fprintf oc " lwz %a, %a(%a)\n" ireg GPR12 label_low lbl ireg GPR12; fprintf oc " mtctr %a\n" ireg GPR12; fprintf oc " bctr\n"; |