diff options
| author | Mike Pall <mike> | 2023-10-08 21:17:43 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2023-10-08 21:17:43 +0200 |
| commit | 007e4dce13673b01a38b19384f54fa50a79a66de (patch) | |
| tree | fb42dbb93b4ee39737445254e78e8d185200baaf /src/host | |
| parent | becf5cc65d966a8926466dd43407c48bfea0fa13 (diff) | |
| download | luajit-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.c | 3 |
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); |
