> >> 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)