diff options
| author | Tharo <17233964+Thar0@users.noreply.github.com> | 2022-02-06 18:00:01 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-06 13:00:01 -0500 |
| commit | cf048f849a514c404f4c2866eb6fd87e2731b987 (patch) | |
| tree | dfed504850fc7b7d6878c2fbede8c790c4a48a0f /src/code/main.c | |
| parent | b41489c443943d273251b2497cac2ead2eea20ab (diff) | |
Correctly align program stacks (#1133)
* Properly align program stacks
* Enforce size being a multiple of 8 bytes
* Correct alignment calculation
* Use an ALIGN8 macro in the stack declaration macro
Diffstat (limited to 'src/code/main.c')
| -rw-r--r-- | src/code/main.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/code/main.c b/src/code/main.c index c15449cb6..c3773b51d 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -11,11 +11,11 @@ PadMgr gPadMgr; IrqMgr gIrqMgr; u32 gSegments[NUM_SEGMENTS]; OSThread sGraphThread; -u8 sGraphStack[0x1800]; -u8 sSchedStack[0x600]; -u8 sAudioStack[0x800]; -u8 sPadMgrStack[0x500]; -u8 sIrqMgrStack[0x500]; +STACK(sGraphStack, 0x1800); +STACK(sSchedStack, 0x600); +STACK(sAudioStack, 0x800); +STACK(sPadMgrStack, 0x500); +STACK(sIrqMgrStack, 0x500); StackEntry sGraphStackInfo; StackEntry sSchedStackInfo; StackEntry sAudioStackInfo; @@ -75,25 +75,25 @@ void Main(void* arg) { Main_LogSystemHeap(); osCreateMesgQueue(&irqMgrMsgQ, irqMgrMsgBuf, 0x3C); - StackCheck_Init(&sIrqMgrStackInfo, sIrqMgrStack, sIrqMgrStack + sizeof(sIrqMgrStack), 0, 0x100, "irqmgr"); + StackCheck_Init(&sIrqMgrStackInfo, sIrqMgrStack, STACK_TOP(sIrqMgrStack), 0, 0x100, "irqmgr"); IrqMgr_Init(&gIrqMgr, &sGraphStackInfo, Z_PRIORITY_IRQMGR, 1); osSyncPrintf("タスクスケジューラの初期化\n"); // "Initialize the task scheduler" - StackCheck_Init(&sSchedStackInfo, sSchedStack, sSchedStack + sizeof(sSchedStack), 0, 0x100, "sched"); + StackCheck_Init(&sSchedStackInfo, sSchedStack, STACK_TOP(sSchedStack), 0, 0x100, "sched"); Sched_Init(&gSchedContext, &sAudioStack, Z_PRIORITY_SCHED, D_80013960, 1, &gIrqMgr); IrqMgr_AddClient(&gIrqMgr, &irqClient, &irqMgrMsgQ); - StackCheck_Init(&sAudioStackInfo, sAudioStack, sAudioStack + sizeof(sAudioStack), 0, 0x100, "audio"); - AudioMgr_Init(&gAudioMgr, sAudioStack + sizeof(sAudioStack), Z_PRIORITY_AUDIOMGR, 0xA, &gSchedContext, &gIrqMgr); + StackCheck_Init(&sAudioStackInfo, sAudioStack, STACK_TOP(sAudioStack), 0, 0x100, "audio"); + AudioMgr_Init(&gAudioMgr, STACK_TOP(sAudioStack), Z_PRIORITY_AUDIOMGR, 0xA, &gSchedContext, &gIrqMgr); - StackCheck_Init(&sPadMgrStackInfo, sPadMgrStack, sPadMgrStack + sizeof(sPadMgrStack), 0, 0x100, "padmgr"); + StackCheck_Init(&sPadMgrStackInfo, sPadMgrStack, STACK_TOP(sPadMgrStack), 0, 0x100, "padmgr"); PadMgr_Init(&gPadMgr, &sSiIntMsgQ, &gIrqMgr, 7, Z_PRIORITY_PADMGR, &sIrqMgrStack); AudioMgr_Unlock(&gAudioMgr); - StackCheck_Init(&sGraphStackInfo, sGraphStack, sGraphStack + sizeof(sGraphStack), 0, 0x100, "graph"); - osCreateThread(&sGraphThread, 4, Graph_ThreadEntry, arg, sGraphStack + sizeof(sGraphStack), Z_PRIORITY_GRAPH); + StackCheck_Init(&sGraphStackInfo, sGraphStack, STACK_TOP(sGraphStack), 0, 0x100, "graph"); + osCreateThread(&sGraphThread, 4, Graph_ThreadEntry, arg, STACK_TOP(sGraphStack), Z_PRIORITY_GRAPH); osStartThread(&sGraphThread); osSetThreadPri(0, Z_PRIORITY_SCHED); |
