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