- 论坛徽章:
- 0
|
- void __init
- prom_init(int argc, const char **argv)
- {
- unsigned long mem;
- mips_machgroup = MACH_GROUP_BRCM;
- mips_machtype = MACH_BCM947XX;
- /* Figure out memory size by finding aliases */
- for (mem = (1 << 20); mem < (128 << 20); mem <<= 1) {
- if (*(unsigned long *)((unsigned long)(prom_init) + mem) ==
- *(unsigned long *)(prom_init))
- break;
- }
- #if CONFIG_RAM_SIZE
- {
- unsigned long config_mem;
- config_mem = CONFIG_RAM_SIZE * 0x100000;
- if (config_mem < mem)
- mem = config_mem;
- }
- #endif
- /* 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 (MIPS74K(mips_cpu.processor_id) && (mem == 0x8000000))
- mem -= 0x1000;
- add_memory_region(0, mem, BOOT_MEM_RAM);
- }
复制代码 为什么当mem=DDR大小的时候就有
*(unsigned long *)((unsigned long)(prom_init) + mem) == *(unsigned long *)(prom_init)
感觉像是环回了一样!
这个问题困扰我很久了,请高手指点! |
|