diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-11-17 17:21:32 +0300 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-11-17 17:21:32 +0300 |
commit | 286d8bae61e8bee3e5e5fc08e90b74e90612330f (patch) | |
tree | 6a13ca57159da25e1690bdd42c66f43349cd8c4f /tests | |
parent | c0af1ee90dcb760dda0ae9f014fcb748bb196fb3 (diff) | |
parent | 7b1ae0e73ab7f7c5eabc70dbe2e579127c6e154f (diff) |
Merge commit '7b1ae0e73ab7f7c5eabc70dbe2e579127c6e154f'
* commit '7b1ae0e73ab7f7c5eabc70dbe2e579127c6e154f':
checkasm/arm: preserve the stack alignment checkasm_checked_call
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/checkasm/arm/checkasm.S | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/tests/checkasm/arm/checkasm.S b/tests/checkasm/arm/checkasm.S index 1069adcfa9..62a91c19ab 100644 --- a/tests/checkasm/arm/checkasm.S +++ b/tests/checkasm/arm/checkasm.S @@ -42,6 +42,9 @@ endconst #define ARG_STACK 4*(MAX_ARGS - 2) +@ align the used stack space to 8 to preserve the stack alignment +#define ARG_STACK_A (((ARG_STACK + pushed + 7) & ~7) - pushed) + .macro clobbercheck variant .equ pushed, 4*9 function checkasm_checked_call_\variant, export=1 @@ -59,10 +62,10 @@ function checkasm_checked_call_\variant, export=1 .endif ldm r12, {r4-r11} - sub sp, sp, #ARG_STACK + sub sp, sp, #ARG_STACK_A .equ pos, 0 .rept MAX_ARGS-2 - ldr r12, [sp, #ARG_STACK + pushed + 8 + pos] + ldr r12, [sp, #ARG_STACK_A + pushed + 8 + pos] str r12, [sp, #pos] .equ pos, pos + 4 .endr @@ -70,9 +73,9 @@ function checkasm_checked_call_\variant, export=1 mov r12, r0 mov r0, r2 mov r1, r3 - ldrd r2, r3, [sp, #ARG_STACK + pushed] + ldrd r2, r3, [sp, #ARG_STACK_A + pushed] blx r12 - add sp, sp, #ARG_STACK + add sp, sp, #ARG_STACK_A push {r0, r1} movrel r12, register_init |