diff options
author | jhb <jhb@FreeBSD.org> | 2005-12-05 22:39:09 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2005-12-05 22:39:09 +0000 |
commit | c77d4150b7c5ce1e4aa2a4f96822eca488501c18 (patch) | |
tree | 9cdb8f0e463918252ebdbf20d8430b6bc7d2687e /sys/i386/isa | |
parent | 39d2052828536052e8b0193965215fdb8b5684ea (diff) | |
download | FreeBSD-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.c | 13 | ||||
-rw-r--r-- | sys/i386/isa/icu.h | 2 |
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_ */ |