MdePkg/BaseRngLib: Add support for ARMv8.5 RNG instructions
Make BaseRngLib more generic by moving x86-specific functionality into 'Rand' and adding files under 'AArch64' to support the optional ARMv8.5 RNG instruction RNDR that is a part of FEAT_RNG. Signed-off-by: Rebecca Cran <rebecca@nuviainc.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
committed by
mergify[bot]
parent
ef3840c1ff
commit
9301e5644c
39
MdePkg/Library/BaseRngLib/AArch64/ArmRng.asm
Normal file
39
MdePkg/Library/BaseRngLib/AArch64/ArmRng.asm
Normal file
@@ -0,0 +1,39 @@
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; 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
|
Reference in New Issue
Block a user