+;------------------------------------------------------------------------------\r
+;\r
+; ArmRndr() for AArch64\r
+;\r
+; Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>\r
+;\r
+; SPDX-License-Identifier: BSD-2-Clause-Patent\r
+;\r
+;------------------------------------------------------------------------------\r
+\r
+#include "BaseRngLibInternals.h"\r
+\r
+ EXPORT ArmRndr\r
+ AREA BaseLib_LowLevel, CODE, READONLY\r
+\r
+\r
+;/**\r
+; Generates a random number using RNDR.\r
+; Returns TRUE on success; FALSE on failure.\r
+;\r
+; @param[out] Rand Buffer pointer to store the 64-bit random value.\r
+;\r
+; @retval TRUE Random number generated successfully.\r
+; @retval FALSE Failed to generate the random number.\r
+;\r
+;**/\r
+;BOOLEAN\r
+;EFIAPI\r
+;ArmRndr (\r
+; OUT UINT64 *Rand\r
+; );\r
+;\r
+ArmRndr\r
+ mrs x1, RNDR\r
+ str x1, [x0]\r
+ cset x0, ne // RNDR sets NZCV to 0b0100 on failure\r
+ ret\r
+\r
+ END\r