1d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller#ifndef _ASM_PARISC_FTRACE_H
2d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller#define _ASM_PARISC_FTRACE_H
3d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller
4d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller#ifndef __ASSEMBLY__
5d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Dellerextern void mcount(void);
6d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller
7d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller/*
8d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller * Stack of return addresses for functions of a thread.
9d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller * Used in struct thread_info
10d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller */
11d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Dellerstruct ftrace_ret_stack {
12d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller	unsigned long ret;
13d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller	unsigned long func;
14d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller	unsigned long long calltime;
15d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller};
16d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller
17d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller/*
18d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller * Primary handler of a function return.
19d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller * It relays on ftrace_return_to_handler.
20d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller * Defined in entry.S
21d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller */
22d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Dellerextern void return_to_handler(void);
2311e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller
2411e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller
2511e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Dellerextern unsigned long return_address(unsigned int);
2611e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller
2711e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller#define HAVE_ARCH_CALLER_ADDR
2811e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller
2911e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller#define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0))
3011e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller#define CALLER_ADDR1 return_address(1)
3111e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller#define CALLER_ADDR2 return_address(2)
3211e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller#define CALLER_ADDR3 return_address(3)
3311e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller#define CALLER_ADDR4 return_address(4)
3411e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller#define CALLER_ADDR5 return_address(5)
3511e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller#define CALLER_ADDR6 return_address(6)
3611e178091f6a9c5ca479f8a276b9dd0dfacf8fc4Helge Deller
37d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller#endif /* __ASSEMBLY__ */
38d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller
39d75f054a2cf0614ff63d534ff21ca8eaab41e713Helge Deller#endif /* _ASM_PARISC_FTRACE_H */
40