Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch move spl*() and IPL_* definitions from psl.h to int...



details:   https://anonhg.NetBSD.org/src/rev/86a8f8b1e324
branches:  trunk
changeset: 573240:86a8f8b1e324
user:      chs <chs%NetBSD.org@localhost>
date:      Sun Jan 23 17:27:03 2005 +0000

description:
move spl*() and IPL_* definitions from psl.h to intr.h.

diffstat:

 sys/arch/amiga/amiga/isr.h     |    7 ++-
 sys/arch/amiga/include/intr.h  |   63 +++++++++++++++++++++-
 sys/arch/amiga/include/param.h |    4 +-
 sys/arch/amiga/include/psl.h   |   73 +-------------------------
 sys/arch/sun2/include/param.h  |    5 +-
 sys/arch/sun68k/include/intr.h |   75 +++++++++++++++++++++++++-
 sys/arch/sun68k/include/psl.h  |  117 +----------------------------------------
 7 files changed, 147 insertions(+), 197 deletions(-)

diffs (truncated from 440 to 300 lines):

diff -r 8b57a5a154b2 -r 86a8f8b1e324 sys/arch/amiga/amiga/isr.h
--- a/sys/arch/amiga/amiga/isr.h        Sun Jan 23 17:04:26 2005 +0000
+++ b/sys/arch/amiga/amiga/isr.h        Sun Jan 23 17:27:03 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: isr.h,v 1.10 2003/08/07 16:26:38 agc Exp $     */
+/*     $NetBSD: isr.h,v 1.11 2005/01/23 17:27:03 chs Exp $     */
 
 /*
  * Copyright (c) 1982 Regents of the University of California.
@@ -31,6 +31,9 @@
  *     @(#)isr.h       7.1 (Berkeley) 5/8/90
  */
 
