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;
|
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[] =
|
const HLEFunction Kernel_Library[] =
|
||||||
{
|
{
|
||||||
{0x092968F4,sceKernelCpuSuspendIntr,"sceKernelCpuSuspendIntr"},
|
{0x092968F4,sceKernelCpuSuspendIntr,"sceKernelCpuSuspendIntr"},
|
||||||
|
@ -555,6 +562,7 @@ const HLEFunction Kernel_Library[] =
|
||||||
{0x15b6446b,WrapI_UI<sceKernelUnlockLwMutex>, "sceKernelUnlockLwMutex"},
|
{0x15b6446b,WrapI_UI<sceKernelUnlockLwMutex>, "sceKernelUnlockLwMutex"},
|
||||||
{0xc1734599,WrapI_UU<sceKernelReferLwMutexStatus>, "sceKernelReferLwMutexStatus"},
|
{0xc1734599,WrapI_UU<sceKernelReferLwMutexStatus>, "sceKernelReferLwMutexStatus"},
|
||||||
{0x293b45b8,sceKernelGetThreadId, "sceKernelGetThreadId"},
|
{0x293b45b8,sceKernelGetThreadId, "sceKernelGetThreadId"},
|
||||||
|
{0xD13BDE95,WrapU_V<sceKernelCheckThreadStack>, "sceKernelCheckThreadStack"},
|
||||||
{0x1839852A,WrapU_UUU<sceKernelMemcpy>,"sce_paf_private_memcpy"},
|
{0x1839852A,WrapU_UUU<sceKernelMemcpy>,"sce_paf_private_memcpy"},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -333,6 +333,7 @@ public:
|
||||||
// Fill the stack.
|
// Fill the stack.
|
||||||
Memory::Memset(stackBlock, 0xFF, stackSize);
|
Memory::Memset(stackBlock, 0xFF, stackSize);
|
||||||
context.r[MIPS_REG_SP] = stackBlock + stackSize;
|
context.r[MIPS_REG_SP] = stackBlock + stackSize;
|
||||||
|
stackEnd = context.r[MIPS_REG_SP];
|
||||||
nt.initialStack = stackBlock;
|
nt.initialStack = stackBlock;
|
||||||
nt.stackSize = stackSize;
|
nt.stackSize = stackSize;
|
||||||
// What's this 512?
|
// What's this 512?
|
||||||
|
@ -429,6 +430,7 @@ public:
|
||||||
std::list<u32> pendingMipsCalls;
|
std::list<u32> pendingMipsCalls;
|
||||||
|
|
||||||
u32 stackBlock;
|
u32 stackBlock;
|
||||||
|
u32 stackEnd;
|
||||||
};
|
};
|
||||||
|
|
||||||
// std::vector<SceUID> with push_front(), remove(), etc.
|
// std::vector<SceUID> with push_front(), remove(), etc.
|
||||||
|
@ -1832,6 +1834,14 @@ SceUID __KernelGetCurThreadModuleId()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 __KernelGetCurThreadStack()
|
||||||
|
{
|
||||||
|
Thread *t = __GetCurrentThread();
|
||||||
|
if (t)
|
||||||
|
return t->stackEnd;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void sceKernelGetThreadId()
|
void sceKernelGetThreadId()
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,7 +46,7 @@ u32 sceKernelReferThreadRunStatus(u32 uid, u32 statusPtr);
|
||||||
int sceKernelReleaseWaitThread(SceUID threadID);
|
int sceKernelReleaseWaitThread(SceUID threadID);
|
||||||
void sceKernelChangeCurrentThreadAttr();
|
void sceKernelChangeCurrentThreadAttr();
|
||||||
int sceKernelRotateThreadReadyQueue(int priority);
|
int sceKernelRotateThreadReadyQueue(int priority);
|
||||||
void sceKernelCheckThreadStack();
|
u32 sceKernelCheckThreadStack();
|
||||||
void sceKernelSuspendThread();
|
void sceKernelSuspendThread();
|
||||||
void sceKernelResumeThread();
|
void sceKernelResumeThread();
|
||||||
void sceKernelWakeupThread();
|
void sceKernelWakeupThread();
|
||||||
|
@ -116,6 +116,7 @@ KernelObject *__KernelCallbackObject();
|
||||||
|
|
||||||
void __KernelScheduleWakeup(int threadnumber, s64 usFromNow);
|
void __KernelScheduleWakeup(int threadnumber, s64 usFromNow);
|
||||||
SceUID __KernelGetCurThread();
|
SceUID __KernelGetCurThread();
|
||||||
|
u32 __KernelGetCurThreadStack();
|
||||||
const char *__KernelGetThreadName(SceUID threadID);
|
const char *__KernelGetThreadName(SceUID threadID);
|
||||||
|
|
||||||
void __KernelSaveContext(ThreadContext *ctx);
|
void __KernelSaveContext(ThreadContext *ctx);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue