From 578c41ceb73bdf9d97f23c9e0342f8d027c08e77 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sat, 8 Nov 2025 15:41:42 +0100 Subject: ARM64: Enable unaligned accesses if indicated by the toolchain. If you get a crash in jit_init() then you need to fix your toolchain. --- src/lib_jit.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/lib_jit.c') 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) jit_State *J = L2J(L); J->flags = jit_cpudetect() | JIT_F_ON | JIT_F_OPT_DEFAULT; memcpy(J->param, jit_param_default, sizeof(J->param)); +#if LJ_TARGET_UNALIGNED + G(L)->tmptv.u64 = U64x(0000504d,4d500000); +#endif lj_dispatch_update(G(L)); +#if LJ_TARGET_UNALIGNED + /* If you get a crash below then your toolchain indicates unaligned + ** accesses are OK, but your kernel disagrees. I.e. fix your toolchain. + */ + if (*(uint32_t *)((char *)&G(L)->tmptv + 2) != 0x504d4d50u) L->top = NULL; +#endif } #endif -- cgit v1.2.3-55-g6feb