return flags;
 }
 
-#define GET_64BIT(prop, i)     ((((u64) (prop)[(i)]) << 32) | (prop)[(i)+1])
 
 static void pci_parse_of_addrs(struct device_node *node, struct pci_dev *dev)
 {
                flags = pci_parse_of_flags(addrs[0]);
                if (!flags)
                        continue;
-               base = GET_64BIT(addrs, 1);
-               size = GET_64BIT(addrs, 3);
+               base = of_read_number(&addrs[1], 2);
+               size = of_read_number(&addrs[3], 2);
                if (!size)
                        continue;
                i = addrs[0] & 0xff;
        i = 1;
        for (; len >= 32; len -= 32, ranges += 8) {
                flags = pci_parse_of_flags(ranges[0]);
-               size = GET_64BIT(ranges, 6);
+               size = of_read_number(&ranges[6], 2);
                if (flags == 0 || size == 0)
                        continue;
                if (flags & IORESOURCE_IO) {
                        res = bus->resource[i];
                        ++i;
                }
-               res->start = GET_64BIT(ranges, 1);
+               res->start = of_read_number(&ranges[1], 2);
                res->end = res->start + size - 1;
                res->flags = flags;
                fixup_resource(res, dev);