diff options
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 0bc66b91fa..2486cb5b5b 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -116,6 +116,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, ...) @@ -123,6 +132,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(...)\ |