diff options
author | AKASHI Takahiro <takahiro.akashi@linaro.org> | 2014-04-30 18:54:29 +0900 |
---|---|---|
committer | Show Liu <show.liu@linaro.org> | 2014-06-18 12:04:07 +0800 |
commit | 07b7bcba912fde8d87a6c81f38eb5b59fada93c9 (patch) | |
tree | a6b6cd3389960512fd9c2766663f28fb25a9ef32 /include/linux | |
parent | 92b0f71a73b09831a1224eac8e6d1f14f796b9c7 (diff) |
ftrace: make CALLER_ADDRx macros more generic
Most archs with HAVE_ARCH_CALLER_ADDR have the almost same definitions
of CALLER_ADDRx(n), and so put them into linux/ftrace.h.
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from LSK commit f2f646bdd599cb551bfeb8f1934a9e14ccfeac84)
Signed-off-by: Alex Shi <alex.shi@linaro.org>
Conflicts:
arch/xtensa/include/asm/ftrace.h
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/ftrace.h | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index f4233b195da..1150c45384e 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -603,25 +603,27 @@ static inline void __ftrace_enabled_restore(int enabled) #endif } -#ifndef HAVE_ARCH_CALLER_ADDR +/* All archs should have this, but we define it for consistency */ +#ifndef ftrace_return_address0 +# define ftrace_return_address0 __builtin_return_address(0) +#endif + +/* Archs may use other ways for ADDR1 and beyond */ +#ifndef ftrace_return_address # ifdef CONFIG_FRAME_POINTER -# define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0)) -# define CALLER_ADDR1 ((unsigned long)__builtin_return_address(1)) -# define CALLER_ADDR2 ((unsigned long)__builtin_return_address(2)) -# define CALLER_ADDR3 ((unsigned long)__builtin_return_address(3)) -# define CALLER_ADDR4 ((unsigned long)__builtin_return_address(4)) -# define CALLER_ADDR5 ((unsigned long)__builtin_return_address(5)) -# define CALLER_ADDR6 ((unsigned long)__builtin_return_address(6)) +# define ftrace_return_address(n) __builtin_return_address(n) # else -# define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0)) -# define CALLER_ADDR1 0UL -# define CALLER_ADDR2 0UL -# define CALLER_ADDR3 0UL -# define CALLER_ADDR4 0UL -# define CALLER_ADDR5 0UL -# define CALLER_ADDR6 0UL +# define ftrace_return_address(n) 0UL # endif -#endif /* ifndef HAVE_ARCH_CALLER_ADDR */ +#endif + +#define CALLER_ADDR0 ((unsigned long)ftrace_return_address0) +#define CALLER_ADDR1 ((unsigned long)ftrace_return_address(1)) +#define CALLER_ADDR2 ((unsigned long)ftrace_return_address(2)) +#define CALLER_ADDR3 ((unsigned long)ftrace_return_address(3)) +#define CALLER_ADDR4 ((unsigned long)ftrace_return_address(4)) +#define CALLER_ADDR5 ((unsigned long)ftrace_return_address(5)) +#define CALLER_ADDR6 ((unsigned long)ftrace_return_address(6)) #ifdef CONFIG_IRQSOFF_TRACER extern void time_hardirqs_on(unsigned long a0, unsigned long a1); |