]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
ARM: Fix BLX encoding for Thumb interworking calls.
authorMike Pall <mike>
Sun, 2 Oct 2016 12:24:04 +0000 (14:24 +0200)
committerMike Pall <mike>
Sun, 2 Oct 2016 12:24:04 +0000 (14:24 +0200)
Thanks to Charles Baylis.

src/lj_emit_arm.h

index 7f73698db8a4c620a22b9f6a60f448e83db5dcb8..610bc6c5b0ff4d1d90b4baa4a1452f934a2b3dc4 100644 (file)
@@ -273,7 +273,7 @@ static void emit_call(ASMState *as, void *target)
   ptrdiff_t delta = ((char *)target - (char *)p) - 8;
   if ((((delta>>2) + 0x00800000) >> 24) == 0) {
     if ((delta & 1))
-      *p = ARMI_BLX | ((uint32_t)(delta>>2) & 0x00ffffffu) | ((delta&2) << 27);
+      *p = ARMI_BLX | ((uint32_t)(delta>>2) & 0x00ffffffu) | ((delta&2) << 23);
     else
       *p = ARMI_BL | ((uint32_t)(delta>>2) & 0x00ffffffu);
   } else {  /* Target out of range: need indirect call. But don't use R0-R3. */