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>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709290538.XAA08882>