#include #define STEP 0x100000 u32 osGetMemSize(void) { u32* ptr; u32 size; u32 data0; u32 data1; size = 0x400000; while(size < 0x800000) { ptr = (u32*)(0xA0000000 + size); data0 = *ptr; data1 = ptr[STEP/4-1]; *ptr ^= ~0; ptr[STEP/4-1] ^= ~0; if ((*ptr != (data0 ^ ~0)) || (ptr[STEP/4-1] != (data1 ^ ~0))) return size; *ptr = data0; ptr[STEP/4-1] = data1; size += STEP; } return size; }