mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Implement sceKernelCheckThreadStack
This commit is contained in:
parent
60189663db
commit
6a4ae5bb51
3 changed files with 20 additions and 1 deletions
|
@ -540,6 +540,13 @@ u32 sceKernelMemcpy(u32 dst, u32 src, u32 size)
|
|||
return dst;
|
||||
}
|
||||
|
||||
// Returns the stack size of the current thread.
|
||||
u32 sceKernelCheckThreadStack() {
|
||||
int stackSize = __KernelGetCurThreadStack() - currentMIPS->r[MIPS_REG_SP];
|
||||
DEBUG_LOG(HLE, "%i = sceKernelCheckThreadStack()", stackSize);
|
||||
return stackSize;
|
||||
}
|
||||
|
||||
const HLEFunction Kernel_Library[] =
|
||||
{
|
||||
{0x092968F4,sceKernelCpuSuspendIntr,"sceKernelCpuSuspendIntr"},
|
||||
|
@ -555,6 +562,7 @@ const HLEFunction Kernel_Library[] =
|
|||
{0x15b6446b,WrapI_UI<sceKernelUnlockLwMutex>, "sceKernelUnlockLwMutex"},
|
||||
{0xc1734599,WrapI_UU<sceKernelReferLwMutexStatus>, "sceKernelReferLwMutexStatus"},
|
||||
{0x293b45b8,sceKernelGetThreadId, "sceKernelGetThreadId"},
|
||||
{0xD13BDE95,WrapU_V<sceKernelCheckThreadStack>, "sceKernelCheckThreadStack"},
|
||||
{0x1839852A,WrapU_UUU<sceKernelMemcpy>,"sce_paf_private_memcpy"},
|
||||
};
|
||||
|
||||
|
|
|
@ -333,6 +333,7 @@ public:
|
|||
// Fill the stack.
|
||||
Memory::Memset(stackBlock, 0xFF, stackSize);
|
||||
context.r[MIPS_REG_SP] = stackBlock + stackSize;
|
||||
stackEnd = context.r[MIPS_REG_SP];
|
||||
nt.initialStack = stackBlock;
|
||||
nt.stackSize = stackSize;
|
||||
// What's this 512?
|
||||
|
@ -429,6 +430,7 @@ public:
|
|||
std::list<u32> pendingMipsCalls;
|
||||
|
||||
u32 stackBlock;
|
||||
u32 stackEnd;
|
||||
};
|
||||
|
||||
// std::vector<SceUID> with push_front(), remove(), etc.
|
||||
|
@ -1832,6 +1834,14 @@ SceUID __KernelGetCurThreadModuleId()
|
|||
return 0;
|
||||
}
|
||||
|
||||
u32 __KernelGetCurThreadStack()
|
||||
{
|
||||
Thread *t = __GetCurrentThread();
|
||||
if (t)
|
||||
return t->stackEnd;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void sceKernelGetThreadId()
|
||||
{
|
||||
|
|
|
@ -46,7 +46,7 @@ u32 sceKernelReferThreadRunStatus(u32 uid, u32 statusPtr);
|
|||
int sceKernelReleaseWaitThread(SceUID threadID);
|
||||
void sceKernelChangeCurrentThreadAttr();
|
||||
int sceKernelRotateThreadReadyQueue(int priority);
|
||||
void sceKernelCheckThreadStack();
|
||||
u32 sceKernelCheckThreadStack();
|
||||
void sceKernelSuspendThread();
|
||||
void sceKernelResumeThread();
|
||||
void sceKernelWakeupThread();
|
||||
|
@ -116,6 +116,7 @@ KernelObject *__KernelCallbackObject();
|
|||
|
||||
void __KernelScheduleWakeup(int threadnumber, s64 usFromNow);
|
||||
SceUID __KernelGetCurThread();
|
||||
u32 __KernelGetCurThreadStack();
|
||||
const char *__KernelGetThreadName(SceUID threadID);
|
||||
|
||||
void __KernelSaveContext(ThreadContext *ctx);
|
||||
|
|
Loading…
Add table
Reference in a new issue