diff options
Diffstat (limited to 'samples/bpf/bpf_helpers.h')
-rw-r--r-- | samples/bpf/bpf_helpers.h | 26 |
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 |