From 450c98e66250624d5c4bc4edee4c009a0e11c289 Mon Sep 17 00:00:00 2001 From: twisti Date: Sun, 11 Feb 2007 20:10:35 +0000 Subject: [PATCH] * src/vm/jit/arm/emit.c (emit_verbosecall_enter): Keep stack 8-byte aligned. (emit_verbosecall_exit): Added comment. * src/vm/jit/arm/asmpart.S (asm_call_jit_compiler): Keep stack 8-byte aligned. --- src/vm/jit/arm/asmpart.S | 7 +++++-- src/vm/jit/arm/emit.c | 17 ++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/vm/jit/arm/asmpart.S b/src/vm/jit/arm/asmpart.S index 13f15a9f6..a866859b2 100644 --- a/src/vm/jit/arm/asmpart.S +++ b/src/vm/jit/arm/asmpart.S @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: asmpart.S 7259 2007-01-30 13:58:35Z twisti $ + $Id: asmpart.S 7325 2007-02-11 20:10:35Z twisti $ */ @@ -216,10 +216,11 @@ asm_vm_call_method_double: * * *******************************************************************************/ -#define MYSTACKSIZE (5*4) +#define MYSTACKSIZE (6*4) asm_call_jit_compiler: SAVE_ARGUMENT_REGISTERS /* save our argument registers & LR */ + sub sp, sp, #4 /* keep stack 8-byte aligned */ mov a0, itmp1 /* pass methodinfo pointer */ mov a1, mptr /* pass method pointer */ @@ -231,6 +232,7 @@ asm_call_jit_compiler: tst itmp1,itmp1 /* check for exeption */ beq L_asm_call_jit_compiler_exception + add sp, sp, #4 /* keep stack 8-byte aligned */ RESTORE_ARGUMENT_REGISTERS /* load our argument registers & LR */ mov ip, itmp1 @@ -240,6 +242,7 @@ L_asm_call_jit_compiler_exception: bl exceptions_get_and_clear_exception mov xptr, res1 /* get exception */ + add sp, sp, #4 /* keep stack 8-byte aligned */ RESTORE_ARGUMENT_REGISTERS /* load LR */ sub xpc, lr, #4 /* xpc = instruction that called us */ diff --git a/src/vm/jit/arm/emit.c b/src/vm/jit/arm/emit.c index 0a1b471f3..c5ab738d8 100644 --- a/src/vm/jit/arm/emit.c +++ b/src/vm/jit/arm/emit.c @@ -658,11 +658,13 @@ void emit_verbosecall_enter(jitdata *jd) M_NOP; - /* save argument registers to stack (including LR and PV) */ + /* Save argument registers to stack (including LR and PV). Keep + stack 8-byte aligned. */ + M_STMFD(BITMASK_ARGS | (1<