Index: sys/mips/broadcom/bcm_machdep.c =================================================================== --- sys/mips/broadcom/bcm_machdep.c +++ sys/mips/broadcom/bcm_machdep.c @@ -110,7 +110,8 @@ result = cfe_enummem(i / 2, 0, &addr, &len, &type); if (result < 0) { - BCM_TRACE("There is no phys memory for: %d\n", i); + BCM_TRACE("There is no phys memory for %d: err = %d\n", + i, result); phys_avail[i] = phys_avail[i + 1] = 0; break; } @@ -137,6 +138,21 @@ physmem += len; } + if (physmem == 0) { + /* Don't give up */ + char memsz[16]; + int result; + + bzero(memsz, 16); + result = cfe_getenv("CFE_MEMORYSIZE", memsz, 16); + BCM_TRACE("CFE_MEMORYSIZE: %d %s\n", result, memsz); + if (result == 0) { + physmem = strtoul(memsz, NULL, 10); + phys_avail[i++] = 0; + phys_avail[i++] = physmem; + } + } + BCM_TRACE("Total phys memory is : %ld\n", physmem); realmem = btoc(physmem); #endif @@ -230,7 +246,7 @@ #endif socinfo = bcm_get_socinfo(); - platform_counter_freq = socinfo->cpurate * 1000 * 1000; /* BCM4718 is 480MHz */ + platform_counter_freq = socinfo->cpurate * 1000 * 1000; mips_timer_early_init(platform_counter_freq);