blob: 32e36b16773fd876a7b246ddb9e23c28193c3570 [file] [log] [blame]
Anton Blanchard1bf4af12009-10-26 18:47:42 +00001#undef TRACE_SYSTEM
2#define TRACE_SYSTEM powerpc
3
4#if !defined(_TRACE_POWERPC_H) || defined(TRACE_HEADER_MULTI_READ)
5#define _TRACE_POWERPC_H
6
7#include <linux/tracepoint.h>
8
9struct pt_regs;
10
Anton Blanchardd136e272012-05-22 18:47:48 +000011DECLARE_EVENT_CLASS(ppc64_interrupt_class,
Anton Blanchard1bf4af12009-10-26 18:47:42 +000012
13 TP_PROTO(struct pt_regs *regs),
14
15 TP_ARGS(regs),
16
17 TP_STRUCT__entry(
18 __field(struct pt_regs *, regs)
19 ),
20
21 TP_fast_assign(
22 __entry->regs = regs;
23 ),
24
25 TP_printk("pt_regs=%p", __entry->regs)
26);
27
Anton Blanchardd136e272012-05-22 18:47:48 +000028DEFINE_EVENT(ppc64_interrupt_class, irq_entry,
Anton Blanchard1bf4af12009-10-26 18:47:42 +000029
30 TP_PROTO(struct pt_regs *regs),
31
Anton Blanchardd136e272012-05-22 18:47:48 +000032 TP_ARGS(regs)
Anton Blanchard1bf4af12009-10-26 18:47:42 +000033);
34
Anton Blanchardd136e272012-05-22 18:47:48 +000035DEFINE_EVENT(ppc64_interrupt_class, irq_exit,
Anton Blanchard6795b852009-10-26 18:49:14 +000036
37 TP_PROTO(struct pt_regs *regs),
38
Anton Blanchardd136e272012-05-22 18:47:48 +000039 TP_ARGS(regs)
Anton Blanchard6795b852009-10-26 18:49:14 +000040);
41
Anton Blanchardd136e272012-05-22 18:47:48 +000042DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_entry,
Anton Blanchard6795b852009-10-26 18:49:14 +000043
44 TP_PROTO(struct pt_regs *regs),
45
Anton Blanchardd136e272012-05-22 18:47:48 +000046 TP_ARGS(regs)
47);
Anton Blanchard6795b852009-10-26 18:49:14 +000048
Anton Blanchardd136e272012-05-22 18:47:48 +000049DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_exit,
Anton Blanchard6795b852009-10-26 18:49:14 +000050
Anton Blanchardd136e272012-05-22 18:47:48 +000051 TP_PROTO(struct pt_regs *regs),
Anton Blanchard6795b852009-10-26 18:49:14 +000052
Anton Blanchardd136e272012-05-22 18:47:48 +000053 TP_ARGS(regs)
Anton Blanchard6795b852009-10-26 18:49:14 +000054);
55
Anton Blanchardc8cd0932009-10-26 18:50:29 +000056#ifdef CONFIG_PPC_PSERIES
57extern void hcall_tracepoint_regfunc(void);
58extern void hcall_tracepoint_unregfunc(void);
59
Denis Kirjanov126df082015-12-14 23:18:06 +030060TRACE_EVENT_FN_COND(hcall_entry,
Anton Blanchardc8cd0932009-10-26 18:50:29 +000061
Anton Blanchard6f263532009-10-26 18:51:09 +000062 TP_PROTO(unsigned long opcode, unsigned long *args),
Anton Blanchardc8cd0932009-10-26 18:50:29 +000063
Anton Blanchard6f263532009-10-26 18:51:09 +000064 TP_ARGS(opcode, args),
Anton Blanchardc8cd0932009-10-26 18:50:29 +000065
Denis Kirjanov126df082015-12-14 23:18:06 +030066 TP_CONDITION(cpu_online(raw_smp_processor_id())),
67
Anton Blanchardc8cd0932009-10-26 18:50:29 +000068 TP_STRUCT__entry(
69 __field(unsigned long, opcode)
70 ),
71
72 TP_fast_assign(
73 __entry->opcode = opcode;
74 ),
75
76 TP_printk("opcode=%lu", __entry->opcode),
77
78 hcall_tracepoint_regfunc, hcall_tracepoint_unregfunc
79);
80
Denis Kirjanov126df082015-12-14 23:18:06 +030081TRACE_EVENT_FN_COND(hcall_exit,
Anton Blanchardc8cd0932009-10-26 18:50:29 +000082
Anton Blanchard6f263532009-10-26 18:51:09 +000083 TP_PROTO(unsigned long opcode, unsigned long retval,
84 unsigned long *retbuf),
Anton Blanchardc8cd0932009-10-26 18:50:29 +000085
Anton Blanchard6f263532009-10-26 18:51:09 +000086 TP_ARGS(opcode, retval, retbuf),
Anton Blanchardc8cd0932009-10-26 18:50:29 +000087
Denis Kirjanov126df082015-12-14 23:18:06 +030088 TP_CONDITION(cpu_online(raw_smp_processor_id())),
89
Anton Blanchardc8cd0932009-10-26 18:50:29 +000090 TP_STRUCT__entry(
91 __field(unsigned long, opcode)
92 __field(unsigned long, retval)
93 ),
94
95 TP_fast_assign(
96 __entry->opcode = opcode;
97 __entry->retval = retval;
98 ),
99
100 TP_printk("opcode=%lu retval=%lu", __entry->opcode, __entry->retval),
101
102 hcall_tracepoint_regfunc, hcall_tracepoint_unregfunc
103);
104#endif
105
Anton Blanchardc49f6352014-07-03 17:20:50 +1000106#ifdef CONFIG_PPC_POWERNV
107extern void opal_tracepoint_regfunc(void);
108extern void opal_tracepoint_unregfunc(void);
109
110TRACE_EVENT_FN(opal_entry,
111
112 TP_PROTO(unsigned long opcode, unsigned long *args),
113
114 TP_ARGS(opcode, args),
115
116 TP_STRUCT__entry(
117 __field(unsigned long, opcode)
118 ),
119
120 TP_fast_assign(
121 __entry->opcode = opcode;
122 ),
123
124 TP_printk("opcode=%lu", __entry->opcode),
125
126 opal_tracepoint_regfunc, opal_tracepoint_unregfunc
127);
128
129TRACE_EVENT_FN(opal_exit,
130
131 TP_PROTO(unsigned long opcode, unsigned long retval),
132
133 TP_ARGS(opcode, retval),
134
135 TP_STRUCT__entry(
136 __field(unsigned long, opcode)
137 __field(unsigned long, retval)
138 ),
139
140 TP_fast_assign(
141 __entry->opcode = opcode;
142 __entry->retval = retval;
143 ),
144
145 TP_printk("opcode=%lu retval=%lu", __entry->opcode, __entry->retval),
146
147 opal_tracepoint_regfunc, opal_tracepoint_unregfunc
148);
149#endif
150
Aneesh Kumar K.Vcfcb3d82015-04-14 13:05:57 +0530151TRACE_EVENT(hash_fault,
152
153 TP_PROTO(unsigned long addr, unsigned long access, unsigned long trap),
154 TP_ARGS(addr, access, trap),
155 TP_STRUCT__entry(
156 __field(unsigned long, addr)
157 __field(unsigned long, access)
158 __field(unsigned long, trap)
159 ),
160
161 TP_fast_assign(
162 __entry->addr = addr;
163 __entry->access = access;
164 __entry->trap = trap;
165 ),
166
167 TP_printk("hash fault with addr 0x%lx and access = 0x%lx trap = 0x%lx",
168 __entry->addr, __entry->access, __entry->trap)
169);
170
Anton Blanchard1bf4af12009-10-26 18:47:42 +0000171#endif /* _TRACE_POWERPC_H */
172
173#undef TRACE_INCLUDE_PATH
174#undef TRACE_INCLUDE_FILE
175
176#define TRACE_INCLUDE_PATH asm
177#define TRACE_INCLUDE_FILE trace
178
179#include <trace/define_trace.h>