From 2f1e7b3de8695c8f093c18ee6fe2e9e5c4c9e15a Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Wed, 8 Mar 2023 15:25:51 -0300 Subject: Stack cleanups (#1193) * Use STACK and STACK_TOP everywhere * format * remove fake variable * bss * review Co-authored-by: Derek Hensley * Update src/boot_O2_g3/boot_main.c Co-authored-by: Derek Hensley * review * renames * more renames * and more * whoopsie, forgot those too * hopefully the last cleanup * forgot some stuff * a * bss --------- Co-authored-by: Derek Hensley --- src/code/PreRender.c | 14 ++++++++++---- src/code/graph.c | 1 + src/code/main.c | 45 +++++++++++++++++++++++++++++++++------------ src/code/sys_cfb.c | 1 + src/code/sys_flashrom.c | 11 +++++++++++ src/code/z_play.c | 1 + src/code/z_sram_NES.c | 1 + 7 files changed, 58 insertions(+), 16 deletions(-) (limited to 'src/code') diff --git a/src/code/PreRender.c b/src/code/PreRender.c index 599f4c8d3..247325251 100644 --- a/src/code/PreRender.c +++ b/src/code/PreRender.c @@ -1,4 +1,5 @@ #include "global.h" +#include "stack.h" /** * Assigns the "save" values in PreRender @@ -410,19 +411,24 @@ void PreRender_ApplyFilters(PreRender* this) { } } +extern SlowlyTask D_801F6E00; +extern s32 D_801F6FC0; +extern StackEntry sSlowlyStackInfo; +extern STACK(sSlowlyStack, 0x1000); + /** * Initializes `PreRender_ApplyFilters` onto a new "slowly" thread */ void PreRender_ApplyFiltersSlowlyInit(PreRender* this) { if ((this->cvgSave != NULL) && (this->fbufSave != NULL)) { if (D_801F6FC0) { - StackCheck_Cleanup(&slowlyStackEntry); + StackCheck_Cleanup(&sSlowlyStackInfo); Slowly_Stop(&D_801F6E00); } this->unk_4D = 1; - StackCheck_Init(&slowlyStackEntry, slowlyStack, &slowlyStack[4096], 0, 0x100, "slowly"); - Slowly_Start(&D_801F6E00, &D_801F7FE8, PreRender_ApplyFilters, this, NULL); + StackCheck_Init(&sSlowlyStackInfo, sSlowlyStack, STACK_TOP(sSlowlyStack), 0, 0x100, "slowly"); + Slowly_Start(&D_801F6E00, STACK_TOP(sSlowlyStack), PreRender_ApplyFilters, this, NULL); D_801F6FC0 = true; } } @@ -432,7 +438,7 @@ void PreRender_ApplyFiltersSlowlyInit(PreRender* this) { */ void PreRender_ApplyFiltersSlowlyDestroy(PreRender* this) { if (D_801F6FC0) { - StackCheck_Cleanup(&slowlyStackEntry); + StackCheck_Cleanup(&sSlowlyStackInfo); Slowly_Stop(&D_801F6E00); D_801F6FC0 = false; } diff --git a/src/code/graph.c b/src/code/graph.c index 4bf322878..6cc8d7772 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -1,4 +1,5 @@ #include "global.h" +#include "buffers.h" #include "system_malloc.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" #include "overlays/gamestates/ovl_file_choose/z_file_choose.h" diff --git a/src/code/main.c b/src/code/main.c index 59ffb6a32..b036123be 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -3,7 +3,29 @@ * reordering than just prevent_bss_reordering.h: there is too much of it to control, and it cannot be split into * separate files since most of it is at addresses ending in 8. */ + #include "global.h" +#include "buffers.h" +#include "stack.h" + +extern OSMesgQueue sSiIntMsgQ; +extern OSMesg sSiIntMsgBuf[1]; +extern u32 gSegments[NUM_SEGMENTS]; +extern SchedContext gSchedContext; +extern IrqMgrClient irqClient; +extern OSMesgQueue irqMgrMsgQ; +extern OSMesg irqMgrMsgBuf[60]; +extern OSThread gGraphThread; +extern STACK(sGraphStack, 0x1800); +extern STACK(sSchedStack, 0x600); +extern STACK(sAudioStack, 0x800); +extern STACK(sPadMgrStack, 0x500); +extern StackEntry sGraphStackInfo; +extern StackEntry sSchedStackInfo; +extern StackEntry sAudioStackInfo; +extern StackEntry sPadMgrStackInfo; +extern AudioMgr sAudioMgr; +extern PadMgr gPadMgr; void Main(void* arg) { intptr_t fb; @@ -33,25 +55,24 @@ void Main(void* arg) { osCreateMesgQueue(&irqMgrMsgQ, irqMgrMsgBuf, ARRAY_COUNT(irqMgrMsgBuf)); - StackCheck_Init(&schedStackEntry, schedStack, schedStack + sizeof(schedStack), 0, 0x100, "sched"); - Sched_Init(&gSchedContext, schedStack + sizeof(schedStack), Z_PRIORITY_SCHED, D_8009B290, 1, &gIrqMgr); + StackCheck_Init(&sSchedStackInfo, sSchedStack, STACK_TOP(sSchedStack), 0, 0x100, "sched"); + Sched_Init(&gSchedContext, STACK_TOP(sSchedStack), Z_PRIORITY_SCHED, D_8009B290, 1, &gIrqMgr); CIC6105_AddRomInfoFaultPage(); IrqMgr_AddClient(&gIrqMgr, &irqClient, &irqMgrMsgQ); - StackCheck_Init(&audioStackEntry, audioStack, audioStack + sizeof(audioStack), 0, 0x100, "audio"); - AudioMgr_Init(&audioContext, audioStack + sizeof(audioStack), Z_PRIORITY_AUDIOMGR, 0xA, &gSchedContext, &gIrqMgr); + StackCheck_Init(&sAudioStackInfo, sAudioStack, STACK_TOP(sAudioStack), 0, 0x100, "audio"); + AudioMgr_Init(&sAudioMgr, STACK_TOP(sAudioStack), Z_PRIORITY_AUDIOMGR, 0xA, &gSchedContext, &gIrqMgr); - StackCheck_Init(&padmgrStackEntry, padmgrStack, padmgrStack + sizeof(padmgrStack), 0, 0x100, "padmgr"); - PadMgr_Init(&sSiIntMsgQ, &gIrqMgr, 7, Z_PRIORITY_PADMGR, padmgrStack + sizeof(padmgrStack)); + StackCheck_Init(&sPadMgrStackInfo, sPadMgrStack, STACK_TOP(sPadMgrStack), 0, 0x100, "padmgr"); + PadMgr_Init(&sSiIntMsgQ, &gIrqMgr, 7, Z_PRIORITY_PADMGR, STACK_TOP(sPadMgrStack)); - AudioMgr_Unlock(&audioContext); + AudioMgr_Unlock(&sAudioMgr); - StackCheck_Init(&sGraphStackInfo, sGraphStack, sGraphStack + sizeof(sGraphStack), 0, 0x100, "graph"); - osCreateThread(&sGraphThread, Z_THREAD_ID_GRAPH, Graph_ThreadEntry, arg, sGraphStack + sizeof(sGraphStack), - Z_PRIORITY_GRAPH); - osStartThread(&sGraphThread); + StackCheck_Init(&sGraphStackInfo, sGraphStack, STACK_TOP(sGraphStack), 0, 0x100, "graph"); + osCreateThread(&gGraphThread, Z_THREAD_ID_GRAPH, Graph_ThreadEntry, arg, STACK_TOP(sGraphStack), Z_PRIORITY_GRAPH); + osStartThread(&gGraphThread); exit = false; @@ -73,5 +94,5 @@ void Main(void* arg) { } IrqMgr_RemoveClient(&gIrqMgr, &irqClient); - osDestroyThread(&sGraphThread); + osDestroyThread(&gGraphThread); } diff --git a/src/code/sys_cfb.c b/src/code/sys_cfb.c index 3f198ce8f..25d92227c 100644 --- a/src/code/sys_cfb.c +++ b/src/code/sys_cfb.c @@ -1,4 +1,5 @@ #include "global.h" +#include "buffers.h" #include "system_malloc.h" #pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178750.s") diff --git a/src/code/sys_flashrom.c b/src/code/sys_flashrom.c index 8b6c2fa5c..e9ea6e21e 100644 --- a/src/code/sys_flashrom.c +++ b/src/code/sys_flashrom.c @@ -1,6 +1,17 @@ #include "global.h" +#include "stack.h" #include "system_malloc.h" +// extern UNK_TYPE1 D_801FBE10; +// extern UNK_TYPE1 D_801FBE28; +// extern UNK_TYPE1 D_801FBE2C; +// extern UNK_TYPE4 D_801FBE30; +extern STACK(sSysFlashromStack, 0x1000); +extern StackEntry sys_flashromStackEntry; +extern OSThread sys_flashromOSThread; +extern s80185D40 D_801FD008; +extern OSMesg D_801FD034; + #pragma GLOBAL_ASM("asm/non_matchings/code/sys_flashrom/func_801857C0.s") #pragma GLOBAL_ASM("asm/non_matchings/code/sys_flashrom/func_801857D0.s") diff --git a/src/code/z_play.c b/src/code/z_play.c index 712b94f11..f6a425367 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -1,4 +1,5 @@ #include "global.h" +#include "buffers.h" #include "z64debug_display.h" #include "z64quake.h" #include "z64rumble.h" diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 94d0e69c3..67f8bdda6 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" #include "overlays/gamestates/ovl_file_choose/z_file_choose.h" -- cgit v1.2.3