rpcsx/rpcs3/Emu/PSP2/Modules/sceUlt.cpp

447 lines
12 KiB
C++
Raw Normal View History

#include "stdafx.h"
#include "Emu/System.h"
2016-05-13 12:17:26 +02:00
#include "Emu/PSP2/ARMv7Module.h"
2015-06-21 01:04:01 +02:00
#include "sceUlt.h"
2015-01-30 18:19:11 +01:00
2017-05-13 20:30:37 +02:00
logs::channel sceUlt("sceUlt");
2016-02-01 22:53:16 +01:00
2015-01-30 18:19:11 +01:00
// Functions
2015-06-21 01:04:01 +02:00
s32 _sceUltWaitingQueueResourcePoolOptParamInitialize(vm::ptr<SceUltWaitingQueueResourcePoolOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
u32 sceUltWaitingQueueResourcePoolGetWorkAreaSize(u32 numThreads, u32 numSyncObjects)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltWaitingQueueResourcePoolCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltWaitingQueueResourcePool> pool,
vm::cptr<char> name,
2015-01-30 18:19:11 +01:00
u32 numThreads,
u32 numSyncObjects,
2015-06-21 01:04:01 +02:00
vm::ptr<void> workArea,
vm::cptr<SceUltWaitingQueueResourcePoolOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltWaitingQueueResourcePoolDestroy(vm::ptr<SceUltWaitingQueueResourcePool> pool)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 _sceUltQueueDataResourcePoolOptParamInitialize(vm::ptr<SceUltQueueDataResourcePoolOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
u32 sceUltQueueDataResourcePoolGetWorkAreaSize(u32 numData, u32 dataSize, u32 numQueueObject)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltQueueDataResourcePoolCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltQueueDataResourcePool> pool,
vm::cptr<char> name,
2015-01-30 18:19:11 +01:00
u32 numData,
u32 dataSize,
u32 numQueueObject,
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltWaitingQueueResourcePool> waitingQueueResourcePool,
vm::ptr<void> workArea,
vm::cptr<SceUltQueueDataResourcePoolOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltQueueDataResourcePoolDestroy(vm::ptr<SceUltQueueDataResourcePool> pool)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
u32 sceUltMutexGetStandaloneWorkAreaSize(u32 waitingQueueDepth, u32 numConditionVariable)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 _sceUltMutexOptParamInitialize(vm::ptr<SceUltMutexOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltMutexCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltMutex> mutex,
vm::cptr<char> name,
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltWaitingQueueResourcePool> waitingQueueResourcePool,
vm::cptr<SceUltMutexOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltMutexCreateStandalone(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltMutex> mutex,
vm::cptr<char> name,
2015-01-30 18:19:11 +01:00
u32 numConditionVariable,
u32 maxNumThreads,
2015-06-21 01:04:01 +02:00
vm::ptr<void> workArea,
vm::cptr<SceUltMutexOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltMutexLock(vm::ptr<SceUltMutex> mutex)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltMutexTryLock(vm::ptr<SceUltMutex> mutex)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltMutexUnlock(vm::ptr<SceUltMutex> mutex)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltMutexDestroy(vm::ptr<SceUltMutex> mutex)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 _sceUltConditionVariableOptParamInitialize(vm::ptr<SceUltConditionVariableOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltConditionVariableCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltConditionVariable> conditionVariable,
vm::cptr<char> name,
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltMutex> mutex,
vm::cptr<SceUltConditionVariableOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltConditionVariableSignal(vm::ptr<SceUltConditionVariable> conditionVariable)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltConditionVariableSignalAll(vm::ptr<SceUltConditionVariable> conditionVariable)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltConditionVariableWait(vm::ptr<SceUltConditionVariable> conditionVariable)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltConditionVariableDestroy(vm::ptr<SceUltConditionVariable> conditionVariable)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 _sceUltQueueOptParamInitialize(vm::ptr<SceUltQueueOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
u32 sceUltQueueGetStandaloneWorkAreaSize(u32 queueDepth,
u32 dataSize,
u32 waitingQueueLength)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltQueueCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltQueue> queue,
vm::cptr<char> _name,
2015-01-30 18:19:11 +01:00
u32 dataSize,
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltWaitingQueueResourcePool> resourcePool,
vm::ptr<SceUltQueueDataResourcePool> queueResourcePool,
vm::cptr<SceUltQueueOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltQueueCreateStandalone(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltQueue> queue,
vm::cptr<char> name,
2015-01-30 18:19:11 +01:00
u32 queueDepth,
u32 dataSize,
u32 waitingQueueLength,
2015-06-21 01:04:01 +02:00
vm::ptr<void> workArea,
vm::cptr<SceUltQueueOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 sceUltQueuePush(vm::ptr<SceUltQueue> queue, vm::cptr<void> data)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 sceUltQueueTryPush(vm::ptr<SceUltQueue> queue, vm::cptr<void> data)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltQueuePop(vm::ptr<SceUltQueue> queue, vm::ptr<void> data)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltQueueTryPop(vm::ptr<SceUltQueue> queue, vm::ptr<void> data)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltQueueDestroy(vm::ptr<SceUltQueue> queue)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 _sceUltReaderWriterLockOptParamInitialize(vm::ptr<SceUltReaderWriterLockOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltReaderWriterLockCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltReaderWriterLock> rwlock,
vm::cptr<char> name,
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltWaitingQueueResourcePool> waitingQueueResourcePool,
vm::cptr<SceUltReaderWriterLockOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltReaderWriterLockCreateStandalone(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltReaderWriterLock> rwlock,
vm::cptr<char> name,
2015-01-30 18:19:11 +01:00
u32 waitingQueueDepth,
2015-06-21 01:04:01 +02:00
vm::ptr<void> workArea,
vm::cptr<SceUltReaderWriterLockOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
u32 sceUltReaderWriterLockGetStandaloneWorkAreaSize(u32 waitingQueueDepth)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltReaderWriterLockLockRead(vm::ptr<SceUltReaderWriterLock> rwlock)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltReaderWriterLockTryLockRead(vm::ptr<SceUltReaderWriterLock> rwlock)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltReaderWriterLockUnlockRead(vm::ptr<SceUltReaderWriterLock> rwlock)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltReaderWriterLockLockWrite(vm::ptr<SceUltReaderWriterLock> rwlock)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltReaderWriterLockTryLockWrite(vm::ptr<SceUltReaderWriterLock> rwlock)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltReaderWriterLockUnlockWrite(vm::ptr<SceUltReaderWriterLock> rwlock)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltReaderWriterLockDestroy(vm::ptr<SceUltReaderWriterLock> rwlock)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 _sceUltSemaphoreOptParamInitialize(vm::ptr<SceUltSemaphoreOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltSemaphoreCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltSemaphore> semaphore,
vm::cptr<char> name,
2015-01-30 18:19:11 +01:00
s32 numInitialResource,
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltWaitingQueueResourcePool> waitingQueueResourcePool,
vm::cptr<SceUltSemaphoreOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltSemaphoreAcquire(vm::ptr<SceUltSemaphore> semaphore, s32 numResource)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltSemaphoreTryAcquire(vm::ptr<SceUltSemaphore> semaphore, s32 numResource)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltSemaphoreRelease(vm::ptr<SceUltSemaphore> semaphore, s32 numResource)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltSemaphoreDestroy(vm::ptr<SceUltSemaphore> semaphore)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 _sceUltUlthreadRuntimeOptParamInitialize(vm::ptr<SceUltUlthreadRuntimeOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
u32 sceUltUlthreadRuntimeGetWorkAreaSize(u32 numMaxUlthread, u32 numWorkerThread)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltUlthreadRuntimeCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltUlthreadRuntime> runtime,
vm::cptr<char> name,
2015-01-30 18:19:11 +01:00
u32 numMaxUlthread,
u32 numWorkerThread,
2015-06-21 01:04:01 +02:00
vm::ptr<void> workArea,
vm::cptr<SceUltUlthreadRuntimeOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltUlthreadRuntimeDestroy(vm::ptr<SceUltUlthreadRuntime> runtime)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 _sceUltUlthreadOptParamInitialize(vm::ptr<SceUltUlthreadOptParam> optParam, u32 buildVersion)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 _sceUltUlthreadCreate(
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltUlthread> ulthread,
vm::cptr<char> name,
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltUlthreadEntry> entry,
2015-01-30 18:19:11 +01:00
u32 arg,
2015-06-21 01:04:01 +02:00
vm::ptr<void> context,
2015-01-30 18:19:11 +01:00
u32 sizeContext,
2015-06-21 01:04:01 +02:00
vm::ptr<SceUltUlthreadRuntime> runtime,
vm::cptr<SceUltUlthreadOptParam> optParam,
2015-01-30 18:19:11 +01:00
u32 buildVersion)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 sceUltUlthreadYield()
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
s32 sceUltUlthreadExit(s32 status)
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltUlthreadJoin(vm::ptr<SceUltUlthread> ulthread, vm::ptr<s32> status)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltUlthreadTryJoin(vm::ptr<SceUltUlthread> ulthread, vm::ptr<s32> status)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2015-06-21 01:04:01 +02:00
s32 sceUltUlthreadGetSelf(vm::pptr<SceUltUlthread> ulthread)
2015-01-30 18:19:11 +01:00
{
fmt::throw_exception("Unimplemented" HERE);
2015-01-30 18:19:11 +01:00
}
2016-02-01 22:53:16 +01:00
#define REG_FUNC(nid, name) REG_FNID(SceUlt, nid, name)
2016-02-01 22:53:16 +01:00
DECLARE(arm_module_manager::SceUlt)("SceUlt", []()
{
2015-01-30 18:19:11 +01:00
REG_FUNC(0xEF094E35, _sceUltWaitingQueueResourcePoolOptParamInitialize);
REG_FUNC(0x644DA029, sceUltWaitingQueueResourcePoolGetWorkAreaSize);
REG_FUNC(0x62F9493E, _sceUltWaitingQueueResourcePoolCreate);
REG_FUNC(0xC9E96714, sceUltWaitingQueueResourcePoolDestroy);
REG_FUNC(0x8A4F88A2, _sceUltQueueDataResourcePoolOptParamInitialize);
REG_FUNC(0xECDA7FEE, sceUltQueueDataResourcePoolGetWorkAreaSize);
REG_FUNC(0x40856827, _sceUltQueueDataResourcePoolCreate);
REG_FUNC(0x2B8D33F1, sceUltQueueDataResourcePoolDestroy);
REG_FUNC(0x24D87E05, _sceUltMutexOptParamInitialize);
REG_FUNC(0x5AFEC7A1, _sceUltMutexCreate);
REG_FUNC(0x001EAC8A, sceUltMutexLock);
REG_FUNC(0xE5936A69, sceUltMutexTryLock);
REG_FUNC(0x897C9097, sceUltMutexUnlock);
REG_FUNC(0xEEBD9052, sceUltMutexDestroy);
REG_FUNC(0x0603FCC1, _sceUltConditionVariableOptParamInitialize);
REG_FUNC(0xD76A156C, _sceUltConditionVariableCreate);
REG_FUNC(0x9FE7CB9F, sceUltConditionVariableSignal);
REG_FUNC(0xEBB6FC1E, sceUltConditionVariableSignalAll);
REG_FUNC(0x2CD0F57C, sceUltConditionVariableWait);
REG_FUNC(0x53420ED2, sceUltConditionVariableDestroy);
REG_FUNC(0xF7A83023, _sceUltQueueOptParamInitialize);
REG_FUNC(0x14DA1BB4, _sceUltQueueCreate);
REG_FUNC(0xA7E78FF9, sceUltQueuePush);
REG_FUNC(0x6D356B29, sceUltQueueTryPush);
REG_FUNC(0x1AD58A53, sceUltQueuePop);
REG_FUNC(0x2A1A8EA6, sceUltQueueTryPop);
REG_FUNC(0xF37862DE, sceUltQueueDestroy);
REG_FUNC(0xD8334A1F, _sceUltReaderWriterLockOptParamInitialize);
REG_FUNC(0x2FB0EB32, _sceUltReaderWriterLockCreate);
REG_FUNC(0x9AD07630, sceUltReaderWriterLockLockRead);
REG_FUNC(0x2629C055, sceUltReaderWriterLockTryLockRead);
REG_FUNC(0x218D4743, sceUltReaderWriterLockUnlockRead);
REG_FUNC(0xF5F63E2C, sceUltReaderWriterLockLockWrite);
REG_FUNC(0x944FB222, sceUltReaderWriterLockTryLockWrite);
REG_FUNC(0x2A5741F5, sceUltReaderWriterLockUnlockWrite);
REG_FUNC(0xB1FEB79B, sceUltReaderWriterLockDestroy);
REG_FUNC(0x8E31B9FE, _sceUltSemaphoreOptParamInitialize);
REG_FUNC(0xDD59562C, _sceUltSemaphoreCreate);
REG_FUNC(0xF220D3AE, sceUltSemaphoreAcquire);
REG_FUNC(0xAF15606D, sceUltSemaphoreTryAcquire);
REG_FUNC(0x65376E2D, sceUltSemaphoreRelease);
REG_FUNC(0x8EC57420, sceUltSemaphoreDestroy);
REG_FUNC(0x8486DDE6, _sceUltUlthreadRuntimeOptParamInitialize);
REG_FUNC(0x5435C586, sceUltUlthreadRuntimeGetWorkAreaSize);
REG_FUNC(0x86DDA3AE, _sceUltUlthreadRuntimeCreate);
REG_FUNC(0x4E9A745C, sceUltUlthreadRuntimeDestroy);
REG_FUNC(0x7F373376, _sceUltUlthreadOptParamInitialize);
REG_FUNC(0xB1290375, _sceUltUlthreadCreate);
REG_FUNC(0xCAD57BAD, sceUltUlthreadYield);
REG_FUNC(0x1E401DF8, sceUltUlthreadExit);
REG_FUNC(0x63483381, sceUltUlthreadJoin);
REG_FUNC(0xB4CF88AC, sceUltUlthreadTryJoin);
REG_FUNC(0xA798C5D7, sceUltUlthreadGetSelf);
});