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 /src | |
| parent | fc76d540a076e44bd95af939e0675b0a44acf3c0 (diff) | |
| download | luajit-49d3157e146bc33b5b7c3a82ce00a8f824f6fa49.tar.gz luajit-49d3157e146bc33b5b7c3a82ce00a8f824f6fa49.tar.bz2 luajit-49d3157e146bc33b5b7c3a82ce00a8f824f6fa49.zip | |
PPC: Fix red zone overflow in machine code generation.
Diffstat (limited to 'src')
| -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); |
