summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2005-12-05 22:39:09 +0000
committerjhb <jhb@FreeBSD.org>2005-12-05 22:39:09 +0000
commitc77d4150b7c5ce1e4aa2a4f96822eca488501c18 (patch)
tree9cdb8f0e463918252ebdbf20d8430b6bc7d2687e /sys/i386/isa
parent39d2052828536052e8b0193965215fdb8b5684ea (diff)
downloadFreeBSD-src-c77d4150b7c5ce1e4aa2a4f96822eca488501c18.zip
FreeBSD-src-c77d4150b7c5ce1e4aa2a4f96822eca488501c18.tar.gz
Change the i386 code to pass the interrupt vector as a separate argument
rather than embedding it in the intrframe as if_vec. This reduces diffs with amd64 somewhat. - Remove cf_vec from clockframe (it wasn't used anyway) and stop pushing dummy vector arguments for ipi_bitmap_handler() and lapic_handle_timer() since clockframe == trapframe now. - Fix ddb to handle stack traces across interrupt entry points that just have a trapframe on their stack and not a trapframe + vector. - Change intr_execute_handlers() to take a trapframe rather than an intrframe pointer. - Change lapic_handle_intr() and atpic_handle_intr() to take a vector and trapframe rather than an intrframe. - GC struct intrframe now that nothing uses it anymore. - GC CLOCK_TO_TRAPFRAME() and INTR_TO_TRAPFRAME(). Reviewed by: bde Requested by: peter
Diffstat (limited to 'sys/i386/isa')
-rw-r--r--sys/i386/isa/atpic.c13
-rw-r--r--sys/i386/isa/icu.h2
2 files changed, 7 insertions, 8 deletions
diff --git a/sys/i386/isa/atpic.c b/sys/i386/isa/atpic.c
index 862da92..4f29bd9 100644
--- a/sys/i386/isa/atpic.c
+++ b/sys/i386/isa/atpic.c
@@ -541,20 +541,19 @@ atpic_init(void *dummy __unused)
SYSINIT(atpic_init, SI_SUB_INTR, SI_ORDER_SECOND + 1, atpic_init, NULL)
void
-atpic_handle_intr(struct intrframe iframe)
+atpic_handle_intr(u_int vector, struct trapframe frame)
{
struct intsrc *isrc;
- KASSERT((u_int)iframe.if_vec < NUM_ISA_IRQS,
- ("unknown int %d\n", iframe.if_vec));
- isrc = &atintrs[iframe.if_vec].at_intsrc;
+ KASSERT(vector < NUM_ISA_IRQS,
+ ("unknown int %u\n", vector));
+ isrc = &atintrs[vector].at_intsrc;
/*
* If we don't have an event, see if this is a spurious
* interrupt.
*/
- if (isrc->is_event == NULL &&
- (iframe.if_vec == 7 || iframe.if_vec == 15)) {
+ if (isrc->is_event == NULL && (vector == 7 || vector == 15)) {
int port, isr;
/*
@@ -570,7 +569,7 @@ atpic_handle_intr(struct intrframe iframe)
if ((isr & IRQ_MASK(7)) == 0)
return;
}
- intr_execute_handlers(isrc, &iframe);
+ intr_execute_handlers(isrc, &frame);
}
#ifdef DEV_ISA
diff --git a/sys/i386/isa/icu.h b/sys/i386/isa/icu.h
index b882022..a74f183 100644
--- a/sys/i386/isa/icu.h
+++ b/sys/i386/isa/icu.h
@@ -47,7 +47,7 @@
#define ICU_IMR_OFFSET 1
#endif
-void atpic_handle_intr(struct intrframe iframe);
+void atpic_handle_intr(u_int vector, struct trapframe frame);
void atpic_startup(void);
#endif /* !_I386_ISA_ICU_H_ */
OpenPOWER on IntegriCloud