===================================================================
@@ -406,15 +406,15 @@ static void pci_read_bridge_mmio_pref(st
{
struct pci_dev *dev = child->self;
u16 mem_base_lo, mem_limit_lo;
- unsigned long base, limit;
+ dma_addr_t base, limit;
struct pci_bus_region region;
struct resource *res;
res = child->resource[2];
pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
- base = ((unsigned long) mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
- limit = ((unsigned long) mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
+ base = ((dma_addr_t) mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
+ limit = ((dma_addr_t) mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
u32 mem_base_hi, mem_limit_hi;
@@ -428,15 +428,15 @@ static void pci_read_bridge_mmio_pref(st
* this, just assume they are not being used.
*/
if (mem_base_hi <= mem_limit_hi) {
-#if BITS_PER_LONG == 64
- base |= ((unsigned long) mem_base_hi) << 32;
- limit |= ((unsigned long) mem_limit_hi) << 32;
-#else
- if (mem_base_hi || mem_limit_hi) {
- dev_err(&dev->dev, "can't handle 64-bit address space for bridge\n");
- return;
+ if (sizeof(dma_addr_t) < 8) {
+ if (mem_base_hi || mem_limit_hi) {
+ dev_err(&dev->dev, "can't handle 64-bit address space for bridge\n");
+ return;
+ }
+ } else {
+ base |= (dma_addr_t)(((u64)mem_base_hi)<<32);
+ limit |= (dma_addr_t)(((u64)mem_limit_hi)<<32);
}
-#endif
}
}
if (base <= limit) {