mirror of
https://github.com/acidanthera/audk.git
synced 2025-08-14 22:28:08 +02:00
RNDR is a standard register defined in the ARM ARM for AARCH64. Move the definition from BaseRngLib to AArch64.h. Furthermore, move the inclusion of this register definition to the ARM specific header file. Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
39 lines
884 B
ArmAsm
39 lines
884 B
ArmAsm
#------------------------------------------------------------------------------
|
|
#
|
|
# ArmRndr() for AArch64
|
|
#
|
|
# Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
#include "ArmRng.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):
|
|
AARCH64_BTI(c)
|
|
mrs x1, RNDR
|
|
str x1, [x0]
|
|
cset x0, ne // RNDR sets NZCV to 0b0100 on failure
|
|
ret
|