Commit | Line | Data |
---|---|---|
3ae908c9 MF |
1 | /* |
2 | * arch/xtensa/include/asm/ftrace.h | |
3 | * | |
4 | * This file is subject to the terms and conditions of the GNU General Public | |
5 | * License. See the file "COPYING" in the main directory of this archive | |
6 | * for more details. | |
7 | * | |
8 | * Copyright (C) 2013 Tensilica Inc. | |
9 | */ | |
10 | #ifndef _XTENSA_FTRACE_H | |
11 | #define _XTENSA_FTRACE_H | |
12 | ||
13 | #include <asm/processor.h> | |
14 | ||
15 | #define HAVE_ARCH_CALLER_ADDR | |
478ba61a | 16 | #ifndef __ASSEMBLY__ |
3ae908c9 MF |
17 | #define CALLER_ADDR0 ({ unsigned long a0, a1; \ |
18 | __asm__ __volatile__ ( \ | |
19 | "mov %0, a0\n" \ | |
20 | "mov %1, a1\n" \ | |
ea1d3ed3 | 21 | : "=r"(a0), "=r"(a1)); \ |
3ae908c9 MF |
22 | MAKE_PC_FROM_RA(a0, a1); }) |
23 | #ifdef CONFIG_FRAME_POINTER | |
24 | extern unsigned long return_address(unsigned level); | |
25 | #define CALLER_ADDR1 return_address(1) | |
26 | #define CALLER_ADDR2 return_address(2) | |
27 | #define CALLER_ADDR3 return_address(3) | |
478ba61a | 28 | #else /* CONFIG_FRAME_POINTER */ |
3ae908c9 MF |
29 | #define CALLER_ADDR1 (0) |
30 | #define CALLER_ADDR2 (0) | |
31 | #define CALLER_ADDR3 (0) | |
478ba61a MF |
32 | #endif /* CONFIG_FRAME_POINTER */ |
33 | #endif /* __ASSEMBLY__ */ | |
34 | ||
35 | #ifdef CONFIG_FUNCTION_TRACER | |
36 | ||
37 | #define MCOUNT_ADDR ((unsigned long)(_mcount)) | |
38 | #define MCOUNT_INSN_SIZE 3 | |
39 | ||
40 | #ifndef __ASSEMBLY__ | |
41 | extern void _mcount(void); | |
42 | #define mcount _mcount | |
43 | #endif /* __ASSEMBLY__ */ | |
44 | #endif /* CONFIG_FUNCTION_TRACER */ | |
3ae908c9 MF |
45 | |
46 | #endif /* _XTENSA_FTRACE_H */ |