Skip site navigation (1)Skip section navigation (2)
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>