mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-19 22:01:00 +00:00
Merge commit 'c91d6a33f872574c95c8784277cf60ffcf6bff4f'
* commit 'c91d6a33f872574c95c8784277cf60ffcf6bff4f': checkasm: aarch64: Add filler args to make sure all parameters are passed on the stack Merged-by: James Almer <jamrial@gmail.com>
This commit is contained in:
commit
67b639b496
@ -93,22 +93,18 @@ 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
|
|
||||||
.rept MAX_ARGS-8
|
.rept MAX_ARGS-8
|
||||||
ldr x9, [x29, #16 + 8 + pos]
|
// Skip the first 8 args, that are loaded into registers
|
||||||
|
ldr x9, [x29, #16 + 8*8 + pos]
|
||||||
str x9, [sp, #pos]
|
str x9, [sp, #pos]
|
||||||
.equ pos, pos + 8
|
.equ pos, pos + 8
|
||||||
.endr
|
.endr
|
||||||
|
|
||||||
mov x12, x0
|
mov x12, x0
|
||||||
mov x0, x1
|
ldp x0, x1, [x29, #16]
|
||||||
mov x1, x2
|
ldp x2, x3, [x29, #32]
|
||||||
mov x2, x3
|
ldp x4, x5, [x29, #48]
|
||||||
mov x3, x4
|
ldp x6, x7, [x29, #64]
|
||||||
mov x4, x5
|
|
||||||
mov x5, x6
|
|
||||||
mov x6, x7
|
|
||||||
ldr x7, [x29, #16]
|
|
||||||
blr x12
|
blr x12
|
||||||
add sp, sp, #ARG_STACK
|
add sp, sp, #ARG_STACK
|
||||||
stp x0, x1, [sp, #-16]!
|
stp x0, x1, [sp, #-16]!
|
||||||
|
@ -141,11 +141,12 @@ extern void (*checkasm_checked_call)(void *func, int dummy, ...);
|
|||||||
#elif ARCH_AARCH64 && !defined(__APPLE__)
|
#elif ARCH_AARCH64 && !defined(__APPLE__)
|
||||||
void checkasm_stack_clobber(uint64_t clobber, ...);
|
void checkasm_stack_clobber(uint64_t clobber, ...);
|
||||||
void checkasm_checked_call(void *func, ...);
|
void checkasm_checked_call(void *func, ...);
|
||||||
#define declare_new(ret, ...) ret (*checked_call)(void *, __VA_ARGS__) = (void *)checkasm_checked_call;
|
#define declare_new(ret, ...) ret (*checked_call)(void *, int, int, int, int, int, int, int, __VA_ARGS__)\
|
||||||
|
= (void *)checkasm_checked_call;
|
||||||
#define CLOB (UINT64_C(0xdeadbeefdeadbeef))
|
#define CLOB (UINT64_C(0xdeadbeefdeadbeef))
|
||||||
#define call_new(...) (checkasm_stack_clobber(CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,\
|
#define call_new(...) (checkasm_stack_clobber(CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,\
|
||||||
CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB),\
|
CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB,CLOB),\
|
||||||
checked_call(func_new, __VA_ARGS__))
|
checked_call(func_new, 0, 0, 0, 0, 0, 0, 0, __VA_ARGS__))
|
||||||
#else
|
#else
|
||||||
#define declare_new(ret, ...)
|
#define declare_new(ret, ...)
|
||||||
#define declare_new_emms(cpu_flags, ret, ...)
|
#define declare_new_emms(cpu_flags, ret, ...)
|
||||||
|
Loading…
Reference in New Issue
Block a user