Replace boot_get_mem_size with osGetMemSize

This commit is contained in:
Ryan Dwyer 2025-01-10 10:39:18 +10:00
parent 8319a25c5a
commit 9839a54b55
6 changed files with 21 additions and 26 deletions

View File

@ -103,7 +103,6 @@ extern OSIntMask __OSGlobalIntMask; /* global interrupt mask */
extern void osInitialize(void);
extern void osExit(void);
extern u32 osGetMemSize(void);
/* pre-NMI */
extern s32 osAfterPreNMI(void);

View File

@ -2,8 +2,13 @@
#define _IN_LIB_BOOT_H
#include <ultra64.h>
#if VERSION >= VERSION_NTSC_1_0
extern s32 osGetMemSize(void);
#else
extern u32 osGetMemSize(void);
#endif
void boot(void);
s32 boot_get_mem_size(void);
void *boot_allocate_stack(s32 threadid, s32 size);
void boot_check_stack_overflow(void);

View File

@ -29,7 +29,7 @@ u32 var8008dbcc;
OSSched g_Sched;
OSScClient g_MainSchedClient;
#if VERSION >= VERSION_NTSC_1_0
u32 g_OsMemSize;
u32 g_SavedOsMemSize;
#else
u16 *var800902e4;
u16 var800902e8;
@ -54,9 +54,9 @@ extern u8 *_inflateSegmentRomStart;
extern u8 *_inflateSegmentRomEnd;
#if VERSION >= VERSION_NTSC_1_0
s32 boot_get_mem_size(void)
s32 osGetMemSize(void)
{
return g_OsMemSize;
return g_SavedOsMemSize;
}
#endif
@ -89,10 +89,15 @@ void boot(void)
u32 flags;
#if VERSION >= VERSION_NTSC_1_0
// In NTSC beta, libultra's osGetMemSize is used several times during boot.
// This function writes to the expansion area but this shouldn't be a problem...
// In NTSC 1.0 and later, libultra's osGetMemSize is not linked and is replaced
// with one which returns osMemSize. But it appears as though osMemSize is only
// reliable on a cold boot, because it's saved and reloaded here on a reset.
if (osResetType == RESETTYPE_WARM) {
g_OsMemSize = *(u32 *) STACK_START;
g_SavedOsMemSize = *(u32 *) STACK_START;
} else {
*(u32 *) STACK_START = g_OsMemSize = osMemSize;
*(u32 *) STACK_START = g_SavedOsMemSize = osMemSize;
}
#endif

View File

@ -404,7 +404,7 @@ void main_init(void)
// In 4MB mode, place it close to the end of memory,
// but before the thread stacks and VM system.
// In 8MB mode, put it at the end of the expansion pak.
if (boot_get_mem_size() <= 4 * 1024 * 1024) {
if (osGetMemSize() <= 4 * 1024 * 1024) {
addr = K0BASE + 4 * 1024 * 1024;
addr -= STACKSIZE_MAIN;
addr -= STACKSIZE_IDLE;

View File

@ -90,18 +90,9 @@ void memp_set_heap(u8 *heapstart, u32 heaplen)
g_MempOnboardPools[MEMPOOL_STAGE].rightpos = heapstart + heaplen;
// If 8MB, reserve the entire expansion pak for the stage pool
#if VERSION >= VERSION_NTSC_1_0
extraend = (u8 *) K0BASE + boot_get_mem_size();
#else
extraend = (u8 *) K0BASE + osGetMemSize();
#endif
#if VERSION >= VERSION_NTSC_1_0
if (boot_get_mem_size() > 4 * 1024 * 1024)
#else
if (osGetMemSize() > 4 * 1024 * 1024)
#endif
{
if (osGetMemSize() > 4 * 1024 * 1024) {
g_MempExpansionPools[MEMPOOL_STAGE].start = (u8 *) K0BASE + 4 * 1024 * 1024;
g_MempExpansionPools[MEMPOOL_STAGE].rightpos = extraend;
}

View File

@ -199,12 +199,7 @@ void vm_init(void)
rzip_init();
#if VERSION >= VERSION_NTSC_1_0
if (boot_get_mem_size() <= 0x400000)
#else
if (osGetMemSize() <= 0x400000)
#endif
{
if (osGetMemSize() <= 0x400000) {
g_Is4Mb = true;
g_VmNumPages = (s32)((&_gameSegmentEnd - &_gameSegmentStart) + (VM_PAGE_SIZE - 1)) / VM_PAGE_SIZE;