Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp265686rwd; Fri, 19 May 2023 19:56:58 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4LEfFPh5BRTBKKkc5oZfiy6yqIUpqKrwrYqkqdRkf+DwZ+2zCBm2xNsV6kVV5eISE0V/MX X-Received: by 2002:a05:6a20:7d8b:b0:101:166:863f with SMTP id v11-20020a056a207d8b00b001010166863fmr4944988pzj.23.1684551418170; Fri, 19 May 2023 19:56:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684551418; cv=none; d=google.com; s=arc-20160816; b=Ag4ghtZdHtLawFrt3aemrwclVeUb8eBmg94KOXh55tX4kkVcqawPVh8DuSrne+daqJ GVlKIj7+2PYylWAyinSANDsXwdCLUNr9S1fBT6/lJ+LR1KosJhtAZROdThQEJu9lY9pF mXin6GSX5zTf3oKSArFDHI/KYVkj27ipnIeeulpr2GcFQFQMQle7zMIs06BIBrnR60tw D5NdvNAQquHW5XpnreFnNiuU1AOJ1DgLwzit5PFMIFivDQ1FThx35fluERSgbD3JYDjF GMApqdNnIMMbE9TdGGQzTZygu3/LfawVHNlF5BHnKv7TjBfC/yVKlZw+1xRrMaYvWFV3 PH3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=jdSvKOAXL7sdlLkGjTnnuwOA/VbKrzGOIijIH+Tf82k=; b=F4BKjFtyZ9QVNf6ezjgWdv7Qe32XAfpHmG89gqLk7ceFHMCsJ2YNy7FLTBd0QZDvhA Fx3jOkOuq5wxqVAoOtCGlIM672V8r3zVaS/0S7YILoL/jhYRrdo1MbR3dkzMD+S/6sYn RB5CBpmEQQPs9YOFNmIAS2C+K8axjNdFMX2fs4DZHJPP+MRyjE2M1bC5gvNejOzOO5Jb CU+jrLTQ5MddWUqgARtEvBepM48NIYkj2Xet7C8aeLNGEbxAsBZzd7DrIKPQMZgvCuxT qzHS2vUsw0M7Y50qmLF2r1KTpwK+qypbTHKdHLwiqTbhiYen9PZ+eXNVyJZPdymz5ZX9 Y0Vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xE8Cw7jD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b22-20020a637156000000b0051b48085aaasi609573pgn.858.2023.05.19.19.56.45; Fri, 19 May 2023 19:56:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xE8Cw7jD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230393AbjETCzz (ORCPT + 99 others); Fri, 19 May 2023 22:55:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230338AbjETCzx (ORCPT ); Fri, 19 May 2023 22:55:53 -0400 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2899EE4C for ; Fri, 19 May 2023 19:55:52 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-6436dfa15b3so2879842b3a.1 for ; Fri, 19 May 2023 19:55:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1684551351; x=1687143351; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=jdSvKOAXL7sdlLkGjTnnuwOA/VbKrzGOIijIH+Tf82k=; b=xE8Cw7jDANx3AqisU3EyAG8VrY1HFl5eTc84ib3IPvWx968QS3Aqj/Ee18o/QUglQP UszG3vCgAkfxlpn24AYf27GDUNEpDUU405dBM4CRA3h8+FitTO/SBDzvJWZohdd9WMLY LlB5bRSYIqKKW99Sh5peZrcLWc7wdoMhBI73p1LoJD0GczzjXTxjHq7j43K/Ucc7J07N /T8M7u9SSX2dC1wxkylvNVAaEV21EFnFFUg9hVEp2dPyi2C4gmII2Na3uJhIeOhcvik+ suQheC48KkYjXO9ht32iBrWY5zMNStb7YZh7p6/TO3FsUr0JII5JTkg8mgpaglK/b+Av Hpxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684551351; x=1687143351; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=jdSvKOAXL7sdlLkGjTnnuwOA/VbKrzGOIijIH+Tf82k=; b=e5dxbJu5R6yOl24TzXLYiPwYtdyRcNE8uQYX78tOL2oQnfOeqiMYL5emzGSCZPBU/2 0z6O55XQgc8jbcgGgJW7SNJZxo7bgHIsYaXrO/2+zI0AeSJEuxv9zHONpNwCREuCVNdO Jm6HWxJs9CCHKQg0jbdk2UXU0o82HIl8q0hmM5EPjSP/xrJZHQbz4eZ7XDFKZ6bLOyjs BXQaRttrhE9syU986VsDYl5q363o3C7wmEDL2m2pFNISL5iZ6Fk02fQC84FzfQV1DKxQ GKnJ/ieFkQimW2//UMLsHaGhCBGW0OyjKW3TVcveRnZCtYBiPkQgfUs0V7Deu6e4rF6a 16bg== X-Gm-Message-State: AC+VfDxlRBNMBEWP+VSGHuB4YQztw5eCEAA+LGdIOQf5+xbrfRimPoER PYioZlUglcwSAaKp31w145PK7w== X-Received: by 2002:a17:903:18b:b0:1ac:8be5:8787 with SMTP id z11-20020a170903018b00b001ac8be58787mr4699376plg.21.1684551351025; Fri, 19 May 2023 19:55:51 -0700 (PDT) Received: from leoy-yangtze.lan ([156.59.236.113]) by smtp.gmail.com with ESMTPSA id b6-20020a170902d50600b001a95aef9728sm346100plg.19.2023.05.19.19.55.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 May 2023 19:55:50 -0700 (PDT) From: Leo Yan To: Arnaldo Carvalho de Melo , John Garry , Will Deacon , James Clark , Mike Leach , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Eric Lin , Kan Liang , Qi Liu , Sandipan Das , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Leo Yan Subject: [PATCH v1 0/5] perf parse-regs: Refactor arch related functions Date: Sat, 20 May 2023 10:55:32 +0800 Message-Id: <20230520025537.1811986-1-leo.yan@linaro.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The register parsing have two levels: one level is under 'arch' folder, another level is under 'util' folder. A good design is 'arch' folder handles architecture specific operations and provides APIs for upper layer, on the other hand, 'util' folder should be general and simply calls APIs to talk to arch layer. The current code mixes these two layers, e.g. util/perf_regs.h includes architecture's perf_regs.h, so it implicitly couples with specific architecture during building time. Furthermore, util/perf_regs.c includes all architectures' perf_regs.h, this is easily to cause conflict due to duplicated definitions from any two different archs. So this patch series is to refactor arch related functions for register parsing: Firstly, it creates a new folder util/perf-regs-arch and uses dedicated source file for every arch, note, all of these source files will be built in tool to support cross analysis (e.g. we can run perf on x86 machine for parsing aarch64's perf data file). Secondly, rather than directly referring macros, we introduce new functions, these functions are provided by architecture and then will be invoked by perf common code. At the end, we can generalize the register parsing in 'util' folder. This patch series has been compiled successfully on my Arm64 and x86 machine. Leo Yan (5): perf parse-regs: Refactor arch register parsing functions perf parse-regs: Introduce functions arch__reg_{ip|sp}() perf parse-regs: Remove unused macros PERF_REG_{IP|SP} perf parse-regs: Remove PERF_REGS_{MAX|MASK} from common code perf parse-regs: Move out arch specific header from util/perf_regs.h tools/perf/arch/arm/include/perf_regs.h | 3 - tools/perf/arch/arm/util/perf_regs.c | 21 + tools/perf/arch/arm/util/unwind-libdw.c | 1 + tools/perf/arch/arm64/include/perf_regs.h | 3 - tools/perf/arch/arm64/util/machine.c | 1 + tools/perf/arch/arm64/util/perf_regs.c | 16 + tools/perf/arch/arm64/util/unwind-libdw.c | 1 + tools/perf/arch/csky/include/perf_regs.h | 3 - tools/perf/arch/csky/util/perf_regs.c | 21 + tools/perf/arch/csky/util/unwind-libdw.c | 1 + tools/perf/arch/mips/include/perf_regs.h | 2 - tools/perf/arch/mips/util/perf_regs.c | 21 + tools/perf/arch/powerpc/include/perf_regs.h | 3 - tools/perf/arch/powerpc/util/perf_regs.c | 16 + tools/perf/arch/powerpc/util/unwind-libdw.c | 1 + tools/perf/arch/riscv/include/perf_regs.h | 3 - tools/perf/arch/riscv/util/perf_regs.c | 21 + tools/perf/arch/riscv/util/unwind-libdw.c | 1 + tools/perf/arch/s390/include/perf_regs.h | 3 - tools/perf/arch/s390/util/perf_regs.c | 21 + tools/perf/arch/s390/util/unwind-libdw.c | 1 + tools/perf/arch/x86/include/perf_regs.h | 2 - tools/perf/arch/x86/util/perf_regs.c | 16 + tools/perf/arch/x86/util/unwind-libdw.c | 1 + tools/perf/util/Build | 1 + tools/perf/util/evsel.c | 2 +- tools/perf/util/perf-regs-arch/Build | 8 + .../util/perf-regs-arch/perf_regs_aarch64.c | 86 +++ .../perf/util/perf-regs-arch/perf_regs_arm.c | 50 ++ .../perf/util/perf-regs-arch/perf_regs_csky.c | 90 +++ .../perf/util/perf-regs-arch/perf_regs_mips.c | 77 +++ .../util/perf-regs-arch/perf_regs_powerpc.c | 135 ++++ .../util/perf-regs-arch/perf_regs_riscv.c | 82 +++ .../perf/util/perf-regs-arch/perf_regs_s390.c | 86 +++ .../perf/util/perf-regs-arch/perf_regs_x86.c | 88 +++ tools/perf/util/perf_regs.c | 646 +----------------- tools/perf/util/perf_regs.h | 18 +- tools/perf/util/unwind-libdw.c | 2 +- tools/perf/util/unwind.h | 4 +- 39 files changed, 887 insertions(+), 671 deletions(-) create mode 100644 tools/perf/util/perf-regs-arch/Build create mode 100644 tools/perf/util/perf-regs-arch/perf_regs_aarch64.c create mode 100644 tools/perf/util/perf-regs-arch/perf_regs_arm.c create mode 100644 tools/perf/util/perf-regs-arch/perf_regs_csky.c create mode 100644 tools/perf/util/perf-regs-arch/perf_regs_mips.c create mode 100644 tools/perf/util/perf-regs-arch/perf_regs_powerpc.c create mode 100644 tools/perf/util/perf-regs-arch/perf_regs_riscv.c create mode 100644 tools/perf/util/perf-regs-arch/perf_regs_s390.c create mode 100644 tools/perf/util/perf-regs-arch/perf_regs_x86.c -- 2.39.2