mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-26 04:32:35 +01:00
sceLibm, sceLibKernel drafts
This commit is contained in:
parent
c5858de567
commit
7a2cd15173
382
rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp
Normal file
382
rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp
Normal file
@ -0,0 +1,382 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
#include "Emu/System.h"
|
||||||
|
#include "Emu/Memory/Memory.h"
|
||||||
|
#include "Emu/ARMv7/PSVFuncList.h"
|
||||||
|
|
||||||
|
extern psv_log_base& sceLibKernel;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define REG_FUNC(nid, name) reg_psv_func(nid, module, #name, &name)
|
||||||
|
|
||||||
|
psv_log_base& sceLibKernel = []() -> psv_log_base&
|
||||||
|
{
|
||||||
|
psv_log_base* module = new psv_log_base("sceLibKernel");
|
||||||
|
|
||||||
|
//REG_FUNC(0x23EAA62, sceKernelPuts);
|
||||||
|
//REG_FUNC(0xB0335388, sceClibToupper);
|
||||||
|
//REG_FUNC(0x4C5471BC, sceClibTolower);
|
||||||
|
//REG_FUNC(0xD8EBBB7E, sceClibLookCtypeTable);
|
||||||
|
//REG_FUNC(0x20EC3210, sceClibGetCtypeTable);
|
||||||
|
//REG_FUNC(0x407D6153, sceClibMemchr);
|
||||||
|
//REG_FUNC(0x9CC2BFDF, sceClibMemcmp);
|
||||||
|
//REG_FUNC(0x14E9DBD7, sceClibMemcpy);
|
||||||
|
//REG_FUNC(0x736753C8, sceClibMemmove);
|
||||||
|
//REG_FUNC(0x632980D7, sceClibMemset);
|
||||||
|
//REG_FUNC(0xFA26BC62, sceClibPrintf);
|
||||||
|
//REG_FUNC(0x5EA3B6CE, sceClibVprintf);
|
||||||
|
//REG_FUNC(0x8CBA03D5, sceClibSnprintf);
|
||||||
|
//REG_FUNC(0xFA6BE467, sceClibVsnprintf);
|
||||||
|
//REG_FUNC(0xA2FB4D9D, sceClibStrcmp);
|
||||||
|
//REG_FUNC(0x70CBC2D5, sceClibStrlcat);
|
||||||
|
//REG_FUNC(0x2CDFCD1C, sceClibStrlcpy);
|
||||||
|
//REG_FUNC(0xA37E6383, sceClibStrncat);
|
||||||
|
//REG_FUNC(0x660D1F6D, sceClibStrncmp);
|
||||||
|
//REG_FUNC(0xC458D60A, sceClibStrncpy);
|
||||||
|
//REG_FUNC(0xAC595E68, sceClibStrnlen);
|
||||||
|
//REG_FUNC(0x614076B7, sceClibStrchr);
|
||||||
|
//REG_FUNC(0x6E728AAE, sceClibStrrchr);
|
||||||
|
//REG_FUNC(0xE265498B, sceClibStrstr);
|
||||||
|
//REG_FUNC(0xB54C0BE4, sceClibStrncasecmp);
|
||||||
|
//REG_FUNC(0x2F2C6046, sceClibAbort);
|
||||||
|
//REG_FUNC(0x2E581B88, sceClibStrtoll);
|
||||||
|
//REG_FUNC(0x3B9E301A, sceClibMspaceCreate);
|
||||||
|
//REG_FUNC(0xAE1A21EC, sceClibMspaceDestroy);
|
||||||
|
//REG_FUNC(0x86EF7680, sceClibMspaceMalloc);
|
||||||
|
//REG_FUNC(0x9C56B4D1, sceClibMspaceFree);
|
||||||
|
//REG_FUNC(0x678374AD, sceClibMspaceCalloc);
|
||||||
|
//REG_FUNC(0x3C847D57, sceClibMspaceMemalign);
|
||||||
|
//REG_FUNC(0x774891D6, sceClibMspaceRealloc);
|
||||||
|
//REG_FUNC(0x586AC68D, sceClibMspaceReallocalign);
|
||||||
|
//REG_FUNC(0x46A02279, sceClibMspaceMallocUsableSize);
|
||||||
|
//REG_FUNC(0x8CC1D38E, sceClibMspaceMallocStats);
|
||||||
|
//REG_FUNC(0x738E0322, sceClibMspaceMallocStatsFast);
|
||||||
|
//REG_FUNC(0xD1D59701, sceClibMspaceIsHeapEmpty);
|
||||||
|
//REG_FUNC(0xE960FDA2, sceKernelAtomicSet8);
|
||||||
|
//REG_FUNC(0x450BFECF, sceKernelAtomicSet16);
|
||||||
|
//REG_FUNC(0xB69DA09B, sceKernelAtomicSet32);
|
||||||
|
//REG_FUNC(0xC8A4339C, sceKernelAtomicSet64);
|
||||||
|
//REG_FUNC(0x27A2AAFA, sceKernelAtomicGetAndAdd8);
|
||||||
|
//REG_FUNC(0x5674DB0C, sceKernelAtomicGetAndAdd16);
|
||||||
|
//REG_FUNC(0x2611CB0B, sceKernelAtomicGetAndAdd32);
|
||||||
|
//REG_FUNC(0x63DAF37D, sceKernelAtomicGetAndAdd64);
|
||||||
|
//REG_FUNC(0x8F7BD940, sceKernelAtomicAddAndGet8);
|
||||||
|
//REG_FUNC(0x495C52EC, sceKernelAtomicAddAndGet16);
|
||||||
|
//REG_FUNC(0x2E84A93B, sceKernelAtomicAddAndGet32);
|
||||||
|
//REG_FUNC(0xB6CE9B9A, sceKernelAtomicAddAndGet64);
|
||||||
|
//REG_FUNC(0xCDF5DF67, sceKernelAtomicGetAndSub8);
|
||||||
|
//REG_FUNC(0xAC51979C, sceKernelAtomicGetAndSub16);
|
||||||
|
//REG_FUNC(0x115C516F, sceKernelAtomicGetAndSub32);
|
||||||
|
//REG_FUNC(0x4AE9C8E6, sceKernelAtomicGetAndSub64);
|
||||||
|
//REG_FUNC(0x99E1796E, sceKernelAtomicSubAndGet8);
|
||||||
|
//REG_FUNC(0xC26BBBB1, sceKernelAtomicSubAndGet16);
|
||||||
|
//REG_FUNC(0x1C9CD92, sceKernelAtomicSubAndGet32);
|
||||||
|
//REG_FUNC(0x9BB4A94B, sceKernelAtomicSubAndGet64);
|
||||||
|
//REG_FUNC(0x53DCA02B, sceKernelAtomicGetAndAnd8);
|
||||||
|
//REG_FUNC(0x7A0CB056, sceKernelAtomicGetAndAnd16);
|
||||||
|
//REG_FUNC(0x8266595, sceKernelAtomicGetAndAnd32);
|
||||||
|
//REG_FUNC(0x4828BC43, sceKernelAtomicGetAndAnd64);
|
||||||
|
//REG_FUNC(0x86B9170F, sceKernelAtomicAndAndGet8);
|
||||||
|
//REG_FUNC(0xF9890F7E, sceKernelAtomicAndAndGet16);
|
||||||
|
//REG_FUNC(0x6709D30C, sceKernelAtomicAndAndGet32);
|
||||||
|
//REG_FUNC(0xAED2B370, sceKernelAtomicAndAndGet64);
|
||||||
|
//REG_FUNC(0x107A68DF, sceKernelAtomicGetAndOr8);
|
||||||
|
//REG_FUNC(0x31E49E73, sceKernelAtomicGetAndOr16);
|
||||||
|
//REG_FUNC(0x984AD276, sceKernelAtomicGetAndOr32);
|
||||||
|
//REG_FUNC(0xC39186CD, sceKernelAtomicGetAndOr64);
|
||||||
|
//REG_FUNC(0x51693931, sceKernelAtomicOrAndGet8);
|
||||||
|
//REG_FUNC(0x8E248EBD, sceKernelAtomicOrAndGet16);
|
||||||
|
//REG_FUNC(0xC3B2F7F8, sceKernelAtomicOrAndGet32);
|
||||||
|
//REG_FUNC(0x809BBC7D, sceKernelAtomicOrAndGet64);
|
||||||
|
//REG_FUNC(0x7350B2DF, sceKernelAtomicGetAndXor8);
|
||||||
|
//REG_FUNC(0x6E2D0B9E, sceKernelAtomicGetAndXor16);
|
||||||
|
//REG_FUNC(0x38739E2F, sceKernelAtomicGetAndXor32);
|
||||||
|
//REG_FUNC(0x6A19BBE9, sceKernelAtomicGetAndXor64);
|
||||||
|
//REG_FUNC(0x634AF062, sceKernelAtomicXorAndGet8);
|
||||||
|
//REG_FUNC(0x6F524195, sceKernelAtomicXorAndGet16);
|
||||||
|
//REG_FUNC(0x46940704, sceKernelAtomicXorAndGet32);
|
||||||
|
//REG_FUNC(0xDDC6866E, sceKernelAtomicXorAndGet64);
|
||||||
|
//REG_FUNC(0x327DB4C0, sceKernelAtomicCompareAndSet8);
|
||||||
|
//REG_FUNC(0xE8C01236, sceKernelAtomicCompareAndSet16);
|
||||||
|
//REG_FUNC(0x1124A1D4, sceKernelAtomicCompareAndSet32);
|
||||||
|
//REG_FUNC(0x1EBDFCCD, sceKernelAtomicCompareAndSet64);
|
||||||
|
//REG_FUNC(0xD7D49E36, sceKernelAtomicClearMask8);
|
||||||
|
//REG_FUNC(0x5FE7DFF8, sceKernelAtomicClearMask16);
|
||||||
|
//REG_FUNC(0xE3DF0CB3, sceKernelAtomicClearMask32);
|
||||||
|
//REG_FUNC(0x953D118A, sceKernelAtomicClearMask64);
|
||||||
|
//REG_FUNC(0x7FD94393, sceKernelAtomicAddUnless8);
|
||||||
|
//REG_FUNC(0x1CF4AA4B, sceKernelAtomicAddUnless16);
|
||||||
|
//REG_FUNC(0x4B33FD3C, sceKernelAtomicAddUnless32);
|
||||||
|
//REG_FUNC(0xFFCE7438, sceKernelAtomicAddUnless64);
|
||||||
|
//REG_FUNC(0x9DABE6C3, sceKernelAtomicDecIfPositive8);
|
||||||
|
//REG_FUNC(0x323718FB, sceKernelAtomicDecIfPositive16);
|
||||||
|
//REG_FUNC(0xCA3294F1, sceKernelAtomicDecIfPositive32);
|
||||||
|
//REG_FUNC(0x8BE2A007, sceKernelAtomicDecIfPositive64);
|
||||||
|
//REG_FUNC(0xBBE82155, sceKernelLoadModule);
|
||||||
|
//REG_FUNC(0x2DCC4AFA, sceKernelLoadStartModule);
|
||||||
|
//REG_FUNC(0x702425D5, sceKernelStartModule);
|
||||||
|
//REG_FUNC(0x3B2CBA09, sceKernelStopModule);
|
||||||
|
//REG_FUNC(0x1987920E, sceKernelUnloadModule);
|
||||||
|
//REG_FUNC(0x2415F8A4, sceKernelStopUnloadModule);
|
||||||
|
//REG_FUNC(0x15E2A45D, sceKernelCallModuleExit);
|
||||||
|
//REG_FUNC(0xD11A5103, sceKernelGetModuleInfoByAddr);
|
||||||
|
//REG_FUNC(0x4F2D8B15, sceKernelOpenModule);
|
||||||
|
//REG_FUNC(0x657FA50E, sceKernelCloseModule);
|
||||||
|
//REG_FUNC(0x7595D9AA, sceKernelExitProcess);
|
||||||
|
//REG_FUNC(0x4C7AD128, sceKernelPowerLock);
|
||||||
|
//REG_FUNC(0xAF8E9C11, sceKernelPowerUnlock);
|
||||||
|
//REG_FUNC(0xB295EB61, sceKernelGetTLSAddr);
|
||||||
|
//REG_FUNC(0xFB972F9, sceKernelGetThreadId);
|
||||||
|
//REG_FUNC(0xA37A6057, sceKernelGetCurrentThreadVfpException);
|
||||||
|
//REG_FUNC(0xCA71EA2, sceKernelSendMsgPipe);
|
||||||
|
//REG_FUNC(0xA5CA74AC, sceKernelSendMsgPipeCB);
|
||||||
|
//REG_FUNC(0xDFC670E0, sceKernelTrySendMsgPipe);
|
||||||
|
//REG_FUNC(0x4E81DD5C, sceKernelReceiveMsgPipe);
|
||||||
|
//REG_FUNC(0x33AF829B, sceKernelReceiveMsgPipeCB);
|
||||||
|
//REG_FUNC(0x5615B006, sceKernelTryReceiveMsgPipe);
|
||||||
|
//REG_FUNC(0xA7819967, sceKernelLockLwMutex);
|
||||||
|
//REG_FUNC(0x6F9C4CC1, sceKernelLockLwMutexCB);
|
||||||
|
//REG_FUNC(0x9EF798C1, sceKernelTryLockLwMutex);
|
||||||
|
//REG_FUNC(0x499EA781, sceKernelUnlockLwMutex);
|
||||||
|
//REG_FUNC(0xF7D8F1FC, sceKernelGetLwMutexInfo);
|
||||||
|
//REG_FUNC(0xDDB395A9, sceKernelWaitThreadEnd);
|
||||||
|
//REG_FUNC(0xC54941ED, sceKernelWaitThreadEndCB);
|
||||||
|
//REG_FUNC(0xD5DC26C4, sceKernelGetThreadExitStatus);
|
||||||
|
//REG_FUNC(0x4373B548, __sce_aeabi_idiv0);
|
||||||
|
//REG_FUNC(0xFB235848, __sce_aeabi_ldiv0);
|
||||||
|
//REG_FUNC(0xF08DE149, sceKernelStartThread);
|
||||||
|
//REG_FUNC(0x58DDAC4F, sceKernelDeleteThread);
|
||||||
|
//REG_FUNC(0x5150577B, sceKernelChangeThreadCpuAffinityMask);
|
||||||
|
//REG_FUNC(0x8C57AC2A, sceKernelGetThreadCpuAffinityMask);
|
||||||
|
//REG_FUNC(0xDF7E6EDA, sceKernelChangeThreadPriority);
|
||||||
|
//REG_FUNC(0xBCB63B66, sceKernelGetThreadStackFreeSize);
|
||||||
|
//REG_FUNC(0x8D9C5461, sceKernelGetThreadInfo);
|
||||||
|
//REG_FUNC(0xD6B01013, sceKernelGetThreadRunStatus);
|
||||||
|
//REG_FUNC(0xE0241FAA, sceKernelGetSystemInfo);
|
||||||
|
//REG_FUNC(0xF994FE65, sceKernelGetThreadmgrUIDClass);
|
||||||
|
//REG_FUNC(0xB4DE10C7, sceKernelGetActiveCpuMask);
|
||||||
|
//REG_FUNC(0x2C1321A3, sceKernelChangeThreadVfpException);
|
||||||
|
//REG_FUNC(0x3849359A, sceKernelCreateCallback);
|
||||||
|
//REG_FUNC(0x88DD1BC8, sceKernelGetCallbackInfo);
|
||||||
|
//REG_FUNC(0x464559D3, sceKernelDeleteCallback);
|
||||||
|
//REG_FUNC(0xBD9C8F2B, sceKernelNotifyCallback);
|
||||||
|
//REG_FUNC(0x3137A687, sceKernelCancelCallback);
|
||||||
|
//REG_FUNC(0x76A2EF81, sceKernelGetCallbackCount);
|
||||||
|
//REG_FUNC(0xD4F75281, sceKernelRegisterCallbackToEvent);
|
||||||
|
//REG_FUNC(0x8D3940DF, sceKernelUnregisterCallbackFromEvent);
|
||||||
|
//REG_FUNC(0x2BD1E682, sceKernelUnregisterCallbackFromEventAll);
|
||||||
|
//REG_FUNC(0x120F03AF, sceKernelWaitEvent);
|
||||||
|
//REG_FUNC(0xA0490795, sceKernelWaitEventCB);
|
||||||
|
//REG_FUNC(0x241F3634, sceKernelPollEvent);
|
||||||
|
//REG_FUNC(0x603AB770, sceKernelCancelEvent);
|
||||||
|
//REG_FUNC(0x10586418, sceKernelWaitMultipleEvents);
|
||||||
|
//REG_FUNC(0x4263DBC9, sceKernelWaitMultipleEventsCB);
|
||||||
|
//REG_FUNC(0x8516D040, sceKernelCreateEventFlag);
|
||||||
|
//REG_FUNC(0x11FE9B8B, sceKernelDeleteEventFlag);
|
||||||
|
//REG_FUNC(0xE04EC73A, sceKernelOpenEventFlag);
|
||||||
|
//REG_FUNC(0x9C0B8285, sceKernelCloseEventFlag);
|
||||||
|
//REG_FUNC(0x83C0E2AF, sceKernelWaitEventFlag);
|
||||||
|
//REG_FUNC(0xE737B1DF, sceKernelWaitEventFlagCB);
|
||||||
|
//REG_FUNC(0x1FBB0FE1, sceKernelPollEventFlag);
|
||||||
|
//REG_FUNC(0x2A12D9B7, sceKernelCancelEventFlag);
|
||||||
|
//REG_FUNC(0x8BA4C0C1, sceKernelGetEventFlagInfo);
|
||||||
|
//REG_FUNC(0x9EF9C0C5, sceKernelSetEventFlag);
|
||||||
|
//REG_FUNC(0xD018793F, sceKernelClearEventFlag);
|
||||||
|
//REG_FUNC(0x297AA2AE, sceKernelCreateSema);
|
||||||
|
//REG_FUNC(0xC08F5BC5, sceKernelDeleteSema);
|
||||||
|
//REG_FUNC(0xB028AB78, sceKernelOpenSema);
|
||||||
|
//REG_FUNC(0x817707AB, sceKernelCloseSema);
|
||||||
|
//REG_FUNC(0xC7B834B, sceKernelWaitSema);
|
||||||
|
//REG_FUNC(0x174692B4, sceKernelWaitSemaCB);
|
||||||
|
//REG_FUNC(0x66D6BF05, sceKernelCancelSema);
|
||||||
|
//REG_FUNC(0x595D3FA6, sceKernelGetSemaInfo);
|
||||||
|
//REG_FUNC(0x3012A9C6, sceKernelPollSema);
|
||||||
|
//REG_FUNC(0x2053A496, sceKernelSignalSema);
|
||||||
|
//REG_FUNC(0xED53334A, sceKernelCreateMutex);
|
||||||
|
//REG_FUNC(0x12D11F65, sceKernelDeleteMutex);
|
||||||
|
//REG_FUNC(0x16B85235, sceKernelOpenMutex);
|
||||||
|
//REG_FUNC(0x43DDC9CC, sceKernelCloseMutex);
|
||||||
|
//REG_FUNC(0x1D8D7945, sceKernelLockMutex);
|
||||||
|
//REG_FUNC(0x2BDAA524, sceKernelLockMutexCB);
|
||||||
|
//REG_FUNC(0x2144890D, sceKernelCancelMutex);
|
||||||
|
//REG_FUNC(0x9A6C43CA, sceKernelGetMutexInfo);
|
||||||
|
//REG_FUNC(0xE5901FF9, sceKernelTryLockMutex);
|
||||||
|
//REG_FUNC(0x34746309, sceKernelUnlockMutex);
|
||||||
|
//REG_FUNC(0x50572FDA, sceKernelCreateCond);
|
||||||
|
//REG_FUNC(0xFD295414, sceKernelDeleteCond);
|
||||||
|
//REG_FUNC(0xCB2A73A9, sceKernelOpenCond);
|
||||||
|
//REG_FUNC(0x4FB91A89, sceKernelCloseCond);
|
||||||
|
//REG_FUNC(0xC88D44AD, sceKernelWaitCond);
|
||||||
|
//REG_FUNC(0x4CE42CE2, sceKernelWaitCondCB);
|
||||||
|
//REG_FUNC(0x6864DCE2, sceKernelGetCondInfo);
|
||||||
|
//REG_FUNC(0x10A4976F, sceKernelSignalCond);
|
||||||
|
//REG_FUNC(0x2EB86929, sceKernelSignalCondAll);
|
||||||
|
//REG_FUNC(0x87629E6, sceKernelSignalCondTo);
|
||||||
|
//REG_FUNC(0xA10C1C8, sceKernelCreateMsgPipe);
|
||||||
|
//REG_FUNC(0x69F6575D, sceKernelDeleteMsgPipe);
|
||||||
|
//REG_FUNC(0x230691DA, sceKernelOpenMsgPipe);
|
||||||
|
//REG_FUNC(0x7E5C0C16, sceKernelCloseMsgPipe);
|
||||||
|
//REG_FUNC(0x94D506F7, sceKernelSendMsgPipeVector);
|
||||||
|
//REG_FUNC(0x9C6F7F79, sceKernelSendMsgPipeVectorCB);
|
||||||
|
//REG_FUNC(0x60DB346F, sceKernelTrySendMsgPipeVector);
|
||||||
|
//REG_FUNC(0x9F899087, sceKernelReceiveMsgPipeVector);
|
||||||
|
//REG_FUNC(0xBE5B3E27, sceKernelReceiveMsgPipeVectorCB);
|
||||||
|
//REG_FUNC(0x86ECC0FF, sceKernelTryReceiveMsgPipeVector);
|
||||||
|
//REG_FUNC(0xEF14BA37, sceKernelCancelMsgPipe);
|
||||||
|
//REG_FUNC(0x4046D16B, sceKernelGetMsgPipeInfo);
|
||||||
|
//REG_FUNC(0xDA6EC8EF, sceKernelCreateLwMutex);
|
||||||
|
//REG_FUNC(0x244E76D2, sceKernelDeleteLwMutex);
|
||||||
|
//REG_FUNC(0x4846613D, sceKernelGetLwMutexInfoById);
|
||||||
|
//REG_FUNC(0x48C7EAE6, sceKernelCreateLwCond);
|
||||||
|
//REG_FUNC(0x721F6CB3, sceKernelDeleteLwCond);
|
||||||
|
//REG_FUNC(0xE1878282, sceKernelWaitLwCond);
|
||||||
|
//REG_FUNC(0x8FA54B07, sceKernelWaitLwCondCB);
|
||||||
|
//REG_FUNC(0x3AC63B9A, sceKernelSignalLwCond);
|
||||||
|
//REG_FUNC(0xE5241A0C, sceKernelSignalLwCondAll);
|
||||||
|
//REG_FUNC(0xFC1A48EB, sceKernelSignalLwCondTo);
|
||||||
|
//REG_FUNC(0xE4DF36A0, sceKernelGetLwCondInfo);
|
||||||
|
//REG_FUNC(0x971F1DE8, sceKernelGetLwCondInfoById);
|
||||||
|
//REG_FUNC(0x2255B2A5, sceKernelCreateTimer);
|
||||||
|
//REG_FUNC(0x746F3290, sceKernelDeleteTimer);
|
||||||
|
//REG_FUNC(0x2F3D35A3, sceKernelOpenTimer);
|
||||||
|
//REG_FUNC(0x17283DE6, sceKernelCloseTimer);
|
||||||
|
//REG_FUNC(0x1478249B, sceKernelStartTimer);
|
||||||
|
//REG_FUNC(0x75B1329, sceKernelStopTimer);
|
||||||
|
//REG_FUNC(0x1F59E04D, sceKernelGetTimerBase);
|
||||||
|
//REG_FUNC(0x3223CCD1, sceKernelGetTimerBaseWide);
|
||||||
|
//REG_FUNC(0x381DC300, sceKernelGetTimerTime);
|
||||||
|
//REG_FUNC(0x53C5D833, sceKernelGetTimerTimeWide);
|
||||||
|
//REG_FUNC(0xFFAD717F, sceKernelSetTimerTime);
|
||||||
|
//REG_FUNC(0xAF67678B, sceKernelSetTimerTimeWide);
|
||||||
|
//REG_FUNC(0x621D293B, sceKernelSetTimerEvent);
|
||||||
|
//REG_FUNC(0x9CCF768C, sceKernelCancelTimer);
|
||||||
|
//REG_FUNC(0x7E35E10A, sceKernelGetTimerInfo);
|
||||||
|
//REG_FUNC(0x8667951D, sceKernelCreateRWLock);
|
||||||
|
//REG_FUNC(0x3D750204, sceKernelDeleteRWLock);
|
||||||
|
//REG_FUNC(0xBA4DAC9A, sceKernelOpenRWLock);
|
||||||
|
//REG_FUNC(0xA7F94E64, sceKernelCloseRWLock);
|
||||||
|
//REG_FUNC(0xFA670F0F, sceKernelLockReadRWLock);
|
||||||
|
//REG_FUNC(0x2D4A62B7, sceKernelLockReadRWLockCB);
|
||||||
|
//REG_FUNC(0x1B8586C0, sceKernelTryLockReadRWLock);
|
||||||
|
//REG_FUNC(0x675D10A8, sceKernelUnlockReadRWLock);
|
||||||
|
//REG_FUNC(0x67A187BB, sceKernelLockWriteRWLock);
|
||||||
|
//REG_FUNC(0xA4777082, sceKernelLockWriteRWLockCB);
|
||||||
|
//REG_FUNC(0x597D4607, sceKernelTryLockWriteRWLock);
|
||||||
|
//REG_FUNC(0xD9369DF2, sceKernelUnlockWriteRWLock);
|
||||||
|
//REG_FUNC(0x190CA94B, sceKernelCancelRWLock);
|
||||||
|
//REG_FUNC(0x79A573B, sceKernelGetRWLockInfo);
|
||||||
|
//REG_FUNC(0x8AF15B5F, sceKernelGetSystemTime);
|
||||||
|
//REG_FUNC(0x99B2BF15, sceKernelPMonThreadGetCounter);
|
||||||
|
//REG_FUNC(0x7C21C961, sceKernelPMonCpuGetCounter);
|
||||||
|
//REG_FUNC(0xADCA94E5, sceKernelWaitSignal);
|
||||||
|
//REG_FUNC(0x24460BB3, sceKernelWaitSignalCB);
|
||||||
|
//REG_FUNC(0x7BE9C4C8, sceKernelSendSignal);
|
||||||
|
//REG_FUNC(0xC5C11EE7, sceKernelCreateThread);
|
||||||
|
//REG_FUNC(0x6C60AC61, sceIoOpen);
|
||||||
|
//REG_FUNC(0xF5C6F098, sceIoClose);
|
||||||
|
//REG_FUNC(0x713523E1, sceIoRead);
|
||||||
|
//REG_FUNC(0x11FED231, sceIoWrite);
|
||||||
|
//REG_FUNC(0x99BA173E, sceIoLseek);
|
||||||
|
//REG_FUNC(0x5CC983AC, sceIoLseek32);
|
||||||
|
//REG_FUNC(0xE20ED0F3, sceIoRemove);
|
||||||
|
//REG_FUNC(0xF737E369, sceIoRename);
|
||||||
|
//REG_FUNC(0x9670D39F, sceIoMkdir);
|
||||||
|
//REG_FUNC(0xE9F91EC8, sceIoRmdir);
|
||||||
|
//REG_FUNC(0xA9283DD0, sceIoDopen);
|
||||||
|
//REG_FUNC(0x9DFF9C59, sceIoDclose);
|
||||||
|
//REG_FUNC(0x9C8B6624, sceIoDread);
|
||||||
|
//REG_FUNC(0xBCA5B623, sceIoGetstat);
|
||||||
|
//REG_FUNC(0x29482F7F, sceIoChstat);
|
||||||
|
//REG_FUNC(0x98ACED6D, sceIoSync);
|
||||||
|
//REG_FUNC(0x4B30CB2, sceIoDevctl);
|
||||||
|
//REG_FUNC(0x54ABACFA, sceIoIoctl);
|
||||||
|
//REG_FUNC(0x6A7EA9FD, sceIoOpenAsync);
|
||||||
|
//REG_FUNC(0x84201C9B, sceIoCloseAsync);
|
||||||
|
//REG_FUNC(0x7B3BE857, sceIoReadAsync);
|
||||||
|
//REG_FUNC(0x21329B20, sceIoWriteAsync);
|
||||||
|
//REG_FUNC(0xCAC5D672, sceIoLseekAsync);
|
||||||
|
//REG_FUNC(0x99C54B9, sceIoIoctlAsync);
|
||||||
|
//REG_FUNC(0x446A60AC, sceIoRemoveAsync);
|
||||||
|
//REG_FUNC(0x73FC184B, sceIoDopenAsync);
|
||||||
|
//REG_FUNC(0x4D0597D7, sceIoDcloseAsync);
|
||||||
|
//REG_FUNC(0xCE32490D, sceIoDreadAsync);
|
||||||
|
//REG_FUNC(0x8E5FCBB1, sceIoMkdirAsync);
|
||||||
|
//REG_FUNC(0x9694D00F, sceIoRmdirAsync);
|
||||||
|
//REG_FUNC(0xEE9857CD, sceIoRenameAsync);
|
||||||
|
//REG_FUNC(0x9739A5E2, sceIoChstatAsync);
|
||||||
|
//REG_FUNC(0x82B20B41, sceIoGetstatAsync);
|
||||||
|
//REG_FUNC(0x950F78EB, sceIoDevctlAsync);
|
||||||
|
//REG_FUNC(0xF7C7FBFE, sceIoSyncAsync);
|
||||||
|
//REG_FUNC(0xEC96EA71, sceIoCancel);
|
||||||
|
//REG_FUNC(0x857E0C71, sceIoComplete);
|
||||||
|
//REG_FUNC(0x52315AD7, sceIoPread);
|
||||||
|
//REG_FUNC(0x8FFFF5A8, sceIoPwrite);
|
||||||
|
//REG_FUNC(0xA010141E, sceIoPreadAsync);
|
||||||
|
//REG_FUNC(0xED25BEEF, sceIoPwriteAsync);
|
||||||
|
//REG_FUNC(0xA792C404, sceIoCompleteMultiple);
|
||||||
|
//REG_FUNC(0x894037E8, sceKernelBacktrace);
|
||||||
|
//REG_FUNC(0x20E2D4B7, sceKernelPrintBacktrace);
|
||||||
|
//REG_FUNC(0x963F4A99, sceSblACMgrIsGameProgram);
|
||||||
|
//REG_FUNC(0x261E2C34, sceKernelGetOpenPsId);
|
||||||
|
|
||||||
|
/* SceModulemgr */
|
||||||
|
//REG_FUNC(0x36585DAF, sceKernelGetModuleInfo);
|
||||||
|
//REG_FUNC(0x2EF2581F, sceKernelGetModuleList);
|
||||||
|
//REG_FUNC(0xF5798C7C, sceKernelGetModuleIdByAddr);
|
||||||
|
|
||||||
|
/* SceProcessmgr */
|
||||||
|
//REG_FUNC(0xCD248267, sceKernelGetCurrentProcess);
|
||||||
|
//REG_FUNC(0x2252890C, sceKernelPowerTick);
|
||||||
|
//REG_FUNC(0x9E45DA09, sceKernelLibcClock);
|
||||||
|
//REG_FUNC(0x39BE45, sceKernelLibcTime);
|
||||||
|
//REG_FUNC(0x4B879059, sceKernelLibcGettimeofday);
|
||||||
|
//REG_FUNC(0xC1727F59, sceKernelGetStdin);
|
||||||
|
//REG_FUNC(0xE5AA625C, sceKernelGetStdout);
|
||||||
|
//REG_FUNC(0xFA5E3ADA, sceKernelGetStderr);
|
||||||
|
//REG_FUNC(0xE6E9FCA3, sceKernelGetRemoteProcessTime);
|
||||||
|
//REG_FUNC(0xD37A8437, sceKernelGetProcessTime);
|
||||||
|
//REG_FUNC(0xF5D0D4C6, sceKernelGetProcessTimeLow);
|
||||||
|
//REG_FUNC(0x89DA0967, sceKernelGetProcessTimeWide);
|
||||||
|
//REG_FUNC(0x2BE3E066, sceKernelGetProcessParam);
|
||||||
|
|
||||||
|
/* SceStdio */
|
||||||
|
//REG_FUNC(0x54237407, sceKernelStdin);
|
||||||
|
//REG_FUNC(0x9033E9BD, sceKernelStdout);
|
||||||
|
//REG_FUNC(0x35EE7CF5, sceKernelStderr);
|
||||||
|
|
||||||
|
/* SceSysmem */
|
||||||
|
//REG_FUNC(0xB9D5EBDE, sceKernelAllocMemBlock);
|
||||||
|
//REG_FUNC(0xA91E15EE, sceKernelFreeMemBlock);
|
||||||
|
//REG_FUNC(0xB8EF5818, sceKernelGetMemBlockBase);
|
||||||
|
//REG_FUNC(0x3B29E0F5, sceKernelRemapMemBlock);
|
||||||
|
//REG_FUNC(0xA33B99D1, sceKernelFindMemBlockByAddr);
|
||||||
|
//REG_FUNC(0x4010AD65, sceKernelGetMemBlockInfoByAddr);
|
||||||
|
|
||||||
|
/* SceCpu */
|
||||||
|
//REG_FUNC(0x2704CFEE, sceKernelCpuId);
|
||||||
|
|
||||||
|
/* SceDipsw */
|
||||||
|
//REG_FUNC(0x1C783FB2, sceKernelCheckDipsw);
|
||||||
|
//REG_FUNC(0x817053D4, sceKernelSetDipsw);
|
||||||
|
//REG_FUNC(0x800EDCC1, sceKernelClearDipsw);
|
||||||
|
|
||||||
|
/* SceThreadmgr */
|
||||||
|
//REG_FUNC(0xC8A38E1, sceKernelExitThread);
|
||||||
|
//REG_FUNC(0x1D17DECF, sceKernelExitDeleteThread);
|
||||||
|
//REG_FUNC(0x4B675D05, sceKernelDelayThread);
|
||||||
|
//REG_FUNC(0x9C0180E1, sceKernelDelayThreadCB);
|
||||||
|
//REG_FUNC(0x1173F8, sceKernelChangeActiveCpuMask);
|
||||||
|
//REG_FUNC(0x1414F0B, sceKernelGetThreadCurrentPriority);
|
||||||
|
//REG_FUNC(0x751C9B7A, sceKernelChangeCurrentThreadAttr);
|
||||||
|
//REG_FUNC(0xD9BD74EB, sceKernelCheckWaitableStatus);
|
||||||
|
//REG_FUNC(0x9DCB4B7A, sceKernelGetProcessId);
|
||||||
|
//REG_FUNC(0xE53E41F6, sceKernelCheckCallback);
|
||||||
|
//REG_FUNC(0xF4EE4FA9, sceKernelGetSystemTimeWide);
|
||||||
|
//REG_FUNC(0x47F6DE49, sceKernelGetSystemTimeLow);
|
||||||
|
//REG_FUNC(0xC0FAF6A3, sceKernelCreateThreadForUser);
|
||||||
|
|
||||||
|
/* SceDebugLed */
|
||||||
|
//REG_FUNC(0x78E702D3, sceKernelSetGPO);
|
||||||
|
|
||||||
|
return *module;
|
||||||
|
}();
|
@ -10,12 +10,14 @@ namespace sce_libc_func
|
|||||||
void __cxa_atexit()
|
void __cxa_atexit()
|
||||||
{
|
{
|
||||||
sceLibc.Todo(__FUNCTION__);
|
sceLibc.Todo(__FUNCTION__);
|
||||||
|
Emu.Pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
void exit()
|
void exit()
|
||||||
{
|
{
|
||||||
sceLibc.Error("exit()");
|
sceLibc.Error("exit()");
|
||||||
Emu.Pause();
|
Emu.Pause();
|
||||||
|
|
||||||
sceLibc.Success("Process finished");
|
sceLibc.Success("Process finished");
|
||||||
CallAfter([]()
|
CallAfter([]()
|
||||||
{
|
{
|
||||||
@ -36,11 +38,11 @@ namespace sce_libc_func
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define REG_FUNC(nid, name) reg_psv_func(nid, module, #name, &sce_libc_func::name)
|
||||||
|
|
||||||
psv_log_base& sceLibc = []() -> psv_log_base&
|
psv_log_base& sceLibc = []() -> psv_log_base&
|
||||||
{
|
{
|
||||||
psv_log_base* module = new psv_log_base("sceLibc");
|
psv_log_base* module = new psv_log_base("SceLibc");
|
||||||
|
|
||||||
#define REG_FUNC(nid, name) reg_psv_func(nid, module, &sce_libc_func::name)
|
|
||||||
|
|
||||||
REG_FUNC(0x33b83b70, __cxa_atexit);
|
REG_FUNC(0x33b83b70, __cxa_atexit);
|
||||||
REG_FUNC(0x826bbbaf, exit);
|
REG_FUNC(0x826bbbaf, exit);
|
||||||
|
219
rpcs3/Emu/ARMv7/Modules/sceLibm.cpp
Normal file
219
rpcs3/Emu/ARMv7/Modules/sceLibm.cpp
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
#include "Emu/System.h"
|
||||||
|
#include "Emu/Memory/Memory.h"
|
||||||
|
#include "Emu/ARMv7/PSVFuncList.h"
|
||||||
|
|
||||||
|
extern psv_log_base& sceLibm;
|
||||||
|
|
||||||
|
namespace sce_libm_func
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#define REG_FUNC(nid, name) reg_psv_func(nid, module, #name, &sce_libm_func::name)
|
||||||
|
|
||||||
|
psv_log_base& sceLibm = []() -> psv_log_base&
|
||||||
|
{
|
||||||
|
psv_log_base* module = new psv_log_base("SceLibm");
|
||||||
|
|
||||||
|
//REG_FUNC(0xC73FE76D, _Exp);
|
||||||
|
//REG_FUNC(0xFF4EAE04, _FExp);
|
||||||
|
//REG_FUNC(0xB363D7D4, _LExp);
|
||||||
|
//REG_FUNC(0xD72B5ACB, acos);
|
||||||
|
//REG_FUNC(0x27EAB8C1, acosf);
|
||||||
|
//REG_FUNC(0x1C053D0F, acosh);
|
||||||
|
//REG_FUNC(0x568ECFB0, acoshf);
|
||||||
|
//REG_FUNC(0xD3D6D36E, acoshl);
|
||||||
|
//REG_FUNC(0x3210F395, acosl);
|
||||||
|
//REG_FUNC(0x4016B2E6, asin);
|
||||||
|
//REG_FUNC(0x3A3E5424, asinf);
|
||||||
|
//REG_FUNC(0x7C93F1DD, asinh);
|
||||||
|
//REG_FUNC(0x285AEDEA, asinhf);
|
||||||
|
//REG_FUNC(0x9496E15E, asinhl);
|
||||||
|
//REG_FUNC(0x1724A81D, asinl);
|
||||||
|
//REG_FUNC(0x516D9970, atan);
|
||||||
|
//REG_FUNC(0xC9BE3F05, atan2);
|
||||||
|
//REG_FUNC(0x4E09DD53, atan2f);
|
||||||
|
//REG_FUNC(0xCE325597, atan2l);
|
||||||
|
//REG_FUNC(0xD78FC94E, atanf);
|
||||||
|
//REG_FUNC(0x434BCE01, atanh);
|
||||||
|
//REG_FUNC(0xC7B0AFBA, atanhf);
|
||||||
|
//REG_FUNC(0x6A6881A6, atanhl);
|
||||||
|
//REG_FUNC(0xD423A4AB, atanl);
|
||||||
|
//REG_FUNC(0xACC0DC5A, cbrt);
|
||||||
|
//REG_FUNC(0xD1699F4D, cbrtf);
|
||||||
|
//REG_FUNC(0x342F9501, cbrtl);
|
||||||
|
//REG_FUNC(0x63F05BD6, ceil);
|
||||||
|
//REG_FUNC(0x6BBFEC89, ceilf);
|
||||||
|
//REG_FUNC(0x48082D81, ceill);
|
||||||
|
//REG_FUNC(0xB918D13, copysign);
|
||||||
|
//REG_FUNC(0x16EB9E63, copysignf);
|
||||||
|
//REG_FUNC(0x19DFC0AA, copysignl);
|
||||||
|
//REG_FUNC(0x61D0244, cos);
|
||||||
|
//REG_FUNC(0x127F8302, cosf);
|
||||||
|
//REG_FUNC(0x89B9BE1F, cosl);
|
||||||
|
//REG_FUNC(0x110195E7, cosh);
|
||||||
|
//REG_FUNC(0x61DE0770, coshf);
|
||||||
|
//REG_FUNC(0x7EADDC5E, coshl);
|
||||||
|
//REG_FUNC(0x4B84C012, _Cosh);
|
||||||
|
//REG_FUNC(0x15993458, erf);
|
||||||
|
//REG_FUNC(0x524AEBFE, erfc);
|
||||||
|
//REG_FUNC(0x301F113, erfcf);
|
||||||
|
//REG_FUNC(0xD4C92471, erfcl);
|
||||||
|
//REG_FUNC(0x41DD1AB8, erff);
|
||||||
|
//REG_FUNC(0xFD431619, erfl);
|
||||||
|
//REG_FUNC(0xEB027358, exp);
|
||||||
|
//REG_FUNC(0x9B18F38F, exp2);
|
||||||
|
//REG_FUNC(0x79415BD3, exp2f);
|
||||||
|
//REG_FUNC(0x40053307, exp2l);
|
||||||
|
//REG_FUNC(0x56473BC7, expf);
|
||||||
|
//REG_FUNC(0xA71A81AA, expl);
|
||||||
|
//REG_FUNC(0x2A97A75F, expm1);
|
||||||
|
//REG_FUNC(0x64131D7B, expm1f);
|
||||||
|
//REG_FUNC(0x8BF1866C, expm1l);
|
||||||
|
//REG_FUNC(0x3E672BE3, fabs);
|
||||||
|
//REG_FUNC(0x75348906, fabsf);
|
||||||
|
//REG_FUNC(0x3ECA514, fabsl);
|
||||||
|
//REG_FUNC(0xA278B20D, _FCosh);
|
||||||
|
//REG_FUNC(0xD6FD5A2E, fdim);
|
||||||
|
//REG_FUNC(0x8B6CC137, fdimf);
|
||||||
|
//REG_FUNC(0xE6988B7B, fdiml);
|
||||||
|
//REG_FUNC(0xD5BD8D5C, _FLog);
|
||||||
|
//REG_FUNC(0x22BB8237, floor);
|
||||||
|
//REG_FUNC(0xCD7C05BD, floorf);
|
||||||
|
//REG_FUNC(0xFDFA4558, floorl);
|
||||||
|
//REG_FUNC(0x1EACA585, fma);
|
||||||
|
//REG_FUNC(0xB61672A7, fmaf);
|
||||||
|
//REG_FUNC(0xBCF6EA7C, fmal);
|
||||||
|
//REG_FUNC(0xBE30CC1E, fmax);
|
||||||
|
//REG_FUNC(0x7004FA75, fmaxf);
|
||||||
|
//REG_FUNC(0xBF5AF69E, fmaxl);
|
||||||
|
//REG_FUNC(0x2ABBDFF7, fmin);
|
||||||
|
//REG_FUNC(0x7673CC1E, fminf);
|
||||||
|
//REG_FUNC(0xE2F5A0F0, fminl);
|
||||||
|
//REG_FUNC(0x798587E4, fmod);
|
||||||
|
//REG_FUNC(0x1CD8F88E, fmodf);
|
||||||
|
//REG_FUNC(0x986011B4, fmodl);
|
||||||
|
//REG_FUNC(0x59197427, frexp);
|
||||||
|
//REG_FUNC(0xA6879AC, frexpf);
|
||||||
|
//REG_FUNC(0x6DC8D877, frexpl);
|
||||||
|
//REG_FUNC(0x4A496BC0, _FSin);
|
||||||
|
//REG_FUNC(0x7FBB4C55, _FSinh);
|
||||||
|
//REG_FUNC(0x2D2CD795, hypot);
|
||||||
|
//REG_FUNC(0xA397B929, hypotf);
|
||||||
|
//REG_FUNC(0x5BFBEE8, hypotl);
|
||||||
|
//REG_FUNC(0x667EE864, ilogb);
|
||||||
|
//REG_FUNC(0x80050A43, ilogbf);
|
||||||
|
//REG_FUNC(0x91298DCA, ilogbl);
|
||||||
|
//REG_FUNC(0x197C9D5, _LCosh);
|
||||||
|
//REG_FUNC(0x56061B, ldexp);
|
||||||
|
//REG_FUNC(0xE61E016, ldexpf);
|
||||||
|
//REG_FUNC(0x8280A7B1, ldexpl);
|
||||||
|
//REG_FUNC(0x2480AA54, lgamma);
|
||||||
|
//REG_FUNC(0x2D9556D5, lgammaf);
|
||||||
|
//REG_FUNC(0xADEBD201, lgammal);
|
||||||
|
//REG_FUNC(0x5B05329D, _LLog);
|
||||||
|
//REG_FUNC(0x7B41AC38, llrint);
|
||||||
|
//REG_FUNC(0xC1F6135B, llrintf);
|
||||||
|
//REG_FUNC(0x80558247, llrintl);
|
||||||
|
//REG_FUNC(0xD1251A18, llround);
|
||||||
|
//REG_FUNC(0x4595A04, llroundf);
|
||||||
|
//REG_FUNC(0x9AB5C7AF, llroundl);
|
||||||
|
//REG_FUNC(0x6037C48F, log);
|
||||||
|
//REG_FUNC(0x811ED68B, logf);
|
||||||
|
//REG_FUNC(0xC6FFBCD6, logl);
|
||||||
|
//REG_FUNC(0x67E99979, _Log);
|
||||||
|
//REG_FUNC(0x2CBE04D7, log1p);
|
||||||
|
//REG_FUNC(0xF1D7C851, log1pf);
|
||||||
|
//REG_FUNC(0x3359152C, log1pl);
|
||||||
|
//REG_FUNC(0xCF65F098, log10);
|
||||||
|
//REG_FUNC(0xFD2A3464, log10f);
|
||||||
|
//REG_FUNC(0x3D7E7201, log10l);
|
||||||
|
//REG_FUNC(0x73AFEE5F, log2);
|
||||||
|
//REG_FUNC(0x4095DBDB, log2f);
|
||||||
|
//REG_FUNC(0x720021A9, log2l);
|
||||||
|
//REG_FUNC(0x5EAE8AD4, logb);
|
||||||
|
//REG_FUNC(0x25F51CE, logbf);
|
||||||
|
//REG_FUNC(0x86C4B75F, logbl);
|
||||||
|
//REG_FUNC(0x207307D0, lrint);
|
||||||
|
//REG_FUNC(0xDA903135, lrintf);
|
||||||
|
//REG_FUNC(0xE8C1F6F8, lrintl);
|
||||||
|
//REG_FUNC(0xD35AFD56, lround);
|
||||||
|
//REG_FUNC(0xA24C6453, lroundf);
|
||||||
|
//REG_FUNC(0x8B3ACA4E, lroundl);
|
||||||
|
//REG_FUNC(0xB397FE83, _LSin);
|
||||||
|
//REG_FUNC(0xF247EE99, _LSinh);
|
||||||
|
//REG_FUNC(0x1167B5D2, modf);
|
||||||
|
//REG_FUNC(0x5D7A7EB2, modff);
|
||||||
|
//REG_FUNC(0xD41D68F2, modfl);
|
||||||
|
//REG_FUNC(0xC3FCA1FA, nan);
|
||||||
|
//REG_FUNC(0xB4761D24, nanf);
|
||||||
|
//REG_FUNC(0xBFA96D93, nanl);
|
||||||
|
//REG_FUNC(0x877187C4, nearbyint);
|
||||||
|
//REG_FUNC(0xD56E78F6, nearbyintf);
|
||||||
|
//REG_FUNC(0x8DD794DC, nearbyintl);
|
||||||
|
//REG_FUNC(0xE1A3D449, nextafter);
|
||||||
|
//REG_FUNC(0xC8A94A33, nextafterf);
|
||||||
|
//REG_FUNC(0xEAAB2055, nextafterl);
|
||||||
|
//REG_FUNC(0x39E605E6, nexttoward);
|
||||||
|
//REG_FUNC(0xDD652D4E, nexttowardf);
|
||||||
|
//REG_FUNC(0x41E6AEA4, nexttowardl);
|
||||||
|
//REG_FUNC(0x640DB443, pow);
|
||||||
|
//REG_FUNC(0x6DEA815A, powf);
|
||||||
|
//REG_FUNC(0x96328F3D, powl);
|
||||||
|
//REG_FUNC(0xE4D6117F, remainder);
|
||||||
|
//REG_FUNC(0xE6BB3DCF, remainderf);
|
||||||
|
//REG_FUNC(0x354E568E, remainderl);
|
||||||
|
//REG_FUNC(0x52337926, remquo);
|
||||||
|
//REG_FUNC(0xD8F6B5D3, remquof);
|
||||||
|
//REG_FUNC(0xBB353F24, remquol);
|
||||||
|
//REG_FUNC(0x943F218F, rint);
|
||||||
|
//REG_FUNC(0xCACE5A19, rintf);
|
||||||
|
//REG_FUNC(0xE3C097E0, rintl);
|
||||||
|
//REG_FUNC(0x64D37996, round);
|
||||||
|
//REG_FUNC(0xAAF31896, roundf);
|
||||||
|
//REG_FUNC(0x9AB1B1B1, roundl);
|
||||||
|
//REG_FUNC(0x8F8CF628, scalbln);
|
||||||
|
//REG_FUNC(0xDEB0A2D0, scalblnf);
|
||||||
|
//REG_FUNC(0x2113921E, scalblnl);
|
||||||
|
//REG_FUNC(0x569758D0, scalbn);
|
||||||
|
//REG_FUNC(0x78F70588, scalbnf);
|
||||||
|
//REG_FUNC(0x777C7463, scalbnl);
|
||||||
|
//REG_FUNC(0xB5519FF0, sin);
|
||||||
|
//REG_FUNC(0x7F00B590, sinf);
|
||||||
|
//REG_FUNC(0x3294447C, sinl);
|
||||||
|
//REG_FUNC(0xD92A7F85, _Sin);
|
||||||
|
//REG_FUNC(0xF2C0AF49, sinh);
|
||||||
|
//REG_FUNC(0xB5838E7D, sinhf);
|
||||||
|
//REG_FUNC(0x4B91F2E6, sinhl);
|
||||||
|
//REG_FUNC(0x40E42E8E, _Sinh);
|
||||||
|
//REG_FUNC(0xDA227FCC, sqrt);
|
||||||
|
//REG_FUNC(0xBA3F6937, sqrtf);
|
||||||
|
//REG_FUNC(0xC1343477, sqrtl);
|
||||||
|
//REG_FUNC(0x5BAE40B0, tan);
|
||||||
|
//REG_FUNC(0xA98E941B, tanf);
|
||||||
|
//REG_FUNC(0x26CD78CA, tanh);
|
||||||
|
//REG_FUNC(0xC4847578, tanhf);
|
||||||
|
//REG_FUNC(0x14F2BEA1, tanhl);
|
||||||
|
//REG_FUNC(0xDC742A5E, tanl);
|
||||||
|
//REG_FUNC(0x3A7FE686, tgamma);
|
||||||
|
//REG_FUNC(0xE6067AC0, tgammaf);
|
||||||
|
//REG_FUNC(0x2949109F, tgammal);
|
||||||
|
//REG_FUNC(0x212323E, trunc);
|
||||||
|
//REG_FUNC(0x90B899F, truncf);
|
||||||
|
//REG_FUNC(0xBC0F1B1A, truncl);
|
||||||
|
//REG_FUNC(0x98BBDAE0, _Dclass);
|
||||||
|
//REG_FUNC(0xBD8EF217, _FDclass);
|
||||||
|
//REG_FUNC(0x314CCE54, _LDclass);
|
||||||
|
//REG_FUNC(0xC5B9C8D8, _FDtest);
|
||||||
|
//REG_FUNC(0x27A55170, _Dtest);
|
||||||
|
//REG_FUNC(0x8DAE8767, _LDtest);
|
||||||
|
//REG_FUNC(0x622CBFEE, _Fpcomp);
|
||||||
|
//REG_FUNC(0x9CD4CEFE, _FFpcomp);
|
||||||
|
//REG_FUNC(0x18F43CD0, _LFpcomp);
|
||||||
|
//REG_FUNC(0x5BD0F71C, _Dsign);
|
||||||
|
//REG_FUNC(0xC4F7E42C, _FDsign);
|
||||||
|
//REG_FUNC(0x1DF73D2B, _LDsign);
|
||||||
|
|
||||||
|
return *module;
|
||||||
|
}();
|
@ -10,16 +10,31 @@ namespace sce_libstdcxx_func
|
|||||||
void __aeabi_unwind_cpp_pr0()
|
void __aeabi_unwind_cpp_pr0()
|
||||||
{
|
{
|
||||||
sceLibstdcxx.Todo(__FUNCTION__);
|
sceLibstdcxx.Todo(__FUNCTION__);
|
||||||
|
Emu.Pause();
|
||||||
|
}
|
||||||
|
|
||||||
|
void __aeabi_unwind_cpp_pr1()
|
||||||
|
{
|
||||||
|
sceLibstdcxx.Todo(__FUNCTION__);
|
||||||
|
Emu.Pause();
|
||||||
|
}
|
||||||
|
|
||||||
|
void __aeabi_unwind_cpp_pr2()
|
||||||
|
{
|
||||||
|
sceLibstdcxx.Todo(__FUNCTION__);
|
||||||
|
Emu.Pause();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define REG_FUNC(nid, name) reg_psv_func(nid, module, #name, &sce_libstdcxx_func::name)
|
||||||
|
|
||||||
psv_log_base& sceLibstdcxx = []() -> psv_log_base&
|
psv_log_base& sceLibstdcxx = []() -> psv_log_base&
|
||||||
{
|
{
|
||||||
psv_log_base* module = new psv_log_base("sceLibstdcxx");
|
psv_log_base* module = new psv_log_base("SceLibstdcxx");
|
||||||
|
|
||||||
#define REG_FUNC(nid, name) reg_psv_func(nid, module, &sce_libstdcxx_func::name)
|
|
||||||
|
|
||||||
REG_FUNC(0x173E7421, __aeabi_unwind_cpp_pr0);
|
REG_FUNC(0x173E7421, __aeabi_unwind_cpp_pr0);
|
||||||
|
REG_FUNC(0x3C78DDE3, __aeabi_unwind_cpp_pr1);
|
||||||
|
REG_FUNC(0xF95BDD36, __aeabi_unwind_cpp_pr2);
|
||||||
|
|
||||||
//REG_FUNC(0x52B0C625, std::bad_typeid::what() const);
|
//REG_FUNC(0x52B0C625, std::bad_typeid::what() const);
|
||||||
//REG_FUNC(0x64D7D074, std::bad_typeid::_Doraise() const);
|
//REG_FUNC(0x64D7D074, std::bad_typeid::_Doraise() const);
|
||||||
@ -364,8 +379,6 @@ psv_log_base& sceLibstdcxx = []() -> psv_log_base&
|
|||||||
//REG_FUNC(0xE7889A5B, _Unwind_VRS_Get);
|
//REG_FUNC(0xE7889A5B, _Unwind_VRS_Get);
|
||||||
//REG_FUNC(0xF106D050, _Unwind_VRS_Pop);
|
//REG_FUNC(0xF106D050, _Unwind_VRS_Pop);
|
||||||
//REG_FUNC(0x91CDA2F9, _Unwind_VRS_Set);
|
//REG_FUNC(0x91CDA2F9, _Unwind_VRS_Set);
|
||||||
//REG_FUNC(0x3C78DDE3, __aeabi_unwind_cpp_pr1);
|
|
||||||
//REG_FUNC(0xF95BDD36, __aeabi_unwind_cpp_pr2);
|
|
||||||
//REG_FUNC(0x8C93EFDA, __cxa_allocate_exception);
|
//REG_FUNC(0x8C93EFDA, __cxa_allocate_exception);
|
||||||
//REG_FUNC(0x6165EE89, __cxa_begin_catch);
|
//REG_FUNC(0x6165EE89, __cxa_begin_catch);
|
||||||
//REG_FUNC(0x5D74285C, __cxa_begin_cleanup);
|
//REG_FUNC(0x5D74285C, __cxa_begin_cleanup);
|
||||||
|
@ -38,10 +38,14 @@ void execute_psv_func_by_index(ARMv7Thread& CPU, u32 index)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern psv_log_base& sceLibc;
|
extern psv_log_base& sceLibc;
|
||||||
|
extern psv_log_base& sceLibm;
|
||||||
extern psv_log_base& sceLibstdcxx;
|
extern psv_log_base& sceLibstdcxx;
|
||||||
|
extern psv_log_base& sceLibKernel;
|
||||||
|
|
||||||
void list_known_psv_modules()
|
void list_known_psv_modules()
|
||||||
{
|
{
|
||||||
sceLibc.Log("");
|
sceLibc.Log("");
|
||||||
|
sceLibm.Log("");
|
||||||
sceLibstdcxx.Log("");
|
sceLibstdcxx.Log("");
|
||||||
|
sceLibKernel.Log("");
|
||||||
}
|
}
|
||||||
|
@ -264,6 +264,7 @@ namespace psv_func_detail
|
|||||||
struct psv_func
|
struct psv_func
|
||||||
{
|
{
|
||||||
const u32 nid;
|
const u32 nid;
|
||||||
|
const char* const name;
|
||||||
psv_func_caller* const func;
|
psv_func_caller* const func;
|
||||||
psv_log_base* const module;
|
psv_log_base* const module;
|
||||||
};
|
};
|
||||||
@ -271,11 +272,12 @@ struct psv_func
|
|||||||
void add_psv_func(psv_func& data);
|
void add_psv_func(psv_func& data);
|
||||||
|
|
||||||
template<typename RT, typename... T>
|
template<typename RT, typename... T>
|
||||||
void reg_psv_func(u32 nid, psv_log_base* module, RT(*func)(T...))
|
void reg_psv_func(u32 nid, psv_log_base* module, const char* name, RT(*func)(T...))
|
||||||
{
|
{
|
||||||
psv_func f =
|
psv_func f =
|
||||||
{
|
{
|
||||||
nid,
|
nid,
|
||||||
|
name,
|
||||||
new psv_func_detail::func_binder<RT, T...>(func),
|
new psv_func_detail::func_binder<RT, T...>(func),
|
||||||
module
|
module
|
||||||
};
|
};
|
||||||
|
@ -344,15 +344,19 @@ bool ELF32Loader::LoadPhdrInfo()
|
|||||||
phdr_arr.back().Load(elf32_f);
|
phdr_arr.back().Load(elf32_f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(entry & 0x1)
|
if (machine == MACHINE_ARM)
|
||||||
|
{
|
||||||
|
entry = (entry & ~0x3) + 0x81000000;
|
||||||
|
}
|
||||||
|
else if(entry & 0x3)
|
||||||
{
|
{
|
||||||
//entry is physical, convert to virtual
|
//entry is physical, convert to virtual
|
||||||
|
|
||||||
entry &= ~0x1;
|
entry &= ~0x3;
|
||||||
|
|
||||||
for(size_t i=0; i<phdr_arr.size(); ++i)
|
for(size_t i=0; i<phdr_arr.size(); ++i)
|
||||||
{
|
{
|
||||||
if(phdr_arr[i].p_offset >= entry && entry < phdr_arr[i].p_offset + phdr_arr[i].p_memsz)
|
if(phdr_arr[i].p_paddr >= entry && entry < phdr_arr[i].p_paddr + phdr_arr[i].p_memsz)
|
||||||
{
|
{
|
||||||
entry += phdr_arr[i].p_vaddr;
|
entry += phdr_arr[i].p_vaddr;
|
||||||
LOG_WARNING(LOADER, "virtual entry = 0x%x", entry);
|
LOG_WARNING(LOADER, "virtual entry = 0x%x", entry);
|
||||||
@ -360,10 +364,6 @@ bool ELF32Loader::LoadPhdrInfo()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (machine == MACHINE_ARM)
|
|
||||||
{
|
|
||||||
entry += 0x81000000;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -556,7 +556,7 @@ bool ELF32Loader::LoadShdrData(u64 offset)
|
|||||||
|
|
||||||
if (auto func = get_psv_func_by_nid(nid))
|
if (auto func = get_psv_func_by_nid(nid))
|
||||||
{
|
{
|
||||||
LOG_NOTICE(LOADER, "Imported function 0x%x (addr=0x%x)", nid, addr);
|
func->module->Notice("Imported function %s (nid=0x%08x, addr=0x%x)", func->name, nid, addr);
|
||||||
|
|
||||||
// writing Thumb code (temporarily, because it should be ARM)
|
// writing Thumb code (temporarily, because it should be ARM)
|
||||||
vm::psv::write16(addr + 0, 0xf870); // HACK (special instruction that calls HLE function
|
vm::psv::write16(addr + 0, 0xf870); // HACK (special instruction that calls HLE function
|
||||||
@ -566,7 +566,7 @@ bool ELF32Loader::LoadShdrData(u64 offset)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_ERROR(LOADER, "Unimplemented function 0x%x (addr=0x%x)", nid, addr);
|
LOG_ERROR(LOADER, "Unimplemented function 0x%08x (addr=0x%x)", nid, addr);
|
||||||
|
|
||||||
// writing Thumb code (temporarily - it shouldn't be written in this case)
|
// writing Thumb code (temporarily - it shouldn't be written in this case)
|
||||||
vm::psv::write16(addr + 0, 0xf06f); // MVN r0,#0x0
|
vm::psv::write16(addr + 0, 0xf06f); // MVN r0,#0x0
|
||||||
|
@ -57,7 +57,9 @@
|
|||||||
<ClCompile Include="Emu\ARMv7\ARMv7DisAsm.cpp" />
|
<ClCompile Include="Emu\ARMv7\ARMv7DisAsm.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\ARMv7Interpreter.cpp" />
|
<ClCompile Include="Emu\ARMv7\ARMv7Interpreter.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\ARMv7Thread.cpp" />
|
<ClCompile Include="Emu\ARMv7\ARMv7Thread.cpp" />
|
||||||
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibKernel.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibc.cpp" />
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibc.cpp" />
|
||||||
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibm.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibstdcxx.cpp" />
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibstdcxx.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\PSVFuncList.cpp" />
|
<ClCompile Include="Emu\ARMv7\PSVFuncList.cpp" />
|
||||||
<ClCompile Include="Emu\Audio\AL\OpenALThread.cpp" />
|
<ClCompile Include="Emu\Audio\AL\OpenALThread.cpp" />
|
||||||
|
@ -650,6 +650,12 @@
|
|||||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibstdcxx.cpp">
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibstdcxx.cpp">
|
||||||
<Filter>Emu\ARMv7\Modules</Filter>
|
<Filter>Emu\ARMv7\Modules</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibKernel.cpp">
|
||||||
|
<Filter>Emu\ARMv7\Modules</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibm.cpp">
|
||||||
|
<Filter>Emu\ARMv7\Modules</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Crypto\aes.h">
|
<ClInclude Include="Crypto\aes.h">
|
||||||
|
Loading…
Reference in New Issue
Block a user