mirror of https://git.ffmpeg.org/ffmpeg.git
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>
This commit is contained in:
parent
8e2ea69135
commit
a05cc56124
|
@ -52,7 +52,7 @@ endconst
|
||||||
// max number of args used by any asm function.
|
// max number of args used by any asm function.
|
||||||
#define MAX_ARGS 15
|
#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
|
function checkasm_checked_call, export=1
|
||||||
stp x29, x30, [sp, #-16]!
|
stp x29, x30, [sp, #-16]!
|
||||||
|
@ -81,7 +81,7 @@ function checkasm_checked_call, export=1
|
||||||
sub sp, sp, #ARG_STACK
|
sub sp, sp, #ARG_STACK
|
||||||
.equ pos, 0
|
.equ pos, 0
|
||||||
// the first stacked arg is copied to x7
|
// the first stacked arg is copied to x7
|
||||||
.rept MAX_ARGS-7
|
.rept MAX_ARGS-8
|
||||||
ldr x9, [x29, #16 + 8 + pos]
|
ldr x9, [x29, #16 + 8 + pos]
|
||||||
str x9, [sp, #pos]
|
str x9, [sp, #pos]
|
||||||
.equ pos, pos + 8
|
.equ pos, pos + 8
|
||||||
|
|
|
@ -50,7 +50,7 @@ endconst
|
||||||
@ max number of args used by any asm function.
|
@ max number of args used by any asm function.
|
||||||
#define MAX_ARGS 15
|
#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
|
@ align the used stack space to 8 to preserve the stack alignment
|
||||||
#define ARG_STACK_A (((ARG_STACK + pushed + 7) & ~7) - pushed)
|
#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
|
sub sp, sp, #ARG_STACK_A
|
||||||
.equ pos, 0
|
.equ pos, 0
|
||||||
.rept MAX_ARGS-2
|
.rept MAX_ARGS-4
|
||||||
ldr r12, [sp, #ARG_STACK_A + pushed + 8 + pos]
|
ldr r12, [sp, #ARG_STACK_A + pushed + 8 + pos]
|
||||||
str r12, [sp, #pos]
|
str r12, [sp, #pos]
|
||||||
.equ pos, pos + 4
|
.equ pos, pos + 4
|
||||||
|
|
Loading…
Reference in New Issue