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/host | |
| 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/host')
| -rw-r--r-- | src/host/buildvm_asm.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/host/buildvm_asm.c b/src/host/buildvm_asm.c index 9b7ae53a..9b119425 100644 --- a/src/host/buildvm_asm.c +++ b/src/host/buildvm_asm.c | |||
| @@ -261,11 +261,20 @@ void emit_asm(BuildCtx *ctx) | |||
| 261 | 261 | ||
| 262 | #if LJ_TARGET_ARM && defined(__GNUC__) && !LJ_NO_UNWIND | 262 | #if LJ_TARGET_ARM && defined(__GNUC__) && !LJ_NO_UNWIND |
| 263 | /* This should really be moved into buildvm_arm.dasc. */ | 263 | /* This should really be moved into buildvm_arm.dasc. */ |
| 264 | #if LJ_ARCH_HASFPU | ||
| 265 | fprintf(ctx->fp, | ||
| 266 | ".fnstart\n" | ||
| 267 | ".save {r5, r6, r7, r8, r9, r10, r11, lr}\n" | ||
| 268 | ".vsave {d8-d15}\n" | ||
| 269 | ".save {r4}\n" | ||
| 270 | ".pad #28\n"); | ||
| 271 | #else | ||
| 264 | fprintf(ctx->fp, | 272 | fprintf(ctx->fp, |
| 265 | ".fnstart\n" | 273 | ".fnstart\n" |
| 266 | ".save {r4, r5, r6, r7, r8, r9, r10, r11, lr}\n" | 274 | ".save {r4, r5, r6, r7, r8, r9, r10, r11, lr}\n" |
| 267 | ".pad #28\n"); | 275 | ".pad #28\n"); |
| 268 | #endif | 276 | #endif |
| 277 | #endif | ||
| 269 | #if LJ_TARGET_MIPS | 278 | #if LJ_TARGET_MIPS |
| 270 | fprintf(ctx->fp, ".set nomips16\n.abicalls\n.set noreorder\n.set nomacro\n"); | 279 | fprintf(ctx->fp, ".set nomips16\n.abicalls\n.set noreorder\n.set nomacro\n"); |
| 271 | #endif | 280 | #endif |
