diff --git a/kernel/pci/pci.h b/kernel/pci/pci.h index 89c241b..d38f2e8 100644 --- a/kernel/pci/pci.h +++ b/kernel/pci/pci.h @@ -48,6 +48,8 @@ typedef union { #define PCI_DEV_PER_BUS 32 #define PCI_FN_PER_DEV 32 +#define PCI_BAR_IOBASE(bar) ((bar) & 0xFFFFFFFC) + uint32_t pci_read32(PciDev dev, uint32_t field); uint16_t pci_read16(PciDev dev, uint32_t field); uint8_t pci_read8(PciDev dev, uint32_t field); diff --git a/kernel/pci/qemu_pci_serial/qemu_pci_serial.c b/kernel/pci/qemu_pci_serial/qemu_pci_serial.c index ec21338..91bcaf8 100644 --- a/kernel/pci/qemu_pci_serial/qemu_pci_serial.c +++ b/kernel/pci/qemu_pci_serial/qemu_pci_serial.c @@ -162,7 +162,7 @@ void pci_qemu_pci_serial_init(void) { LOG("pci", "QEMU_PCI_SERIAL bar0=0x%x\n", bar0); - uint16_t iobase = bar0 & 0xFFFFFFFC; + uint16_t iobase = PCI_BAR_IOBASE(bar0); LOG("pci", "QEMU_PCI_SERIAL iobase=0x%x\n", iobase); QEMU_PCI_SERIAL_DEV.iobase = iobase;