Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp3913832pxb; Mon, 27 Sep 2021 05:35:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzEPfhmoPQHKUqZ6Y0MEwBfjLo/Eu0uT2WCSc5eSif6C1K+ZX1JQfEnKkb95kM+mvEsIz8M X-Received: by 2002:a17:90b:f13:: with SMTP id br19mr19708136pjb.149.1632746153640; Mon, 27 Sep 2021 05:35:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632746153; cv=none; d=google.com; s=arc-20160816; b=xvZENVNqapRXB7YG9a0/MNdO8aahX9LlJpLTCOzZIfgFD4FUmZ89JAoBTdgRlgrwY/ uyU5ZqnA7L4ZH+fO7KgGmR4BYbSqeHhJr6m+rNJG1aEmrSbif/bnVwM+Rk26UAZ8X3VV OlBwXxq9FYWwxMCSezECRFWAH0iAad/WsDw/8DN3NAjVPXvotGyD42D+a2ywdBaTKQQC BaSTBJA/7wwh5d5qWp7t2RpJwSK32w/7/R4WMgOnNdz4gM4cfaTdJL3xf7WJZR49Aq0m 3LYtYuDCGVDI3xeSWeFhhOLV+hHZupv0s0olPWVRVx5Ax8cY4PU8D5qDlKXv38kNdh3G HoSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=SIFWB2JmltcqNv/KhYtKtRA8466rj25R6iWQXdLJ5L8=; b=AVWuFmhlsvB/ttUoxy+Zqa5yrfd6JtWrAhi0ntE5B3n/cM7pmPwxu9lXwt+Xsi+H8a t2sGTKF0nxwHgp8I1daP5cGvBwQ0HiiSoUXSsBeE2KV78cbItgP4pYXpBhk2JIP/7UEs fBArrkKxMaBi0Jx1oUiSk5yzTZGpyb6nWikeZ7w/QprnZvCA6mjWvSbiPw7fFJVoOxNw HKB7Q62dJchXMHTHlm79fmXxui8Fy8NmglruY0i66CEbA1VteNhfNnjosOucPhLR132A zGVx7gJI0A2rrSaEqQSYxuuS1CYAqGWz/oy63tw0mzEyQD+SZnTI6RmMg4jqfBVHWYh8 x4FQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=jGl+I3en; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r9si21543109pgv.331.2021.09.27.05.35.40; Mon, 27 Sep 2021 05:35:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=jGl+I3en; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234398AbhI0MgA (ORCPT + 99 others); Mon, 27 Sep 2021 08:36:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:54608 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234380AbhI0Mf7 (ORCPT ); Mon, 27 Sep 2021 08:35:59 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7ECEC60F41; Mon, 27 Sep 2021 12:34:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1632746061; bh=D+5/8tHCQxdmWTOlYcOv1iIAUp7sdgYnP5xXPObXi1I=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=jGl+I3enIxJKufmTuRxiGyGny5Uqc+2WEAxMwMZODl9SZo8AtZRCOPfW/e35tnmj5 hTHi1XNUiltYTMu68VYxXYn8qMclPOOdp1iG4xJJZwYbO6xkiIx7qlD4F/PAvC0CO8 APu+G76FVFw47Ib0IjAtuNX3esgJYZwbz8zgcITWfKtCmJKZjk3MmHXt26R+T1ENgv gAzGS7piBrm7zonQkndmC4xbrVQHtcLdhasoPaIxp4rEi1RgkohRN4fNFSJtL/Pq0H qE7zdmNFkibGYyIm8EGHShVTh1gyY7hD8qPncW2phGulMeBakllVOqj/e1J6QLbWrb UrlyawfD8W/pw== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 1027F410A1; Mon, 27 Sep 2021 09:34:19 -0300 (-03) Date: Mon, 27 Sep 2021 09:34:19 -0300 From: Arnaldo Carvalho de Melo To: William Cohen Cc: peterz@infradead.org, mingo@redhat.com, mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@redhat.com, namhyung@kernel.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, linux-riscv@lists.infradead.org Subject: Re: [PATCH] perf annotate: Add riscv64 support Message-ID: References: <20210927005115.610264-1-wcohen@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20210927005115.610264-1-wcohen@redhat.com> X-Url: http://acmel.wordpress.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Sun, Sep 26, 2021 at 08:51:15PM -0400, William Cohen escreveu: > This patch adds basic arch initialization and instruction associate > support for the riscv64 CPU architecture. > > Example output: > > $ perf annotate --stdio2 > Samples: 122K of event 'task-clock:u', 4000 Hz, Event count (approx.): 30637250000, [percent: local period] > strcmp() /usr/lib64/libc-2.32.so > Percent > > Disassembly of section .text: > > 0000000000069a30 : > __GI_strcmp(): > const unsigned char *s2 = (const unsigned char *) p2; > unsigned char c1, c2; > > do > { > c1 = (unsigned char) *s1++; > 37.30 lbu a5,0(a0) > c2 = (unsigned char) *s2++; > 1.23 addi a1,a1,1 > c1 = (unsigned char) *s1++; > 18.68 addi a0,a0,1 > c2 = (unsigned char) *s2++; > 1.37 lbu a4,-1(a1) > if (c1 == '\0') > 18.71 ↓ beqz a5,18 > return c1 - c2; > } Thanks, applied. - Arnaldo > Signed-off-by: William Cohen > --- > .../perf/arch/riscv64/annotate/instructions.c | 34 +++++++++++++++++++ > tools/perf/util/annotate.c | 5 +++ > 2 files changed, 39 insertions(+) > create mode 100644 tools/perf/arch/riscv64/annotate/instructions.c > > diff --git a/tools/perf/arch/riscv64/annotate/instructions.c b/tools/perf/arch/riscv64/annotate/instructions.c > new file mode 100644 > index 000000000000..869a0eb28953 > --- /dev/null > +++ b/tools/perf/arch/riscv64/annotate/instructions.c > @@ -0,0 +1,34 @@ > +// SPDX-License-Identifier: GPL-2.0 > + > +static > +struct ins_ops *riscv64__associate_ins_ops(struct arch *arch, const char *name) > +{ > + struct ins_ops *ops = NULL; > + > + if (!strncmp(name, "jal", 3) || > + !strncmp(name, "jr", 2) || > + !strncmp(name, "call", 4)) > + ops = &call_ops; > + else if (!strncmp(name, "ret", 3)) > + ops = &ret_ops; > + else if (name[0] == 'j' || name[0] == 'b') > + ops = &jump_ops; > + else > + return NULL; > + > + arch__associate_ins_ops(arch, name, ops); > + > + return ops; > +} > + > +static > +int riscv64__annotate_init(struct arch *arch, char *cpuid __maybe_unused) > +{ > + if (!arch->initialized) { > + arch->associate_instruction_ops = riscv64__associate_ins_ops; > + arch->initialized = true; > + arch->objdump.comment_char = '#'; > + } > + > + return 0; > +} > diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c > index 0bae061b2d6d..d919fa993872 100644 > --- a/tools/perf/util/annotate.c > +++ b/tools/perf/util/annotate.c > @@ -151,6 +151,7 @@ static int arch__associate_ins_ops(struct arch* arch, const char *name, struct i > #include "arch/mips/annotate/instructions.c" > #include "arch/x86/annotate/instructions.c" > #include "arch/powerpc/annotate/instructions.c" > +#include "arch/riscv64/annotate/instructions.c" > #include "arch/s390/annotate/instructions.c" > #include "arch/sparc/annotate/instructions.c" > > @@ -192,6 +193,10 @@ static struct arch architectures[] = { > .name = "powerpc", > .init = powerpc__annotate_init, > }, > + { > + .name = "riscv64", > + .init = riscv64__annotate_init, > + }, > { > .name = "s390", > .init = s390__annotate_init, > -- > 2.27.0 -- - Arnaldo