From f344fe648bd71b0b61bbb5f4cf41edcaf12a981d Mon Sep 17 00:00:00 2001 From: hatal175 Date: Mon, 24 Jan 2022 01:04:50 +0200 Subject: Document RCP functions (#1087) * Document RCP functions * Rename functions according to convention * Rename file and functions to RcpUtils --- src/code/code_800FBCE0.c | 52 ------------------------------------------------ src/code/main.c | 2 +- src/code/rcp_utils.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ src/code/sched.c | 2 +- 4 files changed, 54 insertions(+), 54 deletions(-) delete mode 100644 src/code/code_800FBCE0.c create mode 100644 src/code/rcp_utils.c (limited to 'src/code') diff --git a/src/code/code_800FBCE0.c b/src/code/code_800FBCE0.c deleted file mode 100644 index 65156eda0..000000000 --- a/src/code/code_800FBCE0.c +++ /dev/null @@ -1,52 +0,0 @@ -#include "global.h" - -#define printSpStatus(x, name) \ - if (x & SP_STATUS_##name) \ - osSyncPrintf(#name " ") -#define printDpStatus(x, name) \ - if (x & DPC_STATUS_##name) \ - osSyncPrintf(#name " ") - -void func_800FBCE0() { - u32 spStatus = __osSpGetStatus(); - u32 dpStatus = osDpGetStatus(); - - osSyncPrintf("osSpGetStatus=%08x: ", spStatus); - printSpStatus(spStatus, HALT); - printSpStatus(spStatus, BROKE); - printSpStatus(spStatus, DMA_BUSY); - printSpStatus(spStatus, DMA_FULL); - printSpStatus(spStatus, IO_FULL); - printSpStatus(spStatus, SSTEP); - printSpStatus(spStatus, INTR_BREAK); - printSpStatus(spStatus, YIELD); - printSpStatus(spStatus, YIELDED); - printSpStatus(spStatus, TASKDONE); - printSpStatus(spStatus, SIG3); - printSpStatus(spStatus, SIG4); - printSpStatus(spStatus, SIG5); - printSpStatus(spStatus, SIG6); - printSpStatus(spStatus, SIG7); - osSyncPrintf("\n"); - - osSyncPrintf("osDpGetStatus=%08x:", dpStatus); - printDpStatus(dpStatus, XBUS_DMEM_DMA); - printDpStatus(dpStatus, FREEZE); - printDpStatus(dpStatus, FLUSH); - printDpStatus(dpStatus, START_GCLK); - printDpStatus(dpStatus, TMEM_BUSY); - printDpStatus(dpStatus, PIPE_BUSY); - printDpStatus(dpStatus, CMD_BUSY); - printDpStatus(dpStatus, CBUF_READY); - printDpStatus(dpStatus, DMA_BUSY); - printDpStatus(dpStatus, END_VALID); - printDpStatus(dpStatus, START_VALID); - osSyncPrintf("\n"); -} - -void func_800FBFD8() { - func_800FBCE0(); - osDpSetStatus(DPC_SET_FREEZE | DPC_SET_FLUSH); - __osSpSetStatus(SP_SET_HALT | SP_SET_SIG2 | SP_CLR_INTR_BREAK); - func_800FBCE0(); -} diff --git a/src/code/main.c b/src/code/main.c index fce3972d1..c15449cb6 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -111,6 +111,6 @@ void Main(void* arg) { osSyncPrintf("mainproc 後始末\n"); // "Cleanup" osDestroyThread(&sGraphThread); - func_800FBFD8(); + RcpUtils_Reset(); osSyncPrintf("mainproc 実行終了\n"); // "End of execution" } diff --git a/src/code/rcp_utils.c b/src/code/rcp_utils.c new file mode 100644 index 000000000..ad2bf2b99 --- /dev/null +++ b/src/code/rcp_utils.c @@ -0,0 +1,52 @@ +#include "global.h" + +#define printSpStatus(x, name) \ + if (x & SP_STATUS_##name) \ + osSyncPrintf(#name " ") +#define printDpStatus(x, name) \ + if (x & DPC_STATUS_##name) \ + osSyncPrintf(#name " ") + +void RcpUtils_PrintRegisterStatus() { + u32 spStatus = __osSpGetStatus(); + u32 dpStatus = osDpGetStatus(); + + osSyncPrintf("osSpGetStatus=%08x: ", spStatus); + printSpStatus(spStatus, HALT); + printSpStatus(spStatus, BROKE); + printSpStatus(spStatus, DMA_BUSY); + printSpStatus(spStatus, DMA_FULL); + printSpStatus(spStatus, IO_FULL); + printSpStatus(spStatus, SSTEP); + printSpStatus(spStatus, INTR_BREAK); + printSpStatus(spStatus, YIELD); + printSpStatus(spStatus, YIELDED); + printSpStatus(spStatus, TASKDONE); + printSpStatus(spStatus, SIG3); + printSpStatus(spStatus, SIG4); + printSpStatus(spStatus, SIG5); + printSpStatus(spStatus, SIG6); + printSpStatus(spStatus, SIG7); + osSyncPrintf("\n"); + + osSyncPrintf("osDpGetStatus=%08x:", dpStatus); + printDpStatus(dpStatus, XBUS_DMEM_DMA); + printDpStatus(dpStatus, FREEZE); + printDpStatus(dpStatus, FLUSH); + printDpStatus(dpStatus, START_GCLK); + printDpStatus(dpStatus, TMEM_BUSY); + printDpStatus(dpStatus, PIPE_BUSY); + printDpStatus(dpStatus, CMD_BUSY); + printDpStatus(dpStatus, CBUF_READY); + printDpStatus(dpStatus, DMA_BUSY); + printDpStatus(dpStatus, END_VALID); + printDpStatus(dpStatus, START_VALID); + osSyncPrintf("\n"); +} + +void RcpUtils_Reset() { + RcpUtils_PrintRegisterStatus(); + osDpSetStatus(DPC_SET_FREEZE | DPC_SET_FLUSH); + __osSpSetStatus(SP_SET_HALT | SP_SET_SIG2 | SP_CLR_INTR_BREAK); + RcpUtils_PrintRegisterStatus(); +} diff --git a/src/code/sched.c b/src/code/sched.c index f3a14893e..bc14c9a7a 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -78,7 +78,7 @@ void Sched_HandleReset(SchedContext* sc) { OS_CYCLES_TO_USEC(now - sRSPAudioStartTime), "../sched.c", 421); } else if (OS_CYCLES_TO_USEC(now - sRSPGFXStartTime) > 1000000 || OS_CYCLES_TO_USEC(now - sRDPStartTime) > 1000000) { - func_800FBFD8(); + RcpUtils_Reset(); if (sc->curRSPTask != NULL) { LOG_TIME("(((u64)(now - graph_rsp_start_time)*(1000000LL/15625LL))/((62500000LL*3/4)/15625LL))", OS_CYCLES_TO_USEC(now - sRSPGFXStartTime), "../sched.c", 427); -- cgit v1.2.3