Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 May 2000 04:33:41 +0200
From:      Tor.Egge@fast.no
To:        mantar@pacbell.net
Cc:        current@FreeBSD.ORG
Subject:   mpboot.s patch
Message-ID:  <200005240233.EAA39129@midten.fast.no>
In-Reply-To: Your message of "Tue, 23 May 2000 12:30:55 -0700"
References:  <4.3.2.6.2.20000523121617.00b14c90@pozo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
----Next_Part(Wed_May_24_04:31:33_2000)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

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



----Next_Part(Wed_May_24_04:31:33_2000)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: "mpboot.s patch"

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)
 

----Next_Part(Wed_May_24_04:31:33_2000)----


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200005240233.EAA39129>