x86/boot/compressed/64: Reload CS in startup_32
Exception handling in the startup_32 boot path requires the CS selector to be correctly set up. Reload it from the current GDT. Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Borislav Petkov <bp@suse.de> Link: https://lkml.kernel.org/r/20210312123824.306-4-joro@8bytes.org
This commit is contained in:
parent
eab696d8e8
commit
0c289ff81c
|
@ -107,9 +107,16 @@ SYM_FUNC_START(startup_32)
|
|||
movl %eax, %gs
|
||||
movl %eax, %ss
|
||||
|
||||
/* setup a stack and make sure cpu supports long mode. */
|
||||
/* Setup a stack and load CS from current GDT */
|
||||
leal rva(boot_stack_end)(%ebp), %esp
|
||||
|
||||
pushl $__KERNEL32_CS
|
||||
leal rva(1f)(%ebp), %eax
|
||||
pushl %eax
|
||||
lretl
|
||||
1:
|
||||
|
||||
/* Make sure cpu supports long mode. */
|
||||
call verify_cpu
|
||||
testl %eax, %eax
|
||||
jnz .Lno_longmode
|
||||
|
|
Loading…
Reference in New Issue