From 3ce26e03dffd95a2bd26e6945a4bc36314654006 Mon Sep 17 00:00:00 2001 From: JimLee168 Date: Fri, 19 Apr 2013 22:22:35 +0800 Subject: [PATCH] Add part sceKernelExtendThreadStack content Fixes NPJH50624 --- Core/HLE/sceKernel.cpp | 2 +- Core/HLE/sceKernelThread.cpp | 6 ++++-- Core/HLE/sceKernelThread.h | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Core/HLE/sceKernel.cpp b/Core/HLE/sceKernel.cpp index 6ce1dc6eff..f0b92d80a4 100644 --- a/Core/HLE/sceKernel.cpp +++ b/Core/HLE/sceKernel.cpp @@ -690,7 +690,7 @@ const HLEFunction ThreadManForUser[] = {0x94416130,WrapU_UUUU,"sceKernelGetThreadmanIdList"}, {0x57CF62DD,WrapU_U,"sceKernelGetThreadmanIdType"}, - {0xBC80EC7C,WrapU_UUUU, "sceKernelExtendThreadStack"}, + {0xBC80EC7C,WrapU_UUU, "sceKernelExtendThreadStack"}, // NOTE: Takes a UID from sceKernelMemory's AllocMemoryBlock and seems thread stack related. //{0x28BFD974,0,"ThreadManForUser_28BFD974"}, diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index 430ed3888e..a16eed81b3 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -2505,9 +2505,11 @@ int sceKernelReferCallbackStatus(SceUID cbId, u32 statusAddr) } } -u32 sceKernelExtendThreadStack(u32 cpu, u32 size, u32 entryAddr, u32 entryParameter) +u32 sceKernelExtendThreadStack(u32 size, u32 entryAddr, u32 entryParameter) { - ERROR_LOG_REPORT(HLE,"UNIMPL sceKernelExtendThreadStack(%08x, %08x, %08x, %08x)", cpu, size, entryAddr, entryParameter); + ERROR_LOG_REPORT(HLE,"sceKernelExtendThreadStack(%08x, %08x, %08x) - Not fully supported", size, entryAddr, entryParameter); + u32 args[1] = { entryParameter }; + __KernelDirectMipsCall(entryAddr, 0, args, 1, false); return 0; } diff --git a/Core/HLE/sceKernelThread.h b/Core/HLE/sceKernelThread.h index 02da05cf95..2e49c0438d 100644 --- a/Core/HLE/sceKernelThread.h +++ b/Core/HLE/sceKernelThread.h @@ -57,7 +57,7 @@ int sceKernelWaitThreadEndCB(SceUID threadID, u32 timeoutPtr); void sceKernelGetThreadExitStatus(); u32 sceKernelGetThreadmanIdType(u32); u32 sceKernelGetThreadmanIdList(u32 type, u32 readBufPtr, u32 readBufSize, u32 idCountPtr); -u32 sceKernelExtendThreadStack(u32 cpu, u32 size, u32 entryAddr, u32 entryParameter); +u32 sceKernelExtendThreadStack(u32 size, u32 entryAddr, u32 entryParameter); struct SceKernelSysClock { u32 lo;