Remove all remaining SPL code. Replace the mtd_cpl field in the machine
[dragonfly.git] / sys / platform / pc32 / isa / ipl_funcs.c
index bcc445e..0ee2ebd 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/ipl_funcs.c,v 1.32.2.5 2002/12/17 18:04:02 sam Exp $
- * $DragonFly: src/sys/platform/pc32/isa/ipl_funcs.c,v 1.9 2005/06/10 23:59:28 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/isa/ipl_funcs.c,v 1.10 2005/06/16 21:12:47 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -77,112 +77,3 @@ softclockpending(void)
        return ((mdcpu->gd_ipending | mdcpu->gd_fpending) & SWI_CLOCK_PENDING);
 }
 
-/*
- * Support for SPL assertions.
- */
-
-/************************************************************************
- *                     GENERAL SPL CODE                                *
- ************************************************************************
- *
- *  Implement splXXX(), spl0(), splx(), and splq().  splXXX() disables a
- *  set of interrupts (e.g. splbio() disables interrupts relating to 
- *  device I/O) and returns the previous interrupt mask.  splx() restores
- *  the previous interrupt mask, spl0() is a special case which enables
- *  all interrupts and is typically used inside i386/i386 swtch.s and
- *  fork_trampoline.  splq() is a generic version of splXXX().
- *
- *  The SPL routines mess around with the 'cpl' global, which masks 
- *  interrupts.  Interrupts are not *actually* masked.  What happens is 
- *  that if an interrupt masked by the cpl occurs, the appropriate bit
- *  in '*pending' is set and the interrupt is defered.  When we clear
- *  bits in the cpl we must check to see if any *pending interrupts have
- *  been unmasked and issue the synchronously, which is what the splz()
- *  call does.
- *
- *  Because the cpl is often saved and restored in a nested fashion, cpl
- *  modifications are only allowed in the SMP case when the MP lock is held
- *  to prevent multiple processes from tripping over each other's masks.
- *  The cpl is saved when you do a context switch (mi_switch()) and restored
- *  when your process gets cpu again.
- *
- *  An interrupt routine is allowed to modify the cpl as long as it restores
- *  it prior to returning (thus the interrupted mainline code doesn't notice
- *  anything amiss).  For the SMP case, the interrupt routine must hold 
- *  the MP lock for any cpl manipulation.
- *
- *  Likewise, due to the deterministic nature of cpl modifications, we do
- *  NOT need to use locked instructions to modify it.
- */
-
-#define        GENSPL(NAME, OP, MODIFIER, PC)          \
-unsigned NAME(void)                            \
-{                                              \
-       unsigned x;                             \
-       struct thread *td = curthread;          \
-                                               \
-       x = td->td_cpl;                         \
-       td->td_cpl OP MODIFIER;                 \
-       return (x);                             \
-}
-
-/*
- * Note: we do not have to check td->td_nest_count in these functions, only
- * whether we are in a critical section or not.
- */
-void
-spl0(void)
-{
-       struct mdglobaldata *gd = mdcpu;
-       struct thread *td = gd->mi.gd_curthread;
-
-       td->td_cpl = 0;
-       if ((gd->gd_ipending || gd->gd_fpending) && td->td_pri < TDPRI_CRIT)
-               splz();
-}
-
-void
-splx(unsigned ipl)
-{
-       struct mdglobaldata *gd = mdcpu;
-       struct thread *td = gd->mi.gd_curthread;
-
-       td->td_cpl = ipl;
-       if (((gd->gd_ipending | gd->gd_fpending) & ~ipl) &&
-           td->td_pri < TDPRI_CRIT) {
-               splz();
-       }
-}
-
-intrmask_t
-splq(intrmask_t mask)
-{ 
-       struct mdglobaldata *gd = mdcpu;
-       struct thread *td = gd->mi.gd_curthread;
-       intrmask_t tmp;
-
-       tmp = td->td_cpl;
-       td->td_cpl |= mask;
-       return (tmp);
-}       
-
-/* Finally, generate the actual spl*() functions */
-
-/*    NAME:            OP:     MODIFIER:                               PC: */
-GENSPL(splbio,         |=,     bio_imask,                              2)
-GENSPL(splcam,         |=,     cam_imask,                              7)
-GENSPL(splclock,        =,     HWI_MASK | SWI_MASK,                    3)
-GENSPL(splhigh,                 =,     HWI_MASK | SWI_MASK,                    4)
-GENSPL(splimp,         |=,     net_imask,                              5)
-GENSPL(splnet,         |=,     SWI_NET_MASK,                           6)
-GENSPL(splsoftcam,     |=,     SWI_CAMBIO_MASK | SWI_CAMNET_MASK,      8)
-GENSPL(splsoftcambio,  |=,     SWI_CAMBIO_MASK,                        9)
-GENSPL(splsoftcamnet,  |=,     SWI_CAMNET_MASK,                        10)
-GENSPL(splsoftclock,    =,     SWI_CLOCK_MASK,                         11)
-GENSPL(splsofttty,     |=,     SWI_TTY_MASK,                           12)
-GENSPL(splsoftvm,      |=,     SWI_VM_MASK,                            16)
-GENSPL(splsofttq,      |=,     SWI_TQ_MASK,                            17)
-GENSPL(splstatclock,   |=,     stat_imask,                             13)
-GENSPL(spltty,         |=,     tty_imask,                              14)
-GENSPL(splvm,          |=,     net_imask | bio_imask | cam_imask,      15)
-GENSPL(splcrypto,      |=,     net_imask | SWI_NET_MASK | SWI_CRYPTO_MASK,16)