diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-01-19 08:49:27 +0100 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-01-19 08:49:27 +0100 |
commit | 0b40e290e3cc561a92abe09e114b82cbde2eda29 (patch) | |
tree | d42c7e8109ba16338f459b9387b59358813a0c19 /tests/checkasm/checkasm.h | |
parent | 774c5357dbe62ba6017ecbe6738a73644cd5bb5d (diff) | |
parent | 26ec75aec3576daea691dee53a78ec67c0dc4040 (diff) | |
download | ffmpeg-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.h | 13 |
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(...)\ |