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

@ -21,7 +21,7 @@
/*---------------------------------------------------------------------* /*---------------------------------------------------------------------*
Copyright (C) 1998 Nintendo. (Originated by SGI) Copyright (C) 1998 Nintendo. (Originated by SGI)
$RCSfile: os_system.h,v $ $RCSfile: os_system.h,v $
$Revision: 1.1 $ $Revision: 1.1 $
$Date: 1998/10/09 08:01:18 $ $Date: 1998/10/09 08:01:18 $
@ -54,7 +54,7 @@ extern "C" {
*/ */
/* /*
* Values for osTvType * Values for osTvType
*/ */
#define OS_TV_PAL 0 #define OS_TV_PAL 0
#define OS_TV_NTSC 1 #define OS_TV_NTSC 1
@ -103,7 +103,6 @@ extern OSIntMask __OSGlobalIntMask; /* global interrupt mask */
extern void osInitialize(void); extern void osInitialize(void);
extern void osExit(void); extern void osExit(void);
extern u32 osGetMemSize(void);
/* pre-NMI */ /* pre-NMI */
extern s32 osAfterPreNMI(void); extern s32 osAfterPreNMI(void);

View File

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

View File

@ -29,7 +29,7 @@ u32 var8008dbcc;
OSSched g_Sched; OSSched g_Sched;
OSScClient g_MainSchedClient; OSScClient g_MainSchedClient;
#if VERSION >= VERSION_NTSC_1_0 #if VERSION >= VERSION_NTSC_1_0
u32 g_OsMemSize; u32 g_SavedOsMemSize;
#else #else
u16 *var800902e4; u16 *var800902e4;
u16 var800902e8; u16 var800902e8;
@ -54,9 +54,9 @@ extern u8 *_inflateSegmentRomStart;
extern u8 *_inflateSegmentRomEnd; extern u8 *_inflateSegmentRomEnd;
#if VERSION >= VERSION_NTSC_1_0 #if VERSION >= VERSION_NTSC_1_0
s32 boot_get_mem_size(void) s32 osGetMemSize(void)
{ {
return g_OsMemSize; return g_SavedOsMemSize;
} }
#endif #endif
@ -89,10 +89,15 @@ void boot(void)
u32 flags; u32 flags;
#if VERSION >= VERSION_NTSC_1_0 #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) { if (osResetType == RESETTYPE_WARM) {
g_OsMemSize = *(u32 *) STACK_START; g_SavedOsMemSize = *(u32 *) STACK_START;
} else { } else {
*(u32 *) STACK_START = g_OsMemSize = osMemSize; *(u32 *) STACK_START = g_SavedOsMemSize = osMemSize;
} }
#endif #endif

View File

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

View File

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

View File

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