Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/alpha - Document all of the various interrupt level...
details: https://anonhg.NetBSD.org/src/rev/efa16fcd8f34
branches: trunk
changeset: 938279:efa16fcd8f34
user: thorpej <thorpej%NetBSD.org@localhost>
date: Sat Sep 05 16:29:07 2020 +0000
description:
- Document all of the various interrupt levels in the Processor Stataus
register, and provide symbolic names for them as well.
- Use ALPHA_PSL_IPL_* values directly for IPL_*.
diffstat:
sys/arch/alpha/alpha/genassym.cf | 4 ++--
sys/arch/alpha/alpha/interrupt.c | 21 +++------------------
sys/arch/alpha/alpha/locore.s | 6 +++---
sys/arch/alpha/include/alpha_cpu.h | 24 +++++++++++++++++++++---
sys/arch/alpha/include/intr.h | 30 +++++++++++++++++-------------
sys/arch/alpha/tc/tc_3000_300.c | 8 ++++----
sys/arch/alpha/tc/tc_3000_500.c | 8 ++++----
7 files changed, 54 insertions(+), 47 deletions(-)
diffs (256 lines):
diff -r 0fabc351ea4a -r efa16fcd8f34 sys/arch/alpha/alpha/genassym.cf
--- a/sys/arch/alpha/alpha/genassym.cf Sat Sep 05 16:04:31 2020 +0000
+++ b/sys/arch/alpha/alpha/genassym.cf Sat Sep 05 16:29:07 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: genassym.cf,v 1.23 2020/09/03 04:18:30 thorpej Exp $
+# $NetBSD: genassym.cf,v 1.24 2020/09/05 16:29:07 thorpej Exp $
#
# Copyright (c) 1982, 1990, 1993
@@ -129,7 +129,7 @@
define ALPHA_PSL_USERMODE ALPHA_PSL_USERMODE
define ALPHA_PSL_IPL_MASK ALPHA_PSL_IPL_MASK
define ALPHA_PSL_IPL_0 ALPHA_PSL_IPL_0
-define ALPHA_PSL_IPL_SOFT ALPHA_PSL_IPL_SOFT
+define ALPHA_PSL_IPL_SOFT_LO ALPHA_PSL_IPL_SOFT_LO
define ALPHA_PSL_IPL_HIGH ALPHA_PSL_IPL_HIGH
# pte bits
diff -r 0fabc351ea4a -r efa16fcd8f34 sys/arch/alpha/alpha/interrupt.c
--- a/sys/arch/alpha/alpha/interrupt.c Sat Sep 05 16:04:31 2020 +0000
+++ b/sys/arch/alpha/alpha/interrupt.c Sat Sep 05 16:29:07 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: interrupt.c,v 1.82 2020/08/29 15:29:30 thorpej Exp $ */
+/* $NetBSD: interrupt.c,v 1.83 2020/09/05 16:29:07 thorpej Exp $ */
/*-
* Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.82 2020/08/29 15:29:30 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: interrupt.c,v 1.83 2020/09/05 16:29:07 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -463,7 +463,7 @@
{
if (ssir) {
- (void) alpha_pal_swpipl(ALPHA_PSL_IPL_SOFT);
+ (void) alpha_pal_swpipl(ALPHA_PSL_IPL_SOFT_LO);
softintr_dispatch();
}
@@ -525,18 +525,3 @@
vprintf(fmt, ap);
va_end(ap);
}
-
-const static uint8_t ipl2psl_table[] = {
- [IPL_NONE] = ALPHA_PSL_IPL_0,
- [IPL_SOFTCLOCK] = ALPHA_PSL_IPL_SOFT,
- [IPL_VM] = ALPHA_PSL_IPL_IO,
- [IPL_SCHED] = ALPHA_PSL_IPL_CLOCK, /* also IPIs */
- [IPL_HIGH] = ALPHA_PSL_IPL_HIGH,
-};
-
-ipl_cookie_t
-makeiplcookie(ipl_t ipl)
-{
-
- return (ipl_cookie_t){._psl = ipl2psl_table[ipl]};
-}
diff -r 0fabc351ea4a -r efa16fcd8f34 sys/arch/alpha/alpha/locore.s
--- a/sys/arch/alpha/alpha/locore.s Sat Sep 05 16:04:31 2020 +0000
+++ b/sys/arch/alpha/alpha/locore.s Sat Sep 05 16:29:07 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.s,v 1.130 2020/09/04 04:09:52 thorpej Exp $ */
+/* $NetBSD: locore.s,v 1.131 2020/09/05 16:29:07 thorpej Exp $ */
/*-
* Copyright (c) 1999, 2000, 2019 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.s,v 1.130 2020/09/04 04:09:52 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.s,v 1.131 2020/09/05 16:29:07 thorpej Exp $");
#include "assym.h"
@@ -283,7 +283,7 @@
/* NOTREACHED */
/* We've got a SIR */
-6: ldiq a0, ALPHA_PSL_IPL_SOFT
+6: ldiq a0, ALPHA_PSL_IPL_SOFT_LO
call_pal PAL_OSF1_swpipl
mov v0, s2 /* remember old IPL */
CALL(softintr_dispatch)
diff -r 0fabc351ea4a -r efa16fcd8f34 sys/arch/alpha/include/alpha_cpu.h
--- a/sys/arch/alpha/include/alpha_cpu.h Sat Sep 05 16:04:31 2020 +0000
+++ b/sys/arch/alpha/include/alpha_cpu.h Sat Sep 05 16:29:07 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: alpha_cpu.h,v 1.50 2012/02/06 02:14:13 matt Exp $ */
+/* $NetBSD: alpha_cpu.h,v 1.51 2020/09/05 16:29:08 thorpej Exp $ */
/*
* Copyright (c) 1996 Carnegie-Mellon University.
@@ -94,16 +94,34 @@
* Processor Status Register [OSF/1 PALcode Specific]
*
* Includes user/kernel mode bit, interrupt priority levels, etc.
+ *
+ * Processor Status Summary
+ * ---------------------------------------------------------------------------
+ * PS<mode> PS<IPL> Mode Use
+ * ---------------------------------------------------------------------------
+ * 1 0 User User software
+ * 0 0 Kernel System software
+ * 0 1 Kernel System software
+ * 0 2 Kernel System software
+ * 0 3 Kernel Low priority device interrupts
+ * 0 4 Kernel High priority device interrupts
+ * 0 5 Kernel Clock, inter-proc interrupts
+ * 0 6 Kernel Real-time device interrupts
+ * 0 6 Kernel Correctable error reporting
+ * 0 7 Kernel Machine checks
*/
#define ALPHA_PSL_USERMODE 0x0008 /* set -> user mode */
#define ALPHA_PSL_IPL_MASK 0x0007 /* interrupt level mask */
#define ALPHA_PSL_IPL_0 0x0000 /* all interrupts enabled */
-#define ALPHA_PSL_IPL_SOFT 0x0001 /* software ints disabled */
-#define ALPHA_PSL_IPL_IO 0x0004 /* I/O dev ints disabled */
+#define ALPHA_PSL_IPL_SOFT_LO 0x0001 /* low pri soft ints disabled */
+#define ALPHA_PSL_IPL_SOFT_HI 0x0002 /* hi pri soft ints disabled */
+#define ALPHA_PSL_IPL_IO_LO 0x0003 /* low pri dev ints disabled */
+#define ALPHA_PSL_IPL_IO_HI 0x0004 /* hi pri dev ints disabled */
#define ALPHA_PSL_IPL_CLOCK 0x0005 /* clock ints disabled */
#define ALPHA_PSL_IPL_HIGH 0x0006 /* all but mchecks disabled */
+#define ALPHA_PSL_IPL_MCHECK 0x0007 /* machine checks disabled */
#define ALPHA_PSL_MUST_BE_ZERO 0xfffffffffffffff0
diff -r 0fabc351ea4a -r efa16fcd8f34 sys/arch/alpha/include/intr.h
--- a/sys/arch/alpha/include/intr.h Sat Sep 05 16:04:31 2020 +0000
+++ b/sys/arch/alpha/include/intr.h Sat Sep 05 16:29:07 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: intr.h,v 1.73 2020/08/29 20:07:00 thorpej Exp $ */
+/* $NetBSD: intr.h,v 1.74 2020/09/05 16:29:08 thorpej Exp $ */
/*-
* Copyright (c) 2000, 2001, 2002 The NetBSD Foundation, Inc.
@@ -92,33 +92,37 @@
};
/*
- * Alpha interrupts come in at one of 4 levels:
+ * Alpha interrupts come in at one of 3 levels:
*
- * software interrupt level
* i/o level 1
* i/o level 2
* clock level
*
* However, since we do not have any way to know which hardware
* level a particular i/o interrupt comes in on, we have to
- * whittle it down to 3.
+ * whittle it down to 2. In addition, there are 2 software interrupt
+ * levels available to system software.
*/
-#define IPL_NONE 0 /* no interrupt level */
-#define IPL_SOFTCLOCK 1 /* generic software interrupts */
-#define IPL_SOFTBIO 1 /* generic software interrupts */
-#define IPL_SOFTNET 1 /* generic software interrupts */
-#define IPL_SOFTSERIAL 1 /* generic software interrupts */
-#define IPL_VM 2 /* interrupts that can alloc mem */
-#define IPL_SCHED 3 /* clock interrupts */
-#define IPL_HIGH 4 /* all interrupts */
+#define IPL_NONE ALPHA_PSL_IPL_0
+#define IPL_SOFTCLOCK ALPHA_PSL_IPL_SOFT_LO
+#define IPL_SOFTBIO ALPHA_PSL_IPL_SOFT_LO
+#define IPL_SOFTNET ALPHA_PSL_IPL_SOFT_LO /* XXX HI */
+#define IPL_SOFTSERIAL ALPHA_PSL_IPL_SOFT_LO /* XXX HI */
+#define IPL_VM ALPHA_PSL_IPL_IO_HI
+#define IPL_SCHED ALPHA_PSL_IPL_CLOCK
+#define IPL_HIGH ALPHA_PSL_IPL_HIGH
typedef int ipl_t;
typedef struct {
uint8_t _psl;
} ipl_cookie_t;
-ipl_cookie_t makeiplcookie(ipl_t);
+static inline ipl_cookie_t
+makeiplcookie(ipl_t ipl)
+{
+ return (ipl_cookie_t){._psl = (uint8_t)ipl};
+}
#define IST_UNUSABLE -1 /* interrupt cannot be used */
#define IST_NONE 0 /* none (dummy) */
diff -r 0fabc351ea4a -r efa16fcd8f34 sys/arch/alpha/tc/tc_3000_300.c
--- a/sys/arch/alpha/tc/tc_3000_300.c Sat Sep 05 16:04:31 2020 +0000
+++ b/sys/arch/alpha/tc/tc_3000_300.c Sat Sep 05 16:29:07 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: tc_3000_300.c,v 1.34 2019/11/10 21:16:22 chs Exp $ */
+/* $NetBSD: tc_3000_300.c,v 1.35 2020/09/05 16:29:08 thorpej Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: tc_3000_300.c,v 1.34 2019/11/10 21:16:22 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tc_3000_300.c,v 1.35 2020/09/05 16:29:08 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -210,9 +210,9 @@
if (vec != 0x800)
panic("INVALID ASSUMPTION: vec 0x%lx, not 0x800", vec);
s = splhigh();
- if (s != ALPHA_PSL_IPL_IO)
+ if (s != ALPHA_PSL_IPL_IO_HI)
panic("INVALID ASSUMPTION: IPL %d, not %d", s,
- ALPHA_PSL_IPL_IO);
+ ALPHA_PSL_IPL_IO_HI);
splx(s);
#endif
diff -r 0fabc351ea4a -r efa16fcd8f34 sys/arch/alpha/tc/tc_3000_500.c
--- a/sys/arch/alpha/tc/tc_3000_500.c Sat Sep 05 16:04:31 2020 +0000
+++ b/sys/arch/alpha/tc/tc_3000_500.c Sat Sep 05 16:29:07 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: tc_3000_500.c,v 1.33 2019/11/10 21:16:22 chs Exp $ */
+/* $NetBSD: tc_3000_500.c,v 1.34 2020/09/05 16:29:08 thorpej Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: tc_3000_500.c,v 1.33 2019/11/10 21:16:22 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tc_3000_500.c,v 1.34 2020/09/05 16:29:08 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -214,9 +214,9 @@
if (vec != 0x800)
panic("INVALID ASSUMPTION: vec 0x%lx, not 0x800", vec);
s = splhigh();
- if (s != ALPHA_PSL_IPL_IO)
+ if (s != ALPHA_PSL_IPL_IO_HI)
panic("INVALID ASSUMPTION: IPL %d, not %d", s,
- ALPHA_PSL_IPL_IO);
+ ALPHA_PSL_IPL_IO_HI);
splx(s);
#endif
Home |
Main Index |
Thread Index |
Old Index