Skip to content

Commit b0c4780

Browse files
committed
bpf: Add sparc support to tools and samples.
Signed-off-by: David S. Miller <davem@davemloft.net> Acked-by: Daniel Borkmann <daniel@iogearbox.net>
1 parent 7a12b50 commit b0c4780

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

samples/bpf/bpf_helpers.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,30 @@ static int (*bpf_skb_change_head)(void *, int len, int flags) =
146146
#define PT_REGS_SP(x) ((x)->sp)
147147
#define PT_REGS_IP(x) ((x)->nip)
148148

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+
149165
#endif
150166

151167
#ifdef __powerpc__
152168
#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = (ctx)->link; })
153169
#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
154173
#else
155174
#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ \
156175
bpf_probe_read(&(ip), sizeof(ip), (void *)PT_REGS_RET(ctx)); })

tools/build/feature/test-bpf.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
# define __NR_bpf 321
1010
# elif defined(__aarch64__)
1111
# define __NR_bpf 280
12+
# elif defined(__sparc__)
13+
# define __NR_bpf 349
14+
# else
1215
# error __NR_bpf not defined. libbpf does not support your arch.
1316
# endif
1417
#endif

tools/lib/bpf/bpf.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
# define __NR_bpf 321
3838
# elif defined(__aarch64__)
3939
# define __NR_bpf 280
40+
# elif defined(__sparc__)
41+
# define __NR_bpf 349
4042
# else
4143
# error __NR_bpf not defined. libbpf does not support your arch.
4244
# endif

0 commit comments

Comments
 (0)