Index: head/sys/mips/malta/malta_machdep.c =================================================================== --- head/sys/mips/malta/malta_machdep.c +++ head/sys/mips/malta/malta_machdep.c @@ -344,6 +344,15 @@ printf("memsize = %llu (0x%08x)\n", (unsigned long long) memsize, memsize); printf("ememsize = %llu\n", (unsigned long long) ememsize); + +#ifdef __mips_o32 + /* + * For O32 phys_avail[] can't address memory beyond 2^32, + * so cap extended memory to 2GB minus one page. + */ + if (ememsize >= 2ULL * 1024 * 1024 * 1024) + ememsize = 2ULL * 1024 * 1024 * 1024 - PAGE_SIZE; +#endif } /*