[pypy-svn] r34099 - pypy/dist/pypy/translator/asm/ppcgen
niko at codespeak.net
niko at codespeak.net
Fri Nov 3 14:13:43 CET 2006
Author: niko
Date: Fri Nov 3 14:13:42 2006
New Revision: 34099
Modified:
pypy/dist/pypy/translator/asm/ppcgen/ppc_assembler.py
Log:
(mwh, niko)
Fix computation of 32bit constants on PPC... precedence error.
Modified: pypy/dist/pypy/translator/asm/ppcgen/ppc_assembler.py
==============================================================================
--- pypy/dist/pypy/translator/asm/ppcgen/ppc_assembler.py (original)
+++ pypy/dist/pypy/translator/asm/ppcgen/ppc_assembler.py Fri Nov 3 14:13:42 2006
@@ -778,20 +778,26 @@
def ha(w):
if (w >> 15) & 1:
- return w >> 16 + 1
+ return (w >> 16) + 1
else:
return w >> 16
def lo(w):
return w & 0x0000FFFF
+def la(w):
+ v = w & 0x0000FFFF
+ if v & 0x8000:
+ return -((v ^ 0xFFFF) + 1) # "sign extend" to 32 bits
+ return v
+
class MyPPCAssembler(PPCAssembler):
def load_word(self, rD, word):
self.addis(rD, 0, hi(word))
self.ori(rD, rD, lo(word))
def load_from(self, rD, addr):
self.addis(rD, 0, ha(addr))
- self.lwz(rD, rD, lo(addr))
+ self.lwz(rD, rD, la(addr))
def b(n):
r = []
More information about the Pypy-commit
mailing list