Use an array for PSL values, rather than individual shortwords, like
the hp300 port.
This commit is contained in:
parent
51fe928d5e
commit
654051453f
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: intr.h,v 1.14 1999/06/15 15:26:34 kleink Exp $ */
|
||||
/* $NetBSD: intr.h,v 1.15 1999/08/04 16:01:48 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1997 Scott Reynolds
|
||||
@ -74,23 +74,28 @@
|
||||
#define spl6() _spl(PSL_S|PSL_IPL6)
|
||||
#define spl7() _spl(PSL_S|PSL_IPL7)
|
||||
|
||||
/*
|
||||
* This array contains the appropriate PSL_S|PSL_IPL? values
|
||||
* to raise interrupt priority to the requested level.
|
||||
*/
|
||||
extern unsigned short mac68k_ipls[];
|
||||
|
||||
#define MAC68K_IPL_SOFT 0
|
||||
#define MAC68K_IPL_BIO 1
|
||||
#define MAC68K_IPL_NET 2
|
||||
#define MAC68K_IPL_TTY 3
|
||||
#define MAC68K_IPL_IMP 4
|
||||
#define MAC68K_IPL_AUDIO 5
|
||||
#define MAC68K_IPL_SERIAL 6
|
||||
#define MAC68K_IPL_CLOCK 7
|
||||
#define MAC68K_IPL_STATCLOCK 8
|
||||
#define MAC68K_IPL_SCHED 9
|
||||
#define MAC68K_IPL_HIGH 10
|
||||
#define MAC68K_NIPLS 11
|
||||
|
||||
/* These spl calls are _not_ to be used by machine-independent code. */
|
||||
#define spladb() splhigh()
|
||||
#define splzs() splserial()
|
||||
#define splsoft() spl1()
|
||||
|
||||
/*
|
||||
* splnet must block hardware network interrupts
|
||||
* splimp must be > spltty
|
||||
*/
|
||||
extern u_short mac68k_ttyipl;
|
||||
extern u_short mac68k_bioipl;
|
||||
extern u_short mac68k_netipl;
|
||||
extern u_short mac68k_impipl;
|
||||
extern u_short mac68k_audioipl;
|
||||
extern u_short mac68k_clockipl;
|
||||
extern u_short mac68k_statclockipl;
|
||||
extern u_short mac68k_schedipl;
|
||||
|
||||
/*
|
||||
* These should be used for:
|
||||
@ -101,17 +106,17 @@ extern u_short mac68k_schedipl;
|
||||
* everything at spl2, and everything but the panic switch and
|
||||
* power at spl4.
|
||||
*/
|
||||
#define splsoftclock() splsoft()
|
||||
#define splsoftnet() splsoft()
|
||||
#define spltty() _splraise(mac68k_ttyipl)
|
||||
#define splbio() _splraise(mac68k_bioipl)
|
||||
#define splnet() _splraise(mac68k_netipl)
|
||||
#define splimp() _splraise(mac68k_impipl)
|
||||
#define splaudio() _splraise(mac68k_audioipl)
|
||||
#define splclock() _splraise(mac68k_clockipl)
|
||||
#define splstatclock() _splraise(mac68k_statclockipl)
|
||||
#define splsched() _splraise(mac68k_schedipl)
|
||||
#define splserial() spl4()
|
||||
#define splsoftclock() spl1()
|
||||
#define splsoftnet() _splraise(mac68k_ipls[MAC68K_IPL_SOFT])
|
||||
#define spltty() _splraise(mac68k_ipls[MAC68K_IPL_TTY])
|
||||
#define splbio() _splraise(mac68k_ipls[MAC68K_IPL_BIO])
|
||||
#define splnet() _splraise(mac68k_ipls[MAC68K_IPL_NET])
|
||||
#define splimp() _splraise(mac68k_ipls[MAC68K_IPL_IMP])
|
||||
#define splaudio() _splraise(mac68k_ipls[MAC68K_IPL_AUDIO])
|
||||
#define splclock() _splraise(mac68k_ipls[MAC68K_IPL_CLOCK])
|
||||
#define splstatclock() _splraise(mac68k_ipls[MAC68K_IPL_STATCLOCK])
|
||||
#define splsched() _splraise(mac68k_ipls[MAC68K_IPL_SCHED])
|
||||
#define splserial() _splraise(mac68k_ipls[MAC68K_IPL_SERIAL])
|
||||
#define splhigh() spl7()
|
||||
|
||||
/* watch out for side effects */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: intr.c,v 1.6 1999/06/28 08:20:44 itojun Exp $ */
|
||||
/* $NetBSD: intr.c,v 1.7 1999/08/04 16:01:47 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
|
||||
@ -95,14 +95,7 @@ int intr_debug = 0;
|
||||
* IIfx/Q700/900/950/etc. where the interrupt controller may be reprogrammed
|
||||
* to interrupt on different levels as listed in locore.s
|
||||
*/
|
||||
u_short mac68k_ttyipl;
|
||||
u_short mac68k_bioipl;
|
||||
u_short mac68k_netipl;
|
||||
u_short mac68k_impipl;
|
||||
u_short mac68k_audioipl;
|
||||
u_short mac68k_clockipl;
|
||||
u_short mac68k_statclockipl;
|
||||
u_short mac68k_schedipl;
|
||||
u_short mac68k_ipls[MAC68K_NIPLS];
|
||||
|
||||
extern int intrcnt[]; /* from locore.s */
|
||||
|
||||
@ -122,41 +115,46 @@ intr_init()
|
||||
extern long intrnames;
|
||||
char *inames, *g_inames;
|
||||
|
||||
mac68k_ipls[MAC68K_IPL_SOFT] = PSL_S|PSL_IPL1;
|
||||
mac68k_ipls[MAC68K_IPL_SERIAL] = PSL_S|PSL_IPL4;
|
||||
mac68k_ipls[MAC68K_IPL_HIGH] = PSL_S|PSL_IPL7;
|
||||
|
||||
g_inames = (char *) &intrnames;
|
||||
if (mac68k_machine.aux_interrupts) {
|
||||
|
||||
inames = AUX_INAMES;
|
||||
|
||||
/* Standard spl(9) interrupt priorities */
|
||||
mac68k_ttyipl = (PSL_S | PSL_IPL1);
|
||||
mac68k_bioipl = (PSL_S | PSL_IPL2);
|
||||
mac68k_netipl = (PSL_S | PSL_IPL3);
|
||||
mac68k_impipl = (PSL_S | PSL_IPL6);
|
||||
mac68k_statclockipl = (PSL_S | PSL_IPL6);
|
||||
mac68k_clockipl = (PSL_S | PSL_IPL6);
|
||||
mac68k_schedipl = (PSL_S | PSL_IPL4);
|
||||
mac68k_ipls[MAC68K_IPL_TTY] = (PSL_S | PSL_IPL1);
|
||||
mac68k_ipls[MAC68K_IPL_BIO] = (PSL_S | PSL_IPL2);
|
||||
mac68k_ipls[MAC68K_IPL_NET] = (PSL_S | PSL_IPL3);
|
||||
mac68k_ipls[MAC68K_IPL_IMP] = (PSL_S | PSL_IPL6);
|
||||
mac68k_ipls[MAC68K_IPL_STATCLOCK] = (PSL_S | PSL_IPL6);
|
||||
mac68k_ipls[MAC68K_IPL_CLOCK] = (PSL_S | PSL_IPL6);
|
||||
mac68k_ipls[MAC68K_IPL_SCHED] = (PSL_S | PSL_IPL4);
|
||||
|
||||
/* Non-standard interrupt priority */
|
||||
mac68k_audioipl = (PSL_S | PSL_IPL5);
|
||||
mac68k_ipls[MAC68K_IPL_AUDIO] = (PSL_S | PSL_IPL5);
|
||||
|
||||
} else {
|
||||
inames = STD_INAMES;
|
||||
|
||||
/* Standard spl(9) interrupt priorities */
|
||||
mac68k_ttyipl = (PSL_S | PSL_IPL1);
|
||||
mac68k_bioipl = (PSL_S | PSL_IPL2);
|
||||
mac68k_netipl = (PSL_S | PSL_IPL2);
|
||||
mac68k_impipl = (PSL_S | PSL_IPL2);
|
||||
mac68k_statclockipl = (PSL_S | PSL_IPL2);
|
||||
mac68k_clockipl = (PSL_S | PSL_IPL2);
|
||||
mac68k_schedipl = (PSL_S | PSL_IPL3);
|
||||
mac68k_ipls[MAC68K_IPL_TTY] = (PSL_S | PSL_IPL1);
|
||||
mac68k_ipls[MAC68K_IPL_BIO] = (PSL_S | PSL_IPL2);
|
||||
mac68k_ipls[MAC68K_IPL_NET] = (PSL_S | PSL_IPL2);
|
||||
mac68k_ipls[MAC68K_IPL_IMP] = (PSL_S | PSL_IPL2);
|
||||
mac68k_ipls[MAC68K_IPL_STATCLOCK] = (PSL_S | PSL_IPL2);
|
||||
mac68k_ipls[MAC68K_IPL_CLOCK] = (PSL_S | PSL_IPL2);
|
||||
mac68k_ipls[MAC68K_IPL_SCHED] = (PSL_S | PSL_IPL3);
|
||||
|
||||
/* Non-standard interrupt priority */
|
||||
mac68k_audioipl = (PSL_S | PSL_IPL2);
|
||||
mac68k_ipls[MAC68K_IPL_AUDIO] = (PSL_S | PSL_IPL2);
|
||||
|
||||
if (current_mac_model->class == MACH_CLASSAV) {
|
||||
inames = AV_INAMES;
|
||||
mac68k_bioipl = mac68k_netipl = (PSL_S | PSL_IPL4);
|
||||
mac68k_ipls[MAC68K_IPL_BIO] =
|
||||
mac68k_ipls[MAC68K_IPL_NET] = (PSL_S | PSL_IPL4);
|
||||
}
|
||||
}
|
||||
|
||||
@ -177,23 +175,24 @@ intr_computeipl()
|
||||
* Enforce `bio <= net <= tty <= imp <= statclock <= clock <= sched'
|
||||
* as defined in spl(9)
|
||||
*/
|
||||
if (mac68k_bioipl > mac68k_netipl)
|
||||
mac68k_netipl = mac68k_bioipl;
|
||||
if (mac68k_ipls[MAC68K_IPL_BIO] > mac68k_ipls[MAC68K_IPL_NET])
|
||||
mac68k_ipls[MAC68K_IPL_NET] = mac68k_ipls[MAC68K_IPL_BIO];
|
||||
|
||||
if (mac68k_netipl > mac68k_ttyipl)
|
||||
mac68k_ttyipl = mac68k_netipl;
|
||||
if (mac68k_ipls[MAC68K_IPL_NET] > mac68k_ipls[MAC68K_IPL_TTY])
|
||||
mac68k_ipls[MAC68K_IPL_TTY] = mac68k_ipls[MAC68K_IPL_NET];
|
||||
|
||||
if (mac68k_ttyipl > mac68k_impipl)
|
||||
mac68k_impipl = mac68k_ttyipl;
|
||||
if (mac68k_ipls[MAC68K_IPL_TTY] > mac68k_ipls[MAC68K_IPL_IMP])
|
||||
mac68k_ipls[MAC68K_IPL_IMP] = mac68k_ipls[MAC68K_IPL_TTY];
|
||||
|
||||
if (mac68k_impipl > mac68k_statclockipl)
|
||||
mac68k_statclockipl = mac68k_impipl;
|
||||
if (mac68k_ipls[MAC68K_IPL_IMP] > mac68k_ipls[MAC68K_IPL_STATCLOCK])
|
||||
mac68k_ipls[MAC68K_IPL_STATCLOCK] = mac68k_ipls[MAC68K_IPL_IMP];
|
||||
|
||||
if (mac68k_statclockipl > mac68k_clockipl)
|
||||
mac68k_clockipl = mac68k_statclockipl;
|
||||
if (mac68k_ipls[MAC68K_IPL_STATCLOCK] > mac68k_ipls[MAC68K_IPL_CLOCK])
|
||||
mac68k_ipls[MAC68K_IPL_CLOCK] =
|
||||
mac68k_ipls[MAC68K_IPL_STATCLOCK];
|
||||
|
||||
if (mac68k_clockipl > mac68k_schedipl)
|
||||
mac68k_schedipl = mac68k_clockipl;
|
||||
if (mac68k_ipls[MAC68K_IPL_CLOCK] > mac68k_ipls[MAC68K_IPL_SCHED])
|
||||
mac68k_ipls[MAC68K_IPL_SCHED] = mac68k_ipls[MAC68K_IPL_CLOCK];
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user