diff options
author | jhb <jhb@FreeBSD.org> | 2005-12-08 18:33:30 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2005-12-08 18:33:30 +0000 |
commit | e2841d2b9faa3ba4a8dd511d77c48633acbccfb6 (patch) | |
tree | 9efe6d68c2b5019d44a2d7f710ee497dfef09db5 /sys/amd64/isa/atpic.c | |
parent | d42177951b2a604d3cafce3433ecc900e90d3a5f (diff) | |
download | FreeBSD-src-e2841d2b9faa3ba4a8dd511d77c48633acbccfb6.zip FreeBSD-src-e2841d2b9faa3ba4a8dd511d77c48633acbccfb6.tar.gz |
MFi386:
- Move PUSH_FRAME and POP_FRAME to asmacros.h and use PUSH_FRAME in
atpic entry points.
- Move PCPU_* asm macros out of the middle of the asm profiling macros.
- Pass IRQ vector argument as an int rather than void * to reduce diffs
with i386.
- EOI the lapic in C for the lapic timer handler.
- GC unused Xcpuast function.
- Split IPI_STOP handling code of ipi_nmi_handler() out into a
cpustop_handler() function and call it from Xcpustop rather than
duplicating all the logic in assembly.
- Fixup the list of symbols with interrupt frames in ddb traces.
Xatpic_fastintr* have never existed on amd64, and the lapic timer
handler and various IPI handlers were missing.
- Use trapframe instead of intrframe for interrupt entry points (on amd64
the interrupt vector was already a separate argument, so the two frames
were already identical) and GC intrframe.
Submitted by: peter (3)
Diffstat (limited to 'sys/amd64/isa/atpic.c')
-rw-r--r-- | sys/amd64/isa/atpic.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/amd64/isa/atpic.c b/sys/amd64/isa/atpic.c index 88d461f..906edda 100644 --- a/sys/amd64/isa/atpic.c +++ b/sys/amd64/isa/atpic.c @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include <sys/lock.h> #include <sys/module.h> #include <sys/mutex.h> -#include <sys/proc.h> #include <machine/cpufunc.h> #include <machine/frame.h> @@ -478,19 +477,18 @@ atpic_init(void *dummy __unused) SYSINIT(atpic_init, SI_SUB_INTR, SI_ORDER_SECOND + 1, atpic_init, NULL) void -atpic_handle_intr(void *cookie, struct intrframe iframe) +atpic_handle_intr(u_int vector, struct trapframe frame) { struct intsrc *isrc; - int vec = (uintptr_t)cookie; - KASSERT(vec < NUM_ISA_IRQS, ("unknown int %d\n", vec)); - isrc = &atintrs[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 && (vec == 7 || vec == 15)) { + if (isrc->is_event == NULL && (vector == 7 || vector == 15)) { int port, isr; /* @@ -506,7 +504,7 @@ atpic_handle_intr(void *cookie, struct intrframe iframe) if ((isr & IRQ_MASK(7)) == 0) return; } - intr_execute_handlers(isrc, &iframe); + intr_execute_handlers(isrc, &frame); } #ifdef DEV_ISA |