@@ -122,7 +122,7 @@ static struct pci_host_bridge *pci_dt_probe(void)
sizeof(host->addr_space[0]) * nr_addr_spaces);
assert(host != NULL);
- host->start = base.addr;
+ host->start = ioremap(base.addr, base.size);
host->size = base.size;
host->bus = bus;
host->bus_max = bus_max;
@@ -279,8 +279,7 @@ phys_addr_t pci_host_bridge_get_paddr(u64 pci_addr)
static void __iomem *pci_get_dev_conf(struct pci_host_bridge *host, int devfn)
{
- return (void __iomem *)(unsigned long)
- host->start + (devfn << PCI_ECAM_DEVFN_SHIFT);
+ return host->start + (devfn << PCI_ECAM_DEVFN_SHIFT);
}
u8 pci_config_readb(pcidevaddr_t dev, u8 off)
@@ -18,8 +18,8 @@ struct pci_addr_space {
};
struct pci_host_bridge {
- phys_addr_t start;
- phys_addr_t size;
+ void __iomem *start;
+ size_t size;
int bus;
int bus_max;
int nr_addr_spaces;
@@ -185,7 +185,11 @@ int pci_testdev(void)
mem = ioremap(addr, PAGE_SIZE);
addr = pci_bar_get_addr(&pci_dev, 1);
+#if defined(__i386__) || defined(__x86_64__)
io = (void *)(unsigned long)addr;
+#else
+ io = ioremap(addr, PAGE_SIZE);
+#endif
nr_tests += pci_testdev_all(mem, &pci_testdev_mem_ops);
nr_tests += pci_testdev_all(io, &pci_testdev_io_ops);