[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