From: Paul Mackerras <paulus@samba.org>

This patch is from Jake Moilanen <moilanen@austin.ibm.com>,
reformatted by me.

Signed-off-by: Jake Moilanen <moilanen@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

The `assigned-addresses' property in the Open Firmware device tree
nodes for PCI devices has 64 bits of PCI bus address, but we were only
using 32.  This patch fixes it so we use all 64.
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/ppc64/kernel/prom.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff -puN arch/ppc64/kernel/prom.c~ppc64-addresses-from-of-getting-truncated-to-32-bits arch/ppc64/kernel/prom.c
--- 25/arch/ppc64/kernel/prom.c~ppc64-addresses-from-of-getting-truncated-to-32-bits	2005-03-07 20:41:25.000000000 -0800
+++ 25-akpm/arch/ppc64/kernel/prom.c	2005-03-07 20:41:25.000000000 -0800
@@ -335,7 +335,8 @@ static unsigned long __init interpret_pc
 		while ((l -= sizeof(struct pci_reg_property)) >= 0) {
 			if (!measure_only) {
 				adr[i].space = pci_addrs[i].addr.a_hi;
-				adr[i].address = pci_addrs[i].addr.a_lo;
+				adr[i].address = pci_addrs[i].addr.a_lo |
+					((u64)pci_addrs[i].addr.a_mid << 32);
 				adr[i].size = pci_addrs[i].size_lo;
 			}
 			++i;
@@ -1721,7 +1722,8 @@ static int of_finish_dynamic_node(struct
 			}
 			while ((l -= sizeof(struct pci_reg_property)) >= 0) {
 				adr[i].space = pci_addrs[i].addr.a_hi;
-				adr[i].address = pci_addrs[i].addr.a_lo;
+				adr[i].address = pci_addrs[i].addr.a_lo |
+					((u64)pci_addrs[i].addr.a_mid << 32);
 				adr[i].size = pci_addrs[i].size_lo;
 				++i;
 			}
_