summaryrefslogtreecommitdiff
path: root/src/arch/x86/rdrand.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/rdrand.c')
-rw-r--r--src/arch/x86/rdrand.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/arch/x86/rdrand.c b/src/arch/x86/rdrand.c
index dc7ed60a61..97aabd4ab5 100644
--- a/src/arch/x86/rdrand.c
+++ b/src/arch/x86/rdrand.c
@@ -38,6 +38,7 @@ static inline uint8_t rdrand_32(uint32_t *rand)
return carry;
}
+#if ENV_X86_64
/*
* Generate a 64-bit random number through RDRAND instruction.
* Carry flag is set on RDRAND success and 0 on failure.
@@ -51,6 +52,7 @@ static inline uint8_t rdrand_64(uint64_t *rand)
: "=a" (*rand), "=qm" (carry));
return carry;
}
+#endif
int get_random_number_32(uint32_t *rand)
{
@@ -71,9 +73,12 @@ int get_random_number_64(uint64_t *rand)
/* Perform a loop call until RDRAND succeeds or returns failure. */
for (i = 0; i < RDRAND_RETRY_LOOPS; i++) {
- if (ENV_X86_64 && rdrand_64(rand))
+#if ENV_X86_64
+ if (rdrand_64(rand))
return 0;
- else if (rdrand_32(&rand_high) && rdrand_32(&rand_low)) {
+ else
+#endif
+ if (rdrand_32(&rand_high) && rdrand_32(&rand_low)) {
*rand = ((uint64_t)rand_high << 32) |
(uint64_t)rand_low;
return 0;