summaryrefslogtreecommitdiffstats
path: root/sys/sparc64/include/intr_machdep.h
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2002-05-25 02:39:28 +0000
committerjake <jake@FreeBSD.org>2002-05-25 02:39:28 +0000
commit78f440201e8d056a39937b2cff8f34d7786c994b (patch)
tree1abc8dc16537e4b71c9504403427fec8cfd9ffb1 /sys/sparc64/include/intr_machdep.h
parent36a393821ffd997a4115f5d346498a0da6a4493c (diff)
downloadFreeBSD-src-78f440201e8d056a39937b2cff8f34d7786c994b.zip
FreeBSD-src-78f440201e8d056a39937b2cff8f34d7786c994b.tar.gz
Convert the interrupt queue from an array to a linked list. Implement
intr_dequeue in asm so that it can easily be modified to do light weight context switching.
Diffstat (limited to 'sys/sparc64/include/intr_machdep.h')
-rw-r--r--sys/sparc64/include/intr_machdep.h31
1 files changed, 12 insertions, 19 deletions
diff --git a/sys/sparc64/include/intr_machdep.h b/sys/sparc64/include/intr_machdep.h
index c8e36ca..a08a9fc 100644
--- a/sys/sparc64/include/intr_machdep.h
+++ b/sys/sparc64/include/intr_machdep.h
@@ -29,11 +29,12 @@
#ifndef _MACHINE_INTR_MACHDEP_H_
#define _MACHINE_INTR_MACHDEP_H_
-#define NPIL (1 << 4)
-#define NIV (1 << 11)
+#define IRSR_BUSY (1 << 5)
-#define IQ_SIZE (NPIL * 2)
-#define IQ_MASK (IQ_SIZE - 1)
+#define PIL_MAX (1 << 4)
+#define IV_MAX (1 << 11)
+
+#define IR_FREE (PIL_MAX * 2)
#define IH_SHIFT PTR_SHIFT
#define IQE_SHIFT 5
@@ -47,27 +48,19 @@
#define PIL_FAST 13 /* fast interrupts */
#define PIL_TICK 14
-struct trapframe;
-
typedef void ih_func_t(struct trapframe *);
typedef void iv_func_t(void *);
-struct iqe {
- u_int iqe_tag;
- u_int iqe_pri;
- u_long iqe_vec;
- iv_func_t *iqe_func;
- void *iqe_arg;
-};
+struct ithd;
-struct intr_queue {
- struct iqe iq_queue[IQ_SIZE]; /* must be first */
- u_long iq_head;
- u_long iq_tail;
+struct intr_request {
+ struct intr_request *ir_next;
+ iv_func_t *ir_func;
+ void *ir_arg;
+ u_int ir_vec;
+ u_int ir_pri;
};
-struct ithd;
-
struct intr_vector {
iv_func_t *iv_func;
void *iv_arg;
OpenPOWER on IntegriCloud