From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752778AbbHaUQd (ORCPT ); Mon, 31 Aug 2015 16:16:33 -0400 Received: from mail.kernel.org ([198.145.29.136]:47438 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751381AbbHaUQc (ORCPT ); Mon, 31 Aug 2015 16:16:32 -0400 Date: Mon, 31 Aug 2015 17:16:28 -0300 From: Arnaldo Carvalho de Melo To: Jean Pihet , Will Deacon Cc: He Kuang , wangnan0@huawei.com, a.p.zijlstra@chello.nl, mingo@redhat.com, jolsa@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] perf tools: Support bpf prologue for arm64 Message-ID: <20150831201628.GH4423@kernel.org> References: <1440818212-121220-1-git-send-email-hekuang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1440818212-121220-1-git-send-email-hekuang@huawei.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Sat, Aug 29, 2015 at 03:16:52AM +0000, He Kuang escreveu: > This patch implements arch_get_reg_info() for arm64 to enable > HAVE_BPF_PROLOGUE feature. For arm64, structure pt_regs is not composed > by fields of register names but an array of regs, so here we simply > multiply fixed register size by index number to get the byte offset. Hi Jean, Will, are you ok with this? Can I have Acked-by or Reviewed-by tags from you? He, please try to add the authors of the files you change in the CC list. - Arnaldo > Signed-off-by: He Kuang > --- > tools/perf/arch/arm64/Makefile | 1 + > tools/perf/arch/arm64/util/dwarf-regs.c | 26 ++++++++++++++++++++++++++ > 2 files changed, 27 insertions(+) > > diff --git a/tools/perf/arch/arm64/Makefile b/tools/perf/arch/arm64/Makefile > index 7fbca17..1256e6e 100644 > --- a/tools/perf/arch/arm64/Makefile > +++ b/tools/perf/arch/arm64/Makefile > @@ -1,3 +1,4 @@ > ifndef NO_DWARF > PERF_HAVE_DWARF_REGS := 1 > endif > +PERF_HAVE_ARCH_GET_REG_INFO := 1 > diff --git a/tools/perf/arch/arm64/util/dwarf-regs.c b/tools/perf/arch/arm64/util/dwarf-regs.c > index d49efeb..cb2c50a 100644 > --- a/tools/perf/arch/arm64/util/dwarf-regs.c > +++ b/tools/perf/arch/arm64/util/dwarf-regs.c > @@ -10,6 +10,10 @@ > > #include > #include > +#include > +#include > + > +#define PT_REG_SIZE (sizeof(((struct user_pt_regs *)0)->regs[0])) > > struct pt_regs_dwarfnum { > const char *name; > @@ -78,3 +82,25 @@ const char *get_arch_regstr(unsigned int n) > return roff->name; > return NULL; > } > + > +#ifdef HAVE_BPF_PROLOGUE > +int arch_get_reg_info(const char *name, int *offset) > +{ > + const struct pt_regs_dwarfnum *roff; > + > + if (!name || !offset) > + return -1; > + > + for (roff = regdwarfnum_table; roff->name != NULL; roff++) { > + if (!strcmp(roff->name, name)) { > + if (roff->dwarfnum < 0) > + return -1; > + > + *offset = roff->dwarfnum * PT_REG_SIZE; > + return 0; > + } > + } > + > + return -1; > +} > +#endif > -- > 1.8.5.2