From 6a996fcd0ad92ff1c71fba0e85a86c71eec67b8c Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 27 Aug 2014 18:37:51 +0400 Subject: [PATCH] cellSpursJq stub --- rpcs3/Emu/SysCalls/ModuleManager.cpp | 6 +- rpcs3/Emu/SysCalls/Modules/cellSpursJq.cpp | 766 +++++++++++++++++++++ rpcs3/Emu/SysCalls/Modules/cellSpursJq.h | 2 + rpcs3/emucore.vcxproj | 2 + rpcs3/emucore.vcxproj.filters | 6 + 5 files changed, 781 insertions(+), 1 deletion(-) create mode 100644 rpcs3/Emu/SysCalls/Modules/cellSpursJq.cpp create mode 100644 rpcs3/Emu/SysCalls/Modules/cellSpursJq.h diff --git a/rpcs3/Emu/SysCalls/ModuleManager.cpp b/rpcs3/Emu/SysCalls/ModuleManager.cpp index 4b0dd03e2d..63f558f208 100644 --- a/rpcs3/Emu/SysCalls/ModuleManager.cpp +++ b/rpcs3/Emu/SysCalls/ModuleManager.cpp @@ -48,6 +48,8 @@ extern Module *cellSail; extern void cellSpurs_init(); extern Module *cellSpurs; extern void cellSync_init(); +extern Module *cellSpursJq; +extern void cellSpursJq_init(); extern Module *cellSync; extern void cellSync2_init(); extern Module *cellSync2; @@ -253,10 +255,12 @@ void ModuleManager::init() m_mod_init.emplace_back("cellSail", cellSail_init); cellSpurs = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x000a, cellSpurs_init); + cellSpursJq = static_cast (&(m_mod_init.back())) + 1; + m_mod_init.emplace_back(0x0050, cellSpursJq_init); cellSync = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back("cellSync", cellSync_init); cellSync2 = static_cast (&(m_mod_init.back())) + 1; - m_mod_init.emplace_back("cellSync2", cellSync2_init); + m_mod_init.emplace_back(0x0055, cellSync2_init); cellSysutil = static_cast (&(m_mod_init.back())) + 1; m_mod_init.emplace_back(0x0015, cellSysutil_init); cellSysutilAp = static_cast (&(m_mod_init.back())) + 1; diff --git a/rpcs3/Emu/SysCalls/Modules/cellSpursJq.cpp b/rpcs3/Emu/SysCalls/Modules/cellSpursJq.cpp new file mode 100644 index 0000000000..04c364498a --- /dev/null +++ b/rpcs3/Emu/SysCalls/Modules/cellSpursJq.cpp @@ -0,0 +1,766 @@ +#include "stdafx.h" +#include "Emu/Memory/Memory.h" +#include "Emu/System.h" +#include "Emu/SysCalls/Modules.h" + +#include "cellSpursJq.h" + +Module* cellSpursJq = nullptr; + +#ifdef PRX_DEBUG +#include "prx_libspurs_jq.h" +u32 libspurs_jq; +u32 libspurs_jq_rtoc; +#endif + +s64 cellSpursJobQueueAttributeInitialize() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x000010, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueAttributeSetMaxGrab() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x000058, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueAttributeSetSubmitWithEntryLock() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x000098, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueAttributeSetDoBusyWaiting() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0000BC, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueAttributeSetIsHaltOnError() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0000E0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueAttributeSetIsJobTypeMemoryCheck() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x000104, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueAttributeSetMaxSizeJobDescriptor() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x000128, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueAttributeSetGrabParameters() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x000178, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueSetWaitingMode() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0001C8, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursShutdownJobQueue() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0002F0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursCreateJobQueueWithJobDescriptorPool() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0003CC, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursCreateJobQueue() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x000CA8, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJoinJobQueue() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x000CF0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePushJobListBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x001B24, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePushJobBody2() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x001BF0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePushJob2Body() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x001CD0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePushAndReleaseJobBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x001DC8, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePushJobBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x001EC8, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePushBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x001F90, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueueAllocateJobDescriptorBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002434, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePushSync() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002498, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePushFlush() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002528, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueGetSpurs() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002598, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueGetHandleCount() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0025C4, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueGetError() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002600, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueGetMaxSizeJobDescriptor() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002668, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursGetJobQueueId() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0026A4, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueGetSuspendedJobSize() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002700, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueClose() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002D70, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueOpen() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x002E50, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueSemaphoreTryAcquire() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003370, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueSemaphoreAcquire() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003378, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueSemaphoreInitialize() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003380, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueSendSignal() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0033E0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePortGetJobQueue() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x00354C, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortPushSync() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003554, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortPushFlush() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0035C0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortPushJobListBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003624, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortPushJobBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003A88, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortPushJobBody2() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003A94, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortPushBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003A98, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePortTrySync() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003C38, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePortSync() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003C40, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePortInitialize() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003C48, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePortInitializeWithDescriptorBuffer() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003D78, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePortFinalize() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x003E40, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortCopyPushJobBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004280, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortCopyPushJobBody2() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x00428C, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePortCopyPushBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004290, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePort2GetJobQueue() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0042A4, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePort2PushSync() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0042AC, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePort2PushFlush() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004330, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePort2PushJobListBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0043B0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePort2Sync() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0045AC, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePort2Create() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0046C4, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePort2Destroy() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x0047E4, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueuePort2AllocateJobDescriptor() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004928, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePort2PushAndReleaseJobBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004D94, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePort2CopyPushJobBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004DD0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 _cellSpursJobQueuePort2PushJobBody() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004E0C, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueSetExceptionEventHandler() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004E48, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +s64 cellSpursJobQueueUnsetExceptionEventHandler() +{ +#ifdef PRX_DEBUG + cellSpursJq->Warning("%s()", __FUNCTION__); + return GetCurrentPPUThread().FastCall2(libspurs_jq + 0x004EC0, libspurs_jq_rtoc); +#else + UNIMPLEMENTED_FUNC(cellSpursJq); + return CELL_OK; +#endif +} + +void cellSpursJq_init() +{ + REG_FUNC(cellSpursJq, cellSpursJobQueueAttributeInitialize); + REG_FUNC(cellSpursJq, cellSpursJobQueueAttributeSetMaxGrab); + REG_FUNC(cellSpursJq, cellSpursJobQueueAttributeSetSubmitWithEntryLock); + REG_FUNC(cellSpursJq, cellSpursJobQueueAttributeSetDoBusyWaiting); + REG_FUNC(cellSpursJq, cellSpursJobQueueAttributeSetIsHaltOnError); + REG_FUNC(cellSpursJq, cellSpursJobQueueAttributeSetIsJobTypeMemoryCheck); + REG_FUNC(cellSpursJq, cellSpursJobQueueAttributeSetMaxSizeJobDescriptor); + REG_FUNC(cellSpursJq, cellSpursJobQueueAttributeSetGrabParameters); + REG_FUNC(cellSpursJq, cellSpursJobQueueSetWaitingMode); + REG_FUNC(cellSpursJq, cellSpursShutdownJobQueue); + REG_FUNC(cellSpursJq, _cellSpursCreateJobQueueWithJobDescriptorPool); + REG_FUNC(cellSpursJq, _cellSpursCreateJobQueue); + REG_FUNC(cellSpursJq, cellSpursJoinJobQueue); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePushJobListBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePushJobBody2); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePushJob2Body); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePushAndReleaseJobBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePushJobBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePushBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueueAllocateJobDescriptorBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePushSync); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePushFlush); + REG_FUNC(cellSpursJq, cellSpursJobQueueGetSpurs); + REG_FUNC(cellSpursJq, cellSpursJobQueueGetHandleCount); + REG_FUNC(cellSpursJq, cellSpursJobQueueGetError); + REG_FUNC(cellSpursJq, cellSpursJobQueueGetMaxSizeJobDescriptor); + REG_FUNC(cellSpursJq, cellSpursGetJobQueueId); + REG_FUNC(cellSpursJq, cellSpursJobQueueGetSuspendedJobSize); + REG_FUNC(cellSpursJq, cellSpursJobQueueClose); + REG_FUNC(cellSpursJq, cellSpursJobQueueOpen); + REG_FUNC(cellSpursJq, cellSpursJobQueueSemaphoreTryAcquire); + REG_FUNC(cellSpursJq, cellSpursJobQueueSemaphoreAcquire); + REG_FUNC(cellSpursJq, cellSpursJobQueueSemaphoreInitialize); + REG_FUNC(cellSpursJq, cellSpursJobQueueSendSignal); + REG_FUNC(cellSpursJq, cellSpursJobQueuePortGetJobQueue); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortPushSync); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortPushFlush); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortPushJobListBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortPushJobBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortPushJobBody2); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortPushBody); + REG_FUNC(cellSpursJq, cellSpursJobQueuePortTrySync); + REG_FUNC(cellSpursJq, cellSpursJobQueuePortSync); + REG_FUNC(cellSpursJq, cellSpursJobQueuePortInitialize); + REG_FUNC(cellSpursJq, cellSpursJobQueuePortInitializeWithDescriptorBuffer); + REG_FUNC(cellSpursJq, cellSpursJobQueuePortFinalize); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortCopyPushJobBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortCopyPushJobBody2); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePortCopyPushBody); + REG_FUNC(cellSpursJq, cellSpursJobQueuePort2GetJobQueue); + REG_FUNC(cellSpursJq, cellSpursJobQueuePort2PushSync); + REG_FUNC(cellSpursJq, cellSpursJobQueuePort2PushFlush); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePort2PushJobListBody); + REG_FUNC(cellSpursJq, cellSpursJobQueuePort2Sync); + REG_FUNC(cellSpursJq, cellSpursJobQueuePort2Create); + REG_FUNC(cellSpursJq, cellSpursJobQueuePort2Destroy); + REG_FUNC(cellSpursJq, cellSpursJobQueuePort2AllocateJobDescriptor); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePort2PushAndReleaseJobBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePort2CopyPushJobBody); + REG_FUNC(cellSpursJq, _cellSpursJobQueuePort2PushJobBody); + REG_FUNC(cellSpursJq, cellSpursJobQueueSetExceptionEventHandler); + REG_FUNC(cellSpursJq, cellSpursJobQueueUnsetExceptionEventHandler); + +#ifdef PRX_DEBUG + +#endif +} \ No newline at end of file diff --git a/rpcs3/Emu/SysCalls/Modules/cellSpursJq.h b/rpcs3/Emu/SysCalls/Modules/cellSpursJq.h new file mode 100644 index 0000000000..3f59c932d3 --- /dev/null +++ b/rpcs3/Emu/SysCalls/Modules/cellSpursJq.h @@ -0,0 +1,2 @@ +#pragma once + diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index f7c5030469..70bef9dbd1 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -164,6 +164,7 @@ + @@ -370,6 +371,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 6254e2035d..023f4c67fd 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -605,6 +605,9 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + @@ -1162,5 +1165,8 @@ Emu\SysCalls\Modules + + Emu\SysCalls\Modules + \ No newline at end of file