mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
parent
f38aa9f9bb
commit
e184ed368d
2 changed files with 5 additions and 3 deletions
|
@ -3100,6 +3100,7 @@ static bool __CanExecuteCallbackNow(PSPThread *thread) {
|
||||||
return currentCallbackThreadID == 0 && g_inCbCount == 0;
|
return currentCallbackThreadID == 0 && g_inCbCount == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Takes ownership of afterAction.
|
||||||
void __KernelCallAddress(PSPThread *thread, u32 entryPoint, PSPAction *afterAction, const u32 args[], int numargs, bool reschedAfter, SceUID cbId) {
|
void __KernelCallAddress(PSPThread *thread, u32 entryPoint, PSPAction *afterAction, const u32 args[], int numargs, bool reschedAfter, SceUID cbId) {
|
||||||
if (!thread || thread->isStopped()) {
|
if (!thread || thread->isStopped()) {
|
||||||
WARN_LOG_REPORT(SCEKERNEL, "Running mipscall on dormant thread");
|
WARN_LOG_REPORT(SCEKERNEL, "Running mipscall on dormant thread");
|
||||||
|
@ -3244,11 +3245,11 @@ void __KernelReturnFromMipsCall()
|
||||||
u32 retVal = currentMIPS->r[MIPS_REG_V0];
|
u32 retVal = currentMIPS->r[MIPS_REG_V0];
|
||||||
DEBUG_LOG(SCEKERNEL, "__KernelReturnFromMipsCall(), returned %08x", retVal);
|
DEBUG_LOG(SCEKERNEL, "__KernelReturnFromMipsCall(), returned %08x", retVal);
|
||||||
|
|
||||||
// Should also save/restore wait state here.
|
// TODO: Should also save/restore wait state here?
|
||||||
if (call->doAfter)
|
if (call->doAfter) {
|
||||||
{
|
|
||||||
call->doAfter->run(*call);
|
call->doAfter->run(*call);
|
||||||
delete call->doAfter;
|
delete call->doAfter;
|
||||||
|
call->doAfter = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 &sp = currentMIPS->r[MIPS_REG_SP];
|
u32 &sp = currentMIPS->r[MIPS_REG_SP];
|
||||||
|
|
|
@ -219,6 +219,7 @@ int sceKernelReferCallbackStatus(SceUID cbId, u32 statusAddr);
|
||||||
class PSPAction;
|
class PSPAction;
|
||||||
|
|
||||||
// Not an official Callback object, just calls a mips function on the current thread.
|
// Not an official Callback object, just calls a mips function on the current thread.
|
||||||
|
// Takes ownership of afterAction.
|
||||||
void __KernelDirectMipsCall(u32 entryPoint, PSPAction *afterAction, u32 args[], int numargs, bool reschedAfter);
|
void __KernelDirectMipsCall(u32 entryPoint, PSPAction *afterAction, u32 args[], int numargs, bool reschedAfter);
|
||||||
|
|
||||||
void __KernelReturnFromMipsCall(); // Called as HLE function
|
void __KernelReturnFromMipsCall(); // Called as HLE function
|
||||||
|
|
Loading…
Add table
Reference in a new issue