[haiku-commits] r41685 - haiku/trunk/src/system/kernel/arch/x86

  • From: mmlr@xxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 23 May 2011 20:01:59 +0200 (CEST)

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


Other related posts:

  • » [haiku-commits] r41685 - haiku/trunk/src/system/kernel/arch/x86 - mmlr