diff options
| author | Mike Pall <mike> | 2025-11-08 15:41:42 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2025-11-08 15:41:42 +0100 |
| commit | 578c41ceb73bdf9d97f23c9e0342f8d027c08e77 (patch) | |
| tree | c17a106eda6eedf45baea3a76faf42968ad49885 /src/lib_jit.c | |
| parent | 68354f444728ef99bb51bb4d86e8f1b40853a898 (diff) | |
| download | luajit-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.c | 9 |
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 | ||
