aboutsummaryrefslogtreecommitdiffstats
path: root/samples/bpf/bpf_helpers.h
diff options
context:
space:
mode:
Diffstat (limited to 'samples/bpf/bpf_helpers.h')
-rw-r--r--samples/bpf/bpf_helpers.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/samples/bpf/bpf_helpers.h b/samples/bpf/bpf_helpers.h
index 9363500131a7..7904a2a493de 100644
--- a/samples/bpf/bpf_helpers.h
+++ b/samples/bpf/bpf_helpers.h
@@ -82,6 +82,7 @@ static int (*bpf_l4_csum_replace)(void *ctx, int off, int from, int to, int flag
82#define PT_REGS_FP(x) ((x)->bp) 82#define PT_REGS_FP(x) ((x)->bp)
83#define PT_REGS_RC(x) ((x)->ax) 83#define PT_REGS_RC(x) ((x)->ax)
84#define PT_REGS_SP(x) ((x)->sp) 84#define PT_REGS_SP(x) ((x)->sp)
85#define PT_REGS_IP(x) ((x)->ip)
85 86
86#elif defined(__s390x__) 87#elif defined(__s390x__)
87 88
@@ -94,6 +95,7 @@ static int (*bpf_l4_csum_replace)(void *ctx, int off, int from, int to, int flag
94#define PT_REGS_FP(x) ((x)->gprs[11]) /* Works only with CONFIG_FRAME_POINTER */ 95#define PT_REGS_FP(x) ((x)->gprs[11]) /* Works only with CONFIG_FRAME_POINTER */
95#define PT_REGS_RC(x) ((x)->gprs[2]) 96#define PT_REGS_RC(x) ((x)->gprs[2])
96#define PT_REGS_SP(x) ((x)->gprs[15]) 97#define PT_REGS_SP(x) ((x)->gprs[15])
98#define PT_REGS_IP(x) ((x)->ip)
97 99
98#elif defined(__aarch64__) 100#elif defined(__aarch64__)
99 101
@@ -106,6 +108,30 @@ static int (*bpf_l4_csum_replace)(void *ctx, int off, int from, int to, int flag
106#define PT_REGS_FP(x) ((x)->regs[29]) /* Works only with CONFIG_FRAME_POINTER */ 108#define PT_REGS_FP(x) ((x)->regs[29]) /* Works only with CONFIG_FRAME_POINTER */
107#define PT_REGS_RC(x) ((x)->regs[0]) 109#define PT_REGS_RC(x) ((x)->regs[0])
108#define PT_REGS_SP(x) ((x)->sp) 110#define PT_REGS_SP(x) ((x)->sp)
111#define PT_REGS_IP(x) ((x)->pc)
112
113#elif defined(__powerpc__)
114
115#define PT_REGS_PARM1(x) ((x)->gpr[3])
116#define PT_REGS_PARM2(x) ((x)->gpr[4])
117#define PT_REGS_PARM3(x) ((x)->gpr[5])
118#define PT_REGS_PARM4(x) ((x)->gpr[6])
119#define PT_REGS_PARM5(x) ((x)->gpr[7])
120#define PT_REGS_RC(x) ((x)->gpr[3])
121#define PT_REGS_SP(x) ((x)->sp)
122#define PT_REGS_IP(x) ((x)->nip)
109 123
110#endif 124#endif
125
126#ifdef __powerpc__
127#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = (ctx)->link; })
128#define BPF_KRETPROBE_READ_RET_IP BPF_KPROBE_READ_RET_IP
129#else
130#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ \
131 bpf_probe_read(&(ip), sizeof(ip), (void *)PT_REGS_RET(ctx)); })
132#define BPF_KRETPROBE_READ_RET_IP(ip, ctx) ({ \
133 bpf_probe_read(&(ip), sizeof(ip), \
134 (void *)(PT_REGS_FP(ctx) + sizeof(ip))); })
135#endif
136
111#endif 137#endif