On Fri, Apr 8, 2022 at 3:18 PM Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> wrote: > > 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. > Welp, didn't see Song's email before applying and sending. Song is right, we'll need your SoB. Backed out patch for now. > > 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 > >