summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcin Juszkiewicz <marcin.juszkiewicz@linaro.org>2023-04-21 17:51:15 +0200
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-04-21 18:50:05 +0000
commita7c8969d03bb025020948fe9ababf428033de668 (patch)
tree6cba664165df3cf59e1d348dcff40bd5a3f6e2ef
parented2ff315db7e800dd7718b1d1320ea8024d4e8b2 (diff)
downloadedk2-a7c8969d03bb025020948fe9ababf428033de668.tar.gz
edk2-a7c8969d03bb025020948fe9ababf428033de668.tar.bz2
edk2-a7c8969d03bb025020948fe9ababf428033de668.zip
ArmLib: add functions to read system registers
ArmCpuInfo uses those to read system registers and other parts of EDK2 may find them useful. Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
-rw-r--r--ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h50
-rw-r--r--ArmPkg/Library/ArmLib/AArch64/AArch64Support.S58
2 files changed, 99 insertions, 9 deletions
diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
index 330481fc50..6380a019dd 100644
--- a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
+++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
@@ -40,7 +40,43 @@ ArmCleanInvalidateDataCacheEntryBySetWay (
UINTN
EFIAPI
-ArmReadIdAA64Pfr0 (
+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
);
@@ -54,4 +90,16 @@ ArmReadIdAA64Mmfr2 (
VOID
);
+UINTN
+EFIAPI
+ArmReadIdAA64Pfr0 (
+ VOID
+ );
+
+UINTN
+EFIAPI
+ArmReadIdAA64Pfr1 (
+ VOID
+ );
+
#endif // AARCH64_LIB_H_
diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
index d3cc1e8671..a7111e5188 100644
--- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
+++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
@@ -425,10 +425,6 @@ ASM_FUNC(ArmCallWFI)
wfi
ret
-ASM_FUNC(ArmReadIdAA64Mmfr2)
- mrs x0, ID_AA64MMFR2_EL1 // read EL1 MMFR2
- ret
-
ASM_FUNC(ArmReadMpidr)
mrs x0, mpidr_el1 // read EL1 MPIDR
ret
@@ -452,10 +448,6 @@ ASM_FUNC(ArmIsArchTimerImplemented)
ret
-ASM_FUNC(ArmReadIdAA64Pfr0)
- mrs x0, id_aa64pfr0_el1 // Read ID_AA64PFR0 Register
- ret
-
// VOID ArmWriteHcr(UINTN Hcr)
ASM_FUNC(ArmWriteHcr)
@@ -482,4 +474,54 @@ ASM_FUNC(ArmWriteCntHctl)
msr cnthctl_el2, x0
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_FUNC(ArmReadIdAA64Mmfr2)
+ mrs x0, ID_AA64MMFR2_EL1
+ ret
+
+
+ASM_FUNC(ArmReadIdAA64Pfr0)
+ mrs x0, ID_AA64PFR0_EL1
+ ret
+
+
+ASM_FUNC(ArmReadIdAA64Pfr1)
+ mrs x0, ID_AA64PFR1_EL1
+ ret
+
ASM_FUNCTION_REMOVE_IF_UNREFERENCED