From 95d5bdb27fd6ca63356a618dc89820e5611b8497 Mon Sep 17 00:00:00 2001 From: Stefano Garzarella Date: Mon, 3 Dec 2018 17:04:04 +0100 Subject: [PATCH] benchmark: add exit points --- pc-bios/optionrom/benchmark.h | 14 ++++++++++++++ pc-bios/optionrom/linuxboot_dma.c | 3 +++ 2 files changed, 17 insertions(+) create mode 100644 pc-bios/optionrom/benchmark.h diff --git a/pc-bios/optionrom/benchmark.h b/pc-bios/optionrom/benchmark.h new file mode 100644 index 0000000000..38d0d88798 --- /dev/null +++ b/pc-bios/optionrom/benchmark.h @@ -0,0 +1,14 @@ +#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 +#define FW_DO_BOOT 4 + +#endif diff --git a/pc-bios/optionrom/linuxboot_dma.c b/pc-bios/optionrom/linuxboot_dma.c index 4754282ad7..577199388f 100644 --- a/pc-bios/optionrom/linuxboot_dma.c +++ b/pc-bios/optionrom/linuxboot_dma.c @@ -59,6 +59,7 @@ asm( ); #include "../../include/hw/nvram/fw_cfg_keys.h" +#include "benchmark.h" /* QEMU_CFG_DMA_CONTROL bits */ #define BIOS_CFG_DMA_CTL_ERROR 0x01 @@ -265,6 +266,8 @@ void load_kernel(void) segment_addr = ((uint32_t)setup_addr >> 4); stack_addr = (uint32_t)(cmdline_addr - setup_addr - 16); + outl(LINUX_START_BOOT, LINUX_EXIT_PORT); + /* As we are changing critical registers, we cannot leave freedom to the * compiler. */ -- 2.19.2