diff options
author | Mike Pall <mike> | 2023-09-15 05:27:29 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2023-09-15 05:27:29 +0200 |
commit | 18b8fd8de794d1de7c3193189f42c5b0534043f5 (patch) | |
tree | a85782389317883a6be5a073584eff0ddc99eb1a /src | |
parent | b36f9fad63de19074d97df787146056c028e8fba (diff) | |
download | luajit-18b8fd8de794d1de7c3193189f42c5b0534043f5.tar.gz luajit-18b8fd8de794d1de7c3193189f42c5b0534043f5.tar.bz2 luajit-18b8fd8de794d1de7c3193189f42c5b0534043f5.zip |
ARM64: External unwinder already restores non-volatile registers.
Thanks to Peter Cawley. #593
Diffstat (limited to 'src')
-rw-r--r-- | src/vm_arm64.dasc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/vm_arm64.dasc b/src/vm_arm64.dasc index d622d2a0..34d29982 100644 --- a/src/vm_arm64.dasc +++ b/src/vm_arm64.dasc | |||
@@ -432,24 +432,24 @@ static void build_subroutines(BuildCtx *ctx) | |||
432 | | // (void *cframe, int errcode) | 432 | | // (void *cframe, int errcode) |
433 | | mov sp, CARG1 | 433 | | mov sp, CARG1 |
434 | | mov CRET1, CARG2 | 434 | | mov CRET1, CARG2 |
435 | |->vm_unwind_c_eh: // Landing pad for external unwinder. | ||
436 | | ldr L, SAVE_L | 435 | | ldr L, SAVE_L |
437 | | mv_vmstate TMP0w, C | ||
438 | | ldr GL, L->glref | 436 | | ldr GL, L->glref |
437 | |->vm_unwind_c_eh: // Landing pad for external unwinder. | ||
438 | | mv_vmstate TMP0w, C | ||
439 | | st_vmstate TMP0w | 439 | | st_vmstate TMP0w |
440 | | b ->vm_leave_unw | 440 | | b ->vm_leave_unw |
441 | | | 441 | | |
442 | |->vm_unwind_ff: // Unwind C stack, return from ff pcall. | 442 | |->vm_unwind_ff: // Unwind C stack, return from ff pcall. |
443 | | // (void *cframe) | 443 | | // (void *cframe) |
444 | | and sp, CARG1, #CFRAME_RAWMASK | 444 | | and sp, CARG1, #CFRAME_RAWMASK |
445 | |->vm_unwind_ff_eh: // Landing pad for external unwinder. | ||
446 | | ldr L, SAVE_L | 445 | | ldr L, SAVE_L |
447 | | movz TISNUM, #(LJ_TISNUM>>1)&0xffff, lsl #48 | 446 | | movz TISNUM, #(LJ_TISNUM>>1)&0xffff, lsl #48 |
448 | | movz TISNUMhi, #(LJ_TISNUM>>1)&0xffff, lsl #16 | 447 | | movz TISNUMhi, #(LJ_TISNUM>>1)&0xffff, lsl #16 |
449 | | movn TISNIL, #0 | 448 | | movn TISNIL, #0 |
449 | | ldr GL, L->glref // Setup pointer to global state. | ||
450 | |->vm_unwind_ff_eh: // Landing pad for external unwinder. | ||
450 | | mov RC, #16 // 2 results: false + error message. | 451 | | mov RC, #16 // 2 results: false + error message. |
451 | | ldr BASE, L->base | 452 | | ldr BASE, L->base |
452 | | ldr GL, L->glref // Setup pointer to global state. | ||
453 | | mov_false TMP0 | 453 | | mov_false TMP0 |
454 | | sub RA, BASE, #8 // Results start at BASE-8. | 454 | | sub RA, BASE, #8 // Results start at BASE-8. |
455 | | ldr PC, [BASE, FRAME_PC] // Fetch PC of previous frame. | 455 | | ldr PC, [BASE, FRAME_PC] // Fetch PC of previous frame. |