* [edk2-devel] [PATCH 0/2] ArmPkg/ArmLib: add functions to read system registers
@ 2024-02-23 10:56 Marcin Juszkiewicz
2024-02-23 10:56 ` [edk2-devel] [PATCH v2 1/2] ArmPkg/ArmLib: Add functions to read SVE/SME " Marcin Juszkiewicz
2024-02-23 10:56 ` [edk2-devel] [PATCH v2 2/2] ArmPkg/ArmLib: Add functions to read future " Marcin Juszkiewicz
0 siblings, 2 replies; 3+ messages in thread
From: Marcin Juszkiewicz @ 2024-02-23 10:56 UTC (permalink / raw)
To: devel; +Cc: Ard Biesheuvel, Leif Lindholm, Sami Mujawar, Marcin Juszkiewicz
My ArmCpuInfo tool reads system registers to check which features are
supported by AArch64 cores in host system.
I am updating it for 2023-12 update of "Arm A-profile Architecture
Registers" document [1] and had to add reading of several new system
registers.
1. https://developer.arm.com/documentation/ddi0601/2023-12/
While I can keep them in my application, they may be useful for someone
else too.
ArmLib build requirements need bump to 'armv8-a+sme' to get access to
SVE/SME related system registers.
Marcin Juszkiewicz (2):
ArmPkg/ArmLib: Add functions to read SVE/SME system registers
ArmPkg/ArmLib: Add functions to read future system registers
ArmPkg/Library/ArmLib/ArmBaseLib.inf | 4 ++
ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h | 46 +++++++++++++++++--
.../Library/ArmLib/AArch64/AArch64Support.S | 42 +++++++++++++++++
3 files changed, 88 insertions(+), 4 deletions(-)
--
2.43.2
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115879): https://edk2.groups.io/g/devel/message/115879
Mute This Topic: https://groups.io/mt/104526093/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 3+ messages in thread
* [edk2-devel] [PATCH v2 1/2] ArmPkg/ArmLib: Add functions to read SVE/SME system registers
2024-02-23 10:56 [edk2-devel] [PATCH 0/2] ArmPkg/ArmLib: add functions to read system registers Marcin Juszkiewicz
@ 2024-02-23 10:56 ` Marcin Juszkiewicz
2024-02-23 10:56 ` [edk2-devel] [PATCH v2 2/2] ArmPkg/ArmLib: Add functions to read future " Marcin Juszkiewicz
1 sibling, 0 replies; 3+ messages in thread
From: Marcin Juszkiewicz @ 2024-02-23 10:56 UTC (permalink / raw)
To: devel; +Cc: Ard Biesheuvel, Leif Lindholm, Sami Mujawar, Marcin Juszkiewicz
There are functions to read DFR, MMFR, PFR system registers. So let add
ones for SMFR0 and ZFR0 ones too.
ArmReadIdAA64Zfr0() uses s3_0_c0_c4_4 notation as clang 17 on my system
does not recognize normal name.
Bumps build flags to "armv8-a+sme" to get access to both registers.
Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
---
ArmPkg/Library/ArmLib/ArmBaseLib.inf | 4 ++++
ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h | 12 ++++++++++++
ArmPkg/Library/ArmLib/AArch64/AArch64Support.S | 11 +++++++++++
3 files changed, 27 insertions(+)
diff --git a/ArmPkg/Library/ArmLib/ArmBaseLib.inf b/ArmPkg/Library/ArmLib/ArmBaseLib.inf
index e37d85bee471..2e8812e8a386 100644
--- a/ArmPkg/Library/ArmLib/ArmBaseLib.inf
+++ b/ArmPkg/Library/ArmLib/ArmBaseLib.inf
@@ -48,3 +48,7 @@ [Packages]
[FeaturePcd.ARM]
gArmTokenSpaceGuid.PcdNormalMemoryNonshareableOverride
+
+[BuildOptions]
+ GCC:*_*_AARCH64_ASM_FLAGS = -march=armv8-a+sme
+ CLANGDWARF:*_*_AARCH64_ASM_FLAGS = -march=armv8-a+sme
diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
index 6380a019ddc5..2fd256f4acc8 100644
--- a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
+++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
@@ -102,4 +102,16 @@ ArmReadIdAA64Pfr1 (
VOID
);
+UINTN
+EFIAPI
+ArmReadIdAA64Smfr0 (
+ VOID
+ );
+
+UINTN
+EFIAPI
+ArmReadIdAA64Zfr0 (
+ VOID
+ );
+
#endif // AARCH64_LIB_H_
diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
index a7111e51882c..0e8e7b5cf0e6 100644
--- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
+++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
@@ -524,4 +524,15 @@ ASM_FUNC(ArmReadIdAA64Pfr1)
mrs x0, ID_AA64PFR1_EL1
ret
+ASM_FUNC(ArmReadIdAA64Smfr0)
+ mrs x0, ID_AA64SMFR0_EL1
+ ret
+
+
+ASM_FUNC(ArmReadIdAA64Zfr0)
+ mrs x0, s3_0_c0_c4_4
+# mrs x0, ID_AA64ZFR0_EL1
+ ret
+
+
ASM_FUNCTION_REMOVE_IF_UNREFERENCED
--
2.43.2
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115878): https://edk2.groups.io/g/devel/message/115878
Mute This Topic: https://groups.io/mt/104526092/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [edk2-devel] [PATCH v2 2/2] ArmPkg/ArmLib: Add functions to read future system registers
2024-02-23 10:56 [edk2-devel] [PATCH 0/2] ArmPkg/ArmLib: add functions to read system registers Marcin Juszkiewicz
2024-02-23 10:56 ` [edk2-devel] [PATCH v2 1/2] ArmPkg/ArmLib: Add functions to read SVE/SME " Marcin Juszkiewicz
@ 2024-02-23 10:56 ` Marcin Juszkiewicz
1 sibling, 0 replies; 3+ messages in thread
From: Marcin Juszkiewicz @ 2024-02-23 10:56 UTC (permalink / raw)
To: devel; +Cc: Ard Biesheuvel, Leif Lindholm, Sami Mujawar, Marcin Juszkiewicz
https://developer.arm.com/documentation/ddi0601/2023-12/ lists
more system registers than EDK2 supports now.
ISAR3, MMFR3, MMFR4, PFR2, FPFR0 were added.
Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
---
ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h | 34 ++++++++++++++++---
.../Library/ArmLib/AArch64/AArch64Support.S | 31 +++++++++++++++++
2 files changed, 61 insertions(+), 4 deletions(-)
diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
index 2fd256f4acc8..172b73f7acad 100644
--- a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
+++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
@@ -50,6 +50,12 @@ ArmReadIdAA64Dfr1 (
VOID
);
+UINTN
+EFIAPI
+ArmReadIdAA64Fpfr0 (
+ VOID
+ );
+
UINTN
EFIAPI
ArmReadIdAA64Isar0 (
@@ -68,6 +74,12 @@ ArmReadIdAA64Isar2 (
VOID
);
+UINTN
+EFIAPI
+ArmReadIdAA64Isar3 (
+ VOID
+ );
+
UINTN
EFIAPI
ArmReadIdAA64Mmfr0 (
@@ -80,16 +92,24 @@ ArmReadIdAA64Mmfr1 (
VOID
);
-/** Reads the ID_AA64MMFR2_EL1 register.
-
- @return The contents of the ID_AA64MMFR2_EL1 register.
-**/
UINTN
EFIAPI
ArmReadIdAA64Mmfr2 (
VOID
);
+UINTN
+EFIAPI
+ArmReadIdAA64Mmfr3 (
+ VOID
+ );
+
+UINTN
+EFIAPI
+ArmReadIdAA64Mmfr4 (
+ VOID
+ );
+
UINTN
EFIAPI
ArmReadIdAA64Pfr0 (
@@ -102,6 +122,12 @@ ArmReadIdAA64Pfr1 (
VOID
);
+UINTN
+EFIAPI
+ArmReadIdAA64Pfr2 (
+ VOID
+ );
+
UINTN
EFIAPI
ArmReadIdAA64Smfr0 (
diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
index 0e8e7b5cf0e6..b007aef67adf 100644
--- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
+++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
@@ -485,6 +485,12 @@ ASM_FUNC(ArmReadIdAA64Dfr1)
ret
+ASM_FUNC(ArmReadIdAA64Fpfr0)
+ mrs x0, s3_0_c0_c4_7
+# mrs x0, ID_AA64FPFR0_EL1
+ ret
+
+
ASM_FUNC(ArmReadIdAA64Isar0)
mrs x0, ID_AA64ISAR0_EL1
ret
@@ -500,6 +506,12 @@ ASM_FUNC(ArmReadIdAA64Isar2)
ret
+ASM_FUNC(ArmReadIdAA64Isar3)
+ mrs x0, s3_0_c0_c6_3
+# mrs x0, ID_AA64ISAR3_EL1
+ ret
+
+
ASM_FUNC(ArmReadIdAA64Mmfr0)
mrs x0, ID_AA64MMFR0_EL1
ret
@@ -515,6 +527,18 @@ ASM_FUNC(ArmReadIdAA64Mmfr2)
ret
+ASM_FUNC(ArmReadIdAA64Mmfr3)
+ mrs x0, s3_0_c0_c7_3
+# mrs x0, ID_AA64MMFR3_EL1
+ ret
+
+
+ASM_FUNC(ArmReadIdAA64Mmfr4)
+ mrs x0, s3_0_c0_c7_4
+# mrs x0, ID_AA64MMFR4_EL1
+ ret
+
+
ASM_FUNC(ArmReadIdAA64Pfr0)
mrs x0, ID_AA64PFR0_EL1
ret
@@ -524,6 +548,13 @@ ASM_FUNC(ArmReadIdAA64Pfr1)
mrs x0, ID_AA64PFR1_EL1
ret
+
+ASM_FUNC(ArmReadIdAA64Pfr2)
+ mrs x0, s3_0_c0_c4_2
+# mrs x0, ID_AA64PFR2_EL1
+ ret
+
+
ASM_FUNC(ArmReadIdAA64Smfr0)
mrs x0, ID_AA64SMFR0_EL1
ret
--
2.43.2
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#115880): https://edk2.groups.io/g/devel/message/115880
Mute This Topic: https://groups.io/mt/104526094/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-02-23 10:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-23 10:56 [edk2-devel] [PATCH 0/2] ArmPkg/ArmLib: add functions to read system registers Marcin Juszkiewicz
2024-02-23 10:56 ` [edk2-devel] [PATCH v2 1/2] ArmPkg/ArmLib: Add functions to read SVE/SME " Marcin Juszkiewicz
2024-02-23 10:56 ` [edk2-devel] [PATCH v2 2/2] ArmPkg/ArmLib: Add functions to read future " Marcin Juszkiewicz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox