Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 204472
b: refs/heads/master
c: aec9222
h: refs/heads/master
v: v3
  • Loading branch information
Hauke Mehrtens authored and Ralf Baechle committed Aug 5, 2010
1 parent 7c78975 commit 7d1b216
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5c8974538afd97990d3730ef6fea731a34ef1f85
refs/heads/master: aec9222551353890190af810a4c93ed7050bfa19
22 changes: 14 additions & 8 deletions trunk/arch/mips/bcm47xx/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ static __init void prom_init_cmdline(void)
static __init void prom_init_mem(void)
{
unsigned long mem;
unsigned long max;

/* Figure out memory size by finding aliases.
*
Expand All @@ -134,21 +135,26 @@ static __init void prom_init_mem(void)
* want to reuse the memory used by CFE (around 4MB). That means cfe_*
* functions stop to work at some point during the boot, we should only
* call them at the beginning of the boot.
*
* BCM47XX uses 128MB for addressing the ram, if the system contains
* less that that amount of ram it remaps the ram more often into the
* available space.
* Accessing memory after 128MB will cause an exception.
* max contains the biggest possible address supported by the platform.
* If the method wants to try something above we assume 128MB ram.
*/
max = ((unsigned long)(prom_init) | ((128 << 20) - 1));
for (mem = (1 << 20); mem < (128 << 20); mem += (1 << 20)) {
if (((unsigned long)(prom_init) + mem) > max) {
mem = (128 << 20);
printk(KERN_DEBUG "assume 128MB RAM\n");
break;
}
if (*(unsigned long *)((unsigned long)(prom_init) + mem) ==
*(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);
}

Expand Down

0 comments on commit 7d1b216

Please sign in to comment.