x86: Fix x86 Cold Boot
authorGraeme Russ <graeme.russ@gmail.com>
Sun, 22 Aug 2010 06:25:59 +0000 (16:25 +1000)
committerGraeme Russ <graeme.russ@gmail.com>
Sun, 12 Sep 2010 21:20:02 +0000 (07:20 +1000)
Commit 077e1958ca4afe12d88043b123ded058c51b89f7 broke the ability of the
x86 port to boot from a cold-reset by removing the initial IDT. Re-
instate the initial IDT to allow cold-booting of x86 boards

arch/i386/cpu/start16.S

index 3e8b2cc5c4fe56ef81eb64a9d7bbcee2b23e8f59..ebe5835841722bd6fb27b6c700f75181afd09641 100644 (file)
@@ -45,6 +45,7 @@ board_init16_ret:
        wbinvd
 
        /* load the temporary Global Descriptor Table */
+o32 cs lidt    idt_ptr
 o32 cs lgdt    gdt_ptr
 
        /* Now, we enter protected mode */
@@ -68,6 +69,10 @@ code32start:
        .long   _start          /* offset */
        .word   0x10            /* segment */
 
+idt_ptr:
+       .word   0               /* limit */
+       .long   0               /* base */
+
 /*
  * The following Global Descriptor Table is just enough to get us into
  * 'Flat Protected Mode' - It will be discarded as soon as the final