diff options
author | Mike Pall <mike> | 2015-12-28 16:34:11 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2015-12-28 16:34:11 +0100 |
commit | f61148c486545bf22df81f223efd3297d1c66f7b (patch) | |
tree | a1859cf34106a3bbfdd9eb176b2626e4dbda51e9 /src/vm_arm.dasc | |
parent | a687a60eaac9bd700f821415eaa50393c2fea18a (diff) | |
download | luajit-f61148c486545bf22df81f223efd3297d1c66f7b.tar.gz luajit-f61148c486545bf22df81f223efd3297d1c66f7b.tar.bz2 luajit-f61148c486545bf22df81f223efd3297d1c66f7b.zip |
ARM: Add external frame unwinding.
Thanks to Nick Zavaritsky.
Diffstat (limited to 'src/vm_arm.dasc')
-rw-r--r-- | src/vm_arm.dasc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc index af722f9e..acc0853b 100644 --- a/src/vm_arm.dasc +++ b/src/vm_arm.dasc | |||
@@ -373,6 +373,17 @@ static void build_subroutines(BuildCtx *ctx) | |||
373 | | st_vmstate CARG2 | 373 | | st_vmstate CARG2 |
374 | | b ->vm_returnc | 374 | | b ->vm_returnc |
375 | | | 375 | | |
376 | |->vm_unwind_ext: // Complete external unwind. | ||
377 | #if !LJ_NO_UNWIND | ||
378 | | push {r0, r1, r2, lr} | ||
379 | | bl extern _Unwind_Complete | ||
380 | | ldr r0, [sp] | ||
381 | | bl extern _Unwind_DeleteException | ||
382 | | pop {r0, r1, r2, lr} | ||
383 | | mov r0, r1 | ||
384 | | bx r2 | ||
385 | #endif | ||
386 | | | ||
376 | |//----------------------------------------------------------------------- | 387 | |//----------------------------------------------------------------------- |
377 | |//-- Grow stack for calls ----------------------------------------------- | 388 | |//-- Grow stack for calls ----------------------------------------------- |
378 | |//----------------------------------------------------------------------- | 389 | |//----------------------------------------------------------------------- |