aboutsummaryrefslogtreecommitdiffstats
path: root/tests/checkasm/checkasm.h
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2016-01-19 08:49:27 +0100
committerHendrik Leppkes <h.leppkes@gmail.com>2016-01-19 08:49:27 +0100
commit0b40e290e3cc561a92abe09e114b82cbde2eda29 (patch)
treed42c7e8109ba16338f459b9387b59358813a0c19 /tests/checkasm/checkasm.h
parent774c5357dbe62ba6017ecbe6738a73644cd5bb5d (diff)
parent26ec75aec3576daea691dee53a78ec67c0dc4040 (diff)
downloadffmpeg-0b40e290e3cc561a92abe09e114b82cbde2eda29.tar.gz
Merge commit '26ec75aec3576daea691dee53a78ec67c0dc4040'
* commit '26ec75aec3576daea691dee53a78ec67c0dc4040': checkasm: Check register clobbering on arm Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
Diffstat (limited to 'tests/checkasm/checkasm.h')
-rw-r--r--tests/checkasm/checkasm.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
index 69416e954b..27c2c5736e 100644
--- a/tests/checkasm/checkasm.h
+++ b/tests/checkasm/checkasm.h
@@ -120,6 +120,15 @@ void checkasm_stack_clobber(uint64_t clobber, ...);
(void *)checkasm_checked_call;
#define call_new(...) checked_call(func_new, __VA_ARGS__)
#endif
+#elif ARCH_ARM && HAVE_ARMV5TE_EXTERNAL
+/* Use a dummy argument, to offset the real parameters by 2, not only 1.
+ * This makes sure that potential 8-byte-alignment of parameters is kept the same
+ * even when the extra parameters have been removed. */
+void checkasm_checked_call_vfp(void *func, int dummy, ...);
+void checkasm_checked_call_novfp(void *func, int dummy, ...);
+extern void (*checkasm_checked_call)(void *func, int dummy, ...);
+#define declare_new(ret, ...) ret (*checked_call)(void *, int dummy, __VA_ARGS__) = (void *)checkasm_checked_call;
+#define call_new(...) checked_call(func_new, 0, __VA_ARGS__)
#else
#define declare_new(ret, ...)
#define declare_new_emms(cpu_flags, ret, ...)
@@ -127,6 +136,10 @@ void checkasm_stack_clobber(uint64_t clobber, ...);
#define call_new(...) ((func_type *)func_new)(__VA_ARGS__)
#endif
+#ifndef declare_new_emms
+#define declare_new_emms(cpu_flags, ret, ...) declare_new(ret, __VA_ARGS__)
+#endif
+
/* Benchmark the function */
#ifdef AV_READ_TIME
#define bench_new(...)\