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