aboutsummaryrefslogtreecommitdiff
path: root/src/lib_jit.c
diff options
context:
space:
mode:
authorMike Pall <mike>2025-11-08 15:41:42 +0100
committerMike Pall <mike>2025-11-08 15:41:42 +0100
commit578c41ceb73bdf9d97f23c9e0342f8d027c08e77 (patch)
treec17a106eda6eedf45baea3a76faf42968ad49885 /src/lib_jit.c
parent68354f444728ef99bb51bb4d86e8f1b40853a898 (diff)
downloadluajit-578c41ceb73bdf9d97f23c9e0342f8d027c08e77.tar.gz
luajit-578c41ceb73bdf9d97f23c9e0342f8d027c08e77.tar.bz2
luajit-578c41ceb73bdf9d97f23c9e0342f8d027c08e77.zip
ARM64: Enable unaligned accesses if indicated by the toolchain.
If you get a crash in jit_init() then you need to fix your toolchain.
Diffstat (limited to 'src/lib_jit.c')
-rw-r--r--src/lib_jit.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/lib_jit.c b/src/lib_jit.c
index 1b74d957..0f75c5ac 100644
--- a/src/lib_jit.c
+++ b/src/lib_jit.c
@@ -723,7 +723,16 @@ static void jit_init(lua_State *L)
723 jit_State *J = L2J(L); 723 jit_State *J = L2J(L);
724 J->flags = jit_cpudetect() | JIT_F_ON | JIT_F_OPT_DEFAULT; 724 J->flags = jit_cpudetect() | JIT_F_ON | JIT_F_OPT_DEFAULT;
725 memcpy(J->param, jit_param_default, sizeof(J->param)); 725 memcpy(J->param, jit_param_default, sizeof(J->param));
726#if LJ_TARGET_UNALIGNED
727 G(L)->tmptv.u64 = U64x(0000504d,4d500000);
728#endif
726 lj_dispatch_update(G(L)); 729 lj_dispatch_update(G(L));
730#if LJ_TARGET_UNALIGNED
731 /* If you get a crash below then your toolchain indicates unaligned
732 ** accesses are OK, but your kernel disagrees. I.e. fix your toolchain.
733 */
734 if (*(uint32_t *)((char *)&G(L)->tmptv + 2) != 0x504d4d50u) L->top = NULL;
735#endif
727} 736}
728#endif 737#endif
729 738