summaryrefslogtreecommitdiff
path: root/src/boot_O2_g3
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/boot_O2_g3
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/boot_O2_g3')
-rw-r--r--src/boot_O2_g3/boot_main.c15
-rw-r--r--src/boot_O2_g3/fault.c18
-rw-r--r--src/boot_O2_g3/idle.c19
-rw-r--r--src/boot_O2_g3/z_std_dma.c7
4 files changed, 35 insertions, 24 deletions
diff --git a/src/boot_O2_g3/boot_main.c b/src/boot_O2_g3/boot_main.c
index 87bee5da4..061458a1d 100644
--- a/src/boot_O2_g3/boot_main.c
+++ b/src/boot_O2_g3/boot_main.c
@@ -1,21 +1,22 @@
#include "prevent_bss_reordering.h"
#include "global.h"
+#include "stack.h"
-StackEntry sBootThreadInfo;
+StackEntry sBootStackInfo;
OSThread sIdleThread;
-u8 sIdleThreadStack[0x400];
-StackEntry sIdleThreadInfo;
-u8 sBootThreadStack[0x400];
+STACK(sIdleThreadStack, 0x400);
+StackEntry sIdleStackInfo;
+STACK(sBootThreadStack, 0x400);
void bootproc(void) {
- StackCheck_Init(&sBootThreadInfo, sBootThreadStack, sBootThreadStack + sizeof(sBootThreadStack), 0, -1, "boot");
+ StackCheck_Init(&sBootStackInfo, sBootThreadStack, STACK_TOP(sBootThreadStack), 0, -1, "boot");
osMemSize = osGetMemSize();
func_800818F4();
osInitialize();
osUnmapTLBAll();
gCartHandle = osCartRomInit();
- StackCheck_Init(&sIdleThreadInfo, sIdleThreadStack, sIdleThreadStack + sizeof(sIdleThreadStack), 0, 256, "idle");
- osCreateThread(&sIdleThread, Z_THREAD_ID_IDLE, Idle_ThreadEntry, NULL, sIdleThreadStack + sizeof(sIdleThreadStack),
+ StackCheck_Init(&sIdleStackInfo, sIdleThreadStack, STACK_TOP(sIdleThreadStack), 0, 0x100, "idle");
+ osCreateThread(&sIdleThread, Z_THREAD_ID_IDLE, Idle_ThreadEntry, NULL, STACK_TOP(sIdleThreadStack),
Z_PRIORITY_IDLE);
osStartThread(&sIdleThread);
}
diff --git a/src/boot_O2_g3/fault.c b/src/boot_O2_g3/fault.c
index e648275b6..134b120dc 100644
--- a/src/boot_O2_g3/fault.c
+++ b/src/boot_O2_g3/fault.c
@@ -1,7 +1,15 @@
#include "ultra64.h"
#include "global.h"
+#include "stack.h"
#include "vt.h"
+extern FaultThreadStruct* sFaultContext;
+extern f32 D_8009BE54;
+extern u32 faultCustomOptions;
+extern u32 faultCopyToLog;
+extern STACK(sFaultStack, 0x600);
+extern StackEntry sFaultStackInfo;
+
// data
const char* sCpuExceptions[] = {
"Interrupt",
@@ -759,9 +767,9 @@ void Fault_SetOptionsFromController3(void) {
}
if (faultCustomOptions) {
- graphPC = sGraphThread.context.pc;
- graphRA = sGraphThread.context.ra;
- graphSP = sGraphThread.context.sp;
+ graphPC = gGraphThread.context.pc;
+ graphRA = gGraphThread.context.ra;
+ graphSP = gGraphThread.context.sp;
if (CHECK_BTN_ALL(input3->cur.button, BTN_R)) {
static u32 faultCopyToLog;
@@ -889,8 +897,8 @@ void Fault_Start(void) {
sFaultContext->faultActive = 0;
gFaultStruct.faultHandlerEnabled = 1;
osCreateMesgQueue(&sFaultContext->queue, sFaultContext->msg, ARRAY_COUNT(sFaultContext->msg));
- StackCheck_Init(&sFaultThreadInfo, sFaultStack, sFaultStack + sizeof(sFaultStack), 0, 0x100, "fault");
- osCreateThread(&sFaultContext->thread, 2, Fault_ThreadEntry, NULL, sFaultStack + sizeof(sFaultStack), 0x7F);
+ StackCheck_Init(&sFaultStackInfo, sFaultStack, STACK_TOP(sFaultStack), 0, 0x100, "fault");
+ osCreateThread(&sFaultContext->thread, 2, Fault_ThreadEntry, NULL, STACK_TOP(sFaultStack), 0x7F);
osStartThread(&sFaultContext->thread);
}
diff --git a/src/boot_O2_g3/idle.c b/src/boot_O2_g3/idle.c
index da93f13fd..40bcf5d0e 100644
--- a/src/boot_O2_g3/idle.c
+++ b/src/boot_O2_g3/idle.c
@@ -1,5 +1,7 @@
#include "prevent_bss_reordering.h"
#include "global.h"
+#include "stack.h"
+#include "buffers.h"
u8 D_80096B20 = 1;
vu8 gViConfigUseDefault = 1;
@@ -9,10 +11,10 @@ f32 gViConfigXScale = 1.0f;
f32 gViConfigYScale = 1.0f;
IrqMgr gIrqMgr;
-u8 sIrqMgrStack[0x500];
+STACK(sIrqMgrStack, 0x500);
StackEntry sIrqMgrStackInfo;
-OSThread gMainThread;
-u8 sMainStack[0x900];
+OSThread sMainThread;
+STACK(sMainStack, 0x900);
StackEntry sMainStackInfo;
OSMesg sPiMgrCmdBuff[50];
OSMesgQueue gPiMgrCmdQ;
@@ -71,8 +73,8 @@ void Idle_InitCodeAndMemory(void) {
}
void Main_ThreadEntry(void* arg) {
- StackCheck_Init(&sIrqMgrStackInfo, sIrqMgrStack, sIrqMgrStack + sizeof(sIrqMgrStack), 0, 0x100, "irqmgr");
- IrqMgr_Init(&gIrqMgr, &sIrqMgrStackInfo, Z_PRIORITY_IRQMGR, 1);
+ StackCheck_Init(&sIrqMgrStackInfo, sIrqMgrStack, STACK_TOP(sIrqMgrStack), 0, 0x100, "irqmgr");
+ IrqMgr_Init(&gIrqMgr, STACK_TOP(sIrqMgrStack), Z_PRIORITY_IRQMGR, 1);
DmaMgr_Start();
Idle_InitCodeAndMemory();
Main(arg);
@@ -108,10 +110,9 @@ void Idle_InitVideo(void) {
void Idle_ThreadEntry(void* arg) {
Idle_InitVideo();
osCreatePiManager(150, &gPiMgrCmdQ, sPiMgrCmdBuff, ARRAY_COUNT(sPiMgrCmdBuff));
- StackCheck_Init(&sMainStackInfo, sMainStack, sMainStack + sizeof(sMainStack), 0, 0x400, "main");
- osCreateThread(&gMainThread, Z_THREAD_ID_MAIN, Main_ThreadEntry, arg, sMainStack + sizeof(sMainStack),
- Z_PRIORITY_MAIN);
- osStartThread(&gMainThread);
+ StackCheck_Init(&sMainStackInfo, sMainStack, STACK_TOP(sMainStack), 0, 0x400, "main");
+ osCreateThread(&sMainThread, Z_THREAD_ID_MAIN, Main_ThreadEntry, arg, STACK_TOP(sMainStack), Z_PRIORITY_MAIN);
+ osStartThread(&sMainThread);
osSetThreadPri(NULL, 0);
do { } while (true); }
diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c
index 8e9d83872..dd34d9e87 100644
--- a/src/boot_O2_g3/z_std_dma.c
+++ b/src/boot_O2_g3/z_std_dma.c
@@ -1,5 +1,6 @@
#include "prevent_bss_reordering.h"
#include "global.h"
+#include "stack.h"
u32 sDmaMgrDmaBuffSize = 0x2000;
@@ -8,7 +9,7 @@ u16 numDmaEntries;
OSMesgQueue sDmaMgrMsgQueue;
OSMesg sDmaMgrMsgs[32];
OSThread sDmaMgrThread;
-u8 sDmaMgrStack[0x500];
+STACK(sDmaMgrStack, 0x500);
s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size) {
OSIoMesg ioMsg;
@@ -226,8 +227,8 @@ void DmaMgr_Start(void) {
}
osCreateMesgQueue(&sDmaMgrMsgQueue, sDmaMgrMsgs, ARRAY_COUNT(sDmaMgrMsgs));
- StackCheck_Init(&sDmaMgrStackInfo, sDmaMgrStack, sDmaMgrStack + sizeof(sDmaMgrStack), 0, 0x100, "dmamgr");
- osCreateThread(&sDmaMgrThread, Z_THREAD_ID_DMAMGR, DmaMgr_ThreadEntry, NULL, sDmaMgrStack + sizeof(sDmaMgrStack),
+ StackCheck_Init(&sDmaMgrStackInfo, sDmaMgrStack, STACK_TOP(sDmaMgrStack), 0, 0x100, "dmamgr");
+ osCreateThread(&sDmaMgrThread, Z_THREAD_ID_DMAMGR, DmaMgr_ThreadEntry, NULL, STACK_TOP(sDmaMgrStack),
Z_PRIORITY_DMAMGR);
osStartThread(&sDmaMgrThread);