summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2016-05-04 15:13:44 +0200
committerMichael Brown2016-05-04 15:34:24 +0200
commit57d0ea7c461d4ba2c8befa9506472c81129c30b3 (patch)
treee02bfb304db8cef3bb9007c2c8eb9acc57dfede4 /src
parent[efi] Use a timer event to generate the currticks() timer (diff)
downloadipxe-57d0ea7c461d4ba2c8befa9506472c81129c30b3.tar.gz
ipxe-57d0ea7c461d4ba2c8befa9506472c81129c30b3.tar.xz
ipxe-57d0ea7c461d4ba2c8befa9506472c81129c30b3.zip
[efi] Generalise EFI entropy generation to non-x86 CPUs
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86/include/bits/errfile.h1
-rw-r--r--src/include/ipxe/errfile.h1
-rw-r--r--src/interface/efi/efi_entropy.c (renamed from src/arch/x86/interface/efi/efi_entropy.c)8
3 files changed, 5 insertions, 5 deletions
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
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 <errno.h>
#include <ipxe/entropy.h>
#include <ipxe/crc32.h>
+#include <ipxe/profile.h>
#include <ipxe/efi/efi.h>
#include <ipxe/efi/Protocol/Rng.h>
@@ -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;
}