From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from muminek.juszkiewicz.com.pl (muminek.juszkiewicz.com.pl [213.251.184.221]) by mx.groups.io with SMTP id smtpd.web11.11562.1680881422750667140 for ; Fri, 07 Apr 2023 08:30:23 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=softfail (domain: linaro.org, ip: 213.251.184.221, mailfrom: marcin.juszkiewicz@linaro.org) Received: from localhost (localhost [127.0.0.1]) by muminek.juszkiewicz.com.pl (Postfix) with ESMTP id 6EACD26069C; Fri, 7 Apr 2023 17:30:15 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at juszkiewicz.com.pl Received: from muminek.juszkiewicz.com.pl ([127.0.0.1]) by localhost (muminek.juszkiewicz.com.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nR7fCfK9dpHt; Fri, 7 Apr 2023 17:30:13 +0200 (CEST) Received: from applejack.lan (83.11.21.111.ipv4.supernova.orange.pl [83.11.21.111]) by muminek.juszkiewicz.com.pl (Postfix) with ESMTPSA id 27DAF260FDE; Fri, 7 Apr 2023 17:30:13 +0200 (CEST) From: "Marcin Juszkiewicz" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Leif Lindholm , Rebecca Cran , Pedro Falcato , Marcin Juszkiewicz Subject: [PATCH v5 1/2] ArmLib: add functions to read system registers Date: Fri, 7 Apr 2023 17:29:56 +0200 Message-Id: <20230407152957.157494-2-marcin.juszkiewicz@linaro.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230407152957.157494-1-marcin.juszkiewicz@linaro.org> References: <1753ABF1A296B040.11304@groups.io> <20230407152957.157494-1-marcin.juszkiewicz@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ArmCpuInfo uses those to read system registers and other parts of EDK2 may find them useful. Signed-off-by: Marcin Juszkiewicz --- ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h | 48 +++++++++++++++++++ .../Library/ArmLib/AArch64/AArch64Support.S | 32 +++++++++++++ 2 files changed, 80 insertions(+) diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h b/ArmPkg/Library/= ArmLib/AArch64/AArch64Lib.h index 330481fc50db..d9744a66cdcf 100644 --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h @@ -44,6 +44,54 @@ ArmReadIdAA64Pfr0 ( VOID ); =20 +UINTN +EFIAPI +ArmReadIdAA64Pfr1 ( + VOID + ); + +UINTN +EFIAPI +ArmReadIdAA64Dfr0 ( + VOID + ); + +UINTN +EFIAPI +ArmReadIdAA64Dfr1 ( + VOID + ); + +UINTN +EFIAPI +ArmReadIdAA64Isar0 ( + VOID + ); + +UINTN +EFIAPI +ArmReadIdAA64Isar1 ( + VOID + ); + +UINTN +EFIAPI +ArmReadIdAA64Isar2 ( + VOID + ); + +UINTN +EFIAPI +ArmReadIdAA64Mmfr0 ( + VOID + ); + +UINTN +EFIAPI +ArmReadIdAA64Mmfr1 ( + VOID + ); + /** Reads the ID_AA64MMFR2_EL1 register. =20 @return The contents of the ID_AA64MMFR2_EL1 register. diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Libr= ary/ArmLib/AArch64/AArch64Support.S index d3cc1e86716b..3e8d461bc819 100644 --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S @@ -482,4 +482,36 @@ ASM_FUNC(ArmWriteCntHctl) msr cnthctl_el2, x0 ret =20 +ASM_FUNC(ArmReadIdAA64Pfr1) + mrs x0, ID_AA64PFR1_EL1 + ret + +ASM_FUNC(ArmReadIdAA64Dfr0) + mrs x0, ID_AA64DFR0_EL1 + ret + +ASM_FUNC(ArmReadIdAA64Dfr1) + mrs x0, ID_AA64DFR1_EL1 + ret + +ASM_FUNC(ArmReadIdAA64Isar0) + mrs x0, ID_AA64ISAR0_EL1 + ret + +ASM_FUNC(ArmReadIdAA64Isar1) + mrs x0, ID_AA64ISAR1_EL1 + ret + +ASM_FUNC(ArmReadIdAA64Isar2) + mrs x0, ID_AA64ISAR2_EL1 + ret + +ASM_FUNC(ArmReadIdAA64Mmfr0) + mrs x0, ID_AA64MMFR0_EL1 + ret + +ASM_FUNC(ArmReadIdAA64Mmfr1) + mrs x0, ID_AA64MMFR1_EL1 + ret + ASM_FUNCTION_REMOVE_IF_UNREFERENCED --=20 2.40.0