]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseRngLib/AArch64/ArmRng.S
MdePkg/BaseRngLib: Add support for ARMv8.5 RNG instructions
[mirror_edk2.git] / MdePkg / Library / BaseRngLib / AArch64 / ArmRng.S
1 #------------------------------------------------------------------------------
2 #
3 # ArmRndr() for AArch64
4 #
5 # Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
6 #
7 # SPDX-License-Identifier: BSD-2-Clause-Patent
8 #
9 #------------------------------------------------------------------------------
10
11 #include "BaseRngLibInternals.h"
12
13 .text
14 .p2align 2
15 GCC_ASM_EXPORT(ArmRndr)
16
17 #/**
18 # Generates a random number using RNDR.
19 # Returns TRUE on success; FALSE on failure.
20 #
21 # @param[out] Rand Buffer pointer to store the 64-bit random value.
22 #
23 # @retval TRUE Random number generated successfully.
24 # @retval FALSE Failed to generate the random number.
25 #
26 #**/
27 #BOOLEAN
28 #EFIAPI
29 #ArmRndr (
30 # OUT UINT64 *Rand
31 # );
32 #
33 ASM_PFX(ArmRndr):
34 mrs x1, RNDR
35 str x1, [x0]
36 cset x0, ne // RNDR sets NZCV to 0b0100 on failure
37 ret