[FFmpeg-cvslog] Merge commit 'c91d6a33f872574c95c8784277cf60ffcf6bff4f'
James Almer
git at videolan.org
Thu Mar 23 22:39:10 EET 2017
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Thu Mar 23 17:38:20 2017 -0300| [67b639b496268d1d2b0ec64978f754ab692c44d1] | committer: James Almer
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 at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=67b639b496268d1d2b0ec64978f754ab692c44d1
---
tests/checkasm/aarch64/checkasm.S | 16 ++++++----------
tests/checkasm/checkasm.h | 5 +++--
2 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/tests/checkasm/aarch64/checkasm.S b/tests/checkasm/aarch64/checkasm.S
index 8e4f8c3..03bd983 100644
--- a/tests/checkasm/aarch64/checkasm.S
+++ b/tests/checkasm/aarch64/checkasm.S
@@ -93,22 +93,18 @@ 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-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]
.equ pos, pos + 8
.endr
mov x12, x0
- mov x0, x1
- mov x1, x2
- mov x2, x3
- mov x3, x4
- mov x4, x5
- mov x5, x6
- mov x6, x7
- ldr x7, [x29, #16]
+ ldp x0, x1, [x29, #16]
+ ldp x2, x3, [x29, #32]
+ ldp x4, x5, [x29, #48]
+ ldp x6, x7, [x29, #64]
blr x12
add sp, sp, #ARG_STACK
stp x0, x1, [sp, #-16]!
diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
index b3fa83a..0823666 100644
--- a/tests/checkasm/checkasm.h
+++ b/tests/checkasm/checkasm.h
@@ -141,11 +141,12 @@ extern void (*checkasm_checked_call)(void *func, int dummy, ...);
#elif ARCH_AARCH64 && !defined(__APPLE__)
void checkasm_stack_clobber(uint64_t clobber, ...);
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 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),\
- checked_call(func_new, __VA_ARGS__))
+ checked_call(func_new, 0, 0, 0, 0, 0, 0, 0, __VA_ARGS__))
#else
#define declare_new(ret, ...)
#define declare_new_emms(cpu_flags, ret, ...)
======================================================================
More information about the ffmpeg-cvslog
mailing list