Commit b0c47807d31deccdfb78a22a0d04dd9785bdb9d3

Authored by David S. Miller
1 parent 7a12b5031c

bpf: Add sparc support to tools and samples.

Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>

Showing 3 changed files with 24 additions and 0 deletions Side-by-side Diff

samples/bpf/bpf_helpers.h
... ... @@ -146,10 +146,29 @@
146 146 #define PT_REGS_SP(x) ((x)->sp)
147 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)
149 163 #endif
150 164  
  165 +#endif
  166 +
151 167 #ifdef __powerpc__
152 168 #define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = (ctx)->link; })
  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); })
153 172 #define BPF_KRETPROBE_READ_RET_IP BPF_KPROBE_READ_RET_IP
154 173 #else
155 174 #define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ \
tools/build/feature/test-bpf.c
... ... @@ -9,6 +9,9 @@
9 9 # define __NR_bpf 321
10 10 # elif defined(__aarch64__)
11 11 # define __NR_bpf 280
  12 +# elif defined(__sparc__)
  13 +# define __NR_bpf 349
  14 +# else
12 15 # error __NR_bpf not defined. libbpf does not support your arch.
13 16 # endif
14 17 #endif
... ... @@ -37,6 +37,8 @@
37 37 # define __NR_bpf 321
38 38 # elif defined(__aarch64__)
39 39 # define __NR_bpf 280
  40 +# elif defined(__sparc__)
  41 +# define __NR_bpf 349
40 42 # else
41 43 # error __NR_bpf not defined. libbpf does not support your arch.
42 44 # endif