summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2016-09-30 11:49:47 +0300
committerMartin Storsjö <martin@martin.st>2016-10-16 23:26:15 +0300
commita05cc56124b4f1237f6355784de821e3290ddb44 (patch)
tree57dc81b83b3e45767ddabcc9751e2ee280b81e0d
parent8e2ea691351c5079cdab245ff7bfa5c0f3e3bfe4 (diff)
checkasm: arm/aarch64: Fix the amount of space reserved for stack parameters
Even if MAX_ARGS - 2 (for arm) or MAX_ARGS - 7 (for aarch64) parameters are passed on the stack to checkasm_checked_call, we actually only need to store MAX_ARGS - 4 (for arm) or MAX_ARGS - 8 (for aarch64) parameters on the stack when calling the tested function. Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r--tests/checkasm/aarch64/checkasm.S4
-rw-r--r--tests/checkasm/arm/checkasm.S4
2 files changed, 4 insertions, 4 deletions
diff --git a/tests/checkasm/aarch64/checkasm.S b/tests/checkasm/aarch64/checkasm.S
index 9668518c9b..39e83372b7 100644
--- a/tests/checkasm/aarch64/checkasm.S
+++ b/tests/checkasm/aarch64/checkasm.S
@@ -52,7 +52,7 @@ endconst
// max number of args used by any asm function.
#define MAX_ARGS 15
-#define ARG_STACK ((8*(MAX_ARGS - 7) + 15) & ~15)
+#define ARG_STACK ((8*(MAX_ARGS - 8) + 15) & ~15)
function checkasm_checked_call, export=1
stp x29, x30, [sp, #-16]!
@@ -81,7 +81,7 @@ function checkasm_checked_call, export=1
sub sp, sp, #ARG_STACK
.equ pos, 0
// the first stacked arg is copied to x7
-.rept MAX_ARGS-7
+.rept MAX_ARGS-8
ldr x9, [x29, #16 + 8 + pos]
str x9, [sp, #pos]
.equ pos, pos + 8
diff --git a/tests/checkasm/arm/checkasm.S b/tests/checkasm/arm/checkasm.S
index 098f22eaef..237252f978 100644
--- a/tests/checkasm/arm/checkasm.S
+++ b/tests/checkasm/arm/checkasm.S
@@ -50,7 +50,7 @@ endconst
@ max number of args used by any asm function.
#define MAX_ARGS 15
-#define ARG_STACK 4*(MAX_ARGS - 2)
+#define ARG_STACK 4*(MAX_ARGS - 4)
@ align the used stack space to 8 to preserve the stack alignment
#define ARG_STACK_A (((ARG_STACK + pushed + 7) & ~7) - pushed)
@@ -74,7 +74,7 @@ function checkasm_checked_call_\variant, export=1
sub sp, sp, #ARG_STACK_A
.equ pos, 0
-.rept MAX_ARGS-2
+.rept MAX_ARGS-4
ldr r12, [sp, #ARG_STACK_A + pushed + 8 + pos]
str r12, [sp, #pos]
.equ pos, pos + 4