summaryrefslogtreecommitdiff
path: root/src/arch/i386
diff options
context:
space:
mode:
authorLi-Ta Lo <ollie@lanl.gov>2004-11-04 18:36:06 +0000
committerLi-Ta Lo <ollie@lanl.gov>2004-11-04 18:36:06 +0000
commitf84926efca2f871fa557cccee36f0f773ec7190b (patch)
tree669414cbe6344aa61839f37422c0e163eae4f0fa /src/arch/i386
parent1995f1af35b53b5c07694df7296f5eb20461b1c6 (diff)
downloadcoreboot-f84926efca2f871fa557cccee36f0f773ec7190b.tar.xz
tell people that the segment descriptors are different for ROMCC and
GCC code. git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1740 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/arch/i386')
-rw-r--r--src/arch/i386/lib/c_start.S41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/arch/i386/lib/c_start.S b/src/arch/i386/lib/c_start.S
index 2e397f8847..ccd0127dae 100644
--- a/src/arch/i386/lib/c_start.S
+++ b/src/arch/i386/lib/c_start.S
@@ -216,7 +216,7 @@ int_hand:
popl %ecx
popl %edx
popl %ebx
- popl %ebp /* Ignore saved %esp value */
+ popl %ebp /* Ignore saved %esp value */
popl %ebp
popl %esi
popl %edi
@@ -241,49 +241,50 @@ gdb_stub_breakpoint:
.globl gdt, gdt_end, gdt_limit, idtarg
-gdt_limit = gdt_end - gdt - 1 /* compute the table limit */
+gdt_limit = gdt_end - gdt - 1 /* compute the table limit */
gdtaddr:
.word gdt_limit
- .long gdt /* we know the offset */
+ .long gdt /* we know the offset */
.data
+
+ /* This is the gdt for GCC part of LinuxBIOS.
+ * It is different from the gdt in ROMCC/ASM part of LinuxBIOS
+ * which is defined in entry32.inc */
gdt:
-// selgdt 0
+ /* selgdt 0, unused */
.word 0x0000, 0x0000 /* dummy */
.byte 0x00, 0x00, 0x00, 0x00
-// selgdt 8
+ /* selgdt 8, unused */
.word 0x0000, 0x0000 /* dummy */
.byte 0x00, 0x00, 0x00, 0x00
-// selgdt 0x10
-/* flat code segment */
+ /* selgdt 0x10, flat code segment */
.word 0xffff, 0x0000
.byte 0x00, 0x9b, 0xcf, 0x00
-
-//selgdt 0x18
-/* flat data segment */
+
+ /* selgdt 0x18, flat data segment */
.word 0xffff, 0x0000
.byte 0x00, 0x93, 0xcf, 0x00
-//selgdt 0x20
+ /* selgdt 0x20, unused */
.word 0x0000, 0x0000 /* dummy */
.byte 0x00, 0x00, 0x00, 0x00
#if defined(CONFIG_LEGACY_VGABIOS) && (CONFIG_LEGACY_VGABIOS == 1)
- // from monty:
- /* 0x00009a00,0000ffffULL, 20h: 16-bit 64k code at 0x00000000 */
- /* 0x00009200,0000ffffULL 28h: 16-bit 64k data at 0x00000000 */
-// selgdt 0x28
-/*16-bit 64k code at 0x00000000 */
+ /* from monty:
+ * 0x00009a00,0000ffffULL, 20h: 16-bit 64k code at 0x00000000
+ * 0x00009200,0000ffffULL 28h: 16-bit 64k data at 0x00000000 */
+
+ /* selgdt 0x28, 16-bit 64k code at 0x00000000 */
.word 0xffff, 0x0000
- .byte 0, 0x9a, 0, 0
+ .byte 0x00, 0x9a, 0x00, 0x00
-// selgdt 0x30
-/*16-bit 64k data at 0x00000000 */
+ /* selgdt 0x30, 16-bit 64k data at 0x00000000 */
.word 0xffff, 0x0000
.byte 0, 0x92, 0, 0
-#endif // defined(CONFIG_VGABIOS) && (CONFIG_VGABIOS == 1)
+#endif /* defined(CONFIG_VGABIOS) && (CONFIG_VGABIOS == 1) */
gdt_end:
idtarg: