Author: David Schneider <[email protected]>
Branch: arm-backend-2
Changeset: r51774:b2886fd16756
Date: 2012-01-23 14:45 +0100
http://bitbucket.org/pypy/pypy/changeset/b2886fd16756/
Log: implement the BX operation for jumps
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
@@ -163,12 +163,11 @@
self.write32(cond << 28 | 0xEF1FA10)
def B(self, target, c=cond.AL):
- if c == cond.AL:
- self.LDR_ri(reg.pc.value, reg.pc.value, -arch.PC_OFFSET / 2)
- self.write32(target)
- else:
- self.gen_load_int(reg.ip.value, target, cond=c)
- self.MOV_rr(reg.pc.value, reg.ip.value, cond=c)
+ self.gen_load_int(reg.ip.value, target, cond=c)
+ self.BX(reg.ip.value, c=c)
+
+ def BX(self, reg, c=cond.AL):
+ self.write32(c << 28 | 0x12FFF1 << 4 | (reg & 0xF))
def B_offs(self, target_ofs, c=cond.AL):
pos = self.currpos()
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit