From 2c0d5258df7bbf1dd17c4cf0a74a67f4c489efdf Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Mon, 23 May 2011 18:01:59 +0000 Subject: [PATCH] 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 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41685 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/arch/x86/pic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/system/kernel/arch/x86/pic.cpp b/src/system/kernel/arch/x86/pic.cpp index 2f6c43f161..2f5916b671 100644 --- a/src/system/kernel/arch/x86/pic.cpp +++ b/src/system/kernel/arch/x86/pic.cpp @@ -237,7 +237,7 @@ pic_init() 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