Date: Sun, 28 Sep 1997 23:38:44 -0600 From: Steve Passe <smp@csn.net> To: Manfred Antar <root@mantar.slip.netcom.com> Cc: current@FreeBSD.ORG Subject: Re: kernel compile faliure Message-ID: <199709290538.XAA08882@Ilsa.StevesCafe.com> In-Reply-To: Your message of "Sun, 28 Sep 1997 21:09:46 PDT." <Pine.BSF.3.96.970928210733.1546A-100000@mantar.slip.netcom.com>
index | next in thread | previous in thread | raw e-mail
Hi,
> Trying to build a kernel on a system running current
> I get :
> loading kernel
> exception.o: Undefined symbol `_cil' referenced from text segment
> exception.o: Undefined symbol `_inside_intr' referenced from text segment
> *** Error code 1
This was my fault, these are both SMP specific variables. I believe its fixed
by grabbing a new ipl.s. Pass me the hat, please...
Here's a patch till it propigates to the mirrors:
===================================================================
RCS file: /home/ncvs/src/sys/i386/isa/ipl.s,v
retrieving revision 1.16
diff -c -r1.16 ipl.s
*** ipl.s 1997/09/29 00:04:33 1.16
--- ipl.s 1997/09/29 05:27:13
***************
*** 36,42 ****
*
* @(#)ipl.s
*
! * $Id: ipl.s,v 1.16 1997/09/29 00:04:33 fsmp Exp $
*/
--- 36,42 ----
*
* @(#)ipl.s
*
! * $Id: ipl.s,v 1.15 1997/09/28 19:34:46 fsmp Exp $
*/
***************
*** 89,99 ****
--- 89,112 ----
.text
+ #ifdef SMP
+ #define TEST_CIL \
+ cmpl $0x0100, _cil ; \
+ jne 1f ; \
+ cmpl $0, _inside_intr ; \
+ jne 1f ; \
+ int $3 ; \
+ 1:
+ #endif
+
/*
* Handle return from interrupts, traps and syscalls.
*/
SUPERALIGN_TEXT
_doreti:
+ #ifdef SMP
+ TEST_CIL
+ #endif
FAKE_MCOUNT(_bintr) /* init "from" _bintr -> _doreti */
addl $4,%esp /* discard unit number */
popl %eax /* cpl or cml to restore */
***************
*** 108,113 ****
--- 121,127 ----
* handlers is limited by the number of bits in cpl).
*/
#ifdef SMP
+ TEST_CIL
cli /* early to prevent INT deadlock */
movl %eax, %edx /* preserve cpl while getting lock */
ICPL_LOCK
***************
*** 125,130 ****
--- 139,147 ----
andl _ipending,%ecx /* set bit = unmasked pending INT */
jne doreti_unpend
doreti_exit:
+ #ifdef SMP
+ TEST_CIL
+ #endif
#ifdef CPL_AND_CML
movl %eax, _cml
#else
***************
*** 203,216 ****
* for them again.
*/
#ifdef SMP
/* we enter with cpl locked */
bsfl %ecx, %ecx /* slow, but not worth optimizing */
btrl %ecx, _ipending
jnc doreti_next2 /* some intr cleared memory copy */
cmpl $NHWI, %ecx
! jae no_cil
btsl %ecx, _cil
! no_cil:
FAST_ICPL_UNLOCK /* preserves %eax */
sti /* late to prevent INT deadlock */
#else
--- 220,234 ----
* for them again.
*/
#ifdef SMP
+ TEST_CIL
/* we enter with cpl locked */
bsfl %ecx, %ecx /* slow, but not worth optimizing */
btrl %ecx, _ipending
jnc doreti_next2 /* some intr cleared memory copy */
cmpl $NHWI, %ecx
! jae 1f
btsl %ecx, _cil
! 1:
FAST_ICPL_UNLOCK /* preserves %eax */
sti /* late to prevent INT deadlock */
#else
***************
*** 231,240 ****
/* XXX SMP this would leave cil set: */
je doreti_next /* "can't happen" */
#else
! jne ih_ok
int $3 /* _breakpoint */
jmp doreti_next /* "can't happen" */
! ih_ok:
#endif
cmpl $NHWI,%ecx
jae doreti_swi
--- 249,258 ----
/* XXX SMP this would leave cil set: */
je doreti_next /* "can't happen" */
#else
! jne 1f
int $3 /* _breakpoint */
jmp doreti_next /* "can't happen" */
! 1:
#endif
cmpl $NHWI,%ecx
jae doreti_swi
***************
*** 256,268 ****
ALIGN_TEXT
doreti_swi:
! #if 1
! cmpl $0x0100, _cil
! jne 1f
! cmpl $0, _inside_intr
! jne 1f
! int $3
! 1:
#endif
pushl %eax
/*
--- 274,281 ----
ALIGN_TEXT
doreti_swi:
! #ifdef SMP
! TEST_CIL
#endif
pushl %eax
/*
--
Steve Passe | powered by
smp@csn.net | Symmetric MultiProcessor FreeBSD
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709290538.XAA08882>
