Author: ekohl Date: Wed Sep 27 22:59:48 2017 New Revision: 75981
URL: http://svn.reactos.org/svn/reactos?rev=75981&view=rev Log: [PCI] Fix a port base adddress decoding bug. Port base addresses were always decoded like memory base addresses. Because of this bug, a device could have two port address ranges starting at the same base address but with different lengths.
Modified: trunk/reactos/drivers/bus/pci/pdo.c
Modified: trunk/reactos/drivers/bus/pci/pdo.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/pci/pdo.c?rev=7... ============================================================================== --- trunk/reactos/drivers/bus/pci/pdo.c [iso-8859-1] (original) +++ trunk/reactos/drivers/bus/pci/pdo.c [iso-8859-1] Wed Sep 27 22:59:48 2017 @@ -355,7 +355,9 @@ return TRUE; }
- *Base = OriginalValue.Bar & PCI_ADDRESS_MEMORY_ADDRESS_MASK_64; + *Base = ((OriginalValue.Bar & PCI_ADDRESS_IO_SPACE) + ? (OriginalValue.Bar & PCI_ADDRESS_IO_ADDRESS_MASK_64) + : (OriginalValue.Bar & PCI_ADDRESS_MEMORY_ADDRESS_MASK_64));
*Length = ~((NewValue.Bar & PCI_ADDRESS_IO_SPACE) ? (NewValue.Bar & PCI_ADDRESS_IO_ADDRESS_MASK_64)