diff options
-rw-r--r-- | benchmark.h | 13 | ||||
-rw-r--r-- | fw_cfg.c | 3 | ||||
-rw-r--r-- | linuxboot.c | 3 |
3 files changed, 17 insertions, 2 deletions
diff --git a/benchmark.h b/benchmark.h new file mode 100644 index 0000000..089c549 --- /dev/null +++ b/benchmark.h @@ -0,0 +1,13 @@ +#ifndef BENCHMARK_H +#define BENCHMARK_H + +/* IO ports for different exit points */ +#define LINUX_EXIT_PORT 0xf4 +#define FW_EXIT_PORT 0xf5 + +/* Exit point values */ +#define FW_START 1 +#define LINUX_START_FWCFG 2 +#define LINUX_START_BOOT 3 + +#endif @@ -7,6 +7,7 @@ #include "bswap.h" #include "linuxboot.h" #include "multiboot.h" +#include "benchmark.h" struct fw_cfg_file { uint32_t size; @@ -174,7 +175,7 @@ static void boot_multiboot_from_fw_cfg(void) /* Exit just before getting to vmlinuz, so that it is easy * to time/profile the firmware. */ - outb(0xf4, 1); + outb(LINUX_EXIT_PORT, LINUX_START_FWCFG); #endif fw_cfg_select(FW_CFG_KERNEL_ENTRY); diff --git a/linuxboot.c b/linuxboot.c index 65b5936..a5f1c4f 100644 --- a/linuxboot.c +++ b/linuxboot.c @@ -3,6 +3,7 @@ #include "ioport.h" #include "string.h" #include "stdio.h" +#include "benchmark.h" static inline uint16_t lduw_p(void *p) { @@ -116,7 +117,7 @@ void boot_bzimage(struct linuxboot_args *args) /* Exit just before getting to vmlinuz, so that it is easy * to time/profile the firmware. */ - outb(0xf4, 1); + outb(LINUX_EXIT_PORT, LINUX_START_BOOT); #endif asm volatile( "ljmp $0x18, $pm16_boot_linux - 0xf0000" |