2020-10-03 17:22:44 +02:00
|
|
|
#include "global.h"
|
2020-03-17 00:31:30 -04:00
|
|
|
|
|
|
|
#define STEP 0x100000
|
|
|
|
|
2020-03-22 22:19:43 +01:00
|
|
|
u32 osGetMemSize(void) {
|
2020-03-17 00:31:30 -04:00
|
|
|
u32* ptr;
|
|
|
|
u32 size;
|
|
|
|
u32 data0;
|
|
|
|
u32 data1;
|
|
|
|
|
|
|
|
size = 0x400000;
|
|
|
|
|
2020-03-22 22:19:43 +01:00
|
|
|
while (size < 0x800000) {
|
2020-03-17 00:31:30 -04:00
|
|
|
ptr = (u32*)(0xA0000000 + size);
|
|
|
|
|
|
|
|
data0 = *ptr;
|
2020-03-22 22:19:43 +01:00
|
|
|
data1 = ptr[STEP / 4 - 1];
|
2020-03-17 00:31:30 -04:00
|
|
|
|
|
|
|
*ptr ^= ~0;
|
2020-03-22 22:19:43 +01:00
|
|
|
ptr[STEP / 4 - 1] ^= ~0;
|
2020-03-17 00:31:30 -04:00
|
|
|
|
2020-03-22 22:19:43 +01:00
|
|
|
if ((*ptr != (data0 ^ ~0)) || (ptr[STEP / 4 - 1] != (data1 ^ ~0))) {
|
2020-03-17 00:31:30 -04:00
|
|
|
return size;
|
2020-03-22 22:19:43 +01:00
|
|
|
}
|
2020-03-17 00:31:30 -04:00
|
|
|
|
|
|
|
*ptr = data0;
|
2020-03-22 22:19:43 +01:00
|
|
|
ptr[STEP / 4 - 1] = data1;
|
2020-03-17 00:31:30 -04:00
|
|
|
|
|
|
|
size += STEP;
|
|
|
|
}
|
|
|
|
|
|
|
|
return size;
|
|
|
|
}
|