#define PCI_ADDR_IO_MASK (~(pciaddr_t) 0x3)
#define PCI_ADDR_MEM_MASK (~(pciaddr_t) 0xf)
+#define PCI_ADDR_FLAG_MASK 0xf
u8 pci_read_byte(struct pci_dev *, int pos) PCI_ABI; /* Access to configuration space */
u16 pci_read_word(struct pci_dev *, int pos) PCI_ABI;
a->error("Cannot open %s: %s", namebuf, strerror(errno));
for (i = 0; i < 7; i++)
{
- unsigned long long start, end, size;
+ unsigned long long start, end, size, flags;
if (!fgets(buf, sizeof(buf), file))
break;
- if (sscanf(buf, "%llx %llx", &start, &end) != 2)
+ if (sscanf(buf, "%llx %llx %llx", &start, &end, &flags) != 3)
a->error("Syntax error in %s", namebuf);
if (start)
size = end - start + 1;
else
size = 0;
+ flags &= PCI_ADDR_FLAG_MASK;
if (i < 6)
{
- d->base_addr[i] = start;
+ d->base_addr[i] = start | flags;
d->size[i] = size;
}
else
{
- d->rom_base_addr = start;
+ d->rom_base_addr = start | flags;
d->rom_size = size;
}
}