diff options
author | Hervé Poussineau <hpoussin@reactos.org> | 2014-04-23 23:19:34 +0200 |
---|---|---|
committer | Andreas Färber <andreas.faerber@web.de> | 2014-07-04 17:23:02 +0200 |
commit | 8a5d9dcfa14f82a0246958e0220a53a2618b53dd (patch) | |
tree | 6a480101995c823aecd0bb198d6ac6f81460290f | |
parent | 1af7e55425e58a6dcb5133b092fcf16f8c654fb9 (diff) | |
download | qemu-openhackware-8a5d9dcfa14f82a0246958e0220a53a2618b53dd.tar.gz |
Correctly program BAR addresses of PCI devices
Note that offsets are PReP ones, so this breaks compatibility
with hardware which has different values.
Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Andreas Färber <andreas.faerber@web.de>
-rw-r--r-- | src/pci.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -1723,8 +1723,13 @@ static inline void pci_update_device (pci_bridge_t *bridge, addr = 0x30; /* PCI ROM */ else addr = 0x10 + (i * sizeof(uint32_t)); + if (device->regions[i] & 0x00000001) { pci_config_writel(bridge, device->bus, device->devfn, - addr, device->regions[i]); + addr, device->regions[i] - 0x80000000); + } else { + pci_config_writel(bridge, device->bus, device->devfn, + addr, device->regions[i] - 0xc0000000); + } } } } |