+#ifndef _AMIGA_ISR_H_
+#define _AMIGA_ISR_H_ 1
+
 struct isr {
        struct  isr *isr_forw;
        struct  isr *isr_back;
@@ -50,3 +53,5 @@
 void add_sicallback(sifunc_t, void *, void *);
 void rem_sicallback(sifunc_t);
 #endif
+
+#endif /* _AMIGA_ISR_H_ */
diff -r 8b57a5a154b2 -r 86a8f8b1e324 sys/arch/amiga/include/intr.h
--- a/sys/arch/amiga/include/intr.h     Sun Jan 23 17:04:26 2005 +0000
+++ b/sys/arch/amiga/include/intr.h     Sun Jan 23 17:27:03 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: intr.h,v 1.12 2001/01/17 20:53:43 is Exp $     */
+/*     $NetBSD: intr.h,v 1.13 2005/01/23 17:27:03 chs Exp $    */
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -47,6 +47,7 @@
 
 #include <amiga/amiga/isr.h>
 #include <amiga/include/mtpr.h>
+#include <m68k/psl.h>
 
 #define IPL_SOFTCLOCK 1
 #define IPL_SOFTSERIAL 1
@@ -66,4 +67,64 @@
 
 #define spllpt()       spl6()
 
+#if !defined(_LKM)
+#include "opt_lev6_defer.h"
 #endif
+
+#define        spl0()                  _spl0() /* we have real software interrupts */
+
+#define splnone()              spl0()
+#define        spllowersoftclock()     spl1()
+
+#define splsoftclock()         splraise1()
+#define splsoftnet()           splraise1()
+#define splbio()               splraise3()
+#define splnet()               splraise3()
+
+/*
+ * splserial hack, idea by Jason Thorpe.
+ * drivers which need it (at the present only the coms) raise the variable to
+ * their serial interrupt level.
+ *
+ * serialspl is statically initialized in machdep.c at the moment; should 
+ * be some driver independent file.
+ */
+
+extern uint16_t                amiga_serialspl;
+
+#define splserial()    _splraise(amiga_serialspl)
+#define spltty()       splraise4()
+#define        splvm()         splraise4()
+
+#ifndef _LKM
+
+#ifndef LEV6_DEFER
+#define splclock()     splraise6()
+#define splstatclock() splraise6()
+#define splhigh()      spl7()
+#define splsched()     spl7()
+#define spllock()      spl7()
+#else
+#define splclock()     splraise4()
+#define splstatclock() splraise4()
+#define splhigh()      splraise4()
+#define splsched()     splraise4()
+#define spllock()      splraise4()
+#endif
+
+#else  /* _LKM */
+
+extern int _spllkm6(void);
+extern int _spllkm7(void);
+
+#define splclock()     _spllkm6()
+#define splstatclock() _spllkm6()
+#define spllock()      _spllkm7()
+#define splhigh()      _spllkm7()
+#define splsched()     _spllkm7()
+
+#endif /* _LKM */
+
+#define splx(s)                _spl(s)
+
+#endif
diff -r 8b57a5a154b2 -r 86a8f8b1e324 sys/arch/amiga/include/param.h
--- a/sys/arch/amiga/include/param.h    Sun Jan 23 17:04:26 2005 +0000
+++ b/sys/arch/amiga/include/param.h    Sun Jan 23 17:27:03 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: param.h,v 1.41 2003/08/07 16:26:46 agc Exp $   */
+/*     $NetBSD: param.h,v 1.42 2005/01/23 17:27:03 chs Exp $   */
 
 /*
  * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
@@ -111,7 +111,7 @@
 /*
  * spl functions; all are normally done in-line
  */
-#include <machine/psl.h>
+#include <machine/intr.h>
 
 #ifdef _KERNEL
 /*
diff -r 8b57a5a154b2 -r 86a8f8b1e324 sys/arch/amiga/include/psl.h
--- a/sys/arch/amiga/include/psl.h      Sun Jan 23 17:04:26 2005 +0000
+++ b/sys/arch/amiga/include/psl.h      Sun Jan 23 17:27:03 2005 +0000
@@ -1,74 +1,3 @@
-/*     $NetBSD: psl.h,v 1.19 2001/05/27 20:22:57 is Exp $      */
-
-#ifndef _MACHINE_PSL_H_
-#define _MACHINE_PSL_H_
+/*     $NetBSD: psl.h,v 1.20 2005/01/23 17:27:03 chs Exp $     */
 
 #include <m68k/psl.h>
-
-#if defined(_KERNEL) && !defined(_LOCORE)
-
-#if !defined(_LKM)
-#include "opt_lev6_defer.h"
-#endif
-
-#define        spl0()                  _spl0() /* we have real software interrupts */
-
-#define splnone()              spl0()
-#define        spllowersoftclock()     spl1()
-
-#define splsoftclock()         splraise1()
-#define splsoftnet()           splraise1()
-#define splbio()               splraise3()
-#define splnet()               splraise3()
-
-/*
- * splserial hack, idea by Jason Thorpe.
- * drivers which need it (at the present only the coms) raise the variable to
- * their serial interrupt level.
- *
- * serialspl is statically initialized in machdep.c at the moment; should 
- * be some driver independent file.
- *
- * XXX should serialspl be volatile? I think not; it is intended to be set only
- * during xxx_attach() time, and will be used only later.
- *     -is
- */
-
-extern u_int16_t       amiga_serialspl;
-#define splserial()    _splraise(amiga_serialspl)
-#define spltty()       splraise4()
-#define        splvm()         splraise4()
-
-#ifndef _LKM
-
-#ifndef LEV6_DEFER
-#define splclock()     splraise6()
-#define splstatclock() splraise6()
-#define splhigh()      spl7()
-#define splsched()     spl7()
-#define spllock()      spl7()
-#else
-#define splclock()     splraise4()
-#define splstatclock() splraise4()
-#define splhigh()      splraise4()
-#define splsched()     splraise4()
-#define spllock()      splraise4()
-#endif
-
-#else  /* _LKM */
-
-extern int _spllkm6(void);
-extern int _spllkm7(void);
-
-#define splclock()     _spllkm6()
-#define splstatclock() _spllkm6()
-#define spllock()      _spllkm7()
-#define splhigh()      _spllkm7()
-#define splsched()     _spllkm7()
-
-#endif /* _LKM */
-
-#define splx(s)                _spl(s)
-
-#endif /* KERNEL && !_LOCORE */
-#endif /* _MACHINE_PSL_H_ */
diff -r 8b57a5a154b2 -r 86a8f8b1e324 sys/arch/sun2/include/param.h
--- a/sys/arch/sun2/include/param.h     Sun Jan 23 17:04:26 2005 +0000
+++ b/sys/arch/sun2/include/param.h     Sun Jan 23 17:27:03 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: param.h,v 1.6 2005/01/22 15:36:09 chs Exp $    */
+/*     $NetBSD: param.h,v 1.7 2005/01/23 17:27:03 chs Exp $    */
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -136,8 +136,7 @@
 
 #if defined(_KERNEL) && !defined(_LOCORE)
 
-/* XXX - Does this really belong here? -gwr */
-#include <machine/psl.h>
+#include <machine/intr.h>
 
 extern void _delay(unsigned);
 #define delay(us)      _delay((us)<<8)
diff -r 8b57a5a154b2 -r 86a8f8b1e324 sys/arch/sun68k/include/intr.h
--- a/sys/arch/sun68k/include/intr.h    Sun Jan 23 17:04:26 2005 +0000
+++ b/sys/arch/sun68k/include/intr.h    Sun Jan 23 17:27:03 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: intr.h,v 1.2 2005/01/22 15:36:11 chs Exp $     */
+/*     $NetBSD: intr.h,v 1.3 2005/01/23 17:27:04 chs Exp $     */
 
 /*
  * Copyright (c) 2001 Matt Fredette.
@@ -34,6 +34,7 @@
 #define _SUN68K_INTR_H_
 
 #include <sys/queue.h>
+#include <m68k/psl.h>
 
 /*
  * Interrupt levels.  Right now these correspond to real
@@ -89,5 +90,75 @@
 extern void isr_add_vectored(isr_func_t, void *, int, int);
 extern void isr_add_custom(int, void *);
 
-#endif /* _KERNEL */
+/*
+ * Define inline functions for PSL manipulation.
+ * These are as close to macros as one can get.
+ * When not optimizing gcc will call the locore.s
+ * functions by the same names, so breakpoints on
+ * these functions will work normally, etc.
+ * (See the GCC extensions info document.)
+ */
+
+static __inline int _getsr(void);
+
+/* Get current sr value. */
+static __inline int
+_getsr(void)
+{
+       int rv;
+
+       __asm __volatile ("clrl %0; movew %%sr,%0" : "=&d" (rv));
+       return (rv);
+}
+
+/*
+ * The rest of this is sun68k specific, because other ports may
+ * need to do special things in spl0() (i.e. simulate SIR).
+ * Suns have a REAL interrupt register, so spl0() and splx(s)
+ * have no need to check for any simulated interrupts, etc.
+ */
+
+#define spl0()  _spl0()                /* we have real software interrupts */
+#define splx(x)        _spl(x)
+
+/* IPL used by soft interrupts: netintr(), softclock() */
+#define        spllowersoftclock() spl1()
+#define splsoftclock()  splraise1()
+#define splsoftnet()    splraise1()
+
+/* Highest block device (strategy) IPL. */
+#define splbio()        splraise2()
+
+/* Highest network interface IPL. */
+#define splnet()        splraise3()
+
+/* Highest tty device IPL. */
+#define spltty()        splraise4()
+
+/*
+ * Requirement: imp >= (highest network, tty, or disk IPL)
+ * This is used mostly in the VM code.
+ * Note that the VM code runs at spl7 during kernel
+ * initialization, and later at spl0, so we have to 
+ * use splraise to avoid enabling interrupts early.
+ */
+#define splvm()         _splraise(PSL_S|PSL_IPL4)
+
+/* Intersil or Am9513 clock hardware interrupts (hard-wired at 5) */



Home | Main Index | Thread Index | Old Index