[coreboot] [v2] r4323 - trunk/coreboot-v2/src/arch/i386/lib

svn at coreboot.org svn at coreboot.org
Fri May 29 15:08:27 CEST 2009


Author: stepan
Date: 2009-05-29 15:08:27 +0200 (Fri, 29 May 2009)
New Revision: 4323

Modified:
   trunk/coreboot-v2/src/arch/i386/lib/c_start.S
Log:
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 at coresystems.de>
Acked-by: Peter Stuge <peter at stuge.se>



Modified: trunk/coreboot-v2/src/arch/i386/lib/c_start.S
===================================================================
--- trunk/coreboot-v2/src/arch/i386/lib/c_start.S	2009-05-29 03:44:47 UTC (rev 4322)
+++ trunk/coreboot-v2/src/arch/i386/lib/c_start.S	2009-05-29 13:08:27 UTC (rev 4323)
@@ -253,7 +253,7 @@
 
 	/* This is the gdt for GCC 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:
 	/* selgdt 0, unused */
 	.word	0x0000, 0x0000		/* dummy */
@@ -275,6 +275,13 @@
 	.word	0x0000, 0x0000		/* dummy */
 	.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:
 
 idtarg:





More information about the coreboot mailing list