MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / DSPAssertTask

Function DSPAssertTask

src/dolphin/src/dsp/dsp.c:115–152  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

113}
114
115DSPTaskInfo* DSPAssertTask(DSPTaskInfo* task)
116{
117 s32 old;
118
119 old = OSDisableInterrupts();
120
121 if (__DSP_curr_task == task)
122 {
123 __DSP_rude_task = task;
124 __DSP_rude_task_pending = 1;
125 OSRestoreInterrupts(old);
126 return task;
127 }
128
129 if (task->priority < __DSP_curr_task->priority)
130 {
131 __DSP_rude_task = task;
132 __DSP_rude_task_pending = 1;
133 if (__DSP_curr_task->state == 1)
134 {
135 u32 enabled;
136
137 enabled = OSDisableInterrupts();
138
139 __DSPRegs[DSP_CONTROL_STATUS] = (__DSPRegs[DSP_CONTROL_STATUS] &
140 ~(DSP_CSR_AIDINT | DSP_CSR_ARINT | DSP_CSR_DSPINT)) |
141 DSP_CSR_PIINT;
142
143 OSRestoreInterrupts(enabled);
144 }
145
146 OSRestoreInterrupts(old);
147 return task;
148 }
149
150 OSRestoreInterrupts(old);
151 return NULL;
152}
153
154#ifdef __cplusplus
155}

Callers 1

__AXOutAiCallbackFunction · 0.85

Calls 1

OSDisableInterruptsFunction · 0.85

Tested by

no test coverage detected