/* * ICU reinitialize when ICU configuration has lost. */ void icu_reinit(void) { #ifdef foo int i; icu_init(); for (i = 0; i < MAX_HARDINTS; ++i) { if (count_registered_ints(i)) machintr_intr_enable(i); } #else icu_init(); #endif }
/* * ICU reinitialize when ICU configuration has lost. */ void icu_reinit(void) { int i; icu_init(); for (i = 0; i < MAX_HARDINTS; ++i) { if (count_registered_ints(i)) machintr_intren(i); } }
void icu_definit(void) { register_t ef; KKASSERT(MachIntrABI.type == MACHINTR_ICU); ef = read_rflags(); cpu_disable_intr(); /* Leave interrupts masked */ outb(IO_ICU1 + ICU_IMR_OFFSET, 0xff); outb(IO_ICU2 + ICU_IMR_OFFSET, 0xff); MachIntrABI.setdefault(); icu_init(); write_rflags(ef); }
void icu_reinit_noioapic(void) { register_t ef; KKASSERT(MachIntrABI.type == MACHINTR_ICU); KKASSERT(ioapic_enable == 0); crit_enter(); ef = read_rflags(); cpu_disable_intr(); /* Leave interrupts masked */ outb(IO_ICU1 + ICU_IMR_OFFSET, 0xff); outb(IO_ICU2 + ICU_IMR_OFFSET, 0xff); icu_init(); MachIntrABI.stabilize(); write_rflags(ef); MachIntrABI.cleanup(); crit_exit(); }