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

Reply via email to