// Local information on device.
int have_driver;
};
+extern u64 pcimem_start, pcimem_end;
+extern u64 pcimem64_start, pcimem64_end;
extern struct pci_device *PCIDevices;
extern int MaxPCIBus;
int pci_probe_host(void);
[ PCI_REGION_TYPE_PREFMEM ] = "prefmem",
};
+u64 pcimem_start = BUILD_PCIMEM_START;
+u64 pcimem_end = BUILD_PCIMEM_END;
+u64 pcimem64_start = BUILD_PCIMEM64_START;
+u64 pcimem64_end = BUILD_PCIMEM64_END;
+
struct pci_region_entry {
struct pci_device *dev;
int bar;
}
u64 sum = pci_region_sum(r_end);
u64 align = pci_region_align(r_end);
- r_end->base = ALIGN_DOWN((BUILD_PCIMEM_END - sum), align);
+ r_end->base = ALIGN_DOWN((pcimem_end - sum), align);
sum = pci_region_sum(r_start);
align = pci_region_align(r_start);
r_start->base = ALIGN_DOWN((r_end->base - sum), align);
- if ((r_start->base < BUILD_PCIMEM_START) ||
- (r_start->base > BUILD_PCIMEM_END))
+ if ((r_start->base < pcimem_start) ||
+ (r_start->base > pcimem_end))
// Memory range requested is larger than available.
return -1;
return 0;
if (pci_bios_init_root_regions(busses))
panic("PCI: out of 32bit address space\n");
- r64_mem.base = BUILD_PCIMEM64_START;
+ r64_mem.base = pcimem64_start;
u64 sum = pci_region_sum(&r64_mem);
u64 align = pci_region_align(&r64_pref);
r64_pref.base = ALIGN(r64_mem.base + sum, align);
- if (r64_pref.base + pci_region_sum(&r64_pref) > BUILD_PCIMEM64_END)
+ if (r64_pref.base + pci_region_sum(&r64_pref) > pcimem64_end)
panic("PCI: out of 64bit address space\n");
pci_region_map_entries(busses, &r64_mem);
pci_region_map_entries(busses, &r64_pref);