From 57d0ea7c461d4ba2c8befa9506472c81129c30b3 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 4 May 2016 14:13:44 +0100 Subject: [PATCH] [efi] Generalise EFI entropy generation to non-x86 CPUs Signed-off-by: Michael Brown --- src/arch/x86/include/bits/errfile.h | 1 - src/include/ipxe/errfile.h | 1 + src/{arch/x86 => }/interface/efi/efi_entropy.c | 8 ++++---- 3 files changed, 5 insertions(+), 5 deletions(-) rename src/{arch/x86 => }/interface/efi/efi_entropy.c (96%) diff --git a/src/arch/x86/include/bits/errfile.h b/src/arch/x86/include/bits/errfile.h index 9eb4b5488..42792242d 100644 --- a/src/arch/x86/include/bits/errfile.h +++ b/src/arch/x86/include/bits/errfile.h @@ -53,7 +53,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define ERRFILE_cpuid_cmd ( ERRFILE_ARCH | ERRFILE_OTHER | 0x00000000 ) #define ERRFILE_cpuid_settings ( ERRFILE_ARCH | ERRFILE_OTHER | 0x00010000 ) -#define ERRFILE_efi_entropy ( ERRFILE_ARCH | ERRFILE_OTHER | 0x00020000 ) /** @} */ diff --git a/src/include/ipxe/errfile.h b/src/include/ipxe/errfile.h index 4681567b9..2cd9fb5b1 100644 --- a/src/include/ipxe/errfile.h +++ b/src/include/ipxe/errfile.h @@ -351,6 +351,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define ERRFILE_efi_usb ( ERRFILE_OTHER | 0x004b0000 ) #define ERRFILE_efi_fbcon ( ERRFILE_OTHER | 0x004c0000 ) #define ERRFILE_efi_local ( ERRFILE_OTHER | 0x004d0000 ) +#define ERRFILE_efi_entropy ( ERRFILE_OTHER | 0x004e0000 ) /** @} */ diff --git a/src/arch/x86/interface/efi/efi_entropy.c b/src/interface/efi/efi_entropy.c similarity index 96% rename from src/arch/x86/interface/efi/efi_entropy.c rename to src/interface/efi/efi_entropy.c index a54bd12e6..881c4c9a2 100644 --- a/src/arch/x86/interface/efi/efi_entropy.c +++ b/src/interface/efi/efi_entropy.c @@ -26,6 +26,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include #include +#include #include #include @@ -104,13 +105,12 @@ static void efi_entropy_disable ( void ) { /** * Wait for a timer tick * - * @ret low TSC low-order bits, or negative error + * @ret low CPU profiling low-order bits, or negative error */ static int efi_entropy_tick ( void ) { EFI_BOOT_SERVICES *bs = efi_systab->BootServices; UINTN index; uint16_t low; - uint32_t discard_d; EFI_STATUS efirc; int rc; @@ -129,8 +129,8 @@ static int efi_entropy_tick ( void ) { return rc; } - /* Get current TSC low-order bits */ - __asm__ __volatile__ ( "rdtsc" : "=a" ( low ), "=d" ( discard_d ) ); + /* Get current CPU profiling timestamp low-order bits */ + low = profile_timestamp(); return low; }