Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

libbpf: Add ARC support to bpf_tracing.h

Add PT_REGS macros suitable for ARCompact and ARCv2.

Signed-off-by: Vladimir Isaev <isaev@synopsys.com>
Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Song Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/bpf/20220408224442.599566-1-geomatsi@gmail.com

authored by

Vladimir Isaev and committed by
Andrii Nakryiko
07385998 34ba23b4

+25
+2
tools/include/uapi/asm/bpf_perf_event.h
··· 1 1 #if defined(__aarch64__) 2 2 #include "../../arch/arm64/include/uapi/asm/bpf_perf_event.h" 3 + #elif defined(__arc__) 4 + #include "../../arch/arc/include/uapi/asm/bpf_perf_event.h" 3 5 #elif defined(__s390__) 4 6 #include "../../arch/s390/include/uapi/asm/bpf_perf_event.h" 5 7 #elif defined(__riscv)
+23
tools/lib/bpf/bpf_tracing.h
··· 27 27 #elif defined(__TARGET_ARCH_riscv) 28 28 #define bpf_target_riscv 29 29 #define bpf_target_defined 30 + #elif defined(__TARGET_ARCH_arc) 31 + #define bpf_target_arc 32 + #define bpf_target_defined 30 33 #else 31 34 32 35 /* Fall back to what the compiler says */ ··· 56 53 #define bpf_target_defined 57 54 #elif defined(__riscv) && __riscv_xlen == 64 58 55 #define bpf_target_riscv 56 + #define bpf_target_defined 57 + #elif defined(__arc__) 58 + #define bpf_target_arc 59 59 #define bpf_target_defined 60 60 #endif /* no compiler target */ 61 61 ··· 237 231 #define __PT_SP_REG sp 238 232 #define __PT_IP_REG pc 239 233 /* riscv does not select ARCH_HAS_SYSCALL_WRAPPER. */ 234 + #define PT_REGS_SYSCALL_REGS(ctx) ctx 235 + 236 + #elif defined(bpf_target_arc) 237 + 238 + /* arc provides struct user_pt_regs instead of struct pt_regs to userspace */ 239 + #define __PT_REGS_CAST(x) ((const struct user_regs_struct *)(x)) 240 + #define __PT_PARM1_REG scratch.r0 241 + #define __PT_PARM2_REG scratch.r1 242 + #define __PT_PARM3_REG scratch.r2 243 + #define __PT_PARM4_REG scratch.r3 244 + #define __PT_PARM5_REG scratch.r4 245 + #define __PT_RET_REG scratch.blink 246 + #define __PT_FP_REG __unsupported__ 247 + #define __PT_RC_REG scratch.r0 248 + #define __PT_SP_REG scratch.sp 249 + #define __PT_IP_REG scratch.ret 250 + /* arc does not select ARCH_HAS_SYSCALL_WRAPPER. */ 240 251 #define PT_REGS_SYSCALL_REGS(ctx) ctx 241 252 242 253 #endif