[pypy-commit] pypy ppc-jit-backend: merge with PPC64 code
hager
noreply at buildbot.pypy.org
Tue Oct 18 14:17:08 CEST 2011
Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r48202:2bf69d152817
Date: 2011-10-18 14:16 +0200
http://bitbucket.org/pypy/pypy/changeset/2bf69d152817/
Log: merge with PPC64 code
diff --git a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
--- a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
@@ -109,7 +109,7 @@
if IS_PPC_32:
self.mc.stwx(source_reg.value, 0, 0)
else:
- self.mc.std(source_reg.value, 0, 0)
+ self.mc.stdx(source_reg.value, 0, 0)
def _save_nonvolatiles(self):
for i, reg in enumerate(NONVOLATILES):
@@ -161,17 +161,21 @@
# save r31 at the bottom of the stack frame
self.mc.stw(r.SPP.value, r.SP.value, WORD)
else:
- self.mc.stdu(1, 1, -frame_depth)
- self.mc.mflr(0)
- self.mc.std(0, 1, frame_depth + 4)
+ self.mc.stdu(r.SP.value, r.SP.value, -frame_depth)
+ self.mc.mflr(r.r0.value)
+ self.mc.std(r.r0.value, r.SP.value, frame_depth + 2 * WORD)
offset = GPR_SAVE_AREA + WORD
# compute spilling pointer (SPP)
self.mc.addi(r.SPP.value, r.SP.value, frame_depth - offset)
self._save_nonvolatiles()
# save r31, use r30 as scratch register
# this is safe because r30 has been saved already
- self.mc.lwz(r.r30.value, r.SP.value, WORD)
- self.mc.stw(r.r30.value, r.SPP.value, WORD * len(NONVOLATILES))
+ if IS_PPC_32:
+ self.mc.lwz(r.r30.value, r.SP.value, WORD)
+ self.mc.stw(r.r30.value, r.SPP.value, WORD * len(NONVOLATILES))
+ else:
+ self.mc.ld(r.r30.value, r.SP.value, WORD)
+ self.mc.std(r.r30.value, r.SPP.value, WORD * len(NONVOLATILES))
# branch to loop code
curpos = self.mc.currpos()
offset = target_pos - curpos
More information about the pypy-commit
mailing list