[pypy-svn] pypy arm-backend-2: Fix an issue with a wrongly calculated offset size to choose an imm or register based operation
bivab
commits-noreply at bitbucket.org
Thu Dec 30 19:45:12 CET 2010
Author: David Schneider <david.schneider at picle.org>
Branch: arm-backend-2
Changeset: r40290:167ec958fd2f
Date: 2010-12-29 20:34 +0100
http://bitbucket.org/pypy/pypy/changeset/167ec958fd2f/
Log: Fix an issue with a wrongly calculated offset size to choose an imm
or register based operation
diff --git a/pypy/jit/backend/arm/codebuilder.py b/pypy/jit/backend/arm/codebuilder.py
--- a/pypy/jit/backend/arm/codebuilder.py
+++ b/pypy/jit/backend/arm/codebuilder.py
@@ -60,23 +60,19 @@
self.MOV_rr(reg.pc.value, reg.ip.value, cond=c)
def B_offs(self, target_ofs, c=cond.AL):
- target = target_ofs-arch.PC_OFFSET/2
pos = self.currpos()
if target_ofs > pos:
raise NotImplementedError
else:
+ target_ofs = pos - target_ofs
+ target = WORD + target_ofs + arch.PC_OFFSET/2
if target >= 0 and target <= 0xFF:
- pos = self.currpos()
- target_ofs = pos - target_ofs
- target = WORD + target_ofs + arch.PC_OFFSET/2
self.SUB_ri(reg.pc.value, reg.pc.value, target, cond=c)
else:
assert c == cond.AL
self.LDR_ri(reg.ip.value, reg.pc.value, cond=c)
self.SUB_rr(reg.pc.value, reg.pc.value, reg.ip.value, cond=c)
- pos = self.currpos()
- target_ofs = pos - target_ofs
- target = WORD + target_ofs + arch.PC_OFFSET/2
+ target += 2 * WORD
self.write32(target)
def BL(self, target, c=cond.AL):
@@ -176,6 +172,7 @@
def copy_to_raw_memory(self, addr):
self._copy_to_raw_memory(addr)
+ self._dump(addr, "jit-backend-dump", 'arm')
def currpos(self):
return self.get_relative_pos()
More information about the Pypy-commit
mailing list