aboutsummaryrefslogtreecommitdiffstats
path: root/samples
diff options
context:
space:
mode:
Diffstat (limited to 'samples')
-rw-r--r--samples/bpf/bpf_helpers.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/samples/bpf/bpf_helpers.h b/samples/bpf/bpf_helpers.h
index 52de9d88c021..9a9c95f2c9fb 100644
--- a/samples/bpf/bpf_helpers.h
+++ b/samples/bpf/bpf_helpers.h
@@ -146,11 +146,30 @@ static int (*bpf_skb_change_head)(void *, int len, int flags) =
146#define PT_REGS_SP(x) ((x)->sp) 146#define PT_REGS_SP(x) ((x)->sp)
147#define PT_REGS_IP(x) ((x)->nip) 147#define PT_REGS_IP(x) ((x)->nip)
148 148
149#elif defined(__sparc__)
150
151#define PT_REGS_PARM1(x) ((x)->u_regs[UREG_I0])
152#define PT_REGS_PARM2(x) ((x)->u_regs[UREG_I1])
153#define PT_REGS_PARM3(x) ((x)->u_regs[UREG_I2])
154#define PT_REGS_PARM4(x) ((x)->u_regs[UREG_I3])
155#define PT_REGS_PARM5(x) ((x)->u_regs[UREG_I4])
156#define PT_REGS_RET(x) ((x)->u_regs[UREG_I7])
157#define PT_REGS_RC(x) ((x)->u_regs[UREG_I0])
158#define PT_REGS_SP(x) ((x)->u_regs[UREG_FP])
159#if defined(__arch64__)
160#define PT_REGS_IP(x) ((x)->tpc)
161#else
162#define PT_REGS_IP(x) ((x)->pc)
163#endif
164
149#endif 165#endif
150 166
151#ifdef __powerpc__ 167#ifdef __powerpc__
152#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = (ctx)->link; }) 168#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = (ctx)->link; })
153#define BPF_KRETPROBE_READ_RET_IP BPF_KPROBE_READ_RET_IP 169#define BPF_KRETPROBE_READ_RET_IP BPF_KPROBE_READ_RET_IP
170#elif defined(__sparc__)
171#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = PT_REGS_RET(ctx); })
172#define BPF_KRETPROBE_READ_RET_IP BPF_KPROBE_READ_RET_IP
154#else 173#else
155#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ \ 174#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ \
156 bpf_probe_read(&(ip), sizeof(ip), (void *)PT_REGS_RET(ctx)); }) 175 bpf_probe_read(&(ip), sizeof(ip), (void *)PT_REGS_RET(ctx)); })