summaryrefslogtreecommitdiff
path: root/sys/arch/sparc64/include
diff options
context:
space:
mode:
authorHenric Jungheim <henric@cvs.openbsd.org>2003-03-20 23:05:31 +0000
committerHenric Jungheim <henric@cvs.openbsd.org>2003-03-20 23:05:31 +0000
commit95b81e285a18d146b4b7413f9bdb06cd69031045 (patch)
treeef94cce28411b4ab447bc64bb477f248f6498306 /sys/arch/sparc64/include
parent225a8263dc0322501697fe099723684ceb482d5a (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.h5
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 */
};