i386: Fix wrong CPU error message in early boot path
[sfrench/cifs-2.6.git] / arch / i386 / boot / setup.S
index 06edf1c66242466e8853fcedd8afacc19228817a..6dbcc95b21209a65e7d3050fadfc69ac7a9f8344 100644 (file)
@@ -52,6 +52,7 @@
 #include <asm/boot.h>
 #include <asm/e820.h>
 #include <asm/page.h>
+#include <asm/setup.h>
        
 /* Signature words to ensure LILO loaded us right */
 #define SIG1   0xAA55
@@ -81,7 +82,7 @@ start:
 # This is the setup header, and it must start at %cs:2 (old 0x9020:2)
 
                .ascii  "HdrS"          # header signature
-               .word   0x0205          # header version number (>= 0x0105)
+               .word   0x0206          # header version number (>= 0x0105)
                                        # or else old loadlin-1.5 will fail)
 realmode_swtch:        .word   0, 0            # default_switch, SETUPSEG
 start_sys_seg: .word   SYSSEG
@@ -171,6 +172,10 @@ relocatable_kernel:    .byte 0
 pad2:                  .byte 0
 pad3:                  .word 0
 
+cmdline_size:   .long   COMMAND_LINE_SIZE-1     #length of the command line,
+                                                #added with boot protocol
+                                                #version 2.06
+
 trampoline:    call    start_of_setup
                .align 16
                                        # The offset at this point is 0x240
@@ -297,7 +302,26 @@ good_sig:
 
 loader_panic_mess: .string "Wrong loader, giving up..."
 
+# check minimum cpuid
+# we do this here because it is the last place we can actually
+# show a user visible error message. Later the video modus
+# might be already messed up.
 loader_ok:
+       call verify_cpu
+       testl  %eax,%eax
+       jz      cpu_ok
+       movw    %cs,%ax         # aka SETUPSEG
+       movw    %ax,%ds
+       lea     cpu_panic_mess,%si
+       call    prtstr
+1:     jmp     1b
+
+cpu_panic_mess:
+       .asciz  "PANIC: CPU too old for this kernel."
+
+#include "../kernel/verify_cpu.S"
+
+cpu_ok:
 # Get memory size (extended mem, kB)
 
        xorl    %eax, %eax