From 98775f34c3a2aa63d731aada87db20d8e01fd3e6 Mon Sep 17 00:00:00 2001 From: Zide Chen Date: Mon, 23 Jul 2018 15:58:56 -0700 Subject: [PATCH] kconfig: decouple realmode boot from CONFIG_JAIHOUSE Add CONFIG_REALMODE item so that it's possible to configure other x86 boards to boot from real mode. Signed-off-by: Zide Chen --- arch/x86/core/crt0.S | 14 +++++++------- boards/x86/x86_jailhouse/x86_jailhouse_defconfig | 1 + misc/Kconfig | 9 +++++++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/arch/x86/core/crt0.S b/arch/x86/core/crt0.S index 038a10adbc1..2aa2f63f41e 100644 --- a/arch/x86/core/crt0.S +++ b/arch/x86/core/crt0.S @@ -42,10 +42,10 @@ GTEXT(_sys_soc_resume_from_deep_sleep) #endif -#ifdef CONFIG_JAILHOUSE +#ifdef CONFIG_REALMODE -#define JAILHOUSE_INMATE_CS32 0x8 -#define JAILHOUSE_INMATE_DS32 0x18 +#define RM_CODE_SEG 0x8 +#define RM_DATA_SEG 0x18 #define MSR_MTRR_DEF_TYPE 0x000002ff #define MTRR_ENABLE 0x00000800 #define X86_CR0_PE 0x00000001 @@ -63,7 +63,7 @@ __jh_entry: or $X86_CR0_PE,%al mov %eax,%cr0 - ljmpl $JAILHOUSE_INMATE_CS32,$start32 + ljmpl $RM_CODE_SEG,$start32 .code32 start32: @@ -86,12 +86,12 @@ start32: or $MTRR_ENABLE,%eax wrmsr - mov $JAILHOUSE_INMATE_DS32,%eax + mov $RM_DATA_SEG,%eax mov %eax,%ds mov %eax,%es mov %eax,%ss - ljmp $JAILHOUSE_INMATE_CS32, $__start + ljmp $RM_CODE_SEG, $__start .global loader_gdt loader_gdt: @@ -132,7 +132,7 @@ gdt_ptr: .align(4096) .popsection -#endif /* CONFIG_JAILHOUSE */ +#endif /* CONFIG_REALMODE */ /* processor is executing in 32-bit protected mode */ diff --git a/boards/x86/x86_jailhouse/x86_jailhouse_defconfig b/boards/x86/x86_jailhouse/x86_jailhouse_defconfig index 26f77d931be..baee2ff1c6f 100644 --- a/boards/x86/x86_jailhouse/x86_jailhouse_defconfig +++ b/boards/x86/x86_jailhouse/x86_jailhouse_defconfig @@ -20,3 +20,4 @@ CONFIG_X86_MMU=y CONFIG_HW_STACK_PROTECTION=y CONFIG_USERSPACE=y CONFIG_X86_PAE_MODE=y +CONFIG_REALMODE=y diff --git a/misc/Kconfig b/misc/Kconfig index 2290c634771..413677fcddf 100644 --- a/misc/Kconfig +++ b/misc/Kconfig @@ -355,6 +355,15 @@ config BOOTLOADER_ESP_IDF inside the build folder. At flash time, the bootloader will be flashed with the zephyr image +config REALMODE + bool + prompt "boot from x86 real mode" + default n + depends on X86 + help + This option enabled Zephyr to start in x86 real mode, instead of + protected mode. + config BOOTLOADER_KEXEC bool prompt "Boot using Linux kexec() system call"