mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-05 06:21:26 +12:00
438 lines
No EOL
11 KiB
C++
438 lines
No EOL
11 KiB
C++
#include "stdafx.h"
|
|
#include "Emu/Memory/Memory.h"
|
|
#include "Emu/System.h"
|
|
#include "Emu/SysCalls/Modules.h"
|
|
|
|
#include "cellSync2.h"
|
|
|
|
//void cellSync2_init();
|
|
//Module cellSync2(0x0055, cellSync2_init);
|
|
Module* cellSync2 = nullptr;
|
|
|
|
#ifdef PRX_DEBUG
|
|
#include "prx_libsync2.h"
|
|
u32 libsync2;
|
|
u32 libsync2_rtoc;
|
|
#endif
|
|
|
|
s64 _cellSync2MutexAttributeInitialize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x16A0, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2MutexEstimateBufferSize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0xC3C, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2MutexInitialize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x1584, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2MutexFinalize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x142C, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2MutexLock()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x1734, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2MutexTryLock()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x1A2C, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2MutexUnlock()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x186C, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 _cellSync2CondAttributeInitialize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x26DC, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2CondEstimateBufferSize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x1B90, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2CondInitialize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x25DC, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2CondFinalize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x23E0, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2CondWait()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x283C, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2CondSignal()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2768, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2CondSignalAll()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2910, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 _cellSync2SemaphoreAttributeInitialize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x5644, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2SemaphoreEstimateBufferSize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4AC4, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2SemaphoreInitialize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x54E0, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2SemaphoreFinalize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x52F0, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2SemaphoreAcquire()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x57A4, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2SemaphoreTryAcquire()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x56D8, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2SemaphoreRelease()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x5870, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2SemaphoreGetCount()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4B4C, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 _cellSync2QueueAttributeInitialize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x3C5C, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueueEstimateBufferSize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2A98, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueueInitialize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x3F98, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueueFinalize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x3C28, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueuePush()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x478C, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueueTryPush()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4680, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueuePop()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4974, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueueTryPop()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4880, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueueGetSize()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2C00, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
s64 cellSync2QueueGetDepth()
|
|
{
|
|
#ifdef PRX_DEBUG
|
|
cellSync2->Warning("%s()", __FUNCTION__);
|
|
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2B90, libsync2_rtoc);
|
|
#else
|
|
UNIMPLEMENTED_FUNC(cellSync2);
|
|
return CELL_OK;
|
|
#endif
|
|
}
|
|
|
|
void cellSync2_init()
|
|
{
|
|
cellSync2->AddFunc(0x55836e73, _cellSync2MutexAttributeInitialize);
|
|
cellSync2->AddFunc(0xd51bfae7, cellSync2MutexEstimateBufferSize);
|
|
cellSync2->AddFunc(0xeb81a467, cellSync2MutexInitialize);
|
|
cellSync2->AddFunc(0x27f2d61c, cellSync2MutexFinalize);
|
|
cellSync2->AddFunc(0xa400d82e, cellSync2MutexLock);
|
|
cellSync2->AddFunc(0xa69c749c, cellSync2MutexTryLock);
|
|
cellSync2->AddFunc(0x0080fe88, cellSync2MutexUnlock);
|
|
|
|
cellSync2->AddFunc(0xdf3c532a, _cellSync2CondAttributeInitialize);
|
|
cellSync2->AddFunc(0x5b1e4d7a, cellSync2CondEstimateBufferSize);
|
|
cellSync2->AddFunc(0x58be9a0f, cellSync2CondInitialize);
|
|
cellSync2->AddFunc(0x63062249, cellSync2CondFinalize);
|
|
cellSync2->AddFunc(0xbc96d751, cellSync2CondWait);
|
|
cellSync2->AddFunc(0x871af804, cellSync2CondSignal);
|
|
cellSync2->AddFunc(0x8aae07c2, cellSync2CondSignalAll);
|
|
|
|
cellSync2->AddFunc(0x2d77fe17, _cellSync2SemaphoreAttributeInitialize);
|
|
cellSync2->AddFunc(0x74c2780f, cellSync2SemaphoreEstimateBufferSize);
|
|
cellSync2->AddFunc(0xc5dee254, cellSync2SemaphoreInitialize);
|
|
cellSync2->AddFunc(0x164843a7, cellSync2SemaphoreFinalize);
|
|
cellSync2->AddFunc(0xd1b0d146, cellSync2SemaphoreAcquire);
|
|
cellSync2->AddFunc(0x5e4b0f87, cellSync2SemaphoreTryAcquire);
|
|
cellSync2->AddFunc(0x0c2983ac, cellSync2SemaphoreRelease);
|
|
cellSync2->AddFunc(0x4e2ee031, cellSync2SemaphoreGetCount);
|
|
|
|
cellSync2->AddFunc(0x5e00d433, _cellSync2QueueAttributeInitialize);
|
|
cellSync2->AddFunc(0xc08cc0f9, cellSync2QueueEstimateBufferSize);
|
|
cellSync2->AddFunc(0xf125e044, cellSync2QueueInitialize);
|
|
cellSync2->AddFunc(0x6af85cdf, cellSync2QueueFinalize);
|
|
cellSync2->AddFunc(0x7d967d91, cellSync2QueuePush);
|
|
cellSync2->AddFunc(0x7fd479fe, cellSync2QueueTryPush);
|
|
cellSync2->AddFunc(0xd83ab0c9, cellSync2QueuePop);
|
|
cellSync2->AddFunc(0x0c9a0ea9, cellSync2QueueTryPop);
|
|
cellSync2->AddFunc(0x12f0a27d, cellSync2QueueGetSize);
|
|
cellSync2->AddFunc(0xf0e1471c, cellSync2QueueGetDepth);
|
|
|
|
#ifdef PRX_DEBUG
|
|
CallAfter([]()
|
|
{
|
|
libsync2 = (u32)Memory.PRXMem.AllocAlign(sizeof(libsync2_data), 4096);
|
|
memcpy(vm::get_ptr<void>(libsync2), libsync2_data, sizeof(libsync2_data));
|
|
libsync2_rtoc = libsync2 + 0xF280;
|
|
|
|
extern Module* sysPrxForUser;
|
|
extern Module* cellSpurs;
|
|
extern Module* cellSpursJq;
|
|
extern Module* cellFiber;
|
|
|
|
FIX_IMPORT(cellSpurs, _cellSpursSendSignal , libsync2 + 0x61F0);
|
|
FIX_IMPORT(cellSpursJq, cellSpursJobQueueSendSignal , libsync2 + 0x6210);
|
|
FIX_IMPORT(cellFiber, cellFiberPpuUtilWorkerControlSendSignal , libsync2 + 0x6230);
|
|
FIX_IMPORT(cellFiber, cellFiberPpuSelf , libsync2 + 0x6250);
|
|
FIX_IMPORT(cellFiber, cellFiberPpuWaitSignal , libsync2 + 0x6270);
|
|
FIX_IMPORT(sysPrxForUser, sys_lwmutex_lock , libsync2 + 0x6290);
|
|
FIX_IMPORT(sysPrxForUser, sys_lwmutex_unlock , libsync2 + 0x62B0);
|
|
FIX_IMPORT(sysPrxForUser, sys_lwmutex_create , libsync2 + 0x62D0);
|
|
FIX_IMPORT(sysPrxForUser, sys_ppu_thread_get_id , libsync2 + 0x62F0);
|
|
FIX_IMPORT(sysPrxForUser, _sys_memset , libsync2 + 0x6310);
|
|
FIX_IMPORT(sysPrxForUser, _sys_printf , libsync2 + 0x6330);
|
|
fix_import(sysPrxForUser, 0x9FB6228E , libsync2 + 0x6350);
|
|
FIX_IMPORT(sysPrxForUser, sys_lwmutex_destroy , libsync2 + 0x6370);
|
|
FIX_IMPORT(sysPrxForUser, _sys_strncpy , libsync2 + 0x6390);
|
|
|
|
fix_relocs(cellSync2, libsync2, 0x73A0, 0x95A0, 0x6B90);
|
|
});
|
|
#endif
|
|
} |