New framework for handling processor interrupts, derived in part from
the hp300 port. - Interrupts 3-6 use this immediately. Interrupt 7 is a special case, and the VIA interrupts (1 and 2) will be addressed when that code is rototilled. - Modify the zs front end to register with the appropriate interrupt controller: through the PSC on the AV Quadras, and direct to interrupt 4 on the rest. Arrange to have the appropriate zsc_softc supplied to us at interrupt time. - Modify the direct ADB driver (and its PowerManager cousin) to call intr_dispatch(), rather than zshard(). XXX This is a kludge, but at least limits the brokenness to the ADB drivers, now. As a side effect, this should fix PR 5590. Thanks to Bill Studenmund for correctly determining the cause of the problem reported there.
This commit is contained in:
parent
3e40b6ff15
commit
5a94869995
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: intr.h,v 1.8 1997/11/07 07:33:18 scottr Exp $ */
|
||||
/* $NetBSD: intr.h,v 1.9 1998/08/12 06:58:42 scottr Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1997 Scott Reynolds
|
||||
@ -137,6 +137,11 @@ extern volatile u_int8_t ssir;
|
||||
#define setsoftdtmgr() siron(SIR_DTMGR)
|
||||
#define setsoftadb() siron(SIR_ADB)
|
||||
|
||||
/* intr.c */
|
||||
void intr_establish __P((int (*)(void *), void *, int));
|
||||
void intr_disestablish __P((int));
|
||||
int intr_dispatch __P((int));
|
||||
|
||||
/* locore.s */
|
||||
int spl0 __P((void));
|
||||
#endif /* _KERNEL */
|
||||
|
@ -1,4 +1,4 @@
|
||||
| $NetBSD: vectors.s,v 1.9 1997/09/03 06:16:24 scottr Exp $
|
||||
| $NetBSD: vectors.s,v 1.10 1998/08/12 06:58:42 scottr Exp $
|
||||
|
||||
| Copyright (c) 1988 University of Utah
|
||||
| Copyright (c) 1990 Regents of the University of California.
|
||||
@ -78,10 +78,10 @@ GLOBAL(vectab)
|
||||
VECTOR(spurintr) /* 24: spurious interrupt */
|
||||
VECTOR(lev1intr) /* 25: level 1 interrupt autovector */
|
||||
VECTOR(lev2intr) /* 26: level 2 interrupt autovector */
|
||||
VECTOR(lev3intr) /* 27: level 3 interrupt autovector */
|
||||
VECTOR(lev4intr) /* 28: level 4 interrupt autovector */
|
||||
VECTOR(lev5intr) /* 29: level 5 interrupt autovector */
|
||||
VECTOR(lev6intr) /* 30: level 6 interrupt autovector */
|
||||
VECTOR(intrhand) /* 27: level 3 interrupt autovector */
|
||||
VECTOR(intrhand) /* 28: level 4 interrupt autovector */
|
||||
VECTOR(intrhand) /* 29: level 5 interrupt autovector */
|
||||
VECTOR(intrhand) /* 30: level 6 interrupt autovector */
|
||||
VECTOR(lev7intr) /* 31: level 7 interrupt autovector */
|
||||
VECTOR(trap0) /* 32: syscalls */
|
||||
VECTOR(trap1) /* 33: sigreturn syscall or breakpoint */
|
||||
|
Loading…
Reference in New Issue
Block a user