Commit | Line | Data |
---|---|---|
819e50e2 AT |
1 | /* |
2 | * arch/arm64/include/asm/ftrace.h | |
3 | * | |
4 | * Copyright (C) 2013 Linaro Limited | |
5 | * Author: AKASHI Takahiro <takahiro.akashi@linaro.org> | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or modify | |
8 | * it under the terms of the GNU General Public License version 2 as | |
9 | * published by the Free Software Foundation. | |
10 | */ | |
11 | #ifndef __ASM_FTRACE_H | |
12 | #define __ASM_FTRACE_H | |
13 | ||
14 | #include <asm/insn.h> | |
15 | ||
16 | #define MCOUNT_ADDR ((unsigned long)_mcount) | |
17 | #define MCOUNT_INSN_SIZE AARCH64_INSN_SIZE | |
18 | ||
19 | #ifndef __ASSEMBLY__ | |
055b1212 AT |
20 | #include <linux/compat.h> |
21 | ||
819e50e2 | 22 | extern void _mcount(unsigned long); |
3711784e | 23 | extern void *return_address(unsigned int); |
bd7d38db AT |
24 | |
25 | struct dyn_arch_ftrace { | |
26 | /* No extra data needed for arm64 */ | |
27 | }; | |
28 | ||
29 | extern unsigned long ftrace_graph_call; | |
30 | ||
20380bb3 AT |
31 | extern void return_to_handler(void); |
32 | ||
bd7d38db AT |
33 | static inline unsigned long ftrace_call_adjust(unsigned long addr) |
34 | { | |
35 | /* | |
36 | * addr is the address of the mcount call instruction. | |
37 | * recordmcount does the necessary offset calculation. | |
38 | */ | |
39 | return addr; | |
40 | } | |
3711784e AT |
41 | |
42 | #define ftrace_return_address(n) return_address(n) | |
055b1212 AT |
43 | |
44 | /* | |
45 | * Because AArch32 mode does not share the same syscall table with AArch64, | |
46 | * tracing compat syscalls may result in reporting bogus syscalls or even | |
47 | * hang-up, so just do not trace them. | |
48 | * See kernel/trace/trace_syscalls.c | |
49 | * | |
50 | * x86 code says: | |
ef769e32 | 51 | * If the user really wants these, then they should use the |
055b1212 AT |
52 | * raw syscall tracepoints with filtering. |
53 | */ | |
54 | #define ARCH_TRACE_IGNORE_COMPAT_SYSCALLS | |
55 | static inline bool arch_trace_is_compat_syscall(struct pt_regs *regs) | |
56 | { | |
57 | return is_compat_task(); | |
58 | } | |
3711784e | 59 | #endif /* ifndef __ASSEMBLY__ */ |
819e50e2 AT |
60 | |
61 | #endif /* __ASM_FTRACE_H */ |