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