--- /dev/null
+/** @file\r
+ Aarch64 specific code.\r
+\r
+ Copyright (c) 2022, Arm Limited. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+**/\r
+\r
+#include <Library/BaseLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+#include <Library/ArmTrngLib.h>\r
+\r
+#include "RngDxeInternals.h"\r
+\r
+// Maximum number of Rng algorithms.\r
+#define RNG_AVAILABLE_ALGO_MAX 2\r
+\r
+/** Allocate and initialize mAvailableAlgoArray with the available\r
+ Rng algorithms. Also update mAvailableAlgoArrayCount.\r
+\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+ @retval EFI_OUT_OF_RESOURCES Could not allocate memory.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetAvailableAlgorithms (\r
+ VOID\r
+ )\r
+{\r
+ UINT64 DummyRand;\r
+ UINT16 MajorRevision;\r
+ UINT16 MinorRevision;\r
+\r
+ // Rng algorithms 2 times, one for the allocation, one to populate.\r
+ mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX);\r
+ if (mAvailableAlgoArray == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ // Check RngGetBytes() before advertising PcdCpuRngSupportedAlgorithm.\r
+ if (!EFI_ERROR (RngGetBytes (sizeof (DummyRand), (UINT8 *)&DummyRand))) {\r
+ CopyMem (\r
+ &mAvailableAlgoArray[mAvailableAlgoArrayCount],\r
+ PcdGetPtr (PcdCpuRngSupportedAlgorithm),\r
+ sizeof (EFI_RNG_ALGORITHM)\r
+ );\r
+ mAvailableAlgoArrayCount++;\r
+\r
+ DEBUG_CODE_BEGIN ();\r
+ if (IsZeroGuid (PcdGetPtr (PcdCpuRngSupportedAlgorithm))) {\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
+ "PcdCpuRngSupportedAlgorithm should be a non-zero GUID\n"\r
+ ));\r
+ }\r
+\r
+ DEBUG_CODE_END ();\r
+ }\r
+\r
+ // Raw algorithm (Trng)\r
+ if (!EFI_ERROR (GetArmTrngVersion (&MajorRevision, &MinorRevision))) {\r
+ CopyMem (\r
+ &mAvailableAlgoArray[mAvailableAlgoArrayCount],\r
+ &gEfiRngAlgorithmRaw,\r
+ sizeof (EFI_RNG_ALGORITHM)\r
+ );\r
+ mAvailableAlgoArrayCount++;\r
+ }\r
+\r
+ return EFI_SUCCESS;\r
+}\r
--- /dev/null
+/** @file\r
+ Arm specific code.\r
+\r
+ Copyright (c) 2022, Arm Limited. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+**/\r
+\r
+#include <Library/BaseLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+#include <Library/ArmTrngLib.h>\r
+\r
+#include "RngDxeInternals.h"\r
+\r
+// Maximum number of Rng algorithms.\r
+#define RNG_AVAILABLE_ALGO_MAX 1\r
+\r
+/** Allocate and initialize mAvailableAlgoArray with the available\r
+ Rng algorithms. Also update mAvailableAlgoArrayCount.\r
+\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+ @retval EFI_OUT_OF_RESOURCES Could not allocate memory.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetAvailableAlgorithms (\r
+ VOID\r
+ )\r
+{\r
+ UINT16 MajorRevision;\r
+ UINT16 MinorRevision;\r
+\r
+ // Rng algorithms 2 times, one for the allocation, one to populate.\r
+ mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX);\r
+ if (mAvailableAlgoArray == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ // Raw algorithm (Trng)\r
+ if (!EFI_ERROR (GetArmTrngVersion (&MajorRevision, &MinorRevision))) {\r
+ CopyMem (\r
+ &mAvailableAlgoArray[mAvailableAlgoArrayCount],\r
+ &gEfiRngAlgorithmRaw,\r
+ sizeof (EFI_RNG_ALGORITHM)\r
+ );\r
+ mAvailableAlgoArrayCount++;\r
+ }\r
+\r
+ return EFI_SUCCESS;\r
+}\r
#include <Library/MemoryAllocationLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/RngLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/ArmTrngLib.h>\r
#include <Protocol/Rng.h>\r
\r
#include "RngDxeInternals.h"\r
\r
-// Maximum number of Rng algorithms.\r
-#define RNG_AVAILABLE_ALGO_MAX 2\r
-\r
-/** Allocate and initialize mAvailableAlgoArray with the available\r
- Rng algorithms. Also update mAvailableAlgoArrayCount.\r
-\r
- @retval EFI_SUCCESS The function completed successfully.\r
- @retval EFI_OUT_OF_RESOURCES Could not allocate memory.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-GetAvailableAlgorithms (\r
- VOID\r
- )\r
-{\r
- UINT64 DummyRand;\r
- UINT16 MajorRevision;\r
- UINT16 MinorRevision;\r
-\r
- // Rng algorithms 2 times, one for the allocation, one to populate.\r
- mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX);\r
- if (mAvailableAlgoArray == NULL) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
-\r
- // Check RngGetBytes() before advertising PcdCpuRngSupportedAlgorithm.\r
- if (!EFI_ERROR (RngGetBytes (sizeof (DummyRand), (UINT8 *)&DummyRand))) {\r
- CopyMem (\r
- &mAvailableAlgoArray[mAvailableAlgoArrayCount],\r
- PcdGetPtr (PcdCpuRngSupportedAlgorithm),\r
- sizeof (EFI_RNG_ALGORITHM)\r
- );\r
- mAvailableAlgoArrayCount++;\r
-\r
- DEBUG_CODE_BEGIN ();\r
- if (IsZeroGuid (PcdGetPtr (PcdCpuRngSupportedAlgorithm))) {\r
- DEBUG ((\r
- DEBUG_WARN,\r
- "PcdCpuRngSupportedAlgorithm should be a non-zero GUID\n"\r
- ));\r
- }\r
-\r
- DEBUG_CODE_END ();\r
- }\r
-\r
- // Raw algorithm (Trng)\r
- if (!EFI_ERROR (GetArmTrngVersion (&MajorRevision, &MinorRevision))) {\r
- CopyMem (\r
- &mAvailableAlgoArray[mAvailableAlgoArrayCount],\r
- &gEfiRngAlgorithmRaw,\r
- sizeof (EFI_RNG_ALGORITHM)\r
- );\r
- mAvailableAlgoArrayCount++;\r
- }\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
/** Free mAvailableAlgoArray.\r
**/\r
VOID\r
#\r
# The following information is for reference only and not required by the build tools.\r
#\r
-# VALID_ARCHITECTURES = IA32 X64 AARCH64\r
+# VALID_ARCHITECTURES = IA32 X64 AARCH64 ARM\r
#\r
\r
[Sources.common]\r
Rand/AesCore.c\r
Rand/AesCore.h\r
\r
-[Sources.AARCH64]\r
+[Sources.AARCH64, Sources.ARM]\r
ArmRngDxe.c\r
ArmTrng.c\r
\r
+[Sources.AARCH64]\r
+ AArch64/AArch64Algo.c\r
+\r
+[Sources.ARM]\r
+ Arm/ArmAlgo.c\r
+\r
[Packages]\r
MdeModulePkg/MdeModulePkg.dec\r
MdePkg/MdePkg.dec\r
TimerLib\r
RngLib\r
\r
-[LibraryClasses.AARCH64]\r
+[LibraryClasses.AARCH64, LibraryClasses.ARM]\r
ArmTrngLib\r
\r
[Guids]\r
SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf\r
SecurityPkg/VariableAuthenticated/SecureBootDefaultKeysDxe/SecureBootDefaultKeysDxe.inf\r
\r
-[Components.IA32, Components.X64, Components.AARCH64]\r
+[Components.IA32, Components.X64, Components.AARCH64, Components.ARM]\r
#\r
# Random Number Generator\r
#\r