x86: use invd instead of wbinvd in real mode start code
I do not know why the boot code immediately after the system reset should write-back the cache content. I think the cache invalidation should be enough. I tested this commit with qemu-x86_defconfig, and it worked for me. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
committed by
Bin Meng
parent
a6302b7085
commit
0d67fac29f
@@ -50,7 +50,7 @@ _x86boot_start:
|
|||||||
movl %cr0, %eax
|
movl %cr0, %eax
|
||||||
orl $(X86_CR0_NW | X86_CR0_CD), %eax
|
orl $(X86_CR0_NW | X86_CR0_CD), %eax
|
||||||
movl %eax, %cr0
|
movl %eax, %cr0
|
||||||
wbinvd
|
invd
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Zero the BIST (Built-In Self Test) value since we don't have it.
|
* Zero the BIST (Built-In Self Test) value since we don't have it.
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ start16:
|
|||||||
movl %cr0, %eax
|
movl %cr0, %eax
|
||||||
orl $(X86_CR0_NW | X86_CR0_CD), %eax
|
orl $(X86_CR0_NW | X86_CR0_CD), %eax
|
||||||
movl %eax, %cr0
|
movl %eax, %cr0
|
||||||
wbinvd
|
invd
|
||||||
|
|
||||||
/* load the temporary Global Descriptor Table */
|
/* load the temporary Global Descriptor Table */
|
||||||
data32 cs lidt idt_ptr
|
data32 cs lidt idt_ptr
|
||||||
|
|||||||
Reference in New Issue
Block a user