rewrite memory size detection

SVN-Revision: 13198
This commit is contained in:
Gabor Juhos 2008-11-13 15:55:39 +00:00
parent 2b10284b62
commit d1c40911eb

View file

@ -85,28 +85,14 @@ int __init ar71xx_pci_init(unsigned nr_irqs, struct ar71xx_pci_irq *map)
static void __init ar71xx_detect_mem_size(void) static void __init ar71xx_detect_mem_size(void)
{ {
volatile u8 *p; unsigned long size;
u8 memsave;
u32 size;
p = (volatile u8 *) KSEG1ADDR(0); for (size = AR71XX_MEM_SIZE_MIN; size < AR71XX_MEM_SIZE_MAX;
memsave = *p; size <<= 1 ) {
for (size = AR71XX_MEM_SIZE_MIN; if (!memcmp(ar71xx_detect_mem_size,
size <= (AR71XX_MEM_SIZE_MAX >> 1); size <<= 1) { ar71xx_detect_mem_size + size, 1024))
volatile u8 *r; break;
r = (p + size);
*p = 0x55;
if (*r == 0x55) {
/* Mirrored data found, try another pattern */
*p = 0xAA;
if (*r == 0xAA) {
/* Mirrored data found again, stop detection */
break;
}
}
} }
*p = memsave;
add_memory_region(0, size, BOOT_MEM_RAM); add_memory_region(0, size, BOOT_MEM_RAM);
} }