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