aboutsummaryrefslogtreecommitdiff
path: root/src/host
diff options
context:
space:
mode:
authorMike Pall <mike>2023-10-08 21:17:43 +0200
committerMike Pall <mike>2023-10-08 21:17:43 +0200
commit007e4dce13673b01a38b19384f54fa50a79a66de (patch)
treefb42dbb93b4ee39737445254e78e8d185200baaf /src/host
parentbecf5cc65d966a8926466dd43407c48bfea0fa13 (diff)
downloadluajit-007e4dce13673b01a38b19384f54fa50a79a66de.tar.gz
luajit-007e4dce13673b01a38b19384f54fa50a79a66de.tar.bz2
luajit-007e4dce13673b01a38b19384f54fa50a79a66de.zip
ARM64: Restore fp before sp in C stack unwinders.
Thanks to Peter Cawley. #1096
Diffstat (limited to 'src/host')
-rw-r--r--src/host/buildvm_peobj.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/host/buildvm_peobj.c b/src/host/buildvm_peobj.c
index 7ce3b05a..8f04c496 100644
--- a/src/host/buildvm_peobj.c
+++ b/src/host/buildvm_peobj.c
@@ -373,11 +373,12 @@ void emit_peobj(BuildCtx *ctx)
373 373
374 /* Unwind codes for .text section with handler. */ 374 /* Unwind codes for .text section with handler. */
375 p = uwc; 375 p = uwc;
376 CADD_FP(192); /* +2 */
376 CSAVE_REGS(19, 28, 176); /* +5*2 */ 377 CSAVE_REGS(19, 28, 176); /* +5*2 */
377 CSAVE_FREGS(8, 15, 96); /* +4*2 */ 378 CSAVE_FREGS(8, 15, 96); /* +4*2 */
378 CSAVE_FPLR(192); /* +1 */ 379 CSAVE_FPLR(192); /* +1 */
379 CALLOC_S(208); /* +1 */ 380 CALLOC_S(208); /* +1 */
380 CEND_ALIGN; /* +1 +3 -> 24 */ 381 CEND_ALIGN; /* +1 +1 -> 24 */
381 382
382 u32 = ((24u >> 2) << 27) | (1u << 20) | (fcofs >> 2); 383 u32 = ((24u >> 2) << 27) | (1u << 20) | (fcofs >> 2);
383 owrite(ctx, &u32, 4); 384 owrite(ctx, &u32, 4);