Raise hp300_ipl2psl[IPL_VM] in intr_computeipl() accordingly.

(maybe mac68k has the same problem)

XXX: maybe we could use a possible highest device ipl (5 on hp300?) for IPL_VM.
This commit is contained in:
tsutsui 2007-12-03 16:18:47 +00:00
parent 4b293a84e1
commit bdce6fcc66
1 changed files with 25 additions and 2 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: intr.c,v 1.32 2007/12/03 15:33:39 ad Exp $ */
/* $NetBSD: intr.c,v 1.33 2007/12/03 16:18:47 tsutsui Exp $ */
/*-
* Copyright (c) 1996, 1997, 1999 The NetBSD Foundation, Inc.
@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.32 2007/12/03 15:33:39 ad Exp $");
__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.33 2007/12/03 16:18:47 tsutsui Exp $");
#define _HP300_INTR_H_PRIVATE
@ -112,7 +112,30 @@ intr_init(void)
void
intr_computeipl(void)
{
struct hp300_intrhand *ih;
int ipl;
/* Start with low values. */
hp300_ipl2psl[IPL_VM] = PSL_S|PSL_IPL3;
for (ipl = 0; ipl < NISR; ipl++) {
for (ih = LIST_FIRST(&hp300_intr_list[ipl].hi_q); ih != NULL;
ih = LIST_NEXT(ih, ih_q)) {
/*
* Bump up the level for a given priority,
* if necessary.
*/
switch (ih->ih_priority) {
case IPL_VM:
if (ipl > PSLTOIPL(hp300_ipl2psl[IPL_VM]))
hp300_ipl2psl[IPL_VM] = IPLTOPSL(ipl);
break;
default:
printf("priority = %d\n", ih->ih_priority);
panic("intr_computeipl: bad priority");
}
}
}
}
void