drop most of the crappy vm86 code and replace it with a rewritten

version that has all assembler in a .S file and all C code in a .c
file. Also, remove requirement to move around between GDTs.

This version includes the suggestions from Peter to clean up CR0 manipulation
and to guard critical code paths by cli/sti. Tested and working on my hardware.

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Peter Stuge <peter@stuge.se>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4323 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Stefan Reinauer 2009-05-29 13:08:27 +00:00 committed by Stefan Reinauer
parent 43bc5a9c74
commit f8a5c6ec02
1 changed files with 8 additions and 1 deletions

View File

@ -253,7 +253,7 @@ gdtaddr:
/* This is the gdt for GCC part of coreboot. /* This is the gdt for GCC part of coreboot.
* It is different from the gdt in ROMCC/ASM part of coreboot * It is different from the gdt in ROMCC/ASM part of coreboot
* which is defined in entry32.inc */ * which is defined in entry32.inc */ /* BUT WHY?? */
gdt: gdt:
/* selgdt 0, unused */ /* selgdt 0, unused */
.word 0x0000, 0x0000 /* dummy */ .word 0x0000, 0x0000 /* dummy */
@ -275,6 +275,13 @@ gdt:
.word 0x0000, 0x0000 /* dummy */ .word 0x0000, 0x0000 /* dummy */
.byte 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00
/* selgdt 0x28 16-bit 64k code at 0x00000000 */
.word 0xffff, 0x0000
.byte 0, 0x9a, 0, 0
/* selgdt 0x30 16-bit 64k data at 0x00000000 */
.word 0xffff, 0x0000
.byte 0, 0x92, 0, 0
gdt_end: gdt_end:
idtarg: idtarg: