diff options
author | Mike Pall <mike> | 2014-05-27 15:58:04 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2014-05-27 15:58:04 +0200 |
commit | 49d3157e146bc33b5b7c3a82ce00a8f824f6fa49 (patch) | |
tree | 9eff38158501f9661272ef8c4695ab8fda6c28eb | |
parent | fc76d540a076e44bd95af939e0675b0a44acf3c0 (diff) | |
download | luajit-49d3157e146bc33b5b7c3a82ce00a8f824f6fa49.tar.gz luajit-49d3157e146bc33b5b7c3a82ce00a8f824f6fa49.tar.bz2 luajit-49d3157e146bc33b5b7c3a82ce00a8f824f6fa49.zip |
PPC: Fix red zone overflow in machine code generation.
-rw-r--r-- | src/lj_asm_ppc.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lj_asm_ppc.h b/src/lj_asm_ppc.h index e1a496a7..0a3d35e9 100644 --- a/src/lj_asm_ppc.h +++ b/src/lj_asm_ppc.h | |||
@@ -49,6 +49,8 @@ static void asm_exitstub_setup(ASMState *as, ExitNo nexits) | |||
49 | { | 49 | { |
50 | ExitNo i; | 50 | ExitNo i; |
51 | MCode *mxp = as->mctop; | 51 | MCode *mxp = as->mctop; |
52 | if (mxp - (nexits + 3 + MCLIM_REDZONE) < as->mclim) | ||
53 | asm_mclimit(as); | ||
52 | /* 1: mflr r0; bl ->vm_exit_handler; li r0, traceno; bl <1; bl <1; ... */ | 54 | /* 1: mflr r0; bl ->vm_exit_handler; li r0, traceno; bl <1; bl <1; ... */ |
53 | for (i = nexits-1; (int32_t)i >= 0; i--) | 55 | for (i = nexits-1; (int32_t)i >= 0; i--) |
54 | *--mxp = PPCI_BL|(((-3-i)&0x00ffffffu)<<2); | 56 | *--mxp = PPCI_BL|(((-3-i)&0x00ffffffu)<<2); |