mirror of
https://github.com/acidanthera/audk.git
synced 2025-08-17 23:58:12 +02:00
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>
38 lines
879 B
ArmAsm
38 lines
879 B
ArmAsm
#------------------------------------------------------------------------------
|
|
#
|
|
# ArmRndr() for AArch64
|
|
#
|
|
# Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
#include "BaseRngLibInternals.h"
|
|
|
|
.text
|
|
.p2align 2
|
|
GCC_ASM_EXPORT(ArmRndr)
|
|
|
|
#/**
|
|
# 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
|
|
# );
|
|
#
|
|
ASM_PFX(ArmRndr):
|
|
mrs x1, RNDR
|
|
str x1, [x0]
|
|
cset x0, ne // RNDR sets NZCV to 0b0100 on failure
|
|
ret
|