unmask interrupt bits leading to other interrupt registers
now hardware interrupts actually fire instead of being found pending by the timer interrupt with this SCSI throughput on my c360 is what you'd expect from an UW esiop
This commit is contained in:
parent
af8a5f6d21
commit
f7dbfa872d
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: intr.c,v 1.5 2021/09/07 13:24:45 andvar Exp $ */
|
||||
/* $NetBSD: intr.c,v 1.6 2022/02/26 03:02:25 macallan Exp $ */
|
||||
/* $OpenBSD: intr.c,v 1.27 2009/12/31 12:52:35 jsing Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -35,7 +35,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.5 2021/09/07 13:24:45 andvar Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.6 2022/02/26 03:02:25 macallan Exp $");
|
||||
|
||||
#define __MUTEX_PRIVATE
|
||||
|
||||
|
@ -297,7 +297,7 @@ hppa_intr_calculatemasks(struct cpu_info *ci)
|
|||
continue;
|
||||
mask = 0;
|
||||
for (bit_pos = 0; bit_pos < HPPA_INTERRUPT_BITS; bit_pos++) {
|
||||
if (IR_BIT_USED_P(ir->ir_bits_map[31 ^ bit_pos]))
|
||||
if (!IR_BIT_UNUSED_P(ir->ir_bits_map[31 ^ bit_pos]))
|
||||
mask |= (1 << bit_pos);
|
||||
}
|
||||
if (ir->ir_iscpu)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: intr.h,v 1.1 2014/02/24 07:23:43 skrll Exp $ */
|
||||
/* $NetBSD: intr.h,v 1.2 2022/02/26 03:02:25 macallan Exp $ */
|
||||
/* $OpenBSD: intr.h,v 1.26 2009/12/29 13:11:40 jsing Exp $ */
|
||||
|
||||
/*-
|
||||
|
@ -92,6 +92,8 @@ struct hppa_interrupt_register {
|
|||
#define IR_BIT_UNUSED IR_BIT_REG(0)
|
||||
#define IR_BIT_USED_P(x) (((x) & IR_BIT_MASK) != IR_BIT_MASK)
|
||||
#define IR_BIT_NESTED_P(x) (((x) & IR_BIT_MASK) == IR_BIT_MASK)
|
||||
/* true if not used for interrupt or nested interrupt register */
|
||||
#define IR_BIT_UNUSED_P(x) ((x) == IR_BIT_MASK)
|
||||
|
||||
int ir_bits; /* mask of allocatable bit numbers */
|
||||
int ir_rbits; /* mask of reserved (for lasi/asp) bit numbers */
|
||||
|
|
Loading…
Reference in New Issue