summaryrefslogtreecommitdiffstats
path: root/sys/amd64/isa/atpic.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2003-11-12 18:13:57 +0000
committerjhb <jhb@FreeBSD.org>2003-11-12 18:13:57 +0000
commit9428d57b9b941fb441c38cf34d96d7b30598e9a9 (patch)
treea6db7827fd51e3e1f795b089a12eea492087060b /sys/amd64/isa/atpic.c
parentc33bd8de4149ea8ab805371a6221a72533b3fa40 (diff)
downloadFreeBSD-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.c6
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;
OpenPOWER on IntegriCloud