> >> With a current kernel I get this when booting:
> >> 
> >> Programming 24 pins in IOAPIC #0
> >> AP #1  (PHY# 12) failed!
> >> panic y/n [y] panic: bye-bye
> >> mp_lock = 00000001; cpuid = 0; lapic.id = 00000000
> >> Uptime: 0s

[...]

> I think this has something to do 
> with the new binutils as a kernel built on the 14th and restored via tape works fine 
>but if i
> check out the sys tree from the 14th and build a kernel it panics at the APIC probe.

Try the enclosed patch.

- Tor Egge


Index: sys/i386/i386/mpboot.s
===================================================================
RCS file: /home/ncvs/src/sys/i386/i386/mpboot.s,v
retrieving revision 1.13
diff -u -r1.13 mpboot.s
--- sys/i386/i386/mpboot.s      2000/01/29 13:51:17     1.13
+++ sys/i386/i386/mpboot.s      2000/05/24 01:28:53
@@ -165,20 +165,15 @@
 BOOTMP1:
 
 NON_GPROF_ENTRY(bootMP)
+       .code16         
        cli
        CHECKPOINT(0x34, 1)
        /* First guarantee a 'clean slate' */
-       data32
        xorl    %eax, %eax
-       data32
        movl    %eax, %ebx
-       data32
        movl    %eax, %ecx
-       data32
        movl    %eax, %edx
-       data32
        movl    %eax, %esi
-       data32
        movl    %eax, %edi
 
        /* set up data segments */
@@ -188,17 +183,18 @@
        mov     %ax, %fs
        mov     %ax, %gs
        mov     %ax, %ss
-       mov     $(boot_stk-_bootMP), %sp
+       mov     $(boot_stk-_bootMP), %esp
 
        /* Now load the global descriptor table */
        addr32
        data32
-       lgdt    MP_GDTptr-_bootMP
+       /* XXX: sigh: lgdt      MP_GDTptr-_bootMP GAS BUG! */
+       .byte   0x0f, 0x01, 0x15                /* XXX hand assemble! */
+       .long   MP_GDTptr-_bootMP               /* XXX hand assemble! */
 
        /* Enable protected mode */
        data32
        movl    %cr0, %eax
-       data32
        orl     $CR0_PE, %eax
        data32
        movl    %eax, %cr0 
@@ -207,13 +203,11 @@
         * make intrasegment jump to flush the processor pipeline and
         * reload CS register
         */
-       data32
        pushl   $0x18
-       data32
        pushl   $(protmode-_bootMP)
-       data32
-       lret
+       lretl
 
+       .code32         
 protmode:
        CHECKPOINT(0x35, 2)
 

Reply via email to