On Fri, Apr 8, 2022 at 10:21 AM Sergey Matyukevich <geomatsi@xxxxxxxxx> wrote: > > From: Vladimir Isaev <isaev@xxxxxxxxxxxx> > > Add PT_REGS macros suitable for ARCompact and ARCv2. > > Signed-off-by: Vladimir Isaev <isaev@xxxxxxxxxxxx> > --- I have no way to test this unfortunately. Please be available to help with ARC-specific issues if those come up. Thanks. Applied to bpf-next. > tools/include/uapi/asm/bpf_perf_event.h | 2 ++ > tools/lib/bpf/bpf_tracing.h | 23 +++++++++++++++++++++++ > 2 files changed, 25 insertions(+) > > diff --git a/tools/include/uapi/asm/bpf_perf_event.h b/tools/include/uapi/asm/bpf_perf_event.h > index 39acc149d843..d7dfeab0d71a 100644 > --- a/tools/include/uapi/asm/bpf_perf_event.h > +++ b/tools/include/uapi/asm/bpf_perf_event.h > @@ -1,5 +1,7 @@ > #if defined(__aarch64__) > #include "../../arch/arm64/include/uapi/asm/bpf_perf_event.h" > +#elif defined(__arc__) > +#include "../../arch/arc/include/uapi/asm/bpf_perf_event.h" > #elif defined(__s390__) > #include "../../arch/s390/include/uapi/asm/bpf_perf_event.h" > #elif defined(__riscv) > diff --git a/tools/lib/bpf/bpf_tracing.h b/tools/lib/bpf/bpf_tracing.h > index e3a8c947e89f..01ce121c302d 100644 > --- a/tools/lib/bpf/bpf_tracing.h > +++ b/tools/lib/bpf/bpf_tracing.h > @@ -27,6 +27,9 @@ > #elif defined(__TARGET_ARCH_riscv) > #define bpf_target_riscv > #define bpf_target_defined > +#elif defined(__TARGET_ARCH_arc) > + #define bpf_target_arc > + #define bpf_target_defined > #else > > /* Fall back to what the compiler says */ > @@ -54,6 +57,9 @@ > #elif defined(__riscv) && __riscv_xlen == 64 > #define bpf_target_riscv > #define bpf_target_defined > +#elif defined(__arc__) > + #define bpf_target_arc > + #define bpf_target_defined > #endif /* no compiler target */ > > #endif > @@ -233,6 +239,23 @@ struct pt_regs___arm64 { > /* riscv does not select ARCH_HAS_SYSCALL_WRAPPER. */ > #define PT_REGS_SYSCALL_REGS(ctx) ctx > > +#elif defined(bpf_target_arc) > + > +/* arc provides struct user_pt_regs instead of struct pt_regs to userspace */ > +#define __PT_REGS_CAST(x) ((const struct user_regs_struct *)(x)) > +#define __PT_PARM1_REG scratch.r0 > +#define __PT_PARM2_REG scratch.r1 > +#define __PT_PARM3_REG scratch.r2 > +#define __PT_PARM4_REG scratch.r3 > +#define __PT_PARM5_REG scratch.r4 > +#define __PT_RET_REG scratch.blink > +#define __PT_FP_REG __unsupported__ > +#define __PT_RC_REG scratch.r0 > +#define __PT_SP_REG scratch.sp > +#define __PT_IP_REG scratch.ret > +/* arc does not select ARCH_HAS_SYSCALL_WRAPPER. */ > +#define PT_REGS_SYSCALL_REGS(ctx) ctx > + > #endif > > #if defined(bpf_target_defined) > -- > 2.35.1 >