From: Pierre Gondois <pierre.gondois@arm.com>
Add a ArmHasRngExt() to check for the FEAT_RNG extension.
Also add a mask for the RNDR bits.
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
---
ArmPkg/Include/Library/ArmLib.h | 12 +++++++++++-
ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c | 15 ++++++++++++++-
ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h | 2 ++
ArmPkg/Library/ArmLib/Arm/ArmV7Lib.c | 16 +++++++++++++++-
4 files changed, 42 insertions(+), 3 deletions(-)
diff --git a/ArmPkg/Include/Library/ArmLib.h b/ArmPkg/Include/Library/ArmLib.h
index 6566deebdde2..8058634dbc53 100644
--- a/ArmPkg/Include/Library/ArmLib.h
+++ b/ArmPkg/Include/Library/ArmLib.h
@@ -1,7 +1,7 @@
/** @file
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
- Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR>
+ Copyright (c) 2011 - 2022, Arm Limited. All rights reserved.<BR>
Copyright (c) 2020 - 2021, NUVIA Inc. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -769,6 +769,16 @@ ArmHasCcidx (
VOID
);
+/** Check if FEAT_RNG extension is available.
+
+ @retval TRUE if FEAT_RNG extension is available.
+ @retval FALSE otherwise.
+**/
+BOOLEAN
+ArmHasRngExt (
+ VOID
+ );
+
#ifdef MDE_CPU_ARM
///
/// AArch32-only ID Register Helper functions
diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c
index 7ab28e3e05fe..124b28e16874 100644
--- a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c
+++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c
@@ -1,7 +1,7 @@
/** @file
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
- Portions copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
+ Portions copyright (c) 2011 - 2022, Arm Limited. All rights reserved.<BR>
Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -104,3 +104,16 @@ ArmHasCcidx (
Mmfr2 = ArmReadIdAA64Mmfr2 ();
return (((Mmfr2 >> 20) & 0xF) == 1) ? TRUE : FALSE;
}
+
+/** Check if FEAT_RNG extension is available.
+
+ @retval TRUE if FEAT_RNG extension is available.
+ @retval FALSE otherwise.
+**/
+BOOLEAN
+ArmHasRngExt (
+ VOID
+ )
+{
+ return ArmReadIdIsar0 () & ID_AA64ISAR0_EL1_RNDR_MASK;
+}
diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
index 105a52ee16fe..61a775ea27e8 100644
--- a/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
+++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
@@ -11,6 +11,8 @@
#ifndef AARCH64_LIB_H_
#define AARCH64_LIB_H_
+#define ID_AA64ISAR0_EL1_RNDR_MASK ((UINT64)0xF << 60U)
+
typedef VOID (*AARCH64_CACHE_OPERATION)(
UINTN
);
diff --git a/ArmPkg/Library/ArmLib/Arm/ArmV7Lib.c b/ArmPkg/Library/ArmLib/Arm/ArmV7Lib.c
index 521d5be0de33..a4ec23c8f8d8 100644
--- a/ArmPkg/Library/ArmLib/Arm/ArmV7Lib.c
+++ b/ArmPkg/Library/ArmLib/Arm/ArmV7Lib.c
@@ -1,7 +1,7 @@
/** @file
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
- Copyright (c) 2011 - 2014, ARM Limited. All rights reserved.
+ Copyright (c) 2011 - 2022, Arm Limited. All rights reserved.
Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -119,3 +119,17 @@ ArmHasCcidx (
Mmfr4 = ArmReadIdMmfr4 ();
return (((Mmfr4 >> 24) & 0xF) == 1) ? TRUE : FALSE;
}
+
+/** Check if FEAT_RNG extension is available.
+
+ @retval TRUE if FEAT_RNG extension is available.
+ @retval FALSE otherwise.
+**/
+BOOLEAN
+ArmHasRngExt (
+ VOID
+ )
+{
+ // Not supported.
+ return FALSE;
+}
--
2.25.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#93954): https://edk2.groups.io/g/devel/message/93954
Mute This Topic: https://groups.io/mt/93788882/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-