RNDRRS, Reseeded Random Number
The RNDRRS characteristics are:
Reseeded Random Number. Returns a 64-bit random number which is reseeded from the True Random Number source at an IMPLEMENTATION DEFINED rate.
If the hardware returns a genuine random number, PSTATE.NZCV is set to 0b0000.
If the instruction cannot return a genuine random number in a reasonable period of time, PSTATE.NZCV is set to 0b0100 and the data value returned in UNKNOWN.
It is unusual to not have a genuine random number returned in a reasonable period of time. The definition of a reasonable period of time is IMPLEMENTATION DEFINED.
The output of this random number is from a Deterministic Random Bit Generator (DRBG) that is seeded from a True Random Number Generator (TRNG).
Provides entropy in the form of random numbers from the sampled output of an unpredictable physical process.
Should conform to the BSI AIS-31, FIPS 140-2, NIST SP800-90B, and NIST SP800-22 standards.
Produces random numbers from a cryptographically secure algorithm.
Is seeded from the TRNG.
Is reseeded immediately before the random number sampled by this instruction is read.
Should conform to the NIST SP800-90A Rev. 1 standard.
The entire random number generation should conform to the NIST SP800-90C standard.
Since a TRNG can only generate random bits at a limited rate, the output is commonly collected in an entropy pool until needed. An implementation should ensure that lower privileged software cannot impact the performance of higher privileged software by entirely draining the entropy pool. The refill time cost of the entropy pool should be paid for the persistent caller.
It is expected that a read of the RNDRRS register is likely to be significantly slower than a read of the RNDR register. Both the random number sources are intended to be of high quality, software should encouraged to use RNDRRS only when there is a strong reason for the immediate reseeding.
This register is present only when ARMv8.5-RNG is implemented. Otherwise, direct accesses to RNDRRS are UNDEFINED.
RW fields in this register reset to architecturally UNKNOWN values.
RNDRRS is a 64-bit register.
The RNDRRS bit assignments are:
RNDRRS, bits [63:0]
Reseeded Random Number. Returns a 64-bit Random Number which is reseeded from the True Random Number source immediately before this read.
This field resets to an architecturally UNKNOWN value.
Accessing the RNDRRS
Accesses to this register use the following encodings:
MRS <Xt>, RNDRRS
if PSTATE.EL == EL0 then return RNDRRS; elsif PSTATE.EL == EL1 then return RNDRRS; elsif PSTATE.EL == EL2 then return RNDRRS; elsif PSTATE.EL == EL3 then return RNDRRS;