summaryrefslogtreecommitdiff
path: root/src/lj_emit_arm.h
diff options
context:
space:
mode:
authorMike Pall <mike>2016-10-02 14:24:04 +0200
committerMike Pall <mike>2016-10-02 14:24:04 +0200
commitfcc824489914bd4f23c3a49ff9f32fb23cd53c48 (patch)
tree5eb427209dec108657bf4a042acfab680978a389 /src/lj_emit_arm.h
parent8ada57eb49fb03d4d1c3cb37e534b97fbb92a5e6 (diff)
downloadluajit2-fcc824489914bd4f23c3a49ff9f32fb23cd53c48.tar.gz
ARM: Fix BLX encoding for Thumb interworking calls.
Thanks to Charles Baylis.
Diffstat (limited to 'src/lj_emit_arm.h')
-rw-r--r--src/lj_emit_arm.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lj_emit_arm.h b/src/lj_emit_arm.h
index 7f73698d..610bc6c5 100644
--- a/src/lj_emit_arm.h
+++ b/src/lj_emit_arm.h
@@ -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. */