diff options
author | Henric Jungheim <henric@cvs.openbsd.org> | 2003-03-20 23:05:31 +0000 |
---|---|---|
committer | Henric Jungheim <henric@cvs.openbsd.org> | 2003-03-20 23:05:31 +0000 |
commit | 95b81e285a18d146b4b7413f9bdb06cd69031045 (patch) | |
tree | ef94cce28411b4ab447bc64bb477f248f6498306 /sys/arch/sparc64/include | |
parent | 225a8263dc0322501697fe099723684ceb482d5a (diff) |
The current code tries to use the same field in the interrupt handler as
both a "next" pointer for a singly-linked list and as an in-use flag.
This obviously does not work all that well. This change adds a separate
ih_busy flag to mark the handler as in-use, leaving ih_pending for use by
the list code.
Testing by *many* (thanks).
ok miod jason
Diffstat (limited to 'sys/arch/sparc64/include')
-rw-r--r-- | sys/arch/sparc64/include/cpu.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/arch/sparc64/include/cpu.h b/sys/arch/sparc64/include/cpu.h index c2afaecc8d6..24dacd82711 100644 --- a/sys/arch/sparc64/include/cpu.h +++ b/sys/arch/sparc64/include/cpu.h @@ -1,4 +1,4 @@ -/* $OpenBSD: cpu.h,v 1.17 2003/02/12 06:32:59 jason Exp $ */ +/* $OpenBSD: cpu.h,v 1.18 2003/03/20 23:05:30 henric Exp $ */ /* $NetBSD: cpu.h,v 1.28 2001/06/14 22:56:58 thorpej Exp $ */ /* @@ -245,8 +245,9 @@ struct intrhand { short ih_number; /* interrupt number */ /* the H/W provides */ char ih_pil; /* interrupt priority */ + volatile char ih_busy; /* handler is on list */ struct intrhand *ih_next; /* global list */ - struct intrhand *ih_pending; /* interrupt queued */ + struct intrhand *ih_pending; /* pending list */ volatile u_int64_t *ih_map; /* Interrupt map reg */ volatile u_int64_t *ih_clr; /* clear interrupt reg */ }; |