mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-12 04:14:35 +00:00
cellSync2 stub
This commit is contained in:
parent
bbf7508d41
commit
0fb45cccbc
@ -64,24 +64,22 @@ private:
|
||||
|
||||
void SysCall()
|
||||
{
|
||||
CPU.m_last_syscall = CPU.GPR[11];
|
||||
SysCalls::DoSyscall(CPU.GPR[11]);
|
||||
const u64 sc = CPU.GPR[11];
|
||||
const u64 old_sc = CPU.m_last_syscall;
|
||||
|
||||
CPU.m_last_syscall = sc;
|
||||
SysCalls::DoSyscall(sc);
|
||||
|
||||
if(Ini.HLELogging.GetValue())
|
||||
{
|
||||
LOG_WARNING(PPU, "SysCall[0x%llx ('%s')] done with code [0x%llx]! #pc: 0x%llx", CPU.GPR[11], SysCalls::GetHLEFuncName(CPU.GPR[11]).c_str(), CPU.GPR[3], CPU.PC);
|
||||
LOG_WARNING(PPU, "SysCall[0x%llx ('%s')] done with code [0x%llx]! #pc: 0x%llx",
|
||||
sc, SysCalls::GetHLEFuncName(sc).c_str(), CPU.GPR[3], CPU.PC);
|
||||
}
|
||||
/*else if ((s64)CPU.GPR[3] < 0) // probably, error code
|
||||
{
|
||||
LOG_ERROR(PPU, "SysCall[0x%llx] done with code [0x%llx]! #pc: 0x%llx", CPU.GPR[11], CPU.GPR[3], CPU.PC);
|
||||
if(CPU.GPR[11] > 1024)
|
||||
SysCalls::DoFunc(CPU.GPR[11]);
|
||||
}*/
|
||||
#ifdef HLE_CALL_DEBUG
|
||||
LOG_NOTICE(PPU, "SysCall[%lld] done with code [0x%llx]! #pc: 0x%llx", CPU.GPR[11], CPU.GPR[3], CPU.PC);
|
||||
LOG_NOTICE(PPU, "SysCall[%lld] done with code [0x%llx]! #pc: 0x%llx", sc, CPU.GPR[3], CPU.PC);
|
||||
#endif
|
||||
|
||||
CPU.m_last_syscall = 0;
|
||||
CPU.m_last_syscall = old_sc;
|
||||
}
|
||||
|
||||
void NULL_OP()
|
||||
|
@ -200,4 +200,56 @@ void fix_import(Module* module, u32 func, u32 addr)
|
||||
Memory.Write64(addr + 0x18, 0x6000000060000000ull); /* nop + nop */
|
||||
|
||||
module->Load(func);
|
||||
}
|
||||
|
||||
void fix_relocs(Module* module, u32 lib, u32 start, u32 end, u32 seg2)
|
||||
{
|
||||
// start of table:
|
||||
// addr = (u64) addr - seg2, (u32) 1, (u32) 1, (u64) ptr
|
||||
// addr = (u64) addr - seg2, (u32) 0x101, (u32) 1, (u64) ptr - seg2 (???)
|
||||
// addr = (u64) addr, (u32) 0x100, (u32) 1, (u64) ptr - seg2 (???)
|
||||
// addr = (u64) addr, (u32) 0, (u32) 1, (u64) ptr (???)
|
||||
|
||||
for (u32 i = lib + start; i < lib + end; i += 24)
|
||||
{
|
||||
u64 addr = Memory.Read64(i);
|
||||
const u64 flag = Memory.Read64(i + 8);
|
||||
|
||||
if (flag == 0x10100000001ull)
|
||||
{
|
||||
addr = addr + seg2 + lib;
|
||||
u32 value = Memory.Read32(addr);
|
||||
assert(value == Memory.Read64(i + 16) + seg2);
|
||||
Memory.Write32(addr, value + lib);
|
||||
}
|
||||
else if (flag == 0x100000001ull)
|
||||
{
|
||||
addr = addr + seg2 + lib;
|
||||
u32 value = Memory.Read32(addr);
|
||||
assert(value == Memory.Read64(i + 16));
|
||||
Memory.Write32(addr, value + lib);
|
||||
}
|
||||
else if (flag == 0x10000000001ull)
|
||||
{
|
||||
addr = addr + lib;
|
||||
u32 value = Memory.Read32(addr);
|
||||
assert(value == Memory.Read64(i + 16) + seg2);
|
||||
Memory.Write32(addr, value + lib);
|
||||
}
|
||||
else if (flag == 1)
|
||||
{
|
||||
addr = addr + lib;
|
||||
u32 value = Memory.Read32(addr);
|
||||
assert(value == Memory.Read64(i + 16));
|
||||
Memory.Write32(addr, value + lib);
|
||||
}
|
||||
else if (flag == 0x10000000004ull || flag == 0x10000000006ull)
|
||||
{
|
||||
// seems to be instruction modifiers for imports (done in other way in FIX_IMPORT)
|
||||
}
|
||||
else
|
||||
{
|
||||
module->Notice("fix_relocs(): 0x%x : 0x%llx", i - lib, flag);
|
||||
}
|
||||
}
|
||||
}
|
@ -166,6 +166,8 @@ void fix_import(Module* module, u32 func, u32 addr);
|
||||
|
||||
#define FIX_IMPORT(module, func, addr) fix_import(module, getFunctionId(#func), addr)
|
||||
|
||||
void fix_relocs(Module* module, u32 lib, u32 start, u32 end, u32 seg2);
|
||||
|
||||
#define REG_SUB(module, group, name, ...) \
|
||||
static const u64 name ## _table[] = {__VA_ARGS__ , 0}; \
|
||||
module->AddFuncSub(group, name ## _table, #name, name)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2246,57 +2246,7 @@ void cellSync_init()
|
||||
FIX_IMPORT(sysPrxForUser, _sys_vprintf , libsre + 0x1D97C);
|
||||
FIX_IMPORT(sysPrxForUser, _sys_memcmp , libsre + 0x1D99C);
|
||||
|
||||
const u32 seg2 = 0x2DF00;
|
||||
// start of table:
|
||||
// addr = (u64) addr - seg2, (u32) 1, (u32) 1, (u64) ptr
|
||||
// addr = (u64) addr - seg2, (u32) 0x101, (u32) 1, (u64) ptr - seg2 (???)
|
||||
// addr = (u64) addr, (u32) 0x100, (u32) 1, (u64) ptr - seg2 (???)
|
||||
// addr = (u64) addr, (u32) 0, (u32) 1, (u64) ptr (???)
|
||||
|
||||
for (u32 i = libsre + 0x31EE0; i < libsre + 0x3A4F0; i += 24)
|
||||
{
|
||||
u64 addr = Memory.Read64(i);
|
||||
const u64 flag = Memory.Read64(i + 8);
|
||||
|
||||
if (flag == 0x10100000001ull)
|
||||
{
|
||||
addr = addr + seg2 + libsre;
|
||||
u32 value = Memory.Read32(addr);
|
||||
assert(value == Memory.Read64(i + 16) + seg2);
|
||||
Memory.Write32(addr, value + libsre);
|
||||
}
|
||||
else if (flag == 0x100000001ull)
|
||||
{
|
||||
addr = addr + seg2 + libsre;
|
||||
u32 value = Memory.Read32(addr);
|
||||
assert(value == Memory.Read64(i + 16));
|
||||
Memory.Write32(addr, value + libsre);
|
||||
}
|
||||
else if (flag == 0x10000000001ull)
|
||||
{
|
||||
addr = addr + libsre;
|
||||
u32 value = Memory.Read32(addr);
|
||||
assert(value == Memory.Read64(i + 16) + seg2);
|
||||
Memory.Write32(addr, value + libsre);
|
||||
}
|
||||
else if (flag == 1)
|
||||
{
|
||||
addr = addr + libsre;
|
||||
u32 value = Memory.Read32(addr);
|
||||
assert(value == Memory.Read64(i + 16));
|
||||
Memory.Write32(addr, value + libsre);
|
||||
}
|
||||
else if (flag == 0x10000000004ull || flag == 0x10000000006ull)
|
||||
{
|
||||
// seems to be instruction modifiers for imports (done in other way in FIX_IMPORT)
|
||||
}
|
||||
else
|
||||
{
|
||||
cellSync->Notice("libsre: 0x%x : 0x%llx", i - libsre, flag);
|
||||
}
|
||||
}
|
||||
fix_relocs(cellSync, libsre, 0x31EE0, 0x3A4F0, 0x2DF00);
|
||||
});
|
||||
#endif
|
||||
}
|
||||
|
||||
#undef PRX_DEBUG
|
||||
}
|
@ -17,194 +17,354 @@ u32 libsync2_rtoc;
|
||||
|
||||
int _cellSync2MutexAttributeInitialize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x16A0, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2MutexEstimateBufferSize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0xC3C, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2MutexInitialize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x1584, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2MutexFinalize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x142C, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2MutexLock()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x1734, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2MutexTryLock()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x1A2C, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2MutexUnlock()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x186C, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int _cellSync2CondAttributeInitialize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x26DC, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2CondEstimateBufferSize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x1B90, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2CondInitialize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x25DC, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2CondFinalize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x23E0, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2CondWait()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x283C, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2CondSignal()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2768, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2CondSignalAll()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2910, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int _cellSync2SemaphoreAttributeInitialize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x5644, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2SemaphoreEstimateBufferSize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4AC4, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2SemaphoreInitialize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x54E0, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2SemaphoreFinalize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x52F0, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2SemaphoreAcquire()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x57A4, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2SemaphoreTryAcquire()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x56D8, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2SemaphoreRelease()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x5870, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2SemaphoreGetCount()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4B4C, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int _cellSync2QueueAttributeInitialize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x3C5C, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2QueueEstimateBufferSize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2A98, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2QueueInitialize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x3F98, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2QueueFinalize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x3C28, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2QueuePush()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x478C, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2QueueTryPush()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4680, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2QueuePop()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4974, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2QueueTryPop()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x4880, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int cellSync2QueueGetSize()
|
||||
{
|
||||
#ifdef PRX_DEBUG
|
||||
cellSync2->Warning("%s()", __FUNCTION__);
|
||||
return GetCurrentPPUThread().FastCall2(libsync2 + 0x2C00, libsync2_rtoc);
|
||||
#else
|
||||
UNIMPLEMENTED_FUNC(cellSync2);
|
||||
return CELL_OK;
|
||||
#endif
|
||||
}
|
||||
|
||||
int 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()
|
||||
@ -246,5 +406,33 @@ void cellSync2_init()
|
||||
cellSync2->AddFunc(0xf0e1471c, cellSync2QueueGetDepth);
|
||||
|
||||
#ifdef PRX_DEBUG
|
||||
CallAfter([]()
|
||||
{
|
||||
libsync2 = Memory.PRXMem.AllocAlign(sizeof(libsync2_data), 4096);
|
||||
memcpy(Memory + 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(cellSync2, cellSpursJobQueueSendSignal , libsync2 + 0x6210); // !
|
||||
FIX_IMPORT(cellSync2, cellFiberPpuUtilWorkerControlSendSignal , libsync2 + 0x6230); // !
|
||||
FIX_IMPORT(cellSync2, cellFiberPpuSelf , libsync2 + 0x6250); // !
|
||||
FIX_IMPORT(cellSync2, 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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user