summaryrefslogtreecommitdiff
path: root/src/code/main.c
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2023-03-08 15:25:51 -0300
committerGitHub <noreply@github.com>2023-03-08 15:25:51 -0300
commit2f1e7b3de8695c8f093c18ee6fe2e9e5c4c9e15a (patch)
treead11aaf28012ed42d6cdda9a8ae6ca55bad1387f /src/code/main.c
parent9f529aaf2a3aa2d5a10e1273babf7781ab9faabc (diff)
Stack cleanups (#1193)
* Use STACK and STACK_TOP everywhere * format * remove fake variable * bss * review Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * Update src/boot_O2_g3/boot_main.c Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * review * renames * more renames * and more * whoopsie, forgot those too * hopefully the last cleanup * forgot some stuff * a * bss --------- Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Diffstat (limited to 'src/code/main.c')
-rw-r--r--src/code/main.c45
1 files changed, 33 insertions, 12 deletions
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);
}