[pypy-commit] pypy ppc-jit-backend: PPC64 _emit_call

edelsohn noreply at buildbot.pypy.org
Mon Oct 31 23:52:41 CET 2011


Author: edelsohn
Branch: ppc-jit-backend
Changeset: r48636:d6110e34f0eb
Date: 2011-10-31 18:52 -0400
http://bitbucket.org/pypy/pypy/changeset/d6110e34f0eb/

Log:	PPC64 _emit_call

diff --git a/pypy/jit/backend/ppc/ppcgen/opassembler.py b/pypy/jit/backend/ppc/ppcgen/opassembler.py
--- a/pypy/jit/backend/ppc/ppcgen/opassembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/opassembler.py
@@ -503,7 +503,17 @@
         remap_frame_layout(self, non_float_locs, non_float_regs, r.r0)
 
         #the actual call
-        self.mc.bl_abs(adr)
+        if IS_PPC_32:
+            self.mc.bl_abs(adr)
+        else:
+            self.mc.std(r.r2.value, r.SP.value, 40)
+            self.mc.load_from_addr(r.r0, adr)
+            self.mc.load_from_addr(r.r2, adr+WORD)
+            self.mc.load_from_addr(r.r11, adr+2*WORD)
+            self.mc.mtctr(r.r0.value)
+            self.mc.bctrl()
+            self.mc.ld(r.r2.value, r.SP.value, 40)
+
         self.mark_gc_roots(force_index)
         regalloc.possibly_free_vars(args)
         # readjust the sp in case we passed some args on the stack


More information about the pypy-commit mailing list