Author: mmlr Date: 2011-05-23 20:01:59 +0200 (Mon, 23 May 2011) New Revision: 41685 Changeset: https://dev.haiku-os.org/changeset/41685 Ticket: https://dev.haiku-os.org/ticket/7525 Modified: haiku/trunk/src/system/kernel/arch/x86/pic.cpp Log: Of course the PIC mask register is a _mask_ and the enabled interrupts are the ones that aren't masked. This reversed the enabled interrupts and therefore disabled the already installed ACPI SCI handler and wrongly enabled the other interrupt pins instead on PIC to IO-APIC handover. Probably fixes #7525. +r1alpha3 Modified: haiku/trunk/src/system/kernel/arch/x86/pic.cpp =================================================================== --- haiku/trunk/src/system/kernel/arch/x86/pic.cpp 2011-05-23 15:02:05 UTC (rev 41684) +++ haiku/trunk/src/system/kernel/arch/x86/pic.cpp 2011-05-23 18:01:59 UTC (rev 41685) @@ -237,7 +237,7 @@ void pic_disable(uint16& enabledInterrupts) { - enabledInterrupts = in8(PIC_MASTER_MASK) | in8(PIC_SLAVE_MASK) << 8; + enabledInterrupts = ~(in8(PIC_MASTER_MASK) | in8(PIC_SLAVE_MASK) << 8); enabledInterrupts &= 0xfffb; // remove slave PIC from the mask // Mask off all interrupts on master and slave