*(unsigned long *)(prom_init))
break;
}
+
+ /* Ignoring the last page when ddr size is 128M. Cached
+ * accesses to last page is causing the processor to prefetch
+ * using address above 128M stepping out of the ddr address
+ * space.
+ */
+ if (mem == 0x8000000)
+ mem -= 0x1000;
+
add_memory_region(0, mem, BOOT_MEM_RAM);
}
--- /dev/null
+--- a/arch/mips/bcm47xx/prom.c
++++ b/arch/mips/bcm47xx/prom.c
+@@ -141,6 +141,14 @@ static __init void prom_init_mem(void)
+ break;
+ }
+
++ /* Ignoring the last page when ddr size is 128M. Cached
++ * accesses to last page is causing the processor to prefetch
++ * using address above 128M stepping out of the ddr address
++ * space.
++ */
++ if (mem == 0x8000000)
++ mem -= 0x1000;
++
+ add_memory_region(0, mem, BOOT_MEM_RAM);
+ }
+
--- /dev/null
+--- a/arch/mips/bcm47xx/prom.c
++++ b/arch/mips/bcm47xx/prom.c
+@@ -141,6 +141,14 @@ static __init void prom_init_mem(void)
+ break;
+ }
+
++ /* Ignoring the last page when ddr size is 128M. Cached
++ * accesses to last page is causing the processor to prefetch
++ * using address above 128M stepping out of the ddr address
++ * space.
++ */
++ if (mem == 0x8000000)
++ mem -= 0x1000;
++
+ add_memory_region(0, mem, BOOT_MEM_RAM);
+ }
+
--- /dev/null
+--- a/arch/mips/bcm47xx/prom.c
++++ b/arch/mips/bcm47xx/prom.c
+@@ -141,6 +141,14 @@ static __init void prom_init_mem(void)
+ break;
+ }
+
++ /* Ignoring the last page when ddr size is 128M. Cached
++ * accesses to last page is causing the processor to prefetch
++ * using address above 128M stepping out of the ddr address
++ * space.
++ */
++ if (mem == 0x8000000)
++ mem -= 0x1000;
++
+ add_memory_region(0, mem, BOOT_MEM_RAM);
+ }
+