diff options
author | jhb <jhb@FreeBSD.org> | 2003-11-12 18:13:57 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2003-11-12 18:13:57 +0000 |
commit | 9428d57b9b941fb441c38cf34d96d7b30598e9a9 (patch) | |
tree | a6db7827fd51e3e1f795b089a12eea492087060b /sys/amd64/isa/atpic.c | |
parent | c33bd8de4149ea8ab805371a6221a72533b3fa40 (diff) | |
download | FreeBSD-src-9428d57b9b941fb441c38cf34d96d7b30598e9a9.zip FreeBSD-src-9428d57b9b941fb441c38cf34d96d7b30598e9a9.tar.gz |
- Move manipulation of td_intr_nesting_level out of assembly interrupt
vector stubs and into the C functions they call.
- Move disabling and EOIing of interrupt sources out of PIC driver entry
points and into intr_execute_handlers(). Intr_execute_handlers() only
disables a source for an interrupt if it is a stray interrupt or has
threaded handlers. Sources with fast handlers no longer disable (mask)
the source while executing the handlers.
- Move the setting of clkintr_pending into intr_execute_handlers() and set
the variable for any interrupt source with a vector of 0. (Should only
be true for IRQ 0.) This fixes clkintr_pending in the NO_MIXED_MODE
case.
- Implement lapic_eoi() and use it to implement ioapic_eoi_source().
- Rename atpic_sched_ithd() to atpic_handle_intr() since it is used to
handle all atpic interrupts and not just threaded ones.
Inspired by: peter's changes to amd64 in p4 (1)
Requested by: bde (2)
Diffstat (limited to 'sys/amd64/isa/atpic.c')
-rw-r--r-- | sys/amd64/isa/atpic.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/amd64/isa/atpic.c b/sys/amd64/isa/atpic.c index 3dfb125..0f17af3 100644 --- a/sys/amd64/isa/atpic.c +++ b/sys/amd64/isa/atpic.c @@ -192,6 +192,10 @@ atpic_eoi_master(struct intsrc *isrc) #endif } +/* + * The data sheet says no auto-EOI on slave, but it sometimes works. + * So, if AUTO_EOI_2 is enabled, we use it. + */ static void atpic_eoi_slave(struct intsrc *isrc) { @@ -327,7 +331,7 @@ atpic_init(void *dummy __unused) SYSINIT(atpic_init, SI_SUB_INTR, SI_ORDER_SECOND + 1, atpic_init, NULL) void -atpic_sched_ithd(struct intrframe iframe) +atpic_handle_intr(struct intrframe iframe) { struct intsrc *isrc; |