* src/vm/jit/arm/emit.c (emit_verbosecall_enter): Keep stack 8-byte
[cacao.git] / src / vm / jit / arm / emit.c
index 0a1b471f3d8293398995159135d37188ea1be6f7..c5ab738d8c1429d95b25f54ce507d1abf626d7c0 100644 (file)
@@ -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<<REG_LR) | (1<<REG_PV), REG_SP);
-       M_SUB_IMM(REG_SP, REG_SP, (2 + 2 + 1) * 4);     /* space for a3, a4 and m */
+       M_SUB_IMM(REG_SP, REG_SP, (2 + 2 + 1 + 1) * 4); /* space for a3, a4 and m */
 
-       stackframesize += 6 + 2 + 2 + 1;
+       stackframesize += 6 + 2 + 2 + 1 + 1;
 
        /* prepare args for tracer */
 
@@ -723,9 +725,10 @@ void emit_verbosecall_enter(jitdata *jd)
 
        M_LONGBRANCH(builtin_verbosecall_enter);
 
-       /* restore argument registers from stack */
+       /* Restore argument registers from stack.  Keep stack 8-byte
+          aligned. */
 
-       M_ADD_IMM(REG_SP, REG_SP, (2 + 2 + 1) * 4);        /* free argument stack */
+       M_ADD_IMM(REG_SP, REG_SP, (2 + 2 + 1 + 1) * 4);    /* free argument stack */
        M_LDMFD(BITMASK_ARGS | (1<<REG_LR) | (1<<REG_PV), REG_SP);
 
        /* mark trace code */
@@ -764,6 +767,8 @@ void emit_verbosecall_exit(jitdata *jd)
 
        M_NOP;
 
+       /* Keep stack 8-byte aligned. */
+
        M_STMFD(BITMASK_RESULT | (1<<REG_LR) | (1<<REG_PV), REG_SP);
        M_SUB_IMM(REG_SP, REG_SP, (1 + 1) * 4);              /* space for f and m */
 
@@ -792,6 +797,8 @@ void emit_verbosecall_exit(jitdata *jd)
        M_AST(REG_ITMP1, REG_SP, 1 * 4);
        M_LONGBRANCH(builtin_verbosecall_exit);
 
+       /* Keep stack 8-byte aligned. */
+
        M_ADD_IMM(REG_SP, REG_SP, (1 + 1) * 4);            /* free argument stack */
        M_LDMFD(BITMASK_RESULT | (1<<REG_LR) | (1<<REG_PV), REG_SP);