SceSysmem: Difference between revisions
CelesteBlue (talk | contribs) (→Types) |
m (→sceKernelNameHeapGetKeyForKernel: Correct description) |
||
Line 2: | Line 2: | ||
== Module == | == Module == | ||
This module exists in both non-secure and secure world. The non-secure world SELF can be found in <code>os0:kd/sysmem.skprx</code>. It also can be found in the [[Boot Sequence|Boot Image]]. | This module exists in both non-secure and secure world. The non-secure world SELF can be found in <code>os0:kd/sysmem.skprx</code>. It also can be found in the [[Boot Sequence|Boot Image]]. | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version | ! Version !! World !! Privilege | ||
|- | |- | ||
| 1. | | 1.50-3.61 || Non-secure || Kernel | ||
|- | |- | ||
| 1.80 | | 1.69-1.80 || Secure || Kernel | ||
|} | |} | ||
Line 27: | Line 19: | ||
! Version !! Name !! World !! Visibility !! NID | ! Version !! Name !! World !! Visibility !! NID | ||
|- | |- | ||
| | | 0.990-3.61 || [[SceSysmem#SceSysmemForKernel|SceSysmemForKernel]] || Non-secure || Kernel || 0x63A519E5 | ||
|- | |||
| 3.63-3.65 || [[SceSysmem#SceSysmemForKernel|SceSysmemForKernel]] || Non-secure || Kernel || 0x02451F0F | |||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceSysmemForDriver|SceSysmemForDriver]] || Non-secure || Kernel || 0x6F25E18A | ||
|- | |- | ||
| | | 0.990-1.692 || [[SceSysmem#SceSysmemForDebugger|SceSysmemForDebugger]] || Non-secure || Kernel || 0xC7309957 | ||
|- | |- | ||
| 1. | | 1.80-3.74 || [[SceSysmem#SceSysmemForDebugger|SceSysmemForDebugger]] || Non-secure || Kernel || not present. Removed. | ||
|- | |- | ||
| | | 0.990-3.60 || [[SceSysmem#SceSysmem|SceSysmem]] || Non-secure || User || 0x37FE725A | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceDipsw|SceDipsw]] || Non-secure || User || 0xB36D5922 | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceDipswForDriver|SceDipswForDriver]] || Non-secure || Kernel || 0xC9E26388 | ||
|- | |- | ||
| | | 0.990-3.61 || [[SceSysmem#SceUartForKernel|SceUartForKernel]] || Non-secure || Kernel || 0xC03DBE40 | ||
|- | |- | ||
| | | 3.63-3.65 || [[SceSysmem#SceUartForKernel|SceUartForKernel]] || Non-secure || Kernel || 0x1CCD9BA3 | ||
|- | |- | ||
| | | 0.990-3.740.011 || [[SceSysmem#SceCpu|SceCpu]] || Non-secure || User || 0x45265161 | ||
|- | |- | ||
| | | 0.990-3.61 || [[SceSysmem#SceCpuForKernel|SceCpuForKernel]] || Non-secure || Kernel || 0x54BF2BAB | ||
|- | |- | ||
| 3. | | 3.63-3.65 || [[SceSysmem#SceCpuForKernel|SceCpuForKernel]] || Non-secure || Kernel || 0xA5195D20 | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceCpuForDriver|SceCpuForDriver]] || Non-secure || Kernel || 0x40ECDB0E | ||
|- | |- | ||
| | | 0.990-1.692 || [[SceSysmem#SceSysclibForKernel|SceSysclibForKernel]] || Non-secure || Kernel || 0x24878615 | ||
|- | |- | ||
| 1. | | 1.80-3.74 || [[SceSysmem#SceSysclibForKernel|SceSysclibForKernel]] || Non-secure || Kernel || not present. Removed. | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceSysclibForDriver|SceSysclibForDriver]] || Non-secure || Kernel || 0x7EE45391 | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceSysrootForKernel|SceSysrootForKernel]] || Non-secure || Kernel || 0x3691DA45 | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceSysrootForDriver|SceSysrootForDriver]] || Non-secure || Kernel || 0x2ED7F97A | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceKernelUtilsForDriver|SceKernelUtilsForDriver]] || Non-secure || Kernel || 0x496AD8B4 | ||
|- | |- | ||
| | | 0.990-1.692 || [[SceSysmem#SceZlibForDriver|SceZlibForDriver]] || Non-secure || Kernel || 0xE241534E | ||
|- | |- | ||
| 1. | | 1.80-3.74 || [[SceSysmem#SceZlibForDriver|SceZlibForDriver]] || Non-secure || Kernel || not present. Moved to [[SceSblPostSsMgr#SceZlibForDriver]]. | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceKernelSuspendForDriver|SceKernelSuspendForDriver]] || Non-secure || Kernel || 0x7290B21C | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceQafMgrForDriver|SceQafMgrForDriver]] || Non-secure || Kernel || 0x4E29D3B6 | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#ScePmMgrForDriver|ScePmMgrForDriver]] || Non-secure || Kernel || 0xF13F32F9 | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceSblAIMgrForDriver|SceSblAIMgrForDriver]] || Non-secure || Kernel || 0xFD00C69A | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceProcEventForDriver|SceProcEventForDriver]] || Non-secure || Kernel || 0x887F19D0 | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceDebugLed|SceDebugLed]] || Non-secure || User || 0xAE004C0A | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceDebugLedForDriver|SceDebugLedForDriver]] || Non-secure || Kernel || 0x7BC05EAD | ||
|- | |- | ||
| | | 0.990-3.61 || [[SceSysmem#SceDebugForKernel|SceDebugForKernel]] || Non-secure || Kernel || 0x88C17370 | ||
|- | |- | ||
| | | 3.63-3.65 || [[SceSysmem#SceDebugForKernel|SceDebugForKernel]] || Non-secure || Kernel || 0x13D793B7 | ||
|- | |- | ||
| | | 0.990-3.65 || [[SceSysmem#SceDebugForDriver|SceDebugForDriver]] || Non-secure || Kernel || 0x88758561 | ||
|- | |- | ||
| | | 0.931-3.60 || [[SceSysmem#SceSysmemForTZS|SceSysmemForTZS]] || Secure || Kernel || 0x08680060 | ||
|- | |- | ||
| | | 0.931-3.60 || [[SceSysmem#SceDipswForTZS|SceDipswForTZS]] || Secure || Kernel || 0x9DBF584C | ||
|- | |- | ||
| | | 0.931-3.60 || [[SceSysmem#SceUartForTZS|SceUartForTZS]] || Secure || Kernel || 0xA1D740D7 | ||
|- | |- | ||
| | | 0.931-3.60 || [[SceSysmem#SceDebugForTZS|SceDebugForTZS]] || Secure || Kernel || 0x028FFADB | ||
|- | |- | ||
| | | 0.931-3.60 || [[SceSysmem#SceCpuForTZS|SceCpuForTZS]] || Secure || Kernel || 0xC516B23E | ||
|- | |||
| 0.931-3.60 || [[SceSysmem#SceSysclibForTZS|SceSysclibForTZS]] || Secure || Kernel || 0xC839BB78 | |||
|- | |||
| 0.931-3.60 || [[SceSysmem#SceSysrootForTZS|SceSysrootForTZS]] || Secure || Kernel || 0xFEFF641D | |||
|- | |||
| 0.931-3.60 || [[SceSysmem#SceQafMgrForTZS|SceQafMgrForTZS]] || Secure || Kernel || 0x637069DD | |||
|- | |||
| 0.931-3.60 || [[SceSysmem#ScePmMgrForTZS|ScePmMgrForTZS]] || Secure || Kernel || 0x27F1AFD8 | |||
|- | |||
| 0.931-3.60 || [[SceSysmem#SceSblAIMgrForTZS|SceSblAIMgrForTZS]] || Secure || Kernel || 0x60D19047 | |||
|} | |} | ||
The SceCpu libraries provide wrappers for much ARM CP15 co-processor access as well as low level support of spinlocks and other synchronization primitives. | |||
== Types == | == Types == | ||
See [[SceSysmem Types]]. | |||
== SysEvent == | |||
Dispatcher | |||
{| class="wikitable sortable mw-collapsible mw-collapsed" | |||
|- | |||
! Module !! Type !! Event !! Description | |||
|- | |||
| [[ScePower]] || 0 || 0x100 || <code>SCE_KERNEL_SYSEVENT_SUSPEND_START</code>. before sceKernelCpuSuspendIntr. | |||
|- | |||
| [[ScePower]] || 0 || 0x101 || unknown | |||
|- | |||
| [[ScePower]] || 0 || 0x102 || unknown. later sceKernelCpuResumeIntr. | |||
|- | |||
} | | [[ScePower]] || 0 || 0x20F -> 0x200 || <code>SCE_KERNEL_SYSEVENT_SUSPEND_PHASE2</code>. after sceKernelCpuResumeIntr. | ||
|- | |||
| [[ScePower]] || 0 || 0x400 || <code>SCE_KERNEL_SYSEVENT_SUSPEND_PHASE1_START</code>. | |||
|- | |||
| [[ScePower]] || 0 || 0x401 || <code>SCE_KERNEL_SYSEVENT_SUSPEND_PHASE1_MAIN</code>. (this is a guessed name. but should be official name) | |||
|- | |||
| [[ScePower]] || 0 || 0x402 || <code>SCE_KERNEL_SYSEVENT_SUSPEND_PHASE1_END</code>. (this is a guessed name) | |||
|- | |||
| [[ScePower]] || 1 || 0x1000 || <code>SCE_KERNEL_SYSEVENT_SUSPEND_FREEZE_TIME</code>. | |||
|- | |||
| [[ScePower]] || 1 || 0x400F -> 0x4000 || <code>SCE_KERNEL_SYSEVENT_SUSPEND_PHASE0</code>. | |||
|- | |||
| [[ScePower]] || 1 || 0x10000 -> 0x1000F || <code>SCE_KERNEL_SYSEVENT_RESUME_PHASE0</code>. | |||
|- | |||
| [[ScePower]] || 1 || 0x40000 || <code>SCE_KERNEL_SYSEVENT_RESUME_MELT_TIME</code>. before sceKernelCpuResumeIntr. | |||
|- | |||
| [[ScePower]] || 1 || 0x100000 || <code>SCE_KERNEL_SYSEVENT_RESUME_PHASE1_START</code>. after sceKernelCpuResumeIntr. | |||
|- | |||
| [[ScePower]] || 1 || 0x100001 || <code>SCE_KERNEL_SYSEVENT_RESUME_PHASE1_MAIN</code>. | |||
|- | |||
| [[ScePower]] || 1 || 0x100002 || <code>SCE_KERNEL_SYSEVENT_RESUME_PHASE1_END</code>. (this is a guessed name) | |||
|- | |||
| [[ScePower]] || 1 || 0x400000 || <code>SCE_KERNEL_SYSEVENT_RESUME_COMPLETED | |||
|} | |||
Handler | |||
{| class="wikitable sortable mw-collapsible mw-collapsed" | |||
|- | |||
! Module !! Type !! Event !! Description | |||
|- | |||
| [[SceAppMgr]] || 0 || 0x20F || _sceAppMgrSystemSuspend | |||
|- | |||
| [[SceAppMgr]] || 1 || 0x400000 || _sceAppMgrSystemResume | |||
|- | |||
| [[SceAudio]] || 0 || 0x1000 || Something | |||
|- | |||
| [[SceAudio]] || 0 || 0x400F || Something | |||
|- | |||
| [[SceAudio]] || 0 || 0x102 || Something | |||
|- | |||
| [[SceAudio]] || 1 || 0x1000F || Something | |||
|- | |||
| [[SceAudioin]] (SceAudioIn) || 0 || 0x102 || Something | |||
|- | |||
| [[SceAudioin]] (SceAudioIn) || 1 || 0x1000F || Something | |||
|- | |||
| [[SceAVConfig]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceAVConfig]] || 1 || 0x400000 || Something | |||
|- | |||
| [[SceAVConfig]] || 1 || 0x1000F || Something | |||
|- | |||
| [[SceAVConfig]] || 1 || 0x100001 || Something | |||
|- | |||
| [[SceBt]] || 0 || 0x401 || Something | |||
|- | |||
| [[SceBt]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceBt]] || 1 || 0x100001 || Something | |||
|- | |||
| [[SceBt]] || 1 || 0x100002 || Something | |||
|- | |||
| [[SceCamera]] || 0 || 0x401 || Something | |||
|- | |||
| [[SceCamera]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceCamera]] || 0 || 0x400 || Something | |||
|- | |||
| [[SceCamera]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceCamera]] || 1 || 0x100002 || Something | |||
|- | |||
| [[SceClockgen]] || 1 || 0x10000 || Something | |||
|- | |||
| [[SceClockgen]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceCodec]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceCodec]] || 1 || 0x10000 || Something | |||
|- | |||
| [[SceCodecEngineWrapper]] || 0 || 0x401 || Something | |||
|- | |||
| [[SceCodecEngineWrapper]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceCodecEngineWrapper]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceCodecEngineWrapper]] || 0 || 0x400E || Something | |||
|- | |||
| [[SceCodecEngineWrapper]] || 1 || 0x1000E || Something | |||
|- | |||
| [[SceCodecEngineWrapper]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceCompat]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceCtrl]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceCtrl]] || 0 || 0x400C || Something | |||
|- | |||
| [[SceCtrl]] || 0 || 0x400 || Something | |||
|- | |||
| [[SceCtrl]] || 1 || 0x1000C || Something | |||
|- | |||
| [[SceDbgSdio]] (SceDbgSdio1) || 0 || 0x102 || Something | |||
|- | |||
| [[SceDbgSdio]] (SceDbgSdio1) || 0 || 0x4003 || Something | |||
|- | |||
| [[SceDbgSdio]] (SceDbgSdio1) || 1 || 0x10003 || Something | |||
|- | |||
| [[SceDeci4pDbgp]] || 0 || 0x102 || Something | |||
|- | |||
| [[SceDeci4pDbgp]] || 0 || 0x4000 || Something | |||
|- | |||
| [[SceDeci4pDbgp]] || 1 || 0x10000 || Something | |||
|- | |||
| [[SceDeci4pDbgp]] || 1 || 0x400000 || Something | |||
|- | |||
| [[SceDeci4pDfMgr]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceDeci4pDfMgr]] || 0 || 0x100 || Something | |||
|- | |||
| [[SceDeci4pDfMgr]] || 0 || 0x401 || Something | |||
|- | |||
| [[SceDeci4pDfMgr]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceDeci4pDfMgr]] || 1 || 0x100002 || Something | |||
|- | |||
| [[SceDeci4pDfMgr]] || 1 || 0x400000 || Something | |||
|- | |||
| [[SceDeci4pDfMgr]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceDeci4pDrfp]] || 0 || any || Something | |||
|- | |||
| [[SceDeci4pDtracep]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceDeci4pDtracep]] || 0 || 0x1000 || Something | |||
|- | |||
| [[SceDeci4pDtracep]] || 1 || 0x40000 || Something | |||
|- | |||
| [[SceDeci4pDtracep]] || 1 || 0x100002 || Something | |||
|- | |||
| [[SceDeci4pSDfCtl]] || 0 || 0x102 || Something | |||
|- | |||
| [[SceDisplay]] || 0 || 0x400 || Something | |||
|- | |||
| [[SceDisplay]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceDisplay]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceDisplay]] || 0 || 0x400A || Something | |||
|- | |||
| [[SceDisplay]] || 1 || 0x40000 || Something | |||
|- | |||
| [[SceDisplay]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceDisplay]] || 1 || 0x1000A || Something | |||
|- | |||
| [[SceError]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceError]] || 1 || 0x100001 || Something | |||
|- | |||
| [[SceGps]] (SceGpsd) || 0 || 0x102 || Something | |||
|- | |||
| [[SceGps]] (SceGpsd) || 1 || 0x400000 || Something | |||
|- | |||
| [[SceGpuEs4]] (SceGpu) || 0 || 0x402 || Something | |||
|- | |||
| [[SceGpuEs4]] (SceGpu) || 0 || 0x4005 || Something | |||
|- | |||
| [[SceGpuEs4]] (SceGpu) || 0 || 0x400 || Something | |||
|- | |||
| [[SceGpuEs4]] (SceGpu) || 1 || 0x10005 || Something | |||
|- | |||
| [[SceHdmi]] || 0 || 0x400 || Something | |||
|- | |||
| [[SceHdmi]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceHdmi]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceHid]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceHid]] || 0 || 0x4000 || Something | |||
|- | |- | ||
| [[SceHid]] || 0 || 0x200 || Something | |||
|- | |- | ||
| | | [[SceHid]] || 1 || 0x100000 || Something | ||
|- | |- | ||
| | | [[SceHpremote]] (SceHprm) || 1 || 0x1000C || Something | ||
|- | |- | ||
| | | [[SceIdStorage]] || ? || ? || Something | ||
|- | |- | ||
| | | [[SceIofilemgr]] || 0 || 0x401 || vfs_sync_all_mount_point | ||
|- | |- | ||
| | | [[SceIofilemgr]] || 0 || 0x402 || Something | ||
|- | |- | ||
| | | [[SceIofilemgr]] || 0 || 0x400 || Something | ||
|- | |- | ||
| | | [[SceIofilemgr]] || 1 || 0x10000 || Something | ||
|- | |- | ||
| | | [[SceIofilemgr]] || 1 || 0x400000 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (ScePervasive) || 1 || 0x10000 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (SceGpio) || 1 || 0x10002 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (ScePwm) || 0 || 0x4002 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (ScePwm) || 1 || 0x10002 || Something | ||
| | |||
|- | |- | ||
| [[SceLowio]] (SceI2c) || 0 || 0x402 || Something | |||
|- | |- | ||
| | | [[SceLowio]] (SceI2c) || 0 || 0x4002 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (SceI2c) || 1 || 0x10002 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (SceDsi) || 0 || 0x4004 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (SceIftu) || 0 || 0x4005 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (SceIftu) || 1 || 0x10005 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (SceCsi) || 0 || 0x4004 || Something | ||
|- | |- | ||
| | | [[SceLowio]] (SceCsi) || 1 || 0x10004 || Something | ||
|- | |- | ||
| | | [[SceMotionDev]] (SceMotion) || 0 || 0x401 || Something | ||
|- | |- | ||
| | | [[SceMotionDev]] (SceMotion) || 0 || 0x402 || Something | ||
|- | |- | ||
| | | [[SceMotionDev]] (SceMotion) || 0 || 0x400 || Something | ||
|- | |- | ||
| | | [[SceMotionDev]] (SceMotion) || 1 || 0x100000 || Something | ||
|- | |- | ||
| | | [[SceMotionDev]] (SceMotion) || 1 || 0x100002 || Something | ||
|- | |- | ||
| | | [[SceMsif]] || 0 || 0x400C || Something | ||
|- | |- | ||
| | | [[SceMsif]] || 1 || 0x1000C || Something | ||
|- | |- | ||
| | | [[SceNetPs]] || 0 || 0x200 || Something | ||
|- | |- | ||
| | | [[SceNetPs]] || 1 || 0x400000 || Something | ||
|- | |- | ||
| | | [[SceOled]] || 0 || 0x402 || Something | ||
|- | |- | ||
| | | [[SceOled]] || 0 || 0x4003 || Something | ||
|- | |- | ||
| | | [[SceOled]] || 1 || 0x10003 || Something | ||
|- | |- | ||
| | | [[ScePfsMgr]] || 0 || 0x402 || Something | ||
|- | |- | ||
| | | [[ScePower]] (ScePower) || 0 || 0x402 || Something | ||
| | |- | ||
| [[ScePower]] (ScePower) || 0 || 0x4009 || Something | |||
|- | |||
| [[ScePower]] (ScePower) || 0 || 0x400 || Something | |||
|- | |||
| [[ScePower]] (ScePower) || 1 || 0x10009 || Something | |||
|- | |||
| [[ScePower]] (ScePower) || 1 || 0x100000 || Something | |||
|- | |||
| [[ScePower]] (SceLed) || 0 || 0x102 || Something | |||
0 | |- | ||
| [[ScePower]] (SceLed) || 0 || 0x400A || Something | |||
|- | |||
| [[ScePower]] (SceLed) || 1 || 0x100000 || Something | |||
|- | |||
| [[SceRtc]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceRtc]] || 0 || 0x1000 || Something | |||
|- | |||
| [[SceRtc]] || 1 || 0x1000A || Something | |||
|- | |||
| [[SceRtc]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceSblSmSchedProxy]] || 1 || 0x10004 || Something | |||
|- | |||
| [[SceSblSsMgr]] || 0 || 0x200 || Something | |||
|- | |||
| [[SceSblSsMgr]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceSblUpdateMgr]] || 0 || any || Something | |||
|- | |||
| [[SceSdif]] || 0 || 0x400C || Something | |||
|- | |||
| [[SceSdif]] || 1 || 0x10009 || resume eMMC with sdif reset | |||
|- | |||
| [[SceSdif]] || 1 || 0x1000C || resume eMMC | |||
|- | |||
| [[SceSdstor]] || 0 || 0x200 || Umount 0x900/0xA00/0x100. invalidate gc sdpart str. | |||
|- | |||
| [[SceSdstor]] || 0 || 0x400D || disable intr/power off for gc/rm | |||
|- | |||
| [[SceSdstor]] || 1 || 0x100000 || Something | |||
|- | |||
| [[SceSdstor]] || 1 || 0x400000 || Something | |||
|- | |||
| [[SceSyscon]] || 0 || 0x4006 || Something | |||
|- | |||
| [[SceSyscon]] || 0 || 0x402 || Something | |||
|- | |||
| [[SceSyscon]] || 0 || 0x400F || Something | |||
|- | |||
| [[SceSyscon]] || 1 || 0x10006 || Something | |||
|- | |||
| [[SceSyscon]] || 1 || 0x1000F || Something | |||
|- | |||
| [[SceTouch]] || 0 || 0x401 || Something | |||
|- | |||
| [[SceTouch]] || 0 || 0x400 || Something | |||
|- | |||
| [[SceTouch]] || 0 || 0x402 || Something | |||
|- | |- | ||
| [[SceTouch]] || 0 || 0x400C || Something | |||
|- | |- | ||
| | | [[SceTouch]] || 1 || 0x1000C || Something | ||
|- | |- | ||
| | | [[SceTouch]] || 1 || 0x100000 || Something | ||
|- | |- | ||
| | | [[SceUsbEtherRtl]] || 0 || 0x401 || Something | ||
|- | |- | ||
| | | [[SceUsbEtherRtl]] || 0 || 0x402 || Something | ||
|- | |- | ||
| | | [[SceUsbEtherRtl]] || 0 || 0x400 || Something | ||
|- | |- | ||
| | | [[SceUsbEtherSmsc]] || 0 || 0x401 || Something | ||
|- | |- | ||
| | | [[SceUsbEtherSmsc]] || 0 || 0x402 || Something | ||
|- | |- | ||
| | | [[SceUsbEtherSmsc]] || 0 || 0x400 || Something | ||
|- | |- | ||
| | | [[SceUsbServ]] || 0 || 0x200 || Something | ||
|- | |- | ||
| | | [[SceUsbServ]] || 0 || 0x400E || Something | ||
|- | |- | ||
| | | [[SceUsbServ]] || 1 || 0x100000 || Something | ||
|- | |- | ||
| | | [[SceUsbServ]] || 1 || 0x100002 || Something | ||
|- | |- | ||
| | | [[SceWlanBt]] (SceWlanBtRobin) || 0 || 0x401 || Something | ||
|- | |- | ||
| | | [[SceWlanBt]] (SceWlanBtRobin) || 0 || 0x400 || Something | ||
|- | |- | ||
| | | [[SceWlanBt]] (SceWlanBtRobin) || 1 || 0x100000 || Something | ||
|- | |- | ||
| [[SceWlanBt]] (SceWlanBtRobin) || 1 || 0x100002 || Something | |||
|} | |} | ||
== | == SceSysmemForKernel == | ||
=== SceSysmemForKernel_A7D44B50 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || 0xA7D44B50 | |||
|- | |||
| 1.800.071-3.740.011 || not present | |||
|} | |||
A guessed name is sceKernelSetSysmemFuncForKernel. | |||
Used by [[SceKernelSSProxy]]'s module_start to register a function that just calls [[SMC]] 0x10E (BusErrorClear). | |||
The registered function is used internally by [[#sceKernelPhysicalMemReadForKernel]] and [[#sceKernelPhysicalMemWriteForKernel]]. | |||
<source lang="C">int SceSysmemForKernel_A7D44B50(void* pBusErrorClearFunc);</source> | |||
</source> | |||
== | === sceKernelSysmemModuleStartAfterProcessmgrForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 3.600.011-3.610.011 || 0xE7938BFB | ||
|- | |||
| 3.630.011-3.740.011 || 0x4E74DA48 | |||
|} | |} | ||
=== | Temp name was sceKernelInitProcessMemoryForKernel. | ||
Used by [[SceProcessmgr]]. | |||
<source lang="C">int sceKernelSysmemModuleStartAfterProcessmgrForKernel(void);</source> | |||
=== sceKernelSysmemCleanerForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x43E81C4B | ||
|- | |||
| 3.63 || 0x50980298 | |||
|} | |} | ||
=== | Only implemented in sysdbg build. | ||
<source lang="C">int sceKernelSysmemCleanerForKernel(void);</source> | |||
=== sceKernelStrnlenFromUserForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931 || 0x9BC3DEAC | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">SceSize sceKernelStrnlenFromUserForKernel(const char *s, SceSize maxlen);</source> | ||
=== sceKernelPhysicalMemWriteForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.060.031 || 0x4B86A751 | ||
|- | |||
| 1.50-3.740.011 || not present | |||
|} | |} | ||
=== | Writes to physical address <code>pdest</code> using a pre-allocated memblock. Destination must belong into a hardcoded table describing physical ranges. | ||
<source lang="C">SceSSize sceKernelPhysicalMemWriteForKernel(SceUIntPAddr pdest, const void *src, SceSize size);</source> | |||
=== sceKernelPhysicalMemReadForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.060.031 || 0xF96E3AE2 | ||
|- | |||
| 1.50-3.740.011 || not present | |||
|} | |} | ||
=== | Temp name was memcpy_from_paddr. | ||
Dest must be a virtual address and src must be a physical address. Returns copied size on success. | |||
<source lang="C">int sceKernelPhysicalMemReadForKernel(void *dest, const void *src, SceSize dest_size, SceSize src_size);</source> | |||
=== sceKernelCopyFromUser32DomainForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931 || 0xD530399A | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelCopyFromUser32DomainForKernel(SceUID pid, void *dst, const void *src, SceSize size);</source> | ||
=== sceKernelCopyToUserProcTextDomainForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x30931572 | ||
|- | |||
| 3.65 || 0x2995558D | |||
|} | |} | ||
=== | Temp name was sceKernelRxMemcpyKernelToUserForPidForKernel, sceKernelProcCopyToUserRxForKernel. | ||
Same as [[SceSysmem#sceKernelCopyToUserProcDomainForDriver|sceKernelCopyToUserProcDomain]], but performs a DCache clean after the copy. Use this function if you want to write code in user pages. | |||
This function is usually called when resolving stubs during a module loads. In 3.60, DACR is set to 0x15450FC3 instead of 0xFFFFFFFF. | |||
<source lang="c">SceInt32 sceKernelCopyToUserProcTextDomainForKernel(SceUID pid, void *uaddr, const void *kaddr, SceSize size);</source> | |||
=== sceKernelCopyToUserProcTextDomainForDBGPForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xE65EA709 | ||
|- | |||
| 3.63 || 0x4345C61F | |||
|} | |} | ||
=== | <source lang="C">int sceKernelCopyToUserProcTextDomainForDBGPForKernel(SceUID pid, void *dst, const void *src, SceSize length);</source> | ||
=== sceKernelCopyToUserTextDomainForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x67BAD5B4 | ||
|- | |||
| 3.65 || 0x5EF1DAAF | |||
|} | |} | ||
=== | This is a guessed name. Temp name was sceKernelMemcpyToUserRxForKernel, sceKernelCopyToUserRxForKernel. | ||
Similar to [[SceSysmem#sceKernelCopyToUserProcTextDomainForKernel|sceKernelCopyToUserProcTextDomain]], but performed in the current address space. | |||
In FW 3.60, [[SceSysmem#sceKernelCopyToUserProcTextDomainForKernel|sceKernelCopyToUserProcTextDomain]] calls this function to perform the copy after changing address space. | |||
<source lang="c">SceInt32 sceKernelCopyToUserTextDomainForKernel(void *dst, const void *src, SceSize len);</source> | |||
=== sceKernelCopyToUserDomainForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931.010 || Not present | ||
|- | |||
| 3.60-3.61 || 0xA6F95838 | |||
|- | |||
| 3.63 || 0x499A9FFF | |||
|} | |} | ||
=== | This is a guessed name. Temp name was sceKernelMemcpyToUserRoForKernel, sceKernelCopyToUserRoForKernel. | ||
Similar to [[SceSysmem#sceKernelCopyToUserTextDomainForKernel|sceKernelCopyToUserTextDomain]], but doesn't perform any DCache clean. | |||
Uses the same DACR, 0x15450FC3, for the copy. | |||
<source lang="c">int sceKernelCopyToUserDomainForKernel(void *dst, const void *src, SceSize len);</source> | |||
=== sceKernelRegisterClassForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990 || | | 0.990 || 0x11761B77 | ||
|- | |- | ||
| 3.60 || not present | | 3.60 || not present | ||
|} | |} | ||
=== | === sceKernelFindClassByNameForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x62989905 | ||
|- | |- | ||
| 3. | | 3.65 || 0x7D87F706 | ||
|} | |} | ||
=== | <source lang="c">int sceKernelFindClassByNameForKernel(const char *name, SceClass **ppClass);</source> | ||
=== sceKernelGetUIDHeapClassForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x4CCA935D | ||
|- | |- | ||
| 3. | | 3.63 || 0x7C878E94 | ||
|} | |} | ||
=== | <source lang="c">SceClass *sceKernelGetUIDHeapClassForKernel(void);</source> | ||
=== sceKernelGetUIDMemBlockClassForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xAF729575 | ||
|- | |- | ||
| 3. | | 3.63 || 0x86681B64 | ||
|} | |} | ||
<source lang=" | <source lang="c">SceClass *sceKernelGetUIDMemBlockClassForKernel(void);</source> | ||
</source> | |||
=== | === sceKernelGetUIDDLinkClassForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990-3.610.011 || 0xC105604E | ||
|- | |||
| 3.630.011-3.740.011 || 0xE4193EB6 | |||
|} | |} | ||
<source lang="c">SceClass *sceKernelGetUIDDLinkClassForKernel(void);</source> | |||
<source lang=" | |||
</source> | |||
=== | === sceKernelGetUIDAddressSpaceClassForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xAF180A3F | ||
|- | |- | ||
| 3. | | 3.63 || 0x99D3BF76 | ||
|} | |} | ||
=== | This is a guessed name. | ||
<source lang="C">SceClass *sceKernelGetUIDAddressSpaceClassForKernel(void);</source> | |||
=== sceKernelGetUIDPartitionClassForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x2791F109 | ||
|- | |||
| 3.63 || 0x5C0FC6BE | |||
|} | |} | ||
=== | This is a guessed name. | ||
<source lang="C">SceClass *sceKernelGetUIDPartitionClassForKernel(void);</source> | |||
=== sceUIDDLinkClassInitForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x21285F40 | ||
|- | |- | ||
| 3. | | 3.63 || 0x7CDB7655 | ||
|} | |} | ||
Temp name was sceKernelCreateClassForKernel, sceUIDClassInitClassForKernel. | |||
Calls [[SceSysmem#sceUIDClassInitClassForDriver|sceUIDClassInitClassForDriver]]. | |||
<source lang="C">int sceUIDDLinkClassInitForKernel(SceClass *pClass, const char *name, SceClass *subclass, SceSize itemsize, void *cstr, void *dstr);</source> | |||
=== | === sceUIDClassGetClassInfoAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 1,024: | Line 753: | ||
| 0.990 || not present | | 0.990 || not present | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xC0BF149E | ||
|- | |||
| 3.63 || 0x100B4029 | |||
|} | |} | ||
=== | This is a guessed name (ForDriver function name and NID changed at some point before 1.69). Temp name was sceKernelGetRegisterClassInfoForKernel. | ||
<source lang="C"> | |||
typedef struct SceClassInfo { | |||
SceSize size; | |||
SceClass *pClass; | |||
SceClass *pSubClass; | |||
const char *name; | |||
} SceClassInfo; | |||
int sceUIDClassGetClassInfoAllForKernel(SceClassInfo *vector, uint32_t maxNumClass, uint32_t *pNumClassInBuf); | |||
</source> | |||
=== sceKernelCreateAddressSpaceForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0x4A3737F0 | ||
|- | |||
| 3.65 || 0x8EE89D2C | |||
|} | |} | ||
<source lang="C"> | <source lang="C"> | ||
// type: 0x10000001 (user AS) | |||
// name: maybe titleid | |||
SceUID sceKernelCreateAddressSpaceForKernel(SceUID pid, const char *name, SceUInt32 type, SceKernelCreateAddressSpaceOpt *pOpt); | |||
</source> | </source> | ||
=== | === sceKernelDeleteAddressSpaceForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0xF2D7FE3A | ||
|- | |||
| 3.65 || 0x4A2E421D | |||
|} | |} | ||
=== | <source lang="C">int sceKernelDeleteAddressSpaceForKernel(SceUID guid);</source> | ||
=== sceKernelAddressSpaceSetNameForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-1.50 || not present | ||
|- | |||
| 3.60 || 0x7BD56D6D | |||
|- | |||
| 3.65 || 0xCEBC4963 | |||
|} | |} | ||
<source lang="C"> | Used by [[SceProcessmgr]]. | ||
<source lang="C">int sceKernelAddressSpaceSetNameForKernel(SceUID guid, const char *name);</source> | |||
=== | === sceKernelAddressSpaceSetPhyMemPartForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x67955EE9 | ||
|- | |||
| 3.65 || 0x7DF07D60 | |||
|} | |} | ||
<source lang="C">int | <source lang="C">int sceKernelAddressSpaceSetPhyMemPartForKernel(SceUID guid, SceUInt32 index, SceKernelPhyMemPart *pPhyMemPart);</source> | ||
=== | === sceKernelAddressSpaceCtrSetObjectHeapForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xFC74A355 | ||
|- | |||
| 3.63 || 0xFA348CB1 | |||
|} | |} | ||
=== sceKernelAddressSpaceFreeAllMemBlockForKernel === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x89CE1F31 | ||
|- | |||
| 3.65 || 0x36159CF5 | |||
|} | |} | ||
=== | <source lang="C">int sceKernelAddressSpaceFreeAllMemBlockForKernel(SceUID guid);</source> | ||
=== sceKernelAddressSpaceUnmapForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.61 || 0xCE72839E | ||
|- | |||
| 3.63 || 0x73C38695 | |||
|} | |} | ||
<source lang="C"> | <source lang="C"> | ||
# For FW 0.931: | |||
int sceKernelAddressSpaceUnmapForKernel(SceUID uid, int a2, void* addr, SceSize size); | |||
# For FW 3.60: | |||
int sceKernelAddressSpaceUnmapForKernel(SceUID uid, int a2, int a3, void* addr, SceSize size); | |||
</source> | |||
=== | Example: 0.990 [[SceSysStateMgr]]: | ||
<source lang="C"> | |||
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF7, 0x51000000, 0x1000000); | |||
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0xE0000000, 0x8000000); | |||
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0x1A000000, 0x100000); | |||
</source> | |||
Example: 3.60 [[SceSysStateMgr]]: | |||
<source lang="C"> | |||
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF7, 0xC, 0x51000000, 0x1000000); | |||
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0xC, 0xE0000000, 0x8000000); | |||
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0xC, 0x1A000000, 0x100000); | |||
</source> | |||
=== sceKernelAddressSpaceSetProcessForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990 || | | 0.990-3.61 || 0x2476B90F | ||
|- | |||
| 3.63 || 0x5E772E19 | |||
|} | |} | ||
<source lang="C">int sceKernelAddressSpaceSetProcessForKernel(SceUID address_space, SceUID pid);</source> | |||
=== | === sceKernelAddressSpaceChangeMMUContextForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.61 || 0x653B0849 | ||
|- | |||
| 3.63 || 0x20D01AFA | |||
|} | |} | ||
=== | Changes to the MMU context (CONTEXTIDR.ASID + DACR + TTBR1) of target address space. | ||
<source lang="C">SceInt32 sceKernelAddressSpaceChangeMMUContextForKernel(SceUID address_space);</source> | |||
=== sceKernelAddressSpaceGetMMUContextForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990 || not present | ||
|- | |||
| 3.10-3.61 || 0x9894B9E1 | |||
|- | |||
| 3.63 || 0xA7C91D62 | |||
|} | |} | ||
This is a guessed name. | |||
<source lang="C">int sceKernelGetAddressSpaceMMUContextForKernel(SceUID address_space, SceKernelMMUContext **ppCtx);</source> | |||
=== | === SceSysmemForKernel_FBEF93AA === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.931 || not present | ||
|- | |||
| 0.990-3.01 || 0xFBEF93AA | |||
|- | |||
| 3.10-3.74 || not present | |||
|} | |} | ||
=== | Maybe gets MMU context. Maybe was replaced by [[#sceKernelAddressSpaceGetMMUContextForKernel]]. | ||
<source lang="C">int SceSysmemForKernel_FBEF93AA(SceUID address_space, void* pOut);</source> | |||
=== sceKernelAddressSpaceGetTimerVbaseForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990 || not present | ||
|- | |||
| 0.996.090-3.610.011 || 0x7D92B2D3 | |||
|- | |||
| 3.630.011-3.740.011 || 0xFA1A73DD | |||
|} | |} | ||
=== | <source lang="C">int sceKernelAddressSpaceGetTimerVbaseForKernel(SceUID address_space, void **ppBase);</source> | ||
=== sceKernelGetAddressSpaceInfoForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990.000-3.610.011 || 0x4492421F | ||
|- | |||
| 3.630.011-3.740.011 || 0xC3EF4055 | |||
|} | |} | ||
=== | This is a guessed name.. | ||
<source lang="C">int sceKernelGetAddressSpaceInfoForKernel(SceUID address_space, SceKernelAddressSpaceInfo *pInfo);</source> | |||
=== sceKernelAddressSpaceGetMMUL1InfoForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990 || | | 0.931-0.990 || 0x671A3444 | ||
|- | |- | ||
| 3.60 || not present | | 3.60 || not present | ||
|} | |} | ||
Gets information about a L1PT entry in the translation table of an address space. Pass the virtual address of the target entry maps as <code>addr</code>. | |||
=== | <source lang="C">SceInt32 sceKernelAddressSpaceGetMMUL1InfoForKernel(SceUID address_space, const void *addr, SceKernelMMUL1Info *pInfo);</source> | ||
=== sceKernelAddressSpaceGetMMUL2InfoForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || 0xCB6E1C80 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelAddressSpaceGetMMUL2InfoForKernel(SceUID address_space, const void *addr, void *pInfo);</source> | ||
=== sceKernelAddressSpaceGetMMUL1AllInfoForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.931-0.990 || 0x1A898F2E | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C"> | ||
typedef struct SceKernelAddressSpaceMMUL1AllInfo { // size is 0x400C on FW 0.931 | |||
SceSize size; // Size of this structure | |||
char unk[0x4008]; | |||
} SceKernelAddressSpaceMMUL1AllInfo; | |||
int sceKernelAddressSpaceGetMMUL1AllInfoForKernel(SceUID address_space, SceKernelAddressSpaceMMUL1AllInfo *pInfo);</source> | |||
=== sceKernelAddressSpaceGetMMUL2AllInfoForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || 0x1E1AA29B | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C"> | ||
typedef struct SceKernelAddressSpaceMMUL2AllInfo { // size is 0x404 on FW 0.931 | |||
SceSize size; // Size of this structure | |||
char unk[0x400]; | |||
} SceKernelAddressSpaceMMUL2AllInfo; | |||
int sceKernelAddressSpaceGetMMUL2AllInfoForKernel(SceUID address_space, const void *addr, SceKernelAddressSpaceMMUL2AllInfo *pInfo);</source> | |||
=== sceKernelAddressSpaceGetMemoryTypeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990-3.61 || 0xCC7BB240 | ||
|- | |||
| 3.63 || 0x0B5A3E93 | |||
|} | |} | ||
=== | <source lang="C">int sceKernelAddressSpaceGetMemoryTypeForKernel(uint32_t *memory_type);</source> | ||
=== sceKernelAddressSpaceVAtoPAForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.990-3.61 || 0xF2179820 | ||
|- | |||
| 3.63 || 0x1BAF8C0B | |||
|} | |} | ||
<source lang="C">int | <source lang="C">int sceKernelAddressSpaceVAtoPAForKernel(SceAddressSpace *pAS, SceUInt32 mode, void *pVA, void **pPA);</source> | ||
=== sceKernelAddressSpaceVARangeToPAVectorForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990-3.61 || 0xF7250E6C | ||
|- | |||
| 3.63 || 0xA541E0CF | |||
|} | |} | ||
=== | <source lang="C">int sceKernelAddressSpaceVARangeToPAVectorForKernel(SceUID address_space, const SceKernelVARange *vRange, SceKernelPAVector *pPAV);</source> | ||
=== sceKernelAddressSpaceGetPhyMemPartByIndexForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x3F74E45C | ||
|- | |||
| 3.63 || 0x47C55DCC | |||
|} | |} | ||
<source lang="C">int | <source lang="C">int sceKernelAddressSpaceGetPhyMemPartByIndexForKernel(SceUInt32 index, void **result);</source> | ||
=== | === sceKernelAddressSpaceGetPartitionByIndexForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x210DB518 | ||
|- | |||
| 3.63 || 0x1F84FE44 | |||
|} | |} | ||
This is a guessed name. | |||
<source lang=" | <source lang="C">SceUIDPartitionObject *sceKernelAddressSpaceGetPartitionByIndexForKernel(void *pAS, int pindex);</source> | ||
=== sceKernelAddressSpaceGetMemBlockInfoByAddrForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x46A5CB84 | ||
|- | |||
| 3.63 || 0xC3F9607E | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelAddressSpaceGetMemBlockInfoByAddrForKernel(SceUID asid, int a2, int a3, int a4);</source> | ||
=== sceKernelCheckAddressSpaceForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x8B07BB52 | ||
|- | |||
| 3.63 || 0x16A54BFE | |||
|} | |} | ||
This is a guessed name. | |||
= | <source lang="C">int sceKernelCheckAddressSpaceForKernel(void);</source> | ||
=== sceKernelGetKernelAddressSpaceForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 1.500.151-3.610.011 || 0xC38B4D52 | ||
|- | |||
| 3.630.011-3.740.011 || 0x2E5CC243 | |||
|} | |} | ||
<source lang=" | <source lang="C">void* sceKernelGetKernelAddressSpaceForKernel(void);</source> | ||
=== sceKernelCreatePhyMemPartForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.61 || 0x2E36E0C4 | ||
|- | |||
| 3.63 || 0xA2DFA383 | |||
|} | |} | ||
Calls [[#sceKernelCreatePhyMemPartByPbaseForKernel]] with pbase = 0. | |||
= | <source lang="C">int sceKernelCreatePhyMemPartForKernel(const char *name, int type, SceSize psize, SceKernelPhyMemPart **pPhyMemPart);</source> | ||
=== sceKernelCreatePhyMemPartByPbaseForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.61 || 0x63D83911 | ||
|- | |||
| 3.63 || 0x5CC56F87 | |||
|} | |} | ||
<source lang=" | <source lang="C"> | ||
/* | |||
type | |||
ORed values: | |||
0x00002 : Shell | |||
0x00004 : Game | |||
0x00005 : PhyCont | |||
0x00060 : CDialog | |||
0x10000 : Lpddr2Main | |||
0x30000 : Cdram | |||
seen values: | |||
0x10002 : ShellLpddr2Main (shared) | |||
0x10004 : GameLpddr2Main | |||
0x10005 : PhyContLpddr2Main | |||
0x10064 : GameCDialogLpddr2Main | |||
0x30002 : ShellCdram | |||
0x30004 : GameCdram | |||
*/ | |||
int sceKernelCreatePhyMemPartByPbaseForKernel(const char *name, int type, void *pbase, SceSize psize, SceKernelPhyMemPart **ppPhyMemPart); | |||
</source> | |||
=== sceKernelDeletePhyMemPartForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.61 || 0x2AEA9E09 | ||
|- | |||
| 3.63 || 0x3F72B2E7 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelDeletePhyMemPartForKernel(SceKernelPhyMemPart *pPhyMemPart);</source> | ||
=== | === sceKernelGetPhyMemPartAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-3.61 || 0x2F6F9C2C | ||
|- | |- | ||
| 3. | | 3.63 || 0x021053DD | ||
|} | |} | ||
<source lang="C">int sceKernelGetPhyMemPartAllForKernel(SceUInt32 vis_level, SceUID *pVector, SceSize vectorSize, SceUInt32 *ret_num);</source> | |||
<source lang=" | |||
=== | === sceKernelGetPhyMemPartInfoForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-0.990 || 0x67849418 | ||
|- | |- | ||
| 3.60 || not present | | 3.60 || not present | ||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelGetPhyMemPartInfoForKernel(SceKernelPhyMemPart *pPhyMemPart, SceKernelPhyMemPartInfo *pInfo);</source> | ||
=== | === sceKernelGetPhyMemPartInfoByIDForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.61 || 0xF4FA0575 | ||
|- | |||
| 3.63 || 0x029F5989 | |||
|} | |} | ||
<source lang="C"> | |||
typedef struct SceKernelPhyMemPartInfo { // size is 0x44 on FW 0.931-0.990 | |||
SceSize size; // Size of this structure | |||
uint32_t unk_4; // some size or address | |||
uint32_t unk_8; // some size or address | |||
char unk1[0xC]; | |||
char *name; // name, maybe pointer or array | |||
char unk2[0x24]; | |||
} SceKernelPhyMemPartInfo; | |||
int sceKernelGetPhyMemPartInfoByIDForKernel(SceUID guid, SceKernelPhyMemPartInfo *pInfo); | |||
</source> | |||
=== sceKernelGetPhyMemPartInfoCoreForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931 || not present | ||
|- | |||
| 0.990-3.61 || 0x3650963F | |||
|- | |||
| 3.63-3.65 || 0xB9B69700 | |||
|} | |} | ||
<source lang="C">int sceKernelGetPhyMemPartInfoCoreForKernel(SceKernelPhyMemPart *pPhyMemPart, ScePhyMemPartInfoCore *pInfo);</source> | |||
<source lang=" | |||
=== | === sceKernelGetPhyMemPartInfoForDebuggerForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-1.50 || not present | ||
|- | |||
| 3.60-3.61 || 0x54E85275 | |||
|- | |||
| 3.63 || 0x73E03A38 | |||
|} | |} | ||
info size is 0xB0-bytes. | |||
<source lang=" | <source lang="C">int sceKernelGetPhyMemPartInfoForDebuggerForKernel(SceKernelPhyMemPart *pPhyMemPart, void *pInfo);</source> | ||
</source> | |||
=== | === sceKernelGrowPhyMemPartForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0x6B3F4102 | ||
|- | |||
| 3.63 || 0x5B434019 | |||
|} | |} | ||
Calls sceKernelGrowPhyMemPartWithFlagsForKernel with flags = 0. | |||
<source lang=" | <source lang="C">int sceKernelGrowPhyMemPartForKernel(SceKernelPhyMemPart *pPhyMemPart, SceSize psize);</source> | ||
=== | === sceKernelGrowPhyMemPartByPbaseForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 3.60-3.61 || 0x775AA5E3 | |||
|- | |||
| 3.63 || 0x36FDA794 | |||
|} | |} | ||
Temp name was sceKernelGrowPhyMemPartWithFlagsForKernel. | |||
Grows physical memory partition with pbase. | |||
<source lang=" | <source lang="C">int sceKernelGrowPhyMemPartByPbaseForKernel(SceKernelPhyMemPart *pPMP, SceUIntPtr pbase, SceSize psize);</source> | ||
</source> | |||
=== | === sceKernelGetGrownPhyMemPartSizeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 3.60-3.61 || 0x4D809B47 | |||
|- | |||
| 3.63 || 0xBC36755F | |||
|} | |} | ||
This is a guessed name. | |||
Returns a global variable. This global variable is either a size or offset or address and is incremented by sceKernelGrowPhyMemPartWithFlagsForKernel. | |||
<source lang=" | <source lang="C">int sceKernelGetGrownPhyMemPartSizeForKernel(void);</source> | ||
=== | === SceSysmemForKernel_153A08A0 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.61 || 0x153A08A0 | ||
|- | |- | ||
| | | 3.63 || 0x6D563733 | ||
|} | |} | ||
< | Adds 1 to <code>pPhyMemPart->nClient</code> using [[SceSysmem#sceKernelCpuAtomicAddAndGet32ForDriver]], and returns its new value. | ||
<source lang="C">SceUInt32 SceSysmemForKernel_153A08A0(SceKernelPhyMemPart* pPhyMemPart);</source> | |||
=== | === sceKernelAllocPhyPageForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0xD449547B | ||
|- | |||
| 3.63-3.74 || 0xB488C82E | |||
|} | |} | ||
<source lang=" | Temp name was sceKernelPhyMemPartAllocPhyPageForKernel. | ||
<source lang="C">int sceKernelAllocPhyPageForKernel(void *pPhyMemPart, SceSize size, void **ppPhyPage);</source> | |||
=== | === sceKernelResetPhyMemPartForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xEEB85560 | ||
|- | |||
| 3.65 || 0x9B7E673F | |||
|} | |} | ||
Used by [[SceProcessmgr#sceKernelResetGameBudgetForKernel]]. | |||
Called with same argument as [[#sceKernelSetPhyPartGameForKernel]]. | |||
<source lang="C">int sceKernelResetPhyMemPartForKernel(SceKernelPhyMemPart *pPhyMemPart);</source> | |||
=== | === sceKernelShowPhyMemPartForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x5C257482 | ||
|- | |||
| 3.63-3.65 || 0x8F0B5536 | |||
|} | |} | ||
Prints information about a Physical Memory Partition. | |||
=== | Only implemented in sysdbg build. | ||
<source lang="C">SceInt32 sceKernelShowPhyMemPartForKernel(SceKernelPhyMemPart *pPMP);</source> | |||
=== sceKernelFreePhyPageForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990-3.61 || 0x00BC5B4A | ||
|- | |||
| 3.63 || 0x193A9D2F | |||
|} | |} | ||
<source lang="C">int sceKernelFreePhyPageForKernel(void *pPhyMemPart, void *pPage);</source> | |||
<source lang=" | |||
=== | === sceKernelSetPhyMemPartHookForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x17F1AA22 | ||
|- | |||
| 3.63 || 0x31FA81B5 | |||
|} | |} | ||
This is a guessed name. | |||
Only implemented in sysdbg build. | |||
=== | <source lang="C">int sceKernelSetPhyMemPartHookForKernel(void *pHook);</source> | ||
=== sceKernelSetPhyMemPartLogCallbackForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x72E7BFAC | ||
|- | |||
| 3.63 || 0x93D0A183 | |||
|} | |} | ||
This is a guessed name. | |||
=== | Only implemented in sysdbg build. | ||
<source lang="C">int sceKernelSetPhyMemPartLogCallbackForKernel(void *pCallbacks);</source> | |||
=== sceKernelAllocKernelHeapForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x432EADA6 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelAllocKernelHeapForKernel(SceSize size);</source> | ||
=== | === sceKernelGetHeapInfoForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.61 || 0x91733EF4 | ||
|- | |||
| 3.63 || 0x17DB1A0A | |||
|} | |} | ||
<source lang=" | <source lang="C"> | ||
// 0.931-0.990: | |||
int sceKernelGetHeapInfoForKernel(SceUID heapid, SceKernelHeapInfo *pInfo); | |||
// 3.60: | |||
int sceKernelGetHeapInfoForKernel(SceUID heapid, SceUInt32 level, SceKernelHeapInfo *pInfo); | |||
</source> | |||
=== | === sceKernelGetHeapInfoAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.61 || 0x48D87E17 | ||
|- | |||
| 3.63 || 0x1380E144 | |||
|} | |} | ||
<source lang=" | This is a guessed namee. | ||
<source lang="C">int sceKernelGetHeapInfoAllForKernel(SceUInt32 vis_level, void *pInfo, SceSize infoSize, SceUInt32 *pnInfo);</source> | |||
=== | === sceKernelGetHeapInfoAllChunkForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0xAC4C0EB1 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelGetHeapInfoAllChunkForKernel(SceUID heapid, SceKernelHeapInfo *pInfo);</source> | ||
=== sceKernelGetHeapInfoByPtrForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || not present | ||
|- | |||
| 3.60-3.61 || 0x68451777 | |||
|- | |||
| 3.63 || 0x80A75187 | |||
|} | |} | ||
<source lang=" | Temp name was sceKernelGetHeapInfoByPointerForKernel. | ||
<source lang="C">int sceKernelGetHeapInfoByPtrForKernel(void *pObject, SceKernelHeapInfo *pInfo);</source> | |||
=== | === sceKernelReallocHeapMemoryForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xFDC0EA11 | ||
|- | |||
| 3.63 || 0x8EE8B917 | |||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="C">void *sceKernelReallocHeapMemoryForKernel(SceUID heapid, void *ptr, SceSize size);</source> | ||
=== sceKernelHeapEnableModeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xF1433852 | ||
|- | |||
| 3.63 || 0x0B36F7F9 | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">int sceKernelHeapEnableModeForKernel(SceUID heapid, SceUInt32 mode);</source> | |||
=== | === sceKernelHeapDiableModeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x71869119 | ||
|- | |||
| 3.63 || 0x6E82D5A0 | |||
|} | |} | ||
This is a guessed name. | |||
<source lang=" | <source lang="C">int sceKernelHeapDiableModeForKernel(SceUID heapid, SceUInt32 mode);</source> | ||
=== | === sceKernelHeapMemoryGetAllocateSizeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 3.60-3.61 || 0x60735311 | ||
|- | |- | ||
| 3. | | 3.63 || 0xD124075A | ||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">SceSize sceKernelHeapMemoryGetAllocateSizeForKernel(void *ptr);</source> | |||
=== | === sceKernelPrintHeapSegmentListForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x2EE50533 | ||
|- | |||
| 3.63 || 0x82059651 | |||
|} | |} | ||
<source lang=" | Only implemented in sysdbg build. | ||
<source lang="C">int sceKernelPrintHeapSegmentListForKernel(SceUID heap_guid);</source> | |||
=== | === sceKernelGetKernelFixedHeapForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.610.011 || 0x68CB9266 | ||
|- | |||
| 3.630.000-3.740.011 || 0x3717C322 | |||
|} | |} | ||
<source lang=" | Temp name was sceKernelGetFixedHeapBySizeForKernel. | ||
<source lang="C">SceUIDFixedHeapObject *sceKernelGetKernelFixedHeapForKernel(SceSize size);</source> | |||
=== | === sceKernelGetFixedHeapInfoForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990.000-3.610.011 || 0x4FA4A624 | ||
|- | |||
| 3.630.000-3.740.011 || 0x890D9160 | |||
|} | |} | ||
<source lang="C">int sceKernelGetFixedHeapInfoForKernel(SceUID heapid, SceKernelFixedHeapInfo *pInfo);</source> | |||
=== sceKernelGetFixedHeapInfoByPointerForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.610.011 || 0x219E90FD | ||
|- | |||
| 3.630.000-3.740.011 || 0xA24D2C8D | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelGetFixedHeapInfoByPointerForKernel(SceUIDFixedHeapObject *pFixedHeap, SceKernelFixedHeapInfo *pInfo);</source> | ||
=== | === sceKernelFixedHeapSetHookForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.06 || not present | ||
|- | |||
| 1.500.151-3.610.011 || 0x8C8E2DD1 | |||
|- | |||
| 3.630.000-3.740.011 || 0xD4511A52 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelFixedHeapSetHookForKernel(SceUID heapid, void *hookdata);</source> | ||
=== | === sceKernelFixedHeapAllocObjectForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990.000-3.610.011 || 0xC8672A3D | ||
|- | |||
| 3.630.000-3.740.011 || 0xABA5313C | |||
|} | |} | ||
This is a guessed name. | |||
<source lang=" | <source lang="C">void *sceKernelFixedHeapAllocObjectForKernel(SceUIDFixedHeapObject *pFixedHeap);</source> | ||
=== | === sceKernelFixedHeapFreeObjectForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.610.011 || 0x571660AA | ||
|- | |||
| 3.630.000-3.740.011 || 0x93344755 | |||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="C">int sceKernelFixedHeapFreeObjectForKernel(SceUIDFixedHeapObject *pFixedHeap, void *pObject);</source> | ||
=== sceKernelFixedHeapSetHookByPointerForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-2.12 || not present | ||
|- | |||
| 2.500.071-3.610.011 || 0x3EC2345B | |||
|- | |||
| 3.630.000-3.740.011 || 0x811C452B | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">int sceKernelFixedHeapSetHookByPointerForKernel(SceUIDFixedHeapObject *pFixedHeap, void *a2);</source> | |||
=== | === sceKernelNameHeapInsertForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0x08AB3DAE | ||
|- | |||
| 3.63 || 0xB628B46B | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelNameHeapInsertForKernel(const char *name, int flags, char **result);</source> | ||
=== | === sceKernelNameHeapDeleteForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0x9C7B62AB | ||
|- | |||
| 3.63 || 0x634D0D0C | |||
|} | |} | ||
name max length is 31 characters. | |||
=== | <source lang="C">int sceKernelNameHeapDeleteForKernel(const char *name, SceUInt32 flag);</source> | ||
=== sceKernelNameHeapLinkForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xEC1293D2 | ||
|- | |||
| 3.63 || 0x40965FD1 | |||
|} | |} | ||
<source lang="C">int sceKernelNameHeapLinkForKernel(const char *name, int flags, void **result);</source> | |||
=== sceKernelNameHeapFindForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xB543A23C | ||
|- | |||
| 3.63 || 0x9F1A9AA6 | |||
|} | |} | ||
<source lang=" | Search for <code>name</code> in one of the <code>NameHeap</code>s. | ||
If found, a pointer to the heap's copy of <code>name</code> is returned in <code>ppHeapName</code>. | |||
<source lang="C"> | |||
/* Search in the "unique" NameHeap (contains name of OPENABLE objects) when this flag is set */ | |||
#define SCE_KERNEL_NAME_HEAP_ATTR_UNIQUE (0x2u) | |||
int sceKernelNameHeapFindForKernel(const char *name, uint32_t attr, char **ppHeapName); | |||
</source> | |||
=== | === sceKernelNameHeapGetKeyForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x942D15FC | ||
|- | |||
| 3.63 || 0xEB48682E | |||
|} | |} | ||
This is a guessed name. | |||
<source lang=" | Calculates the <code>MurmurHash3</code> hash of <code>key</code>. Used to get UID by name. | ||
<source lang="C">SceUInt32 sceKernelNameHeapGetKeyForKernel(const char *key, SceSize len, SceUInt32 seed);</source> | |||
=== | === sceKernelNameHeapGetInfoForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-0.990 || not present | ||
|- | |||
| 0.996.090-3.610.011 || 0xE443253B | |||
|- | |||
| 3.630.000-3.740.011 || 0x01194C2E | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelNameHeapGetInfoForKernel(void *pInfo);</source> | ||
=== | === sceKernelCreateObjectHeapForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x36830F46 | ||
|- | |||
| 3.63 || 0x9D8F3BE8 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelCreateObjectHeapForKernel(SceUID pid, SceBool a2, SceFixedHeapHook *pHeapHook, SceKernelObjectHeap **ppObjectHeap);</source> | ||
=== | === sceKernelCreateObjectHeapWithHeapForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x7FD757FE | ||
|- | |||
| 3.63 || 0x660DC18A | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">int sceKernelCreateObjectHeapWithHeapForKernel(SceKernelObjectHeap *pObjectHeap, SceUID pid, SceUID heapid);</source> | |||
=== | === sceKernelDeleteObjectHeapForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x080BA2F3 | ||
|- | |||
| 3.63 || 0x2F526AB8 | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">int sceKernelDeleteObjectHeapForKernel(SceKernelObjectHeap *pObjectHeap);</source> | |||
=== | === sceKernelObjectHeapAllocForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x7FDF483A | ||
|- | |||
| 3.63 || 0xEBFC8E10 | |||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="C">void *sceKernelObjectHeapAllocForKernel(SceKernelObjectHeap *pObjectHeap, SceSize size);</source> | ||
=== sceKernelObjectHeapFreeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x131CEF52 | ||
|- | |||
| 3.63 || 0x17D3D4BD | |||
|} | |} | ||
This is a guessed name. | |||
<source lang="C">int sceKernelObjectHeapFreeForKernel(SceKernelObjectHeap *pObjectHeap, SceSize size, void *pObject);</source> | |||
=== | === sceKernelObjectHeapSetResourceLimitForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x98E6905B | ||
|- | |||
| 3.63 || 0xDFA1EB57 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelObjectHeapSetResourceLimitForKernel(int a1, int a2, int a3, int a4, int a5);</source> | ||
=== | === sceKernelObjectHeapSetResourceLimitAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x5409397F | ||
|- | |||
| 3.63 || 0x067F2550 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelObjectHeapSetResourceLimitAllForKernel(SceKernelObjectHeap *pObjectHeap, int a2, int a3);</source> | ||
=== | === sceKernelObjectHeapSetSizeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x6427560F | ||
|- | |||
| 3.63 || 0xB591E49F | |||
|} | |} | ||
This is a guessed name. | |||
<source lang=" | <source lang="C">int sceKernelObjectHeapSetSizeForKernel(SceUInt32 index, SceUInt32 size);</source> | ||
=== | === sceKernelGetObjectHeapForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x3B75CBED | ||
|- | |||
| 3.63 || 0x857408DA | |||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="C">SceKernelObjectHeap *sceKernelGetObjectHeapForKernel(void);</source> | ||
=== sceKernelGetSharedObjectHeapForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xBF0294E4 | ||
|- | |||
| 3.63 || 0x791D6205 | |||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="C">SceKernelObjectHeap *sceKernelGetSharedObjectHeapForKernel(void);</source> | ||
=== SceSysmemForKernel_B8D769C6 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xB8D769C6 | ||
|- | |||
| 3.63 || 0xDBEACE2C | |||
|} | |} | ||
<source lang="C">int SceSysmemForKernel_B8D769C6(SceKernelObjectHeap *pObjectHeap, void *info);</source> | |||
=== sceUIDCreateEntryHeapForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x19CAEF35 | ||
|- | |||
| 3.65 || 0x89BEF058 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceUIDCreateEntryHeapForKernel(SceUID pid, SceUID heap_guid);</source> | ||
=== | === sceUIDDeleteEntryHeapForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xF0C3FCFC | ||
|- | |||
| 3.65 || 0xF6D09BD9 | |||
|} | |} | ||
<source lang="C">int sceUIDDeleteEntryHeapForKernel(SceUID guid);</source> | |||
<source lang=" | |||
</source> | |||
=== sceUIDRegisterForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.931-0.990 || 0x59162CD7 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Calls [[#sceGUIDRegisterForKernel]]. | |||
<source lang=" | <source lang="C">int sceUIDRegisterForKernel(SceClass *pClass, const char *name, SceKernelObject *pObject);</source> | ||
=== | === sceUIDObjectSetClassForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-0.990 || 0x226DE851 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceUIDObjectSetClassForKernel(SceKernelObject *pObject, SceClass *pClass);</source> | |||
=== sceUIDGetUIDVectorByClassForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
} | |- | ||
| 0.931.010-1.060.031 || 0xA2F03233 | |||
|- | |||
| 1.500.151-3.740.011 || not present | |||
|} | |||
Calls [[#sceGUIDGetUIDVectorByClassForKernel]]. | |||
=== sceUIDGetProcUIDVectorByClassForKernel === | |||
= | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-1.060.031 || 0x51C08396 | ||
|- | |||
| 1.500.151-3.740.011 || not present | |||
|} | |} | ||
=== sceUIDReferObjectWithLevelForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xF79B52B2 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceUIDReferObjectWithLevelForKernel(SceUID uid, SceUInt32 level, SceKernelObject **ppEntry);</source> | ||
=== | === sceUIDGetObjectForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-0.990 || 0xC4893914 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Calls [[#sceGUIDGetObjectForDriver]]. | |||
<source lang=" | <source lang="C">int sceUIDGetObjectForKernel(SceUID uid, SceKernelObject **ppEntry);</source> | ||
=== | === sceUIDtoObjectForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xED221825 | ||
|- | |||
| 3.65 || 0xFA6C098C | |||
|} | |} | ||
<source lang=" | Calls [[SceSysmem#sceGUIDGetObjectForDriver]]. | ||
<source lang="C">SceKernelObject *sceUIDtoObjectForKernel(SceUID uid);</source> | |||
=== | === sceUIDClassIsSubclassForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-1.691 || not present (in ForDriver) | ||
|- | |||
| 3.60-3.61 || 0x48750A5A | |||
|- | |||
| 3.63 || 0x7F7D5C4A | |||
|} | |} | ||
<source lang=" | This is a guessed name. Temp name was sceUIDClassIsWithinSubclassChainForKernel. | ||
<source lang="C">SceBool sceUIDClassIsSubclassForKernel(SceClass *pClass, SceClass *pTargetClass);</source> | |||
=== | === sceUIDEntryHeapCloseAllPUIDForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0xFAF96C1F | ||
|- | |||
| 3.65 || 0x133024A5 | |||
|} | |} | ||
<source lang="C">int sceUIDEntryHeapCloseAllPUIDForKernel(SceUID guid);</source> | |||
=== sceKernelUIDEntryHeapGetInfoForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 3.60-3.61 || 0x686AA15C | |||
|- | |||
| 3.63 || 0xCCD47B97 | |||
|} | |} | ||
<source lang=" | Official name may also be sceUIDEntryHeapGetInfoForKernel (seen in 4.00). | ||
struct | |||
<source lang="C"> | |||
typedef struct SceUIDEntryHeapInfo { | |||
SceSize size; //<! Size of this structure (0x18) | |||
SceSize objectSize; | |||
}; | SceSize totalHeapSize; | ||
SceSize totalItemCount; | |||
SceSize unk10; | |||
SceSize unk14; | |||
} SceUIDEntryHeapInfo; | |||
SceInt32 sceKernelUIDEntryHeapGetInfoForKernel(SceUID entryHeapId, SceUIDEntryHeapInfo *pInfo); | |||
</source> | </source> | ||
=== | === sceUIDEntryHeapSetHookForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xCD985AEB | ||
|- | |||
| 3.63 || 0x666C878F | |||
|} | |} | ||
?Implemented in internal system software.? Not implemented in external system software. | |||
=== | <source lang="C">int sceUIDEntryHeapSetHookForKernel(SceUID guid, void *pHook);</source> | ||
=== sceUIDEntryGetNameForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x114E6476 | ||
|- | |||
| 3.63 || 0x5FD15C6E | |||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="C">char *sceUIDEntryGetNameForKernel(SceUIDEntry *pEntry);</source> | ||
=== sceUIDEntryGetLevelForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xC2F7D8A4 | ||
|- | |||
| 3.63 || 0x797C858B | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">SceUInt16 sceUIDEntryGetLevelForKernel(SceUIDEntry *pEntry);</source> | |||
=== | === sceUIDEntryGetAttrForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x8FB73A29 | ||
|- | |||
| 3.63 || 0x17F12DCE | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">SceUInt32 sceUIDEntryGetAttrForKernel(SceUIDEntry *pEntry);</source> | |||
=== | === sceUIDEntryGetLinkCountForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x876A7F44 | ||
|- | |||
| 3.63 || 0xF3DB2D71 | |||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="C">SceUInt8 sceUIDEntryGetLinkCountForKernel(SceUIDEntry *pEntry);</source> | ||
=== sceUIDEntryGetUIDForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x6BB6AF94 | ||
|- | |||
| 3.63 || 0x03A2CAF0 | |||
|} | |} | ||
This is a guessed name. | |||
<source lang=" | <source lang="C">SceUID sceUIDEntryGetUIDForKernel(SceUIDEntry *pEntry);</source> | ||
=== | === sceGUIDRegisterForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0xAF42AAD5 | ||
|- | |||
| 3.63 || 0x6DB44A42 | |||
|} | |} | ||
<source lang=" | <source lang="C">SceUID sceGUIDRegisterForKernel(SceClass *pClass, const char *name, SceKernelObject *pObject);</source> | ||
=== | === sceGUIDUnregisterForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0xE79BBCF2 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceGUIDUnregisterForKernel(SceUID uid);</source> | ||
=== | === sceGUIDOpenByGUIDForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990-3.61 || 0xCF53EEE4 | ||
|- | |||
| 3.63 || 0x89D33DF0 | |||
|} | |} | ||
<source lang="C">SceUID sceGUIDOpenByGUIDForKernel(SceUID guid);</source> | |||
=== sceGUIDNameForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-1.060.031 || 0x250EE289 | ||
|- | |||
| 1.50-3.740.011 || not present | |||
|} | |} | ||
<source lang="C">char *sceGUIDNameForKernel(SceUID uid);</source> | |||
<source lang="C"> | |||
=== | === sceGUIDtoClassForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.61 || 0x66636970 | ||
|- | |||
| 3.63 || 0x368F1C36 | |||
|} | |} | ||
<source lang="C">SceClass *sceGUIDtoClassForKernel(SceUID guid);</source> | |||
=== sceGUIDGetObjectWithClassForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0x7ABFA9A7 | ||
|- | |||
| 3.63 || 0x0E43E113 | |||
|} | |} | ||
Possible name are sceUIDGetObjectWithClassForKernel or sceUIDtoProcessForKernel. | |||
=== | <source lang="C">int sceGUIDGetObjectWithClassForKernel(SceUID uid, SceClass *pClass, SceKernelObject **obj);</source> | ||
=== sceGUIDGetUIDVectorByClassForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-3.600.011 || 0xEC7D36EF | ||
|- | |||
| 3.630.011-3.740.011 || 0x52137FA3 | |||
|} | |} | ||
< | Copy UIDs to <code>pVector</code> by referring to all objects created by <code>pClass</code>. | ||
<source lang="C"> | |||
/* | |||
* nVector - maximum number of copied UIDs | |||
* ret_num - number of retrieved UIDs | |||
*/ | |||
int sceGUIDGetUIDVectorByClassForKernel(SceClass *pClass, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num); | |||
</source> | </source> | ||
=== | === sceGUIDGetUIDVectorWeakByClassForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.060.031 || not present | ||
|- | |||
| 1.500.151-3.610.011 || 0x59F577E8 | |||
|- | |||
| 3.630.011-3.740.011 || 0xE9957329 | |||
|} | |} | ||
< | Copy UIDs to <code>pVector</code> by referring to all objects created by <code>pClass</code>. | ||
=== | <source lang="C"> | ||
/* | |||
* nVector - maximum number of copied UIDs | |||
* ret_num - number of retrieved UIDs | |||
*/ | |||
int sceGUIDGetUIDVectorWeakByClassForKernel(SceClass *pClass, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num); | |||
</source> | |||
=== sceGUIDGetEntryForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x45F2A59C | ||
|- | |||
| 3.63 || 0xFF464A49 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceGUIDGetEntryForKernel(SceUID guid, SceUIDEntry **ppEntry);</source> | ||
=== | === sceGUIDGetEntryInfoAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.610.011 || 0x2A79C51C | ||
|- | |||
| 3.630.011-3.740.011 || 0x3BF0DE65 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceGUIDGetEntryInfoAllForKernel(SceUInt32 vis_level, SceUID guid, SceUID *pVector, SceUInt32 nVector, void *pInfo);</source> | ||
=== | === sceGUIDGetEntryInfoClassForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.610.011 || 0xE90CFD62 | ||
|- | |||
| 3.630.011-3.740.011 || 0x71E934DB | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceGUIDGetEntryInfoClassForKernel(SceUID guid, SceClass *pClass, SceUInt32 vis_level, void *pInfoVector, SceUInt32 nVector, SceUInt32 *ret_num);</source> | ||
=== | === sceGUIDKernelCreateForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990 || 0xE6FAD50A | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang=" | Create a GUID with default attribute (0x30000). | ||
<source lang="C">int sceGUIDKernelCreateForKernel(SceClass *pClass, const char *name, SceKernelObject **ppEntry);</source> | |||
=== | === sceGUIDKernelCreateWithAttrForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0x53E1FFDE | ||
|- | |||
| 3.63 || 0x6D26B066 | |||
|} | |} | ||
<source lang=" | Create a GUID with the specified attribute. | ||
<source lang="C">int sceGUIDKernelCreateWithAttrForKernel(SceClass *pClass, const char *name, SceUInt32 attr, SceKernelObject **ppEntry);</source> | |||
=== | === sceGUIDKernelCreateWithOptForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-0.995 || not present | ||
|- | |||
| 0.996-3.60 || 0xDF0288D7 | |||
|- | |||
| 3.65 || 0xFB6390CE | |||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCreateUidObjForKernel, scePUIDKernelCreateWithAttrForKernel. | |||
= | <source lang="c"> | ||
{ | typedef struct SceGUIDKernelCreateOpt { // size is at least 0x20 on FW 3.60 | ||
SceUInt32 attr; | |||
SceUInt32 field_4; | |||
SceUID uid; | |||
SceUID pid; | |||
SceUInt32 field_10; | |||
SceUInt32 classAttr; | |||
SceUInt32 uidAttr; | |||
SceUID pid2; | |||
} SceGUIDKernelCreateOpt; | |||
SceUID sceGUIDKernelCreateWithOptForKernel(SceClass *pClass, const char *name, SceGUIDKernelCreateOpt *pOpt, SceKernelObject **ppEntry); | |||
</source> | |||
=== | === sceGUIDGetVisibilityLevelForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xC69666C3 | ||
|- | |||
| 3.63 || 0x4E923101 | |||
|} | |} | ||
<source lang=" | <source lang="C">SceUInt32 sceGUIDGetVisibilityLevelForKernel(SceUID guid);</source> | ||
=== | === sceGUIDSetVisibilityLevelForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xCB8D03C0 | ||
|- | |||
| 3.63 || 0xE8CC2166 | |||
|} | |} | ||
Sets visibilityLevel into guid's GUIDEntry. | |||
<source lang=" | <source lang="C">int sceGUIDSetVisibilityLevelForKernel(SceUID guid, int visibilityLevel);</source> | ||
=== | === sceGUIDFindByObjectForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0x95ABFDC3 | ||
|- | |||
| 3.63 || 0xEC90AA11 | |||
|} | |} | ||
<source lang=" | <source lang="C">SceUID sceGUIDFindByObjectForKernel(void *pObject);</source> | ||
=== | === sceGUIDFindByNameForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xCEBA8031 | ||
|- | |||
| 3.63 || 0xBDE00106 | |||
|} | |} | ||
<source lang=" | <source lang="C">SceUID sceGUIDFindByNameForKernel(const char *name);</source> | ||
=== | === sceGUIDFindByNameAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x4B5C85AC | ||
|- | |||
| 3.63 || 0xF49C0BE8 | |||
|} | |} | ||
<source lang="C"> | |||
// return value: to reverse, should be either SceUID guid or void* pObj | |||
SceUID sceGUIDFindByNameAllForKernel(const char *name); | |||
</source> | |||
=== sceGUIDGetPIDForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xCF5A2311 | ||
|- | |||
| 3.63 || 0xBD42A0FC | |||
|} | |} | ||
Returns Process ID for guid. | |||
<source lang=" | <source lang="C">SceUID sceGUIDGetPIDForKernel(SceUID guid);</source> | ||
=== | === sceGUIDSetPIDForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x812E7A53 | ||
|- | |||
| 3.63 || 0x46DF8C8A | |||
|} | |} | ||
Sets Process ID for guid. | |||
<source lang="C">int sceGUIDSetPIDForKernel(SceUID guid, SceUID pid);</source> | |||
=== sceGUIDSetCNOAForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x8D6AF468 | ||
|- | |||
| 3.63 || 0x5EDDEEB5 | |||
|} | |} | ||
Setting Class Name Object Attr. | |||
=== | <source lang="C">int sceGUIDSetCNOAForKernel(SceUID guid, SceClass *pClass, const char *name, void *pObject, SceUInt32 attr);</source> | ||
=== sceGUIDSetForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-3.61 || 0xD7B323EB | ||
|- | |||
| 3.63 || 0xBF275C5A | |||
|} | |} | ||
Re setting the GUID on an object that already has a uid assigned may cause the system to malfunction. | |||
<source lang=" | <source lang="C">int sceGUIDSetForKernel(SceUID guid, SceClass *pClass, const char *name, SceKernelObject *pObject);</source> | ||
=== | === scePUIDGetEntryInfoAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.692.000 || not present | ||
|- | |||
| 1.800.071-3.610.011 || 0x2770A7D7 | |||
|- | |||
| 3.630.011-3.740.011 || 0x3C3005EE | |||
|} | |} | ||
<source lang=" | <source lang="C">int scePUIDGetEntryInfoAllForKernel(SceUID pid, SceClass *pClass, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, void *pInfo);</source> | ||
=== scePUIDGetAttrForKernel === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x86E83C0D | ||
|- | |||
| 3.63 || 0x96BD47D1 | |||
|} | |} | ||
<source lang=" | <source lang="C">int scePUIDGetAttrForKernel(SceUID pid, SceUID puid, SceUInt32 *pAttr);</source> | ||
=== | === scePUIDReleaseObjectForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.61 || 0x3FCA782B | ||
|- | |||
| 3.63 || 0xCE561224 | |||
|} | |} | ||
<source lang=" | <source lang="C">int scePUIDReleaseObjectForKernel(SceUID pid, SceUID puid);</source> | ||
=== | === scePUIDGetInfoForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 3.60-3.61 || 0x12ED88AE | |||
|- | |||
| 3.63 || 0x857701D4 | |||
|} | |} | ||
<source lang=" | <source lang="C"> | ||
// pInfo size is 0x14 bytes | |||
int scePUIDGetInfoForKernel(SceUID pid, SceUID puid, void *pInfo); | |||
</source> | |||
=== | === scePUIDtoGUIDWithDebugForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xB3E2AA7A | ||
|- | |- | ||
| | | 3.63 || 0x188C8742 | ||
|} | |} | ||
This is a guessed name. | |||
<source lang="C">SceUID scePUIDtoGUIDWithDebugForKernel(SceUID pid, SceUID puid);</source> | |||
=== | === scePUIDReferObjectForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0x620E00E7 | ||
|- | |||
| 3.63 || 0x2C15615F | |||
|} | |} | ||
<source lang=" | <source lang="C">int scePUIDReferObjectForKernel(SceUID pid, SceUID puid, SceObject **ppObject);</source> | ||
=== | === scePUIDOpenByNameWithOptForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x22F79E82 | ||
|- | |||
| 3.63 || 0x201E970B | |||
|} | |} | ||
<source lang=" | <source lang="C">SceUID scePUIDOpenByNameWithOptForKernel(ScePID pid, const char *name, void *pOpt);</source> | ||
=== | === scePUIDGetPUIDVectorByGUIDForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010-2.06 || not present | ||
|- | |||
| 2.100.081-3.610.011 || 0xBF04FC83 | |||
|- | |||
| 3.630.011-3.740.011 || 0xCE16AD91 | |||
|} | |} | ||
<source lang=" | <source lang="C">int scePUIDGetPUIDVectorByGUIDForKernel(SceUID pid, SceUID guid, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num);</source> | ||
=== | === scePUIDGetUIDVectorByClassForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990.000-3.610.011 || 0xB16D5136 | ||
|- | |||
| 3.630.000-3.740.011 || 0x08C05493 | |||
|} | |} | ||
Similar to [[#sceGUIDGetUIDVectorByClassForKernel]]. | |||
=== | <source lang="C">int scePUIDGetUIDVectorByClassForKernel(SceUID pid, SceClass *pClass, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num);</source> | ||
=== scePUIDReferObjectWithClassForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x9C53F457 | ||
|- | |||
| 3.63 || 0x9C23DFF7 | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">int scePUIDReferObjectWithClassForKernel(SceUID pid, SceUID puid, SceClass *pClass, void **ppObject);</source> | |||
=== | === scePUIDOpenByGUIDWithOptForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x53A2E272 | ||
|- | |||
| 3.63 || 0x1FF2749A | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">SceUID scePUIDOpenByGUIDWithOptForKernel(SceUID pid, SceUID guid, void *pOpt);</source> | |||
=== | === scePUIDGetGUIDVectorForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x3203AE64 | ||
|- | |||
| 3.63 || 0x66489B4B | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
<source lang="C">int scePUIDGetGUIDVectorForKernel(SceUID pid, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num);</source> | |||
=== | === sceKernelGetPhyPartKernelForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.61 || 0x4D38F861 | ||
|- | |||
| 3.63-3.65 || 0x0164D817 | |||
|} | |} | ||
return gpPhyPartKernel; | |||
=== | <source lang="C">void *sceKernelGetPhyPartKernelForKernel(void);</source> | ||
=== sceKernelGetPhyPartToolForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0xF8E95A5A | ||
|- | |||
| 3.63-3.65 || 0x0B1B4ACA | |||
|} | |} | ||
<source lang=" | <source lang="C">void *sceKernelGetPhyPartToolForKernel(void);</source> | ||
=== | === sceKernelGetPhyPartGameForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xB60568F9 | ||
|- | |||
| 3.63-3.65 || 0x62800A6B | |||
|} | |} | ||
<source lang=" | <source lang="C">void *sceKernelGetPhyPartGameForKernel(void);</source> | ||
=== | === sceKernelSetPhyPartGameForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x77876A8D | ||
|- | |||
| 3.63-3.65 || 0x3753C584 | |||
|} | |} | ||
<source lang="C">void sceKernelSetPhyPartGameForKernel(void *pPhyPart);</source> | |||
<source lang=" | |||
=== | === sceKernelSetPhyPartCdramForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x07FEBBCA | ||
|- | |||
| 3.63 || 0xDCEF10B2 | |||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="C">void sceKernelSetPhyPartCdramForKernel(void *pPhyPart);</source> | ||
=== sceKernelPhyMemLowAllocForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.61 || 0x5E169FEF | ||
|- | |||
| 3.63 || 0xEA98CCE1 | |||
|} | |} | ||
Allocate a range of physically contiguous "pages" from a PhyMemLow object. | |||
<source lang=" | <source lang="C"> | ||
// type must be one of SCE_KERNEL_PHYMEMLOW_TYPE (0x10001, 0x10002 or 0x20001) | |||
// size and alignment must be aligned to the target PHYMEMLOW granularity | |||
// On success, *pOut contains the base physical address of a range with the provided size | |||
SceInt32 sceKernelPhyMemLowAllocForKernel(SceUInt32 type, SceSize size, SceSize alignment, SceUIntPAddr* pOut); | |||
</source> | |||
=== | === sceKernelPhyMemLowPA2VAForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.61 || 0x0FD6B756 | ||
|- | |||
| 3.63 || 0x2CFD8C9A | |||
|} | |} | ||
<source lang="C"> | |||
// type must be 0x10002 | |||
<source lang=" | int sceKernelPhyMemLowPA2VAForKernel(int type, void *PA, void **pVA); | ||
</source> | |||
=== | === sceKernelGetPhyMemLowInfoForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x06A4DA6C | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C"> | |||
// type must be one of SCE_KERNEL_PHYMEMLOW_TYPE (0x10001, 0x10002 or 0x20001) | |||
<source lang=" | SceInt32 sceKernelGetPhyMemLowInfoForKernel(SceUInt32 type, SceKernelPhyMemLowInfo *info); | ||
</source> | |||
=== | === sceKernelPhyMemLowFreeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.61 || 0x18B99FDD | ||
|- | |||
| 3.63 || 0x844DF3DA | |||
|} | |} | ||
Free a range of physical "pages" from a PhyMemLow object. | |||
<source lang=" | <source lang="C"> | ||
// type must be one of SCE_KERNEL_PHYMEMLOW_TYPE (0x10001, 0x10002 or 0x20001) | |||
SceInt32 sceKernelPhyMemLowFreeForKernel(SceUInt32 type, SceUIntPAddr pbase, SceSize size); | |||
</source> | |||
=== | === sceKernelSetPhyMemLowHookForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x2658EE0A | ||
|- | |||
| 3.63 || 0x2C7B8D65 | |||
|} | |} | ||
This is a guessed name. | |||
Only implemented in sysdbg build. | |||
=== | <source lang="C">int sceKernelSetPhyMemLowHookForKernel(void *pHook);</source> | ||
=== sceKernelAllocMemBlockByCommandForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xCA91B9D5 | ||
|- | |||
| 3.63 || 0x455B0A4C | |||
|} | |} | ||
<source lang=" | <source lang="C"> | ||
typedef struct SceKernelMemBlockAllocCommand { // size is 0x94 on FW 3.65 | |||
SceSize size; // Size of this structure | |||
SceUInt32 code; | |||
char* name; | |||
char unk_8[0x74]; | |||
void* typeInfo; | |||
char unk_0x84[0x10]; | |||
} SceKernelMemBlockAllocCommand; | |||
int sceKernelAllocMemBlockByCommandForKernel(SceKernelMemBlockAllocCommand *pCommand); | |||
</source> | |||
=== | === sceKernelAllocSimpleMemBlockForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0xF81F4672 | ||
|- | |||
| 3.63 || 0x814CDCC5 | |||
|} | |} | ||
<source lang=" | <source lang="C"> | ||
typedef struct SceKernelSimpleMemBlock { | |||
char unk_0[0x14]; | |||
void *base; | |||
char unk_18[0x14]; | |||
void *PhyPage; | |||
SceSize size; | |||
} SceKernelSimpleMemBlock; | |||
int sceKernelAllocSimpleMemBlockForKernel(const char *name, SceKernelMemBlockType type, SceSize vsize, SceKernelSimpleMemBlock *smb); | |||
</source> | |||
=== | === sceKernelFreeSimpleMemBlockForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0xA1FFA2C9 | ||
|- | |||
| 3.63 || 0xA4DB88E1 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelFreeSimpleMemBlockForKernel(void *a1);</source> | ||
=== sceKernelGetSimpleMemBlockBaseForKernel === | |||
{| class="wikitable" | |||
=== | |||
{| class="wikitable" | |||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.61 || 0x0A8D14EC | ||
|- | |||
| 3.63 || 0x39D5A3B7 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelGetSimpleMemBlockBaseForKernel(SceKernelSimpleMemBlock *smb, void **base);</source> | ||
=== | === sceKernelSimpleMemBlockGetFIFOForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x43DFCE89 | ||
|- | |||
| 3.63 || 0xBD625136 | |||
|} | |} | ||
This is a guessed name. | |||
int | <source lang="C">int sceKernelSimpleMemBlockGetFIFOForKernel(void *pResult);</source> | ||
</source> | |||
=== | === sceKernelGetMemBlockInfoAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xFEF54604 | ||
|- | |||
| 3.63 || 0x1D19C864 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelGetMemBlockInfoAllForKernel(void *pPart, int a2, int a3, int a4, int a5, SceUInt32 level, void *pInfoBuffer, int a8, SceUInt32 *a9);</source> | ||
=== sceKernelGetMemBlockInfoSimpleForKernel === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990- | | 0.990-3.61 || 0x2364A170 | ||
|- | |- | ||
| 3. | | 3.63 || 0xBA441FD0 | ||
|} | |} | ||
<source lang="C">int sceKernelGetMemBlockInfoSimpleForKernel(SceUID uid, SceKernelMemBlockInfoSimple *pInfo);</source> | |||
=== sceKernelGetMemBlockTypeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x289BE3EC | ||
|- | |- | ||
| 3. | | 3.63 || 0xD44FE44B | ||
|} | |} | ||
<source lang="c"> | |||
/*** | |||
* Gets the memory block type of a memory block | |||
* | |||
* @param[in] uid - SceUID of the memory block | |||
* @param[out] type - Type of the memory block identified by uid | |||
* | |||
* @return 0 on success, < 0 on error. | |||
*/ | |||
int sceKernelGetMemBlockTypeForKernel(SceUID uid, unsigned int *type);</source> | |||
=== | === sceKernelRemapMemBlockForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-1.05 || 0x8D332AE1 | ||
|- | |- | ||
| 3.60 || not present | | 1.50-3.60 || not present. Moved to ForDriver | ||
|} | |} | ||
=== | Temp name was sceKernelRemapBlockForKernel. | ||
See [[SceSysmem#sceKernelRemapMemBlockForDriver|sceKernelRemapMemBlockForDriver]]. | |||
=== sceKernelSetMemBlockDebugCallbackForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x01DE3AB7 | ||
|- | |- | ||
| 3. | | 3.63 || 0xF57A97A0 | ||
|} | |} | ||
=== | This is a guessed name. | ||
Only implemented in sysdbg build. | |||
<source lang="C">int sceKernelSetMemBlockDebugCallbackForKernel(void *pCallbacks);</source> | |||
=== sceKernelMemBlockAssocPhyPageForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xA88F6D88 | ||
|- | |- | ||
| 3. | | 3.63 || 0x441E6BE9 | ||
|} | |} | ||
=== | This is a guessed name. | ||
<source lang="C">int sceKernelMemBlockAssocPhyPageForKernel(SceUID guid, const SceUIntPtr *a2);</source> | |||
=== sceKernelAllocPartitionStackMemBlockForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x64133268 | ||
|- | |- | ||
| 3. | | 3.63 || 0x40870E74 | ||
|} | |} | ||
=== | Temp name was sceKernelAllocStackBlockForKernel. | ||
<source lang="C">SceUID sceKernelAllocPartitionStackMemBlockForKernel(const char *name, SceSize size, int a3);</source> | |||
=== sceKernelMemBlockGetCodeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x61C2AA52 | ||
|- | |- | ||
| 3. | | 3.63 || 0x48D2E408 | ||
|} | |} | ||
=== | This is a guessed name. | ||
<source lang="C">SceUint32 sceKernelMemBlockGetCodeForKernel(SceUint32 type);</source> | |||
=== sceKernelAllocPartitionMemBlockForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x5FFE4B79 | ||
|- | |||
| 3.65 || 0x6DB46017 | |||
|} | |} | ||
Temp name was sceKernelAllocSystemCallTableForKernel. | |||
<source lang="C"> | |||
SceUID sceKernelAllocPartitionMemBlockForKernel(SceUID part, const char *name, SceKernelMemBlockType type, SceSize size, const struct SceKernelAllocMemBlockOptKernel *pOpt); | |||
</source> | </source> | ||
=== | === sceKernelPartitionGetInfoForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x7BE4D3D1 | ||
|- | |||
| 3.63 || 0xFB101B86 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelPartitionGetInfoForKernel(SceUID part_id, void *pInfo);</source> | ||
int | |||
</source> | |||
=== | === sceKernelGetPhyPageResetForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.61 || 0xEB350679 | ||
|- | |||
| 3.63 || 0x8FD11E02 | |||
|} | |} | ||
<source lang=" | <source lang="C">void *sceKernelGetPhyPageResetForKernel(void);</source> | ||
</source> | |||
=== | === SceSysmemForKernel_BD33EDDF === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931 || 0xBD33EDDF | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Gets thread's name. Returns 0 on success. | |||
=== | <source lang="C">int SceSysmemForKernel_BD33EDDF(int maybe_thid, char **pThreadName);</source> | ||
=== sceKernelAllocForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xC0A4D2F3 | ||
|- | |||
| 3.65 || 0x85571907 | |||
|} | |} | ||
<source lang=" | <source lang="C">void *sceKernelAllocForKernel(SceSize len);</source> | ||
=== | === sceKernelAllocWithOptForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xA2CD1697 | ||
|- | |||
| 3.63 || 0xCF3C3F7A | |||
|} | |} | ||
<source lang=" | <source lang="C"> | ||
typedef struct SceAllocOpt { | |||
SceSize size; // 0x14 | |||
SceSize data04; // maybe len align? | |||
SceSize align; | |||
int data0C; | |||
int data10; | |||
} SceAllocOpt; | |||
void *sceKernelAllocWithOptForKernel(SceSize len, SceAllocOpt *pOpt); | |||
</source> | </source> | ||
=== | === sceKernelFreeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990-3.60 || 0xABAB0FAB | ||
|- | |||
| 3.65 || 0x4233C16D | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelFreeForKernel(void *ptr);</source> | ||
=== sceKernelSetAllocFreeHookForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.61 || 0xBC2E2B2B | |||
int | |- | ||
</source> | | 3.63 || 0x42834422 | ||
|} | |||
Only implemented in sysdbg build. | |||
<source lang="C">int sceKernelSetAllocFreeHookForKernel(void *pHook);</source> | |||
=== | === SceSysmemForKernel_C38D61FC === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xC38D61FC | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Calls [[#SceSysmemForDriver_89A44858]]. | |||
=== | === SceSysmemForKernel_7C797940 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-0.990 || 0x7C797940 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Calls [[#SceSysmemForKernel_620E00E7]] or [[#sceGUIDReferObjectForDriver]]. | |||
=== | === sceKernelVSlotMapProcMemoryForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xFAD03241 | ||
|- | |||
| 3.63 || 0x14D3807B | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelVSlotMapProcMemoryForKernel(SceUID pid, void *addr, SceSize size, SceUInt32 flag, SceKernelVSlot *pVslot, int *pBaseAddrOrOffset);</source> | ||
int | |||
</source> | |||
=== | === sceKernelVSlotUnmapProcMemoryForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x789CD5BF | ||
|- | |||
| 3.63 || 0x4EEF69C7 | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelVSlotUnmapProcMemoryForKernel(SceKernelVSlot *pVslot);</source> | ||
=== SceSysmemForKernel_ECF9435A === | |||
</source> | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xECF9435A | ||
|- | |||
| 3.63 || 0xFCB5745A | |||
|} | |} | ||
<source lang=" | Writes <code>nWords</code> times the 4-byte <code>ch</code> starting at usermode address <code>u_dst</code>. Write is performed with the <code>STRT</code> instruction and <code>DACR=0x15450FC3</code> (same as [[SceSysmem#sceKernelCopyToUserTextDomainForKernel||sceKernelCopyToUserTextDomain]] - required because NID tables are in RX segments). | ||
Used by [[SceKernelModulemgr]] to overwrite NID tables once a module's imports are bound with a random value from Bigmac RNG. This overwrite was called [[Kernel#NID_Poisoning|"NID Poisoning"]] by Team Molecule. | |||
<source lang="C">int SceSysmemForKernel_ECF9435A(void *u_dst, SceUInt32 ch, SceUInt32 nWords);</source> | |||
=== | === SceSysmemForKernel_ECC68E7B === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xECC68E7B | ||
|- | |||
| 3.63 || 0x05822B82 | |||
|} | |} | ||
<source lang=" | <source lang="C">int SceSysmemForKernel_ECC68E7B(SceUInt32 phymem_type, SceUInt32 *result);</source> | ||
=== | === SceSysmemForKernel_E68A9F1B === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xE68A9F1B | ||
|- | |||
| 3.63 || 0x1DE4953F | |||
|} | |} | ||
<source lang=" | <source lang="C">int SceSysmemForKernel_E68A9F1B(int a1, SceClass **ppClass);</source> | ||
=== | === sceKernelCheckOpenVMDomainForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 2.000.081-3.610.011 || 0xD514BB56 | ||
|- | |||
| 3.630.000-3.740.011 || 0x4E6D8BC3 | |||
|} | |} | ||
<source lang=" | Returns 2 if Virtual Machine is open, 0 else. Returns 0x80027101 on error. | ||
<source lang="C">SceUInt32 sceKernelCheckOpenVMDomainForKernel(void);</source> | |||
=== | === sceeKernelSetNameHeapHookForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x1E11F41D | ||
|- | |||
| 3.63 || 0x6DBDA03B | |||
|} | |} | ||
<source lang=" | This is a guessed name. | ||
Not implemented in sysdbg build either. Probably only implemented during real development. | |||
Only return 0. | |||
<source lang="C">int sceeKernelSetNameHeapHookForKernel(void *pHook);</source> | |||
=== | === SceSysmemForKernel_22708F14 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x22708F14 | ||
|- | |||
| 3.63 || 0x456ECB54 | |||
|} | |} | ||
<source lang=" | <source lang="C">SceUInt32 SceSysmemForKernel_22708F14(void *a1, int a2);</source> | ||
=== | === SceSysmemForKernel_22A26637 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0x22A26637 | ||
|- | |||
| 3.63 || 0xAD19285A | |||
|} | |} | ||
<source lang=" | <source lang="C">int SceSysmemForKernel_22A26637(void *a1, int a2, int a3, int a4, int a5, int a6, void *a7);</source> | ||
=== | === SceSysmemForKernel_C6F04370 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xC6F04370 | ||
|- | |||
| 3.63 || 0x02DAD732 | |||
|} | |} | ||
<source lang=" | init budget data in sysmem. | ||
<source lang="C">int SceSysmemForKernel_C6F04370(void);</source> | |||
=== | === SceSysmemForKernel_B339A865 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60-3.61 || 0xB339A865 | ||
|- | |||
| 3.63 || 0x320E907F | |||
|} | |} | ||
Returns 0. | |||
= | <source lang="C">int SceSysmemForKernel_B339A865(void);</source> | ||
=== | === SceSysmemForKernel_AD5A83E3 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xAD5A83E3 | ||
|- | |||
| 3.63 || 0xBF70207B | |||
|} | |} | ||
=== | <source lang="C">int SceSysmemForKernel_AD5A83E3(SceUID guid, SceUInt32 vis_level, SceUInt32 a3, int *a4);</source> | ||
=== SceSysmemForKernel_A504BA60 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0xA504BA60 | ||
|- | |||
| 3.63 || 0xCAB15F74 | |||
|} | |} | ||
=== | === SceSysmemForKernel_7DC46969 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60-3.61 || 0x7DC46969 | ||
|- | |||
| 3.63 || 0x8450BFF7 | |||
|} | |} | ||
== | Returns 1. | ||
<source lang="C">int SceSysmemForKernel_7DC46969(void);</source> | |||
== SceSysmemForDriver == | |||
=== | === sceKernelProcessGetContextForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 1.80-3.74 || 0x2ECF7944 | ||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="c">int sceKernelProcessGetMMUContextForDriver(SceUID pid, SceKernelMMUContext **ppCtx);</source> | ||
=== sceKernelProcessSwitchContextForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.74 || 0x2D711589 | ||
|} | |} | ||
This is a guessed name. | |||
<source lang="c">int sceKernelProcessSwitchMMUContextForDriver(SceKernelMMUContext *new_context, SceKernelMMUContext *prev_context);</source> | |||
=== scePUIDOpenByGUIDForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0xBF209859 | ||
|} | |} | ||
<source lang=" | Temp name was sceKernelCreateUserUidForDriver. | ||
<source lang="c">SceUID scePUIDOpenByGUIDForDriver(SceUID pid, SceUID guid);</source> | |||
=== | === scePUIDOpenByGUIDWithFlagsForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xCED1547B | ||
|} | |} | ||
Temp name was sceKernelCreateUserUidForClassForDriver. | |||
= | <source lang="c">SceUID scePUIDOpenByGUIDWithFlagsForDriver(SceUID pid, SceUID guid, SceUInt32 flags);</source> | ||
=== | === scePUIDOpenByNameForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x513B9DDD | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelCreateUserUidForNameForDriver. | ||
<source lang="c">SceUID scePUIDOpenByNameForDriver(SceUID pid, const char *name);</source> | |||
=== | === scePUIDOpenByNameWithClassForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x8DA0BCA5 | ||
|} | |} | ||
Equivalent to [[SceSysmem#scePUIDOpenByNameForDriver|scePUIDOpenByNameForDriver]], but object's class is checked to be a subclass of provided <code>pClass</code> before opening. | |||
<source lang="c"> | <source lang="c">SceUID scePUIDOpenByNameWithClassForDriver(ScePID pid, const char *name, SceClass *pClass);</source> | ||
=== | === scePUIDOpenByNameWithExactClassForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.010.031 || 0xB800123C | ||
|- | |||
| 3.10-3.740.011 || not present | |||
|} | |} | ||
<source lang=" | This is a guessed name. Temp name was <code>add_heap</code>. | ||
Equivalent to [[SceSysmem#scePUIDOpenByNameWithClassForDriver|scePUIDOpenByNameWithClass]], but the object's class must match exactly the provided <code>pClass</code>. | |||
<source lang="C">SceUID scePUIDOpenByNameWithExactClassForDriver(ScePID pid, const char *name, const SceClass *pClass);</source> | |||
=== | === scePUIDCloseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x84A4AF5E | ||
|} | |} | ||
Temp name was sceKernelDeleteUserUidForDriver. | |||
= | <source lang="c">int scePUIDCloseForDriver(SceUID pid, SceUID puid);</source> | ||
=== | === scePUIDSetNameForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x12624884 | ||
|} | |} | ||
Temp name was sceKernelSetNameForPidForUidForDriver. | |||
= | <source lang="c">int scePUIDSetNameForDriver(SceUID pid, SceUID puid, const char *name);</source> | ||
=== | === scePUIDGetObjectForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990 | | 0.990-3.60 || 0xFE6D7FAE | ||
|} | |} | ||
<source lang=" | Temp name was sceKernelGetObjectForPidForUidForDriver. | ||
<source lang="c">int scePUIDGetObjectForDriver(SceUID pid, SceUID uid, SceKernelObject **ppEntry);</source> | |||
=== | === scePUIDtoGUIDForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990 | | 0.990.000-3.740.011 || 0x45D22597 | ||
|} | |} | ||
Temp name was sceKernelKernelUidForUserUidForDriver. | |||
=== | Returns the Global UID of a process based on its Process UID. | ||
<source lang="c">SceUID scePUIDtoGUIDForDriver(SceUID pid, SceUID puid);</source> | |||
=== scePUIDtoGUIDWithClassForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.990 || not present | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x184172B1 | ||
|} | |} | ||
=== | Temp name was sceKernelKernelUidForUserUidForClassForDriver. | ||
<source lang="c">SceUID scePUIDtoGUIDWithClassForDriver(SceUID pid, SceUID puid, SceClass *pClass);</source> | |||
=== scePUIDGetNameForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.990-3.60 || 0x09896EB7 | ||
|} | |} | ||
=== | Temp name was sceKernelGetNameForPidByUidForDriver, scePUIDGetEntryHeapNameForDriver | ||
<source lang="C">int scePUIDGetNameForDriver(SceUID pid, SceUID puid, char **pName);</source> | |||
=== scePUIDGetClassForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xE9728A12 | ||
|} | |} | ||
Temp name was sceKernelGetClassForPidForUidForDriver. | |||
<source lang=" | <source lang="c">int scePUIDGetClassForDriver(SceUID pid, SceUID puid, SceClass **ppClass);</source> | ||
=== sceUIDKernelCreateForDriver === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-1.060.031 || 0x7FC849B1 | ||
|- | |||
| 1.50-3.740.011 || not present | |||
|} | |} | ||
Calls [[#sceGUIDKernelCreateForKernel]]. | |||
Create a UID with default attribute (0x30000). | |||
<source lang="C"> | <source lang="C">int sceUIDKernelCreateForDriver(SceClass *pClass, const char *name, SceKernelObject **ppEntry);</source> | ||
=== | === sceGUIDKernelCreateForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-0.990 || not present | ||
|- | |||
| 1.000.071-3.740.011 || 0x56A13E90 | |||
|} | |} | ||
=== | Temp name was sceUIDKernelCreate2ForDriver, sceKernelCreateUidObj2ForDriver. | ||
Create a UID with default attribute (0x30000). | |||
<source lang="c">SceUID sceGUIDKernelCreateForDriver(SceClass *pClass, const char *name, SceKernelObject **ppEntry);</source> | |||
=== sceUIDOpenByNameForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x796881D6 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | Calls [[#sceGUIDOpenByNameForDriver]]. | ||
<source lang="c">SceUID sceUIDOpenByNameForDriver(const char *name);</source> | |||
=== sceUIDCloseForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x32C5F628 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | if (flag_or_addr_or_pid & 0x40000000) == 0 calls [[#sceGUIDCloseForDriver]] else [[#scePUIDCloseForDriver]]. | ||
<source lang="C">int sceUIDCloseForDriver(SceUID uid, SceUInt32 flag_or_addr_or_pid);</source> | |||
=== SceSysmemForDriver_F09A7D09 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xF09A7D09 | ||
|- | |||
| 3.60-3.74 || not present | |||
|} | |} | ||
=== | Calls [[#sceGUIDCloseForDriver]]. | ||
<source lang="C">int SceSysmemForDriver_F09A7D09(SceUID uid);</source> | |||
=== sceUIDGetDefaultClassForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0xFE28F5EB | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">SceClass *sceUIDGetDefaultClassForDriver(void);</source> | ||
=== sceUIDtoObjectForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0xAB7AC3D1 | ||
|} | |} | ||
=== | This is a guessed name. | ||
Calls [[#sceUIDtoObjectForKernel]]. | |||
<source lang="C">SceKernelObject *sceUIDtoObjectForDriver(SceUID uid);</source> | |||
=== sceUIDtoClassForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x65B9B393 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | Calls [[#sceGUIDtoClassForKernel]]. | ||
<source lang="C">SceClass *sceUIDtoClassForDriver(SceUID uid);</source> | |||
=== sceUIDClassInitForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0xE6D75E99 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | Renamed to [[SceSysmem#sceUIDClassInitClassForDriver|sceUIDClassInitClassForDriver]]. | ||
<source lang="C">int sceUIDClassInitForDriver(SceClass *pClass, const char *name, uint32_t uid_class, SceSize item_size, void *constructor, void *destructor);</source> | |||
=== sceUIDClassInitClassForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || not present | ||
|- | |||
| 3.60 || 0x61317102 | |||
|} | |} | ||
=== | Temp name was sceKernelCreateClassForDriver. | ||
<source lang="c">int sceUIDClassInitClassForDriver(SceClass *cls, const char *name, const SceClass *group, SceSize item_size, SceClassCallback create, SceClassCallback destroy);</source> | |||
=== sceUIDGetClassInfoAllForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x3EF32C6C | ||
|- | |||
| 3.60 || not present. Moved to ForKernel | |||
|} | |} | ||
=== | See [[SceSysmem#sceUIDClassGetClassInfoAllForKernel|sceUIDClassGetClassInfoAllForKernel]] | ||
=== sceGUIDCreateForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x89A44858 | ||
|} | |} | ||
=== | Temp name was sceKernelCreateUidObjForUidForDriver. | ||
Create a GUID with default attribute (0x30000) for the specified UID. | |||
<source lang="c">SceUID sceGUIDCreateForDriver(SceClass *pClass, const char *name, SceUID guid, SceKernelObject **ppEntry);</source> | |||
=== sceGUIDOpenByNameForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0xD76E7452 | ||
|} | |} | ||
=== | Temp name was sceKernelOpenUidForNameForDriver. | ||
<source lang="c">SceUID sceGUIDOpenByNameForDriver(const char *name);</source> | |||
=== sceGUIDCloseForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x047D32F2 | ||
|} | |} | ||
=== | Temp name was sceKernelDeleteUidForDriver. | ||
<source lang="C">int sceGUIDCloseForDriver(SceUID guid);</source> | |||
=== sceGUIDGetClassForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xC74B0152 | ||
|} | |} | ||
=== | Temp name was sceKernelGetClassForUidForDriver. | ||
<source lang="c">int sceGUIDGetClassForDriver(SceUID guid, SceClass **ppClass);</source> | |||
=== sceGUIDSetNameForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.50-3.60 || 0x4CFA4100 | ||
|} | |} | ||
Temp name was sceKernelSetObjectForUidForDriver. Wrongfully named scePUIDSetNameForDriver. | |||
=== | Calls the same routine as [[SceSysmem#sceGUIDSetForKernel|sceGUIDSetForKernel]], but passes NULL for pClass and pObject. | ||
<source lang="c">SceInt32 sceGUIDSetNameForDriver(SceUID guid, const char *name);</source> | |||
=== sceGUIDNameForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xB2BB6216 | ||
|- | |||
| 3.60 || 0xE655852F | |||
|} | |} | ||
Temp name was sceKernelGetNameForUid2ForDriver. | |||
<source lang=" | <source lang="C">char* sceGUIDNameForDriver(SceUID guid);</source> | ||
=== | === sceGUIDGetNameForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xA78755EB | ||
|} | |} | ||
Temp name was sceKernelGetNameForUidForDriver. | |||
<source lang=" | <source lang="C">int sceGUIDGetNameForDriver(SceUID guid, char **pName);</source> | ||
=== | === sceGUIDGetObjectForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x0FC24464 | ||
|} | |} | ||
Temp name was | Temp name was sceKernelGUIDGetObjectForDriver. | ||
<source lang="c">int | <source lang="c">int sceGUIDGetObjectForDriver(SceUID uid, SceKernelObject **ppEntry);</source> | ||
=== | === sceGUIDReferObjectForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x0F5C84B7 | ||
|} | |} | ||
Temp name was sceKernelGetObjectForUidForDriver. | |||
<source lang="c">int | <source lang="c">int sceGUIDReferObjectForDriver(SceUID uid, SceKernelObject **ppEntry);</source> | ||
=== | === sceGUIDReferObjectWithLevelForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 3.60 || 0xF6DB54BA | |||
|} | |} | ||
Temp name was sceKernelGetObjectForUidForAttrForDriver. | |||
<source lang="c">int sceGUIDReferObjectWithLevelForDriver(SceUID uid, SceUInt32 level, SceKernelObject **pEntry);</source> | |||
* | |||
* | |||
=== sceGUIDReferObjectWithClassLevelForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x77066FD1 | ||
|} | |} | ||
<source lang="c">int sceGUIDReferObjectWithClassLevelForDriver(SceUID guid, SceClass *pClass, SceUInt32 level, SceKernelObject **ppEntry);</source> | |||
=== sceGUIDReferObjectWithClassForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x00ED6C14 | ||
|} | |} | ||
Temp name was sceKernelGetObjForUidForDriver. | |||
<source lang="c">int | <source lang="c">int sceGUIDReferObjectWithClassForDriver(SceUID uid, SceClass *pClass, SceKernelObject **ppEntry);</source> | ||
=== | === sceGUIDReferObjectWithSubclassForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x72A98D17 | ||
|} | |} | ||
Temp name was sceKernelGetObjectForUidForClassTreeForDriver. | |||
<source lang="c">int | <source lang="c">int sceGUIDReferObjectWithSubclassForDriver(SceUID guid, SceClass *pClass, SceKernelObject **ppEntry);</source> | ||
=== | === sceGUIDReleaseObjectForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x149885C4 | ||
|} | |} | ||
Temp name was sceKernelUidReleaseForDriver. | |||
<source lang="c">int sceGUIDReleaseObjectForDriver(SceUID uid);</source> | |||
=== sceKernelGetUIDClassForDriver === | |||
{| class="wikitable" | |||
== | |||
{| class="wikitable" | |||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x85336A1C | ||
|} | |} | ||
This is a guessed name. | |||
<source lang=" | <source lang="C">SceClass *sceKernelGetUIDClassForDriver(void);</source> | ||
=== | === sceKernelIsSubclassForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x6484D03E | ||
|- | |||
| 1.691 || 0x55F4826F | |||
|- | |||
| 3.60 || not present. Moved to ForKernel | |||
|} | |} | ||
See [[SceSysmem#sceUIDClassIsSubclassForKernel|sceUIDClassIsSubclassForKernel]] | |||
=== SceSysmemForDriver_6F2ACDAE === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 1.69 || 0x6F2ACDAE | ||
|- | |||
| 1.80-3.74 || not present | |||
|} | |} | ||
Temp name was switch_ttb_for_pid. | |||
Changes the TTBR to point to the tables for a given PID. | |||
<source lang="c">int | <source lang="c">int SceSysmemForDriver_6F2ACDAE(SceUID pid);</source> | ||
=== | === sceKernelAllocMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.65 || 0xC94850C9 | ||
|} | |} | ||
The interface is the same as the usermode version of this function, however more types can be specified and more options are in the pOpt argument. | |||
To allocate a kernel RW block of memory, specify <code>type = SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_RW</code>. | |||
To allocate a block of memory with a specific physical address, specify <code>type = SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_SO_RW</code> or <code>type = SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_RW</code>, <code>pOpt->attr = 2</code>, and <code>pOpt->pbase = physical address</code>. | |||
To allocate a block of memory that is kernel executable, specify <code>type = SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RX</code>. | |||
To allocate a block of memory that is physically contiguous, specify <code>type = 0x30808006</code>, <code>pOpt->attr = 0x200004</code> and an alignment to <code>pOpt->alignment</code>. | |||
To allocate a block of memory inside the CDRAM, specify <code>type = 0x40404006</code>. | |||
<source lang="c"> | <source lang="c">SceUID sceKernelAllocMemBlockForDriver(const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOptKernel *pOpt);</source> | ||
=== | === sceKernelAllocMemBlockForDebuggerForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.940-1.50 || 0x59F3159C | ||
|} | |} | ||
Same as [[#sceKernelAllocMemBlockForDriver]] but authorizes null pOpt. | |||
<source lang="c">SceUID sceKernelAllocMemBlockForDebuggerForDriver(const char *name, SceKernelMemBlockType type, SceSize vsize, SceKernelAllocMemBlockOptKernel *pOpt);</source> | |||
=== sceKernelAllocMemBlockWithInfoForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xD44F464D | ||
|} | |} | ||
Temp name was sceKernelAllocMemBlockExtForDriver. | |||
<source lang="c">SceUID sceKernelAllocMemBlockWithInfoForDriver(const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOptKernel *pOpt, SceKernelMemBlockInfo *pInfo);</source> | |||
=== sceKernelFreeMemBlockForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931-3.65 || 0x009E1C61 | ||
|} | |} | ||
<source lang="C">int sceKernelFreeMemBlockForDriver(SceUID uid);</source> | |||
=== sceKernelFindMemBlockByAddrForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x8A1742F6 | ||
|} | |} | ||
<source lang="c">SceUID sceKernelFindMemBlockByAddrForDriver(const void *addr, SceSize size);</source> | |||
=== sceKernelFindProcMemBlockByAddrForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x857F1D5A | ||
|} | |} | ||
Temp name was sceKernelFindMemBlockByAddrForPidForDriver. | |||
<source lang="c">SceUID sceKernelFindProcMemBlockByAddrForDriver(SceUID pid, const void *addr, SceSize size);</source> | |||
<source lang="c"> | |||
=== | === sceKernelGetMemBlockAllocSizeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-2.120.011 || 0x63E5754B | ||
|- | |||
| 2.500.071-3.740.011 || not present | |||
|} | |} | ||
This function was replaced since System Software version 2.500.071 by [[#sceKernelGetMemBlockAllocMapSizeForDriver]]. | |||
<source lang=" | <source lang="C">int sceKernelGetMemBlockAllocSizeForDriver(SceUID memid, SceSize *pAllocSize);</source> | ||
=== | === sceKernelGetMemBlockAllocMapSizeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-2.120.011 || not present | ||
|- | |||
| 2.500.071-3.740.011 || 0x78337B62 | |||
|} | |} | ||
Temp name was sceKernelMemBlockGetSomeSizeForDriver. | |||
This function is a replacement since System Software version 2.500.071 of [[#sceKernelGetMemBlockAllocSizeForDriver]]. | |||
<source lang=" | <source lang="C">int sceKernelGetMemBlockAllocMapSizeForDriver(SceUID memid, SceSize *pAllocMapSize);</source> | ||
=== | === sceKernelGetMemBlockMemtypeByAddrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xF3BBE2E1 | ||
|} | |} | ||
Temp name was sceKernelFindMemBlockByAddrForDefaultSizeForDriver. | |||
<source lang="c"> | <source lang="c">SceKernelMemoryType sceKernelGetMemBlockMemtypeByAddrForDriver(const void *addr);</source> | ||
=== | === sceKernelGetMemBlockPARangeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x98C15666 | ||
|} | |} | ||
Temp name was sceKernelGetMemBlockAddrPairForUidForDriver. | |||
Returns the physical address and size (pRange) of the memory block if it is physically continuous. | |||
<source lang="c">int | <source lang="c">int sceKernelGetMemBlockPARangeForDriver(SceUID uid, SceKernelPARange *pRange);</source> | ||
=== | === sceKernelGetMemBlockBaseForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-3.74 || 0xA841EDDA | ||
|} | |} | ||
<source lang="C"> | <source lang="C"> | ||
/** | |||
* @brief Get mapped base address of memory block. | |||
* | |||
* Get base address of memory block. | |||
* @param[in] uid block id | |||
* @param[out] ppBase base address of memory block | |||
* @retval SCE_OK success | |||
* @retval <SCE_OK Error | |||
*/ | |||
int sceKernelGetMemBlockBaseForDriver(SceUID uid, void **ppBase); | |||
</source> | </source> | ||
=== sceKernelGetMemBlockVBaseForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xB81CF0A3 | ||
|} | |} | ||
Temp name was sceKernelGetMemBlockKernelPageForDriver. | |||
<source lang="c">int | <source lang="c">int sceKernelGetMemBlockVBaseForDriver(SceUID uid, void **kernel_page);</source> | ||
=== sceKernelGetMemBlockMappedBaseForDriver === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x0B1FD5C3 | ||
|} | |} | ||
<source lang="c"> | <source lang="c">int sceKernelGetMemBlockMappedBaseForDriver(SceUID uid, void **basep);</source> | ||
=== | === sceKernelGetMemBlockPAVectorForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x19A51AC7 | ||
|} | |} | ||
Temp name was sceKernelGetMemBlockPaddrListForUidForDriver. | |||
=== | <source lang="c">int sceKernelGetMemBlockPAVectorForDriver(SceUID uid, SceKernelPAVector *pPAV);</source> | ||
=== sceKernelGetMemBlockInfoForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xA73CFFEF | ||
|} | |} | ||
Temp name was sceKernelMemBlockGetInfoExForVisibilityLevelForDriver. | |||
=== | <source lang="c">int sceKernelGetMemBlockInfoForDriver(SceUID uid, uint32_t level, SceKernelMemBlockInfoEx *pInfo);</source> | ||
=== sceKernelGetMemBlockInfoExForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x24A99FFF | ||
|} | |} | ||
This is a guessed name. | |||
< | <source lang="c">int sceKernelGetMemBlockInfoExForDriver(SceUID uid, SceKernelMemBlockInfoEx *pInfo);</source> | ||
=== | === sceKernelDecRefCountMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xF50BDC0C | ||
|} | |} | ||
<source lang="c">int | Temp name was sceKernelMemBlockDecRefCounterAndReleaseUidForDriver. | ||
<source lang="c">int sceKernelDecRefCountMemBlockDriver(SceUID uid);</source> | |||
=== | === sceKernelIncRefCountMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xEAF3849B | ||
|} | |} | ||
Temp name was sceKernelMemBlockIncRefCounterAndReleaseUidForDriver. | |||
=== | <source lang="c">int sceKernelIncRefCountMemBlockForDriver(SceUID uid);</source> | ||
=== sceKernelMemBlockType2MemtypeForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x20C811FA | ||
|} | |} | ||
<source lang="c">int | <source lang="c">int sceKernelMemBlockType2MemtypeForDriver(SceKernelMemBlockType type);</source> | ||
=== | === sceKernelMemBlockTypeGetPrivilegesForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x6A0792A3 | ||
|} | |} | ||
<source lang="c">int | <source lang="c">int sceKernelMemBlockTypeGetPrivilegesForDriver(SceKernelMemBlockType type);</source> | ||
=== | === sceKernelMemBlockType2SourceMemTypeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xCB0F3A33 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelMemBlockTypeGetUnknownForDriver. | |||
<source lang="c"> | |||
#define SCE_KERNEL_SOURCE_MEMORY_TYPE_IO 0x100000 | |||
#define SCE_KERNEL_SOURCE_MEMORY_TYPE_LPDDR 0x200000 | |||
#define SCE_KERNEL_SOURCE_MEMORY_TYPE_CDRAM 0x400000 | |||
int sceKernelMemBlockType2SourceMemTypeForDriver (SceKernelMemBlockType type); | |||
</source> | |||
=== | === sceKernelMapMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x58D21746 | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelMapBlockUserVisibleForDriver, sceKernelPartitionMapMemBlockForDriver. | ||
<source lang="c">int sceKernelMapMemBlockForDriver(SceUID uid);</source> | |||
=== | === sceKernelMapMemBlockWithFlagForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x04059C4B | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelMapBlockUserVisibleWithFlagForDriver. | |||
< | <source lang="c"> | ||
/** | |||
* Map a memblock. | |||
* | |||
* @param[in] uid - GUID of the memblock to map. | |||
* @param[in] flag - Set to 1 to prevent DCache invalidation before mapping. | |||
* | |||
* @return 0 on success, < 0 on error. | |||
*/ | |||
int sceKernelMapMemBlockWithFlagForDriver(SceUID uid, int flag); | |||
</source> | |||
=== | === sceKernelRemapMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990-1.06 || not present | ||
|- | |||
| 1.500.151-3.740.011 || 0xDFE2C8CB | |||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelRemapBlockForDriver, sceKernelPartialRemapMemBlockForDriver. | ||
This can be used to remap RW memory as RX. To do this, first allocate a memory block of type <code>SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW</code>. After you are done writing, call sceKernelRemapMemBlockForDriver with type <code>SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RX</code>. | |||
<source lang="c">int sceKernelRemapMemBlockForDriver(SceUID uid, SceKernelMemBlockType type);</source> | |||
=== | === sceKernelUnmapMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xFFCD9B60 | ||
|} | |} | ||
<source lang="c"> | <source lang="c">int sceKernelUnmapMemBlockForDriver(SceUID uid);</source> | ||
=== | === sceKernelGetPhysicalMemoryTypeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x0AAA4FDD | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelVaddrMaybeGetSectionTypeForDriver | ||
<source lang="c">int sceKernelGetPhysicalMemoryTypeForDriver(void *vaddr);</source> | |||
=== | === sceKernelGetPhyMemInfoForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x89475192 | ||
|} | |} | ||
<source lang="c"> | <source lang="c"> | ||
typedef struct SceKernelPhyMemInfo { // Size is 0xC on 0.931-3.60 | |||
SceSize size; // Size of this structure | |||
void* pbase; // Base physical address | |||
SceSize psize; // Physical size | |||
} SceKernelPhyMemInfo; | |||
< | // as of FW 0.931-0.990, pindex must be one of these values: 1 PhyPartKernel, 8 PageVenezia, 9 PageVIP | ||
#define SCE_KERNEL_PHYMEMPART_KERNEL_INDEX 1 | |||
#define SCE_KERNEL_PHYMEMPART_LPDDR2MAIN_KERNEL_INDEX 6 | |||
#define SCE_KERNEL_PAGE_VENEZIA_INDEX 8 | |||
#define SCE_KERNEL_PAGE_VIP_INDEX 9 | |||
SceInt32 sceKernelGetPhyMemInfoForDriver(SceUInt32 pindex, SceKernelPhyMemInfo *pInfo); | |||
</source> | |||
=== | === sceKernelPartialAllocMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x16713BE8 | ||
|} | |} | ||
<source lang="c">void | This is a guessed name. | ||
<source lang="c"> | |||
/** | |||
* Allocates PhyPages for a partial range of a memblock. | |||
* | |||
* @param[in] uid - GUID of the memblock. | |||
* @param[in] vbase - Start of the range. | |||
* @param[in] vsize - Size of the range. | |||
* @param[in] check - SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[FREE|NONE] | |||
* | |||
* @return 0 on success, < 0 on error. | |||
*/ | |||
int sceKernelPartialAllocMemBlockForDriver(SceUID uid, void* vbase, SceSize vsize, SceUInt32 opCheck); | |||
</source> | |||
=== | === sceKernelPartialFreeMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x8C43B052 | ||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="c"> | ||
/** | |||
* Unmaps and frees PhyPages for a partial range of a memblock. | |||
* | |||
* @param[in] uid - GUID of the memblock. | |||
* @param[in] vbase - Start of the range. | |||
* @param[in] vsize - Size of the range. | |||
* @param[in] check - SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[ALLOCATED|NONE] | |||
* | |||
* @return 0 on success, < 0 on error. | |||
*/ | |||
int sceKernelPartialFreeMemBlockForDriver(SceUID uid, void* vbase, SceSize vsize, SceUInt32 check); | |||
</source> | |||
=== sceKernelPartialMapMemBlockForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x13805CA8 | ||
|} | |} | ||
This is a guessed name. | |||
=== | <source lang="c"> | ||
/** | |||
* Maps PhyPages for a partial range of a memblock. | |||
* | |||
* @param[in] uid - GUID of the memblock. | |||
* @param[in] vbase - Start of the range. | |||
* @param[in] vsize - Size of the range. | |||
* @param[in] check - SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[ALLOCATED|FREE|ALLOCNOMAP|NONE] | |||
* | |||
* @return 0 on success, < 0 on error. | |||
*/ | |||
int sceKernelPartialMapMemBlockForDriver (SceUID uid, void* vbase, SceSize vsize, SceUInt32 check); | |||
</source> | |||
=== sceKernelPartialRemapMemBlockForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x4C584B29 | ||
|} | |} | ||
This is a guessed name. | |||
< | <source lang="c"> | ||
/** | |||
* Remaps PhyPages for a partial range of a memblock. | |||
* | |||
* @param[in] uid - GUID of the memblock. | |||
* @param[in] vbase - Start of the range. | |||
* @param[in] vsize - Size of the range. | |||
* @param[in] op - SCE_KERNEL_MEMBLOCK_PARTIAL_OP_[REMAP_RO|REMAP_RW] | SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[MAPPED_RW|MAPPED_RO|NONE] | |||
* | |||
* @return 0 on success, < 0 on error. | |||
*/ | |||
int sceKernelPartialRemapMemBlockForDriver(SceUID uid, void* vbase, SceSize vsize, SceUInt32 op); | |||
</source> | |||
=== | === sceKernelPartialUnmapMemBlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x6C76AD89 | ||
|} | |} | ||
<source lang="c"> | This is a guessed name. | ||
<source lang="c"> | |||
/** | |||
* Unmaps PhyPages for a partial range of a memblock. | |||
* | |||
* @param[in] uid - GUID of the memblock. | |||
* @param[in] vbase - Start of the range. | |||
* @param[in] vsize - Size of the range. | |||
* @param[in] check - SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[MAPPED|NONE] | |||
* | |||
* @return 0 on success, < 0 on error. | |||
*/ | |||
int sceKernelPartialUnmapMemBlockForDriver(SceUID uid, void* vbase, SceSize vsize, SceUInt32 check); | |||
</source> | |||
=== | === sceKernelGetMemBlockProcessForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x1EFC96EA | ||
|} | |} | ||
<source lang="c"> | <source lang="c">int sceKernelGetMemBlockProcessForDriver(SceUID uid);</source> | ||
=== | === sceKernelMemBlockToPARangeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x64DBE472 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelMemBlockGetVirPageForDriver. | |||
=== | Gets a single PARange from the memblock. Returns an error if the memblock has more than one PARange. | ||
<source lang="c">int sceKernelMemBlockToPARangeForDriver(SceUID uid, SceKernelPARange *pRange);</source> | |||
=== sceKernelMemBlockToPAVectorForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x987EE587 | ||
|} | |} | ||
<source lang="c"> | <source lang="c">int sceKernelMemBlockToPAVectorForDriver(SceUID uid, SceKernelPAVector *pPAV);</source> | ||
=== sceKernelCreateHeapForDriver === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x9328E0E8 | ||
|} | |} | ||
The heap pool is thread safe. | |||
has list "SCE_KERNEL_HEAP_HAS_HEAPCB". | |||
=== | <source lang="C"> | ||
// pOpt can be NULL | |||
SceUID sceKernelCreateHeapForDriver(const char *name, SceSize size, SceKernelHeapCreateOpt *pOpt); | |||
</source> | |||
=== sceKernelDeleteHeapForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.940-3.60 || 0xD6437637 | ||
|} | |} | ||
<source lang="c"> | <source lang="c">int sceKernelDeleteHeapForDriver(SceUID uid);</source> | ||
=== | === sceKernelVerifyHeapForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xC50A9C0D | ||
|} | |} | ||
<source lang="c"> | <source lang="c">int sceKernelVerifyHeapForDriver(SceUID uid, void *ptr);</source> | ||
=== | === sceKernelShrinkHeapForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x856FA2E3 | ||
|} | |} | ||
<source lang="c"> | <source lang="c">int sceKernelShrinkHeapForDriver(SceUID heapid);</source> | ||
=== sceKernelAllocHeapMemoryForDriver === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x7B4CB60A | ||
|} | |} | ||
Temp name was sceKernelMemPoolAlloc. Official name might also be sceUIDKernelCreateForDriver. | |||
=== | Calls [[SceSysmem#sceKernelAllocHeapMemoryWithOptionForDriver|sceKernelAllocHeapMemoryWithOptionForDriver]] with a3 = 0. | ||
<source lang="c">void *sceKernelAllocHeapMemoryForDriver(SceUID uid, SceSize size);</source> | |||
=== sceKernelAllocUncacheHeapMemoryForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x7750CEA7 | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelAllocHeapMemoryFromGlobalHeapForDriver. | ||
Calls [[SceSysmem#sceKernelAllocHeapMemoryForDriver|sceKernelAllocHeapMemoryForDriver]] with uncache heap. | |||
<source lang="c">void* sceKernelAllocUncacheHeapMemoryForDriver(SceSize size);</source> | |||
=== | === sceKernelAllocUncacheHeapMemoryWithOptionForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x0B4ED16A | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelAllocHeapMemoryFromGlobalHeapWithOptForDriver. | ||
Calls [[SceSysmem#sceKernelAllocHeapMemoryWithOptionForDriver|sceKernelAllocHeapMemoryWithOptionForDriver]] with uncache heap. | |||
<source lang="c">void* sceKernelAllocUncacheHeapMemoryWithOptionForDriver(SceSize size, SceKernelHeapMemoryOpt *pOpt);</source> | |||
=== | === sceKernelAllocHeapMemoryWithOptForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xB415B5A8 | ||
|} | |} | ||
Temp name was sceKernelAllocHeapMemoryWithOpt1ForDriver. | |||
< | Same as <code>sceKernelAllocHeapMemoryForDriver</code> but uses <code>pOpt</code>. | ||
<source lang="c">void* sceKernelAllocHeapMemoryWithOptForDriver(SceUID uid, SceSize size, SceKernelHeapMemoryOpt *pOpt);</source> | |||
=== | === sceKernelAllocHeapMemoryWithOptionForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x49D4DD9B | ||
|} | |} | ||
< | Temp name was sceKernelAllocHeapMemoryWithOpt2ForDriver. | ||
Same as <code>sceKernelAllocHeapMemoryForDriver</code> but uses <code>pOpt</code>. | |||
=== | <source lang="c">void* sceKernelAllocHeapMemoryWithOptionForDriver(SceUID uid, SceSize size, SceKernelHeapMemoryOpt *pOpt);</source> | ||
=== sceKernelFreeHeapMemoryForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x3EBCE343 | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelMemPoolFreeForDriver. | ||
<source lang="c">int sceKernelFreeHeapMemoryForDriver(SceUID uid, void *ptr);</source> | |||
=== | === sceKernelFreeUncacheHeapMemoryForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xFB817A59 | ||
|} | |} | ||
Temp name was sceKernelFreeHeapMemoryFromGlobalHeapForDriver. | |||
=== | <source lang="c">int sceKernelFreeUncacheHeapMemoryForDriver(void *ptr);</source> | ||
=== sceKernelCountFillValueFromUserForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xBDA6E42B | ||
|} | |} | ||
Temp name was sceKernelFirstDifferentBlock32UserForDriver. | |||
< | <source lang="c">int sceKernelCountFillValueFromUserForDriver(unsigned int *ptr, int value, int byte_size);</source> | ||
=== | === sceKernelCountFillValueFromUserProcForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0x8334454F | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelFirstDifferentBlock32UserForPidForDriver. | ||
<source lang="c">int sceKernelCountFillValueFromUserProcForDriver(SceUID pid, unsigned int *ptr, int value, int byte_size);</source> | |||
=== | === sceKernelCountFillValue64FromUserForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-2.120.011 || not present | ||
|- | |||
| 2.500.071-3.740.011 || 0xBB3B02C2 | |||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelFirstDifferentBlock64UserForDriver. | ||
<source lang="c">int sceKernelCountFillValue64FromUserForDriver(unsigned long long *ptr, int unused, unsigned long long value, int byte_size);</source> | |||
=== | === sceKernelCountFillValue64FromUserProcForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-2.120.011 || not present | ||
|- | |||
| 2.500.071-3.740.011 || 0xE83855FD | |||
|} | |} | ||
Temp name was sceKernelFirstDifferentBlock64UserForPidForDriver. | |||
=== | <source lang="c">int sceKernelCountFillValue64FromUserProcForDriver(SceUID pid, unsigned long long *ptr, unsigned long long value, int byte_size);</source> | ||
=== sceKernelVAtoPAForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0x8D160E65 | ||
|} | |} | ||
Temp name was sceKernelGetPaddrForDriver. | |||
< | This will write the physical address for a virtual address <code>pVA</code> to memory pointed to by <code>pPA</code>. | ||
Returns <0 on error, values >=0 indicate success. | |||
<source lang="c">int sceKernelVAtoPAForDriver(ScePVoid pVA, SceUIntPtr *pPA);</source> | |||
=== | === sceKernelVAtoPABySWForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0x65419BD3 | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelGetPaddrWithSectionTypeCheckForDriver, sceKernelAddressSpaceVAtoPABySWForDriver. | ||
<source lang="c">int sceKernelVAtoPABySWForDriver(void *pVA, void **pPA);</source> | |||
=== | === sceKernelProcVAtoPAForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-2.120.011 || 0xC51934BD | ||
|- | |||
| 2.500.071-3.740.011 || not present | |||
|} | |} | ||
<source lang="c"> | <source lang="c">int sceKernelProcVAtoPAForDriver(SceUID pid, void *pVA, void **pPA);</source> | ||
=== | === sceKernelProcModeVAtoPAForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0x61A67D32 | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelGetPaddrForPidForDriver. | ||
<source lang="c">int sceKernelProcModeVAtoPAForDriver(SceUID pid, SceUInt32 mode, void *pVA, void **pPA);</source> | |||
=== | === sceKernelVARangeToPAVectorForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-3.740.011 || 0xE68BEEBD | ||
|} | |} | ||
Temp name was sceKernelGetPaddrListForDriver. | |||
< | This function writes into <code>pVector->output_buffer</code> an array of <code>vRange</code> that encompasses the block of memory specified in the input. <code>pVector->ret_count</code> will contain the number of entries written. If <code>pVector->output_buffer</code> is null, it will just write the count. | ||
<source lang="c">int sceKernelVARangeToPAVectorForDriver(const SceKernelVARange *vRange, SceKernelPAVector *pPAV);</source> | |||
=== | === sceKernelVARangeToPAVectorBySWForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.06 || not present | ||
|- | |||
| 1.500.151-3.740.011 || 0x08A8A7E8 | |||
|} | |} | ||
<source lang="c"> | This is a guessed name. Temp name was sceKernelGetPaddrListForLargePageForDriver. | ||
<source lang="c">int sceKernelVARangeToPAVectorBySWForDriver(const SceKernelVARange *vRange, SceKernelPAVector *pPAV);</source> | |||
=== | === sceKernelVARangeToPAVectorByHWForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.06 || not present | ||
|- | |||
| 1.500.151-3.740.011 || 0x16844CE6 | |||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelGetPaddrListForSmallPageForDriver. | ||
<source lang="c">int sceKernelVARangeToPAVectorByHWForDriver(const SceKernelVARange *vRange, SceKernelPAVector *pPAV);</source> | |||
=== | === sceKernelVARangeToPARangeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.940-3.740.011 || 0xAE36C775 | ||
|} | |} | ||
Temp name was sceKernelGetPaddrPairForDriver. | |||
=== | <source lang="c">int sceKernelVARangeToPARangeForDriver(const SceKernelVARange *vRange, SceKernelPARange *pRange);</source> | ||
=== sceKernelVARangeToPARangeBySWForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.06 || not present | ||
|- | |||
| 1.500.151-3.740.011 || 0x32257A24 | |||
|} | |} | ||
This is a guessed name. Temp name was sceKernelGetPaddrPairForLargePageForDriver. | |||
< | <source lang="c">int sceKernelVARangeToPARangeBySWForDriver(SceKernelVARange *vRange, SceKernelPARange *pRange);</source> | ||
=== | === sceKernelVARangeToPARangeByHWForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-1.06 || not present | ||
|- | |||
| 1.500.151-3.740.011 || 0xB3575090 | |||
|} | |} | ||
This is a guessed name. Temp name was sceKernelGetPaddrPairForSmallPageForDriver. | |||
=== | <source lang="c">int sceKernelVARangeToPARangeByHWForDriver(SceKernelVARange *vRange, SceKernelPARange *pRange);</source> | ||
=== sceKernelIsAccessibleRangeForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x9C78064C | ||
|} | |} | ||
Temp name was sceKernelFindMemBlockForDriver. | |||
Also exported as [[#sceKernelIsAccessibleRangeForDebugger]]. | |||
?Returns 0 on success (if is accessible range)? | |||
=== | <source lang="c">int sceKernelIsAccessibleRangeForDriver(SceUInt32 permission_type, const void *pVA, SceSize len);</source> | ||
=== sceKernelIsAccessibleRangeProcForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x9F6E45E3 | ||
|} | |} | ||
<source lang=" | Temp name was sceKernelFindMemBlockForPidForDriver. | ||
Also exported as [[#sceKernelIsAccessibleRangeProcForDebugger]]. | |||
?Returns 0 on success (if is accessible range)? | |||
<source lang="C">int sceKernelIsAccessibleRangeProcForDriver(SceUID pid, SceUInt32 permission_type, const void *pVA, SceSize len);</source> | |||
=== | === sceKernelIsEqualAccessibleRangeProcBySWForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 1.800.071-3.740.011 || 0xF4AD89D8 | ||
|} | |} | ||
Temp name was sceKernelProcIsPAWithinSameSection, sceKernelIsPaddrWithinSameSectionForUidForDriver. | |||
< | <source lang="C">int sceKernelIsEqualAccessibleRangeProcBySWForDriver(SceUID pid, int permission_type, void *pVA, SceSize len);</source> | ||
=== | === sceKernelGetDebugPADramRangeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 1.800.071-3.740.011 || 0xC9928F5E | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelGetUnknownValidPhysAddressSpaceForDriver. | |||
=== | <source lang="C">int sceKernelGetDebugPADramRangeForDriver(SceUIntPtr *address, SceSize *length);</source> | ||
=== sceKernelIsVAWithinDebugPADramRangeForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 1.800.071-3.740.011 || 0xA7C0D1FC | ||
|} | |} | ||
<source lang=" | This is a guessed and bad name. Temp name was sceKernelIsPaddrWithinUnknownValidPhysAddressSpaceForDriver. | ||
<source lang="C">int sceKernelIsVAWithinDebugPADramRangeForDriver(const void *pVA);</source> | |||
=== | === sceKernelUserMapForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x278BC201 | ||
|} | |} | ||
<source lang=" | Temp name was sceKernelMapUserBlockDefaultTypeForDriver. | ||
Assigns type 0. | |||
<source lang="C">SceUID sceKernelUserMapForDriver(const char *name, SceKernelMemoryRefPerm permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, SceUInt32 *kernel_offset);</source> | |||
=== | === sceKernelProcUserMapForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-3.36 || not present | ||
|- | |||
| 3.500.000-3.740.011 || 0x0091D74D | |||
|} | |} | ||
Temp name was sceKernelMapUserBlockForDefaultTypeForPidForDriver. sceKernelProcUserMapForDriver is certainly the real name. | |||
< | Assigns type 0. | ||
<source lang="C">SceUID sceKernelProcUserMapForDriver(SceUID pid, const char *name, SceKernelMemoryRefPerm permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, SceUInt32 *kernel_offset);</source> | |||
=== | === sceKernelUserMapWithFlagsForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.030-1.060.031 || not present | ||
|- | |||
| 1.500.151-3.740.011 || 0x7D4F8B5F | |||
|} | |} | ||
Temp name was sceKernelMapUserBlockForDriver. | |||
=== | Permission is either "1" for read only, no execute or "2"/"3" for read write, no execute. Type is either 0, 1, or 17 and affects the block type. 0 is default. This will allocate kernel memory starting at kernel_page. To get the same memory as the user pointer, add the kernel_offset. kernel_size is how much is allocated. | ||
<source lang="c"> | |||
// this signature is for FW 1.50-1.69 | |||
int sceKernelUserMapWithFlagsForDriver(SceKernelMemoryRefPerm permission, int type, void *user_buf, int size, void **kernel_page, int *kernel_size, int *kernel_offset); | |||
// this signature is for FW 3.60 - it now allows to give a name | |||
int sceKernelUserMapWithFlagsForDriver(char *name, SceKernelMemoryRefPerm permission, int type, void *user_buf, int size, void **kernel_page, int *kernel_size, int *kernel_offset); | |||
</source> | |||
=== sceKernelUserUnmapForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x00575B00 | ||
|} | |} | ||
Temp name was sceKernelMemBlockReleaseForDriver. | |||
=== | <source lang="c">int sceKernelUserUnmapForDriver(SceUID uid);</source> | ||
=== sceKernelUnlockRangeForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x75C70DE0 | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelMemRangeReleaseForDriver. | ||
<source lang="c">int sceKernelUnlockRangeForDriver(void *addr, SceSize size);</source> | |||
=== | === sceKernelUnlockRangeProcForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xA8525B06 | ||
|} | |} | ||
Temp name was sceKernelMemRangeReleaseForPidForDriver. | |||
< | <source lang="c">int sceKernelUnlockRangeProcForDriver(SceUID pid, void *addr, SceSize size);</source> | ||
=== | === sceKernelUnlockRangeWithModeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x22CBE925 | ||
|} | |} | ||
Temp name was sceKernelMemRangeReleaseWithPermForDriver, sceKernelUnlockRangeWithPermForDriver. | |||
=== | Decreases references to pages. | ||
<source lang="c">int sceKernelUnlockRangeWithModeForDriver(SceKernelLockMode mode, void *addr, SceSize size);</source> | |||
=== sceKernelLockRangeForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x59A4402F | ||
|} | |} | ||
<source lang="c">void | Temp name was sceKernelMemRangeRetainForDriver. | ||
<source lang="c">int sceKernelLockRangeForDriver(void *addr, SceSize size);</source> | |||
=== | === sceKernelLockRangeProcForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x659586BF | ||
|} | |} | ||
Temp name was sceKernelMemRangeRetainForPidForDriver. | |||
=== | <source lang="c">int sceKernelLockRangeProcForDriver(SceUID pid, void *addr, SceSize size);</source> | ||
=== sceKernelLockRangeWithModeForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xBC0A1D60 | ||
|} | |} | ||
Temp name was sceKernelMemRangeRetainWithPermForDriver, sceKernelLockRangeWithPermForDriver. | |||
Increases references to pages. | |||
< | <source lang="c">int sceKernelLockRangeWithModeForDriver(SceKernelLockMode mode, const void *addr, SceSize size);</source> | ||
=== | === sceKernelReadUserForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xE08F3967 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelReadUserForDriver(void *dst, const void *src, SceSize size);</source> | ||
=== | === sceKernelCopyToUserForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x6D88EF8A | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelMemcpyKernelToUserForDriver. | ||
Copies <code>size</code> bytes from a kernel buffer to a user buffer. Writes to <code>uaddr</code> are performed using <code>strt</code>-type instructions which cause a Data Abort if the pages are not user-accessible. If any Data Abort occurs during the operation, the exception is swallowed and an error is returned. Otherwise, the function returns <code>SCE_OK</code>. | |||
<source lang="c">SceInt32 sceKernelCopyToUserForDriver(void *uaddr, const void *kaddr, SceSize size);</source> | |||
=== | === sceKernelCopyToUserProcForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x6B825479 | ||
|} | |} | ||
Temp name was sceKernelMemcpyKernelToUserForPidForDriver, sceKernelProcCopyToUserForDriver. | |||
< | Temporarily switches to specified process' address space for a call to [[SceSysmem#sceKernelCopyToUserForDriver|sceKernelCopyToUser]]. | ||
<source lang="c">SceInt32 sceKernelProcCopyToUserForDriver(ScePID pid, void *uaddr, const void *kaddr, SceSize size);</source> | |||
=== | === sceKernelCopyToUserProcDomainForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-1.69 || 0x571D2739 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Temp name was sceKernelRoMemcpyKernelToUserForPidForDriver, sceKernelProcCopyToUserRoForDriver. | |||
Same as [[SceSysmem#sceKernelCopyToUserProcForDriver|sceKernelCopyToUserProc]], but sets DACR to 0xFFFFFFFF (ignore access permission bits in page table) before the copy then restores it. Use this function instead of sceKernelCopyToUserProc if you need to write data to read-only pages. | |||
=== | <source lang="c">SceInt32 sceKernelCopyToUserProcDomainForDriver(SceUID pid, void *dst, const void *src, SceSize size);</source> | ||
=== sceKernelCopyFromUserForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0xBC996A7A | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelMemcpyUserToKernelForDriver. | ||
Copies <code>size</code> bytes from a user buffer to a kernel buffer. Reads from <code>uaddr</code> are performed using <code>ldrt</code>-type instructions which cause a Data Abort if the pages are not user-accessible. If any Data Abort occurs during the operation, the exception is swallowed and an error is returned. Otherwise, the function returns <code>SCE_OK</code>. | |||
<source lang="c">SceInt32 sceKernelCopyFromUserForDriver(void *kaddr, const void *uaddr, SceSize size);</source> | |||
=== | === sceKernelCopyFromUserProcForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931.010-3.60 || 0x605275F8 | ||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelMemcpyUserToKernelForPidForDriver, sceKernelProcCopyFromUserForDriver. | ||
Temporarily switches to specified process' address space for a call to [[SceSysmem#sceKernelCopyFromUserForDriver|sceKernelCopyFromUser]]. | |||
<source lang="c">SceInt32 sceKernelCopyFromUserProcForDriver(SceUID pid, void *dst, void *src, SceSize size);</source> | |||
=== | === sceKernelCopyFromToUserForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 1.50-3.60 || 0x1BD44DD5 | |||
|} | |} | ||
Temp name was sceKernelMemcpyUserToUserForDriver, sceKernelUserCopyForDriver. | |||
< | <source lang="C">int sceKernelCopyFromToUserForDriver(void *dst, const void *src, SceSize size);</source> | ||
=== | === sceKernelCopyFromToUserProcForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 1.50-3.60 || 0x8E086C33 | |||
|} | |} | ||
<source lang="c"> | Temp name was sceKernelMemcpyUserToUserForPidForDriver, sceKernelProcUserCopyForDriver. | ||
<source lang="c">int sceKernelCopyFromToUserProcForDriver(SceUID pid, void *dst, const void *src, SceSize size);</source> | |||
=== | === sceKernelUserStrnlenForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931 || not present (in ForKernel) | ||
|- | |||
| 0.940-0.990 || 0xFF06898A | |||
|- | |||
| 1.50-3.60 || not present | |||
|} | |} | ||
Temp name was sceKernelStrnlenFromUserForDriver. | |||
=== | <source lang="C">SceSize sceKernelUserStrnlenForDriver(const char *s, SceSize maxlen);</source> | ||
=== sceKernelStrnlenUserForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 1.50-3.60 || 0xB429D419 | |||
|} | |} | ||
<source lang="c"> | <source lang="c">SceSize sceKernelStrnlenUserForDriver(const char *s, SceSize maxlen);</source> | ||
=== | === sceKernelProcStrnlenUserForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 1.50-3.60 || 0x9929EB07 | |||
|} | |} | ||
<source lang="c"> | <source lang="c">SceSize sceKernelProcStrnlenUserForDriver(SceUID pid, const char *s, SceSize maxlen);</source> | ||
=== | === sceKernelProcUserStrcpyForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-1.50 || 0xEBCB3970 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceKernelProcUserStrcpyForDriver(SceUID pid, char *dst, const char *src);</source> | |||
=== sceKernelStrncpyFromUserSpecialForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-1.50 || 0x7440BCDA | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceKernelStrncpyFromUserSpecialForDriver(char *dst, const char *src, SceSize maxlen, SceSize *dst_size);</source> | |||
=== sceKernelStrncpyToUserSpecialForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-1.50 || 0x369355F1 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceKernelStrncpyToUserSpecialForDriver(char *dst, const char *src, SceSize maxlen, SceSize *dst_size);</source> | |||
<source lang=" | |||
=== | === sceKernelUserStrncpyForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931 || not present. Present but not exported. | ||
|- | |||
| 0.940-0.990 || 0xE6D5EFE4 | |||
|- | |||
| 1.50-3.60 || not present | |||
|} | |} | ||
Returns 0 on success. | |||
<source lang=" | <source lang="C">int sceKernelUserStrncpyForDriver(char *dst, const char *src, SceSize maxlen);</source> | ||
=== | === sceKernelStrncpyFromUserForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 1.50-3.60 || 0xDB3EC244 | |||
|} | |} | ||
Temp | Temp name was sceKernelStrncpyUserToKernelForDriver. | ||
<source lang="c">int | <source lang="c">int sceKernelStrncpyFromUserForDriver(char *dst, const char *src, SceSize maxlen);</source> | ||
=== | === sceKernelProcStrncpyFromUserForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || not present | ||
|- | |||
| 1.50-3.60 || 0x75AAF178 | |||
|} | |} | ||
Temp name was sceKernelStrncpyUserForPidForDriver. | |||
<source lang="c">int sceKernelProcStrncpyFromUserForDriver(SceUID pid, char *dst, const char *src, SceSize maxlen);</source> | |||
=== sceKernelStrncpyToUserForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 1.50-3.60 || 0x80BD6FEB | |||
|} | |} | ||
Temp name was sceKernelStrncpyKernelToUserForDriver. | |||
<source lang="c">int | <source lang="c">int sceKernelStrncpyToUserForDriver(char* dst, const char *src, SceSize maxlen);</source> | ||
=== | === sceKernelProcStrncpyToUserForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 1.50-3.60 || 0xFED82F2D | |||
|} | |} | ||
Temp name was sceKernelMemcpyKernelToUserForPidUncheckedForDriver. | |||
<source lang="c">int | <source lang="c">int sceKernelProcStrncpyToUserForDriver(SceUID pid, char *dst, const char *src, SceSize maxlen);</source> | ||
== SceSysmemForDebugger == | |||
This library was removed on FW 1.80. | |||
=== | === sceKernelPhysicalAddressSpaceStartForDebugger === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | |||
|- | |- | ||
| 0.931 || 0x6AE2188F | |||
|- | |- | ||
| 1. | | 1.691-3.60 || not present | ||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelPhysicalAddressSpaceStartForDebugger(void);</source> | ||
=== | === sceKernelGetPhysicalAddressSpaceForDebugger === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | |||
|- | |- | ||
| 0.931 || 0xE8905626 | |||
|- | |- | ||
| 3.60 || | | 1.691-3.60 || not present | ||
|} | |} | ||
In FW 0.931, it calls sceKernelPhysicalAddressSpaceStartForDebugger. | |||
=== | <source lang="C">void *sceKernelGetPhysicalAddressSpaceForDebugger(void);</source> | ||
=== sceKernelIsAccessibleRangeProcForDebugger === | |||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | |||
|- | |- | ||
| 0.931-1.692 || 0x01DFC193 | |||
|- | |- | ||
| 1. | | 1.80-3.60 || not present. Exported as [[#sceKernelIsAccessibleRangeProcForDriver]]. | ||
|} | |} | ||
?Returns 0 on success (if is accessible range)? | |||
< | <source lang="C">int sceKernelIsAccessibleRangeProcForDebugger(SceUID pid, SceUInt32 mode, const void *pVA, SceSize size);</source> | ||
=== | === sceKernelIsAccessibleRangeForDebugger === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | |||
|- | |- | ||
| 0.931-1.692 || 0xD027761F | |||
|- | |- | ||
| 3.60 || | | 1.80-3.60 || not present. Exported as [[#sceKernelIsAccessibleRangeForDriver]]. | ||
|} | |} | ||
<source lang=" | ?Returns 0 on success (if is accessible range)? | ||
<source lang="C">int sceKernelIsAccessibleRangeForDebugger(SceUInt32 mode, const void *pVA, SceSize size);</source> | |||
=== | == SceSysmem == | ||
The SceSysmem library is responsible for both low-level and high-level memory management. There are functions for allocating raw blocks of memory (similar to Linux <code>sbrk</code>) as well as functions for maintaining a heap-like structure (similar to <code>malloc</code>) for kernel, however [[SceLibKernel]] implements a proper heap and that is used for user code. | |||
=== sceKernelMapMemBlock === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-1.69 || 0x7B763A21 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== sceKernelRemapMemBlock === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-1.69 || 0x3B29E0F5 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== sceKernelPartialMapMemBlock === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || not present | ||
| | |||
|- | |- | ||
| 1.69 || 0xC0A59868 | |||
|- | |- | ||
| 3.60 || | | 3.60 || not present | ||
|} | |} | ||
=== sceKernelUnmapMemBlock === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-1.69 || 0xEE30D976 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelUnmapMemBlock(SceUID uid);</source> | ||
=== sceKernelPartialUnmapMemBlock === | |||
= | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || not present | ||
| | |||
|- | |- | ||
| 1.69 || 0xCA99929B | |||
|- | |- | ||
| 3.60 || | | 3.60 || not present | ||
|} | |} | ||
=== sceKernelGetMemBlockInfoByRange === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || not present | ||
|- | |||
| 0.996-3.60 || 0x006F3DB4 | |||
|} | |} | ||
<source lang="c"> | <source lang="c"> | ||
/** | |||
* @brief Get memory block informaton by virtual address range | |||
< | * @param[in] vbase base address | ||
* @param[in] vsize size | |||
* @param[inout] pInfo information structure | |||
*/ | |||
int sceKernelGetMemBlockInfoByRange(void *vbase, SceSize vsize, SceKernelMemBlockInfo *pInfo); | |||
</source> | |||
=== | === sceKernelGetMemBlockInfoByAddr === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x4010AD65 | ||
|} | |} | ||
<source lang="c">void | <source lang="c"> | ||
/** | |||
* @brief Get memory block information. | |||
* | |||
* Get information about a memory block. | |||
* @param[in] vbase Base address | |||
* @param[inout] pInfo Information structure | |||
*/ | |||
int sceKernelGetMemBlockInfoByAddr(void *vbase, SceKernelMemBlockInfo *pInfo); | |||
</source> | |||
=== | === sceKernelGetSubbudgetInfo === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || not present | ||
|- | |||
| 1.69-3.60 || 0x832B4A65 | |||
|} | |} | ||
<source lang="c"> | <source lang="c"> | ||
#define SCE_KERNEL_SUBBUDGET_ID_MAIN (0) | |||
#define SCE_KERNEL_SUBBUDGET_ID_CDLG (1) | |||
typedef struct SceKernelSubbudgetInfo { // size is 0xC on FW 3.60 | |||
int size; // Size of this structure | |||
SceUInt32 totalSize; | |||
SceUInt32 freeSize; | |||
} SceKernelSubbudgetInfo; | |||
< | /** | ||
* Get the subbudget info | |||
* | |||
* @param[in] subbudget - The subbudget ID | |||
* @param[out] pInfo - The subbudget info | |||
* | |||
* @return 0 on success, < 0 on error. | |||
*/ | |||
int sceKernelGetSubbudgetInfo(SceInt subbudget, SceKernelSubbudgetInfo *pInfo); | |||
</source> | |||
=== | === sceKernelGetFreeMemorySize === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0x87CC580B | ||
|} | |} | ||
<source lang=" | <source lang="C"> | ||
/** | |||
* Get free memory size | |||
*/ | |||
int sceKernelGetFreeMemorySize(SceKernelFreeMemorySizeInfo *info); | |||
</source> | |||
=== | === sceKernelOpenMemBlock === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x8EB8DFBB | ||
|} | |} | ||
<source lang="c"> | <source lang="c"> | ||
// on FW <= 1.691, flags is not used | |||
SceUID sceKernelOpenMemBlock(const char *name, int flags); | |||
</source> | |||
=== | === sceKernelFindMemBlockByAddr === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xA33B99D1 | ||
|} | |} | ||
<source lang="c">void | <source lang="c"> | ||
/** | |||
* Find memory block by virtual range (base address and size) | |||
* If size == 0, API returns a memory block which contains 'start' | |||
=== | * If size > 0, API returns a memory block just fit range [start, start + size]. | ||
* @param[in] vaddr base address | |||
* @param[in] size address size | |||
* @retval >=SCE_OK block id | |||
* @retval <SCE_OK error | |||
*/ | |||
SceUID sceKernelFindMemBlockByAddr(void *vaddr, SceSize size); | |||
</source> | |||
=== sceKernelFreeMemBlock === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0xA91E15EE | ||
|} | |} | ||
<source lang="c"> | |||
/** | |||
* Free memory block. | |||
* | |||
* @param[in] uid block uid | |||
* @retval SCE_OK Success | |||
* @retval <SCE_OK Error code | |||
*/ | |||
int sceKernelFreeMemBlock(SceUID uid); | |||
</source> | |||
=== sceKernelFreeMemBlockForVM === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0x4EA13FEA | |||
| 3.60 || | |||
|} | |} | ||
<source lang="c">int sceKernelFreeMemBlockForVM(SceUID uid);</source> | |||
=== sceKernelCloseMemBlock === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990- | | 0.990-3.60 || 0xB680E3A0 | ||
|} | |} | ||
<source lang="c">int sceKernelCloseMemBlock(SceUID uid);</source> | |||
=== | === sceKernelGetMemBlockBase === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.996-3.60 || 0xB8EF5818 | ||
|} | |} | ||
= | <source lang="C"> | ||
/** | |||
* @brief Get mapped base address of memory block. | |||
* | |||
* Get base address of memory block. | |||
* @param[in] uid block id | |||
* @param[out] ppBase base address of memory block | |||
* @retval SCE_OK success | |||
* @retval <SCE_OK Error | |||
*/ | |||
int sceKernelGetMemBlockBase(SceUID uid, void **ppBase); | |||
</source> | |||
=== sceKernelAllocMemBlock === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xB9D5EBDE | ||
|} | |} | ||
=== | <source lang="c"> | ||
/** | |||
* Reserve a new memory block. | |||
* | |||
* The memory types that can be specified for type are as follows. | |||
* - SCE_KERNEL_MEMBLOCK_TYPE_USER_RW | |||
* - SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE | |||
* - SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_RW | |||
* - SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_RW | |||
* - SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW | |||
* | |||
* Allocate a memory block. | |||
* | |||
* @param[in] name Memory block name | |||
* @param[in] vsize Memory block virtual size | |||
* @param[in] flags Options | |||
* @retval id UID of memory block | |||
* @retval <SCE_OK Error code | |||
*/ | |||
SceUID sceKernelAllocMemBlock(const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOpt *pOpt); | |||
</source> | |||
=== sceKernelAllocUnmapMemBlock === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xEC636BCB | ||
|} | |} | ||
=== | <source lang="c">int sceKernelAllocUnmapMemBlock(char *name, SceSize size);</source> | ||
=== sceKernelOpenVMDomain === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 1.69-3.60 || 0x9CA3EB2B | ||
|} | |} | ||
=== | <source lang="c">int sceKernelOpenVMDomain();</source> | ||
=== sceKernelSyncVMDomain === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0x19D2A81A | ||
|} | |} | ||
=== | <source lang="c">int sceKernelSyncVMDomain(SceUID uid, void *data, SceSize size);</source> | ||
=== sceKernelCloseVMDomain === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0xD6CA56CA | ||
|} | |} | ||
=== | <source lang="c">int sceKernelCloseVMDomain();</source> | ||
=== sceKernelAllocMemBlockForVM === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0xE2D7E137 | ||
|} | |} | ||
=== | <source lang="c">SceUID sceKernelAllocMemBlockForVM(const char *name, SceSize vsize);</source> | ||
=== sceKernelCheckModelCapability === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-2.12 || not present | ||
|- | |||
| 2.500.071-3.570.011 || 0x0144FBD9 | |||
|} | |} | ||
=== | Only bits 7 and 10 are supported. | ||
Returns 0x80020005 if <code>bit</code> is not supported. | |||
On success, returns SCE_TRUE if the model has capability, else SCE_FALSE. | |||
<source lang="c">int sceKernelCheckModelCapability(int bit);</source> | |||
=== sceKernelGetModelForCDialog === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xA2CB322F | ||
|} | |} | ||
=== | <source lang="c">int sceKernelGetModelForCDialog();</source> | ||
=== sceKernelGetModel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xD0D4F729 | ||
|} | |} | ||
=== | <source lang="c">int sceKernelGetModel();</source> | ||
=== sceKernelIsPSVitaTV === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x1453A5E5 | ||
|} | |} | ||
=== | <source lang="c">int sceKernelIsPSVitaTV();</source> | ||
== SceDipsw == | |||
=== sceKernelCheckDipsw === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0x1C783FB2 | ||
|} | |} | ||
=== | === sceKernelClearDipsw === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0x800EDCC1 | ||
|} | |} | ||
=== | === sceKernelSetDipsw === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.69-3.60 || 0x817053D4 | ||
|} | |} | ||
== SceDipswForDriver == | |||
=== | === sceKernelCheckDipswForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990.000-3.740.011 || 0xA98FC2FD | ||
|} | |} | ||
=== | <source lang="C">int sceKernelCheckDipswForDriver(int no);</source> | ||
=== sceKernelClearDipswForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990.000-3.740.011 || 0xF1F3E9FE | ||
|} | |} | ||
=== | <source lang="C">void sceKernelClearDipswForDriver(int no);</source> | ||
=== sceKernelSetDipswForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990.000-3.740.011 || 0x82E45FBF | ||
|} | |} | ||
<source lang="C">void sceKernelSetDipswForDriver(int no);</source> | |||
=== | === sceKernelGetDipswInfoForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 1.800.071-3.740.011 || 0xB2AD48BE | ||
|} | |} | ||
=== | This is a guessed name. | ||
All it does is: | |||
<source lang="C">return *(int *)(dipsw_addr + 4 * info_id);</source> | |||
info_id possible values: | |||
* 0: CP timestamp 1 | |||
* 1: CP Version, CP Board ID | |||
* 2: CP timestamp 2 | |||
* 3: ASLR Seed | |||
See [[KBL Param#DIP Switches]]. | |||
<source lang="C">int sceKernelGetDipswInfoForDriver(SceUInt32 info_id);</source> | |||
== SceUartForKernel == | |||
=== sceKernelUartChStartForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-3.60 || 0xA9C74212 | ||
|- | |} | ||
Temp name was sceKernelUartInitForKernel, sceUartInitForKernel. | |||
It initializes the clock generator registers for the UART <code>channel</code>. See [[UART Registers]]. The default baud rate is 115200 for channels 0-5 and 250000 for channel 6. | |||
<source lang="C"> | |||
// channel: 0-6 | |||
int sceKernelUartChStartForKernel(SceUInt32 channel); | |||
</source> | |||
=== | === sceKernelUartReadAvailableForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || not present | ||
|- | |||
| 3.60 || 0x38DB7629 | |||
|} | |} | ||
=== | Temp name was sceUartReadAvailableForKernel. | ||
Returns the number of words available to read from the read FIFO. | |||
<source lang="c">int sceKernelUartReadAvailableForKernel(int channel);</source> | |||
=== sceKernelUartReadForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-3.60 || 0x9BBF1255 | ||
|} | |} | ||
=== | Temp name was sceUartReadForKernel. | ||
<source lang="c">int sceKernelUartReadForKernel(int channel);</source> | |||
=== sceKernelUartWriteForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-3.60 || 0x41973874 | ||
|} | |} | ||
=== | Temp name was sceUartWriteForKernel. | ||
<source lang="c">int sceKernelUartWriteForKernel(int channel, char c);</source> | |||
=== sceKernelUartPutcharForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-0.990 || 0xAF243C6A | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="c">int sceKernelUartPutcharForKernel(char c);</source> | ||
== SceCpu == | |||
=== sceKernelCpuId === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 1.000.071-3.740.011 || 0x2704CFEE | ||
|} | |} | ||
=== | Returns the CPU ID of the current core. | ||
<source lang="c">SceUInt sceKernelCpuId(void);</source> | |||
== SceCpuForKernel == | |||
=== sceKernelSendEventForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x45885327 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">void sceKernelSendEventForKernel(void);</source> | ||
=== sceKernelWaitForEventForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931 || 0xD2629465 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">void sceKernelWaitForEventForKernel(void);</source> | ||
=== sceKernelPrintCpuModeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931 || 0xDC99515C | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | === sceKernelTlsKernelSetForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.940 || 0x7A180AA4 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C"> | ||
// thread_index must be < 8 | |||
void *sceKernelTlsKernelSetForKernel(SceUInt32 thread_index, void *tls); | |||
</source> | |||
=== sceKernelTlsKernelGetForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.940 || 0x28E080BC | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C"> | ||
// thread_index must be < 8 | |||
void *sceKernelTlsKernelGetForKernel(SceUInt32 thread_index); | |||
</source> | |||
=== sceKernelRoundupDCacheLineForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-0.990 || 0xED512F50 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | Calls the function previously registered by [[SceSysmem#sceKernelSetRoundupDCacheLineFuncForKernel]]. | ||
<source lang="C">int sceKernelRoundupDCacheLineForKernel(int a1);</source> | |||
=== sceKernelSetRoundupDCacheLineFuncForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-0.990 || 0x66C3AA93 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | Uses CTR and CTR-DMINLINE to determine which function to return. | ||
<source lang="C">(int sceKernelRoundupDCacheLineForKernel(int) *) sceKernelSetRoundupDCacheLineFuncForKernel(void);</source> | |||
=== sceKernelReadUser8ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || 0x942B92C3 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelReadUser8ForKernel(uint8_t *dest, uint8_t *psrc);</source> | ||
=== sceKernelReadUser16ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990 || maybe present | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelReadUser16ForKernel(uint16_t *dest, uint16_t *psrc);</source> | ||
=== sceKernelReadUser32ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x6091086F | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelReadUser32ForKernel(uint32_t *dest, uint32_t *psrc);</source> | ||
=== sceKernelWriteUser8ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x13B7B151 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelWriteUser8ForKernel(uint8_t *dest, uint8_t val);</source> | ||
=== sceKernelWriteUser16ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || maybe present | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelWriteUser16ForKernel(uint16_t *dest, uint16_t val);</source> | ||
=== sceKernelWriteUser32ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x101894E0 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelWriteUser32ForKernel(uint32_t *dest, uint32_t val);</source> | ||
=== sceKernelVMRead8ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xA2F0FE9D | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
= | <source lang="C">int sceKernelVMRead8ForKernel(uint8_t *dest, uint8_t *psrc);</source> | ||
=== | === sceKernelVMRead16ForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990 || 0xF31D4D10 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelVMRead16ForKernel(uint16_t *dest, uint16_t *psrc);</source> | ||
=== sceKernelVMRead32ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.931-0.990 || 0x316574B1 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelVMRead32ForKernel(uint32_t *dest, uint32_t *psrc);</source> | ||
=== sceKernelVMWrite8ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || 0xA3C65664 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelVMWrite8ForKernel(uint8_t *dest, uint8_t val);</source> | ||
=== sceKernelVMWrite16ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || 0xBF38A460 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelVMWrite16ForKernel(uint16_t *dest, uint16_t val);</source> | ||
=== sceKernelVMWrite32ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || 0x04D129B2 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelVMWrite32ForKernel(uint32_t *dest, uint32_t val);</source> | ||
=== sceKernelMMUIsValidMapForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || 0x4891F923 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelMMUIsValidMapForKernel(SceKernelMMUContext *context, const void *vbase, SceSize size, const void *pbase);</source> | ||
=== sceKernelMMUIsValidUnmapForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || 0x60EA8433 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | <source lang="C">int sceKernelMMUIsValidUnmapForKernel(SceKernelMMUContext *context, const void *vbase, SceSize size);</source> | ||
=== sceKernelMMUL1GetInfoForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.931-0.990 || 0x9D346F87 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | Parses a L1PT for information about a specific entry. Pass the address of the L1PT in <code>l1pt</code>. Used by [[SceSysmem#sceKernelAddressSpaceGetMMUL1InfoForKernel|sceKernelAddressSpaceGetMMUL1InfoForKernel]]. | ||
<source lang="C">SceInt32 sceKernelMMUL1GetInfoForKernel(void* l1pt, const void *addr, SceKernelMMUL1Info *pInfo);</source> | |||
=== sceKernelMMUL2GetInfoForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.931-0.990 || 0x247629A7 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C"> | <source lang="C">int sceKernelMMUL2GetInfoForKernel(int a1, void *addr, void *pInfo);</source> | ||
</source> | |||
=== | === sceKernelMMUMapSectionsForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.931-0.990 || 0x868B471A | ||
|- | |||
| 3.60 || not present | |||
|- | |||
| 3.65 || Present, but not exported | |||
|} | |} | ||
=== | <source lang="C">SceInt32 sceKernelMMUMapSectionsForKernel(const void *ttbr, SceKernelMemoryType code, SceUInt32 domain, void *vaddr, SceSize vsize, void *paddr);</source> | ||
=== sceKernelMMUMapSupersectionsForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x0D9DA15F | ||
|- | |||
| 3.60 || not present | |||
|- | |||
| 3.65 || Present, but not exported | |||
|} | |} | ||
<source lang=" | <source lang="C">SceInt32 sceKernelMMUMapSupersectionsForKernel(const void *ttbr, SceKernelMemoryType code, SceUInt32 domain, void *vaddr, SceSize vsize, void *paddr);</source> | ||
</source> | |||
=== sceKernelMMUMapSmallPagesForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| 0 || | ! Version !! NID | ||
|- | |||
| 0.931-0.990 || 0xB953E022 | |||
|- | |- | ||
| | | 3.60 || not present | ||
|- | |- | ||
| | | 3.65 || Present, but not exported | ||
|} | |} | ||
=== | <source lang="C">int sceKernelMMUMapSmallPagesForKernel(const void *table, SceKernelMemoryType code, void *vbase, SceUInt32 voffset, SceSize vsize, void *paddr);</source> | ||
=== sceKernelMMUMapSmallPageForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.931-0.990 || 0xCC7C16F8 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelMMUMapSmallPageForKernel(const void *table, SceKernelMemoryType code, void *vbase, SceUInt32 voffset, void *paddr);</source> | ||
=== sceKernelMMUMapLargePagesForKernel === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x78D32D38 | ||
|- | |||
| 3.60 || not present | |||
|- | |||
| 3.65 || Present, but not exported | |||
|} | |} | ||
<source lang="C">int | <source lang="C">int sceKernelMMUMapLargePagesForKernel(const void *table, SceKernelMemoryType code, void *vbase, SceUInt32 voffset, SceSize vsize, void *paddr);</source> | ||
=== | === sceKernelMMUUnmapSectionsWithFlagsForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0xFC657FD1 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang=" | <source lang="C">int sceKernelMMUUnmapSectionsWithFlagsForKernel(const void *table, uint32_t maybe_ttbr0, void *vbase, SceSize vsize, SceUInt32 flags);</source> | ||
=== | === sceKernelMMUUnmapSupersectionsWithFlagsForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x0E4D29C6 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceKernelMMUUnmapSupersectionsWithFlagsForKernel(const void *table, uint32_t maybe_ttbr0, void *vbase, SceSize vsize, SceUInt32 flags);</source> | |||
<source lang=" | |||
=== | === sceKernelMMUUnmapSmallPagesWithFlagsForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.931-0.990 || 0x11EBA8CE | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceKernelMMUUnmapSmallPagesWithFlagsForKernel(const void *table, uint32_t maybe_ttbr0, void *vbase, SceUInt32 voffset, SceSize vsize, SceUInt32 flags);</source> | |||
<source lang="C">void * | |||
=== | === sceKernelMMUUnmapLargePagesWithFlagsForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x44319918 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int | <source lang="C">int sceKernelMMUUnmapLargePagesWithFlagsForKernel(const void *table, uint32_t maybe_ttbr0, void *vbase, SceUInt32 voffset, SceSize vsize, SceUInt32 flags);</source> | ||
=== | === sceKernelMMUL1VAtoPABySWForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x8E4ECF17 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C"> | <source lang="C">int sceKernelMMUL1VAtoPABySWForKernel(const void *table, void *pVA, void **pPA);</source> | ||
=== | === sceKernelMMUSetL2PageTableForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xAECA0820 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceKernelMMUSetL2PageTableForKernel(const void *ttbr, const void *map, const void *pbase);</source> | |||
<source lang="C"> | |||
=== | === sceKernelMMUUnsetL2PageTableForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xCB519DF3 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int sceKernelMMUUnsetL2PageTableForKernel(const void *ttbr, const void *PTE);</source> | |||
<source lang="C">int | |||
=== | === SceCpuForKernel_CA4124DE === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0xCA4124DE | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Returns 1, 2 or 6 based on some page/section properties. | |||
<source lang="C">int | <source lang="C">int SceCpuForKernel_CA4124DE(const void *table, void *pVA, void **pPA);</source> | ||
=== | === sceKernelMMUGetContextForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931 || 0x211B89DA | ||
|- | |||
| 1.03-3.60 || not present | |||
|} | |} | ||
Temp name was sceKernelCpuSaveContextForKernel. | |||
<source lang="C">int | <source lang="C">int sceKernelMMUGetContextForKernel(SceKernelMMUContext *context);</source> | ||
=== | === sceKernelMMUChangeContextForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931 || 0x0A4F0FB9 | ||
|- | |||
| 1.03-3.60 || not present | |||
|} | |} | ||
Temp name was sceKernelCpuRestoreContextForKernel. | |||
<source lang="C">int | <source lang="C">int sceKernelMMUChangeContextForKernel(SceKernelMMUContext *context);</source> | ||
=== | === sceKernelMMUVAtoPAWithModeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x67343A07 | ||
|} | |} | ||
Temp name was sceKernelCpuGetPaddrWithMaskForKernel. | |||
mode (maskPAR) is usually 0x33, sometimes 2. | |||
<source lang=" | <source lang="c">int sceKernelMMUVAtoPAWithModeForKernel(int mode, void *pVA, void **ppPA);</source> | ||
=== | === sceKernelMMUCheckRangeWithModeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931 || 0xCCDA3B8C | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Return 0 if all pages are valid, < 0 else. | |||
<source lang="C">int | <source lang="C">int sceKernelMMUCheckRangeWithModeForKernel(int mode, void *start, SceSize size);</source> | ||
=== | === sceKernelMMUVAtoPAForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x2A46E800 | ||
|} | |} | ||
Temp name was sceKernelCpuGetPaddrForKernel. | |||
Uses mode (maskPAR) 0x33. | |||
< | This will write the physical address for a virtual address <code>pVA</code> to memory pointed to by <code>pPA</code>. | ||
= | Returns <0 on error, values >=0 indicate success. | ||
<source lang="c">int sceKernelMMUVAtoPAForKernel(void *pVA, void **pPA);</source> | |||
=== sceKernelCpuGetCONTEXTIDRForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x5B6B3274 | ||
|} | |} | ||
return | <source lang="C"> | ||
return (SceUInt8)__mrc(15, 0, 13, 0, 1); // Read CONTEXTIDR (Context ID Register) | |||
</source> | |||
<source lang="C"> | <source lang="C">SceUInt8 sceKernelCpuGetCONTEXTIDRForKernel(void);</source> | ||
=== | === sceKernelCpuUpdateSCTLRForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x04008CF7 | ||
|} | |} | ||
<source lang="C"> | |||
int result; | |||
result = __mrc(15, 0, 1, 0, 0) | 0x1806; // Read SCTLR (System Control Register) | |||
__mcr(15, 0, result, 1, 0, 0); // Write SCTLR (System Control Register) | |||
return result; | |||
</source> | |||
<source lang="C"> | <source lang="C">void sceKernelCpuUpdateSCTLRForKernel(void); // SCTLR (System Control Register)</source> | ||
=== | === sceKernelCpuBranchPredictorInvalidateAllISForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x1BB2BB8D | ||
|} | |} | ||
<source lang="C">void sceKernelCpuBranchPredictorInvalidateAllISForKernel(void); // BPIALLIS, Branch predictor invalidate all (IS)</source> | |||
=== sceKernelCpuBranchPredictorInvalidateAllForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x4C4C7D6B | |||
|} | |||
<source lang="C">void sceKernelCpuBranchPredictorInvalidateAllForKernel(void); // BPIALL, Branch predictor invalidate all</source> | |||
=== sceKernelDcacheCleanInvalidateAllForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931.010 || 0x85A27F98 | ||
|} | |} | ||
Flushes PLE then cleans and invalidates L1 Dcache and L2 cache in this order. | |||
<source lang="C"> | <source lang="C">void sceKernelDcacheCleanInvalidateAllForKernel(void);</source> | ||
=== | === sceKernelL1DcacheInvalidateForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x470EAE1E | ||
|} | |} | ||
Temp name was sceKernelCpuDcacheInvalidateMVACForKernel. | |||
<source lang="C"> | <source lang="C">void sceKernelL1DcacheInvalidateForKernel(void* addr); // DCIMVAC, Data cache invalidate by MVA (PoC)</source> | ||
=== | === sceKernelL1DcacheInvalidateRangeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x583F30D1 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuDcacheInvalidateMVACRangeForKernel. | |||
<source lang="C"> | <source lang="C">void sceKernelL1DcacheInvalidateRangeForKernel(void *addr, unsigned int size); // DCIMVAC, Data cache invalidate by MVA (PoC)</source> | ||
=== | === sceKernelL1DcacheCleanInvalidateRangeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x6BA2E51C | ||
|} | |} | ||
<source lang="C"> | This is a guessed name. Temp name was sceKernelCpuDcacheCleanInvalidateMVACRangeForKernel, sceKernelCpuDcacheWritebackInvalidateRangeForKernel, sceKernelDcacheWritebackInvalidateRangeForKernel. | ||
<source lang="C"> | |||
// DCCIMVAC, Data cache clean and invalidate by MVA (PoC) | |||
void sceKernelL1DcacheCleanInvalidateRangeForKernel(const void *addr, unsigned int size); | |||
</source> | |||
=== | === sceKernelL1DcacheInvalidateAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x2F3BF020 | ||
|} | |} | ||
<source lang="C"> | This is a guessed name. Temp name was sceKernelCpuDcacheInvalidateSWForKernel. | ||
<source lang="C">void sceKernelL1DcacheInvalidateAllForKernel(void); // DCISW, Data cache invalidate by set/way (all the cache)</source> | |||
=== | === sceKernelL1DcacheCleanAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x73A30DB2 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuDcacheCleanSWForKernel. | |||
<source lang="C"> | <source lang="C">void sceKernelL1DcacheCleanAllForKernel(void); // DCCSW, Data cache clean by set/way (all the cache)</source> | ||
=== | === sceKernelL1DcacheCleanInvalidateAllForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x76DAB4D0 | ||
|} | |} | ||
Guessed name was sceKernelCpuDcacheCleanInvalidateSWForKernel. | |||
<source lang="C"> | <source lang="C">void sceKernelL1DcacheCleanInvalidateAllForKernel(void);</source> | ||
=== | === sceKernelL1DcacheCleanForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xF7159B55 | ||
|} | |} | ||
Temp name was sceKernelCpuDcacheCleanMVACForKernel. | |||
<source lang="C"> | <source lang="C">void sceKernelL1DcacheCleanForKernel(void* addr); // DCCMVAC, Data cache clean by MVA (PoC)</source> | ||
=== | === sceKernelL1DcacheCleanRangeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0xC5C1EE4E | ||
|} | |} | ||
Guessed name was sceKernelCpuDcacheCleanMVACRangeForKernel. | |||
<source lang="C"> | <source lang="C">void sceKernelL1DcacheCleanRangeForKernel(void *addr, unsigned int size); // DCCMVAC, Data cache clean by MVA (PoC)</source> | ||
=== | === sceKernelL1DcacheCleanInvalidateForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xC8E8C9E9 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuDcacheCleanInvalidateMVACForKernel. | |||
<source lang="C"> | <source lang="C">void sceKernelL1DcacheCleanInvalidateForKernel(void *start); // DCCIMVAC, Data cache clean and invalidate by MVA (PoC)</source> | ||
=== | === sceKernelL1IcacheInvalidateEntireAllCoreForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x264DA250 | ||
|- | |||
| 3.65 || 0x803C84BF | |||
|} | |} | ||
Guessed name was sceKernelCpuIcacheInvalidateAllUISForKernel. | |||
Invalidates the L1 Icache for all cores. | |||
<source lang=" | <source lang="C">void sceKernelL1IcacheInvalidateEntireAllCoreForKernel(void);</source> | ||
=== | === sceKernelL1IcacheInvalidateEntireForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xAEE0B489 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuIcacheInvalidateAllUForKernel. | |||
Invalidates the entire L1 Icache of this core. | |||
<source lang=" | <source lang="C">void sceKernelL1IcacheInvalidateEntireForKernel(void); // ICIALLU, Instruction cache invalidate all (PoU)</source> | ||
=== | === sceKernelL1IcacheInvalidateRangeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0xF4C7F578 | ||
|} | |} | ||
Temp name was | Temp name was sceKernelCpuIcacheInvalidateRangeForKernel, sceKernelCpuIcacheInvalidateMVAURange. | ||
Invalidates a range in L1 Icache of this core. | |||
<source lang="C"> | |||
// ICIMVAU, Instruction cache invalidate by MVA (PoU) | |||
void sceKernelL1IcacheInvalidateRangeForKernel(void *start, SceSize size); | |||
</source> | |||
=== sceKernelIcacheInvalidateRangeForKernel === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x19F17BD0 | ||
|- | |||
| 3.65-3.68 || 0x73E895EA | |||
|} | |} | ||
=== | Temp name was sceKernelCpuIcacheAndL2InvalidateMVAURangeForKernel, sceKernelCpuIcacheAndL2WritebackInvalidateRangeForKernel. | ||
Cleans and invalidates range in L2 cache, then in L1 Icache of core. | |||
<source lang="c">int sceKernelIcacheInvalidateRangeForKernel(void *start, SceSize size);</source> | |||
=== sceKernelPleFlushRequestForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xD0D85FF8 | ||
|} | |} | ||
=== | Temp name was sceKernelCpuPreloadEngineKillForKernel. | ||
*NSACR (Non-Secure Access Control Register) | |||
*Test bit NS access to the Preload Engine resources | |||
*[>] PLEFF (Preload Engine FIFO flush operation) | |||
*[>] PLEKC (Preload Engine kill channel operation) | |||
*[<] PLEASR (Preload Engine Activity Status Register) | |||
<source lang="c">void sceKernelPleFlushRequestForKernel(void);</source> | |||
=== sceKernelDomainTextMemcpyForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x8C683DEC | ||
|- | |||
| 3.63-3.65 || not present. Removed from library. | |||
|} | |} | ||
=== | Temp name was sceKernelCpuUnrestrictedMemcpyForKernel. | ||
Unrestricted memcpy by first setting the <code>DACR</code> register to <code>0xFFFF0000</code> then doing a memcpy. | |||
In FW 0.931, <code>DACR</code> is set to <code>0xFFFFFFFF</code> instead and interrupts are disabled for the operation. | |||
<source lang="c">int sceKernelDomainTextMemcpyForKernel(void *dest, const void *src, SceSize len);</source> | |||
=== sceKernelMMUGetMemoryTypeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x9B8173F4 | ||
|} | |} | ||
=== | Return value can be: | ||
* 2 | |||
* 8 | |||
* 0x40 | |||
* 0x80 | |||
* 0xD0 | |||
* 0x80022007 (SCE_KERNEL_ERROR_VA2PA_FAULT) | |||
<source lang="c">int sceKernelMMUGetMemoryTypeForKernel(void *vaddr);</source> | |||
=== sceKernelCorelockUnlockForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xA5C9DBBA | ||
|} | |} | ||
= | This is a guessed name. Temp name was sceKernelWaitCore3ForKernel. | ||
<source lang="c"> | |||
typedef struct SceKernelCorelockContext { | |||
int lock; | |||
int16_t core_count; | |||
int16_t last_wait_core; | |||
} SceKernelCorelockContext; | |||
void sceKernelCorelockUnlockForKernel(SceKernelCorelockContext *pCtx); | |||
</source> | |||
=== | === sceKernelCorelockLockForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x9D72DD1B | ||
|} | |} | ||
=== | This is a guessed name. | ||
<source lang="c">void sceKernelCorelockLockForKernel(SceKernelCorelockContext *pCtx, int core);</source> | |||
=== sceKernelCorelockInitializeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x4CD4D921 | ||
|- | |||
| 3.65 || 0xA65F6F14 | |||
|} | |} | ||
=== | This is a guessed name. | ||
<source lang="C">void sceKernelCorelockInitializeForKernel(SceKernelCorelockContext *pCtx);</source> | |||
=== SceCpuForKernel_43CC6E20 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x43CC6E20 | ||
|} | |} | ||
=== | DACR off | ||
Does some memory copies between the args. | |||
<source lang="c">int SceCpuForKernel_43CC6E20(void *addr, int a2, int a3, int a4);</source> | |||
=== sceKernelDomainTextBzeroIntForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x76EB0DD4 | ||
|} | |} | ||
=== | This is a guessed name. | ||
Temp name was sceCpuUnrestrictedBzeroIntForKernel. | |||
DACR off | |||
<source lang="c">int sceKernelDomainTextBzeroIntForKernel(int *addr);</source> | |||
=== SceCpuForKernel_337473B5 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x337473B5 | ||
|} | |} | ||
=== | DACR off | ||
If addr.unk_0 equals 0, changes addr.unk_0 to new_val, else increase addr.unk_4. | |||
<source lang="C">int SceCpuForKernel_337473B5(CpuUnkStruct *addr, unsigned int new_val);</source> | |||
=== sceKernelAtomicSubIfGreater64ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x37FBFD12 | ||
|} | |} | ||
=== | DACR is not disabled | ||
<source lang="C">int sceKernelAtomicSubIfGreater64ForKernel(unsigned long long *a1, unsigned int a2);</source> | |||
=== sceKernelAtomicLimit64ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x6190A018 | ||
|} | |} | ||
=== | DACR is not disabled | ||
<source lang="C">int sceKernelAtomicLimit64ForKernel(unsigned long long *result, int limit);</source> | |||
=== sceKernelAtomicAdd32AndGet64InRangeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xD8A7216C | ||
|} | |} | ||
=== | DACR is not disabled | ||
<source lang="C">int sceKernelAtomicAdd32AndGet64InRangeForKernel(unsigned long long *val, int add_val, int limit);</source> | |||
=== sceKernelAtomicAdd32AndGet64InHiLoRangeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xD37AABE5 | ||
|} | |} | ||
DACR is not disabled | |||
<source lang="C">int sceKernelAtomicAdd32AndGet64InHiLoRangeForKernel(unsigned long long *val, int add_val, int limit);</source> | |||
=== | === sceKernelAtomicGet32AndSet64ForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990 || not present | ||
|- | |||
| 3.60 || 0x4553FBDE | |||
|} | |} | ||
=== | DACR is not disabled | ||
<source lang="c">int sceKernelAtomicGet32AndSet64ForKernel(unsigned long long *result, int src);</source> | |||
=== sceKernelAtomicGet32AndSet64_2ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3.60 || | | 0.990 || not present | ||
|- | |||
| 3.60 || 0x7FB4E7AC | |||
|} | |} | ||
=== | Exact same code as SceCpuForKernel_4553FBDE. | ||
DACR is not disabled | |||
<source lang="c">int sceKernelAtomicGet32AndSet64_2ForKernel(unsigned long long *result, int src);</source> | |||
=== sceKernelAtomicDecIfLowPositive32ForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x8510FA52 | ||
|} | |} | ||
=== | DACR is not disabled | ||
<source lang="c">int sceKernelAtomicDecIfLowPositive32ForKernel(unsigned int *addr);</source> | |||
=== sceKernelAtomicIncrementHighwaterCounterForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-2.060.011 || not present | ||
|- | |||
| 2.100.081-3.610.011 || 0x5F64E5ED | |||
|- | |||
| 3.630.011-3.740.011 || 0x9DA58A9E | |||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuAtomicHiLoAlgorithmForKernel. | |||
< | |||
Atomically increments a highwater counter. | |||
Highwater counters are 32-bit values holding a <code>current</code> count in the low 16 bits, and a <code>highwater</code> count in the high 16 bits. | |||
This routine increments the <code>current</code> count, and the <code>highwater</code> count if the new <code>current</code> value is higher than <code>highwater</code>. | |||
DACR is not disabled. | |||
=== | Returns the value of the counter after the increment. | ||
<source lang="C">SceUInt32 sceKernelAtomicIncrementHighwaterCounterForKernel(SceUInt32 *pCounter);</source> | |||
=== sceKernelAtomicAddAndGetPositive32InRangeForKernel === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 3.100.081-3.610.011 || 0x98E91C1C | ||
|- | |||
| 3.630.011-3.740.011 || 0x8F40D0FD | |||
|} | |} | ||
This is a guessed name. | |||
<source lang=" | |||
DACR is not disabled | |||
If val is negative, returns 2 and does not override val. | |||
<source lang="C">int sceKernelAtomicAddAndGetPositive32InRangeForKernel(int* val, int add_val, int limit);</source> | |||
=== | === SceCpuForKernel_6C7E7B57 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x6C7E7B57 | ||
|} | |} | ||
=== | Set TTBR lower value (0x4A). | ||
<source lang="c">int SceCpuForKernel_6C7E7B57(uintptr_t ttbr);</source> | |||
=== SceCpuForKernel_AED8F8D7 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || 0xAED8F8D7 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
<source lang="C">int | Initialize TTBR. | ||
<source lang="C">int SceCpuForKernel_AED8F8D7(const void *ttbr);</source> | |||
=== | === sceKernelGetVmaccessRangeForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-3.610.011 || 0x9A3281C0 | ||
|- | |||
| 3.630.011-3.740.011 || 0xC32687D0 | |||
|} | |} | ||
Returns the start and end address of the Virtual Memory access range. Functions such as [[SceSysmem#sceKernelCopyFromUserForDriver|sceKernelCopyFromUserForDriver]] (i.e. kernel<->usermode transfer routines) are located in this range. All functions in the Virtual Memory access range run in ARM mode not in Thumb mode. | |||
See [[SceExcpmgr|the SceExcpmgr page]] for more information about how the values returned by this function are used. | |||
Note that the Virtual Memory access range excludes the endpoint. <code>*pRangeEnd</code> is not considered part of the range however <code>*pRangeStart</code> is. | |||
<source lang="C"> | |||
// 0.931.010 | |||
void sceKernelGetVmaccessRangeForKernel(SceUIntPtr *pRangeStart, SceUIntPtr *pRangeEnd); | |||
// 0.940-0.990 | |||
void sceKernelGetVmaccessRangeForKernel(SceUIntPtr *pOldModelRangeStart, SceUIntPtr *pOldModelRangeEnd, SceUIntPtr *pNewModelRangeStart, SceUIntPtr *pNewModelRangeEnd) | |||
// 3.600.011-3.740.011 | |||
void sceKernelGetVmaccessRangeForKernel(SceUIntPtr *pRangeStart, SceUIntPtr *pRangeEnd); | |||
</source> | |||
=== | === SceCpuForKernel_9CB82EB0 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x9CB82EB0 | ||
|} | |} | ||
<source lang="C"> | |||
return; | |||
</source> | |||
= | <source lang="c">int SceCpuForKernel_9CB82EB0(void);</source> | ||
=== | == SceCpuForDriver == | ||
=== SceCpuForDriver_9A9D9C94 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0.990-3. | | 0.990.000-0.996.090 || 0x9A9D9C94 | ||
|- | |||
| 1.03-3.740.011 || not present | |||
|} | |} | ||
=== SceCpuForDriver_A2E3E4EB === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-0.996.090 || 0xA2E3E4EB | ||
|- | |||
| 1.03-3.740.011 || not present | |||
|} | |} | ||
=== sceKernelRoundupDCacheLine3ForDriver === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931.010-1.060.031 || 0xF0849812 | ||
|- | |||
| 1.50-3.740.011 || not present | |||
|} | |} | ||
= | <source lang="C">int sceKernelRoundupDCacheLine3ForDriver(int a1);</source> | ||
=== sceKernelAbortForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 1. | | 0.931.010-1.060.031 || 0x6DCA6903 | ||
|- | |- | ||
| 3. | | 1.50-3.740.011 || not present | ||
|} | |} | ||
= | <source lang="C">void sceKernelAbortForDriver(void);</source> | ||
=== sceKernelCpuIdForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-3.60 || 0x5E4D5DE1 | ||
|} | |} | ||
Returns the CPU ID of the current core. | |||
<source lang="c">int | <source lang="c">int sceKernelCpuIdForDriver(void);</source> | ||
=== | === sceKernelAtomicAddAndGet8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x1E850481 | ||
|} | |} | ||
<source lang="c">unsigned char sceKernelAtomicAddAndGet8ForDriver (unsigned char *addr, unsigned char val);</source> | |||
=== sceKernelAtomicAddAndGet16ForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x59F74E94 | ||
|} | |} | ||
<source lang="c">unsigned short sceKernelAtomicAddAndGet16ForDriver(unsigned short *addr, unsigned short val);</source> | |||
<source lang="c"> | |||
=== | === sceKernelAtomicAddAndGet32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x5F6A8743 | ||
|} | |} | ||
Adds <code>val</code> to <code>*addr</code> atomically, and returns the result. | |||
<source lang="c">unsigned int sceKernelAtomicAddAndGet32ForDriver(unsigned int *addr, unsigned int val);</source> | |||
=== | === sceKernelAtomicAddAndGet64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x4E459A03 | ||
|} | |} | ||
<source lang="c">unsigned long long sceKernelAtomicAddAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | |||
<hr> | |||
=== | === sceKernelAtomicAddUnless8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x5CC62CEC | ||
|} | |} | ||
=== | <source lang="c">int sceKernelAtomicAddUnless8ForDriver(unsigned char *addr, unsigned char val, unsigned char cmp);</source> | ||
=== sceKernelAtomicAddUnless16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x0F84AFE9 | ||
|} | |} | ||
=== | <source lang="c">int sceKernelAtomicAddUnless16ForDriver(unsigned short *addr, unsigned short val, unsigned short cmp);</source> | ||
=== sceKernelAtomicAddUnless32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x1F157DC3 | ||
|} | |} | ||
=== | <source lang="c">int sceKernelAtomicAddUnless32ForDriver(unsigned int *addr, unsigned int val, unsigned int cmp);</source> | ||
=== sceKernelAtomicAddUnless64ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x06CCFA4B | ||
|} | |} | ||
=== | <source lang="c">int sceKernelAtomicAddUnless64ForDriver(unsigned long long *addr, int unused, unsigned long long val, unsigned long long cmp);</source> | ||
<hr> | |||
=== sceKernelAtomicAndAndGet8ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x32B62B1A | ||
|} | |} | ||
=== | <source lang="c">unsigned char sceKernelAtomicAndAndGet8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== sceKernelAtomicAndAndGet16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xB281D52A | ||
|} | |} | ||
=== | <source lang="c">unsigned short sceKernelAtomicAndAndGet16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== sceKernelAtomicAndAndGet32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xDF899E4B | ||
|} | |} | ||
=== | <source lang="c">unsigned int sceKernelAtomicAndAndGet32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== sceKernelAtomicAndAndGet64ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xD18E7B54 | ||
|} | |} | ||
=== | <source lang="c">unsigned long long sceKernelAtomicAndAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
=== sceKernelAtomicClearAndGet8ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x8E538AB5 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned char sceKernelAtomicClearAndGet8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== | === sceKernelAtomicClearAndGet16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x6B050D7C | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned short sceKernelAtomicClearAndGet16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== | === sceKernelAtomicClearAndGet32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x78C1F148 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned int sceKernelAtomicClearAndGet32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== | === sceKernelAtomicClearAndGet64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x2149CD4C | ||
|} | |} | ||
=== | <source lang="c">unsigned long long sceKernelAtomicClearAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
=== sceKernelAtomicClearMask8ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x1B3336B0 | ||
|} | |} | ||
=== | <source lang="c">void sceKernelAtomicClearMask8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== sceKernelAtomicClearMask16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x1BE58599 | ||
|} | |} | ||
=== | <source lang="c">void sceKernelAtomicClearMask16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== sceKernelAtomicClearMask32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x4AE1BCC0 | ||
|} | |} | ||
=== | <source lang="c">void sceKernelAtomicClearMask32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== sceKernelAtomicClearMask64ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x55760309 | ||
|} | |} | ||
=== | <source lang="c">void sceKernelAtomicClearMask64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
=== sceKernelAtomicCompareAndSet8ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x3627F4E0 | ||
|} | |} | ||
=== | <source lang="c">unsigned char sceKernelAtomicCompareAndSet8ForDriver(unsigned char *addr, unsigned char cmp, unsigned char val);</source> | ||
=== sceKernelAtomicCompareAndSet16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x6F63F56D | ||
|} | |} | ||
=== | <source lang="c">unsigned short sceKernelAtomicCompareAndSet16ForDriver(unsigned short *addr, unsigned short cmp, unsigned short val);</source> | ||
=== sceKernelAtomicCompareAndSet32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xCDA96E81 | ||
|} | |} | ||
=== | <source lang="c">unsigned int sceKernelAtomicCompareAndSet32ForDriver(unsigned int *addr, unsigned int cmp, unsigned int val);</source> | ||
=== sceKernelAtomicCompareAndSet64ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x4B527009 | ||
|} | |} | ||
=== | <source lang="c">unsigned long long sceKernelAtomicCompareAndSet64ForDriver(unsigned long long *addr, int unused, unsigned long long cmp, unsigned long long val);</source> | ||
<hr> | |||
=== sceKernelAtomicDecIfPositive8ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x45153D4E | ||
|} | |} | ||
=== | <source lang="c">unsigned char sceKernelAtomicDecIfPositive8ForDriver(unsigned char *addr);</source> | ||
=== sceKernelAtomicDecIfPositive16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x9A693F5B | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned short sceKernelAtomicDecIfPositive16ForDriver(unsigned short *addr);</source> | ||
=== | === sceKernelAtomicDecIfPositive32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x2A71B03C | ||
|} | |} | ||
<source lang=" | This is a guessed name. Official name might be sceKernelAddressSpaceReleaseForDriver. | ||
<source lang="c">unsigned int sceKernelAtomicDecIfPositive32ForDriver(unsigned int* addr);</source> | |||
=== | === sceKernelAtomicDecIfPositive64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x267D0B33 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned long long sceKernelAtomicDecIfPositive64ForDriver(unsigned long long *addr);</source> | ||
<hr> | |||
=== | === sceKernelAtomicGetAndAdd8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xFCDCD4DE | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned char sceKernelAtomicGetAndAdd8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== | === sceKernelAtomicGetAndAdd16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x225DF91A | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned short sceKernelAtomicGetAndAdd16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== | === sceKernelAtomicGetAndAdd32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x341B6E81 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned int sceKernelAtomicGetAndAdd32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== | === sceKernelAtomicGetAndAdd64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x043FD446 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned long long sceKernelAtomicGetAndAdd64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
=== | === sceKernelAtomicGetAndAnd8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xD8E675C0 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned char sceKernelAtomicGetAndAnd8ForDriver(unsigned char *a1, unsigned char a2);</source> | ||
=== | === sceKernelAtomicGetAndAnd16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x4A820BC5 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned short sceKernelAtomicGetAndAnd16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== | === sceKernelAtomicGetAndAnd32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x10EB35EB | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned int sceKernelAtomicGetAndAnd32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== | === sceKernelAtomicGetAndAnd64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x18A17E07 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned long long sceKernelAtomicGetAndAnd64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
=== | === sceKernelAtomicGetAndClear8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x382D1466 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned char sceKernelAtomicGetAndClear8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== | === sceKernelAtomicGetAndClear16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x8E9C086D | ||
|} | |} | ||
=== | <source lang="c">unsigned short sceKernelAtomicGetAndClear16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== sceKernelAtomicGetAndClear32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xE36F3A46 | ||
|} | |} | ||
=== | <source lang="c">unsigned int sceKernelAtomicGetAndClear32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== sceKernelAtomicGetAndClear64ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x88BA6002 | ||
|} | |} | ||
= | <source lang="c">unsigned long long sceKernelAtomicGetAndClear64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
=== sceKernelAtomicGetAndOr8ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Version !! NID | ||
|- | |- | ||
| 3.60 || 0xBDF6F8E4 | |||
| 3.60 || | |||
|} | |} | ||
=== | <source lang="c">unsigned char sceKernelAtomicGetAndOr8ForDriver(unsigned char *var, unsigned char value);</source> | ||
=== sceKernelAtomicGetAndOr16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x004F09D1 | ||
|} | |} | ||
=== | <source lang="c">unsigned short sceKernelAtomicGetAndOr16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== sceKernelAtomicGetAndOr32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x2A40BB93 | ||
|} | |} | ||
=== | <source lang="c">unsigned int sceKernelAtomicGetAndOr32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== sceKernelAtomicGetAndOr64ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xCB73D6D5 | ||
|} | |} | ||
=== | <source lang="c">unsigned long long sceKernelAtomicGetAndOr64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
=== sceKernelAtomicGetAndSet8ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x29599FC8 | ||
|} | |} | ||
=== | <source lang="c">unsigned char sceKernelAtomicGetAndSet8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== sceKernelAtomicGetAndSet16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x085532C8 | ||
|} | |} | ||
=== | <source lang="c">unsigned short sceKernelAtomicGetAndSet16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== sceKernelAtomicGetAndSet32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x0EE04C03 | ||
|} | |} | ||
= | <source lang="c">unsigned int sceKernelAtomicGetAndSet32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== | === sceKernelAtomicGetAndSet64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xD2DEE625 | ||
|} | |} | ||
<source lang="c">unsigned long long sceKernelAtomicGetAndSet64ForDriver(unsigned long long *addr, int unused, unsigned int lo_val, unsigned int hi_val);</source> | |||
=== sceKernelAtomicGetAndSub8ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x7B43D0D7 | |||
|} | |||
} | |||
<source lang="c">unsigned char sceKernelAtomicGetAndSub8ForDriver (unsigned char *addr, unsigned char val);</source> | |||
=== | === sceKernelAtomicGetAndSub16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x3EE9B5B8 | ||
|} | |} | ||
<source lang="c">unsigned short sceKernelAtomicGetAndSub16ForDriver(unsigned short *addr, unsigned short val);</source> | |||
=== | === sceKernelAtomicGetAndSub32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xF891CF2A | ||
|} | |} | ||
<source lang="c">int | <source lang="c">unsigned int sceKernelAtomicGetAndSub32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== sceKernelAtomicGetAndSub64ForDriver === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xA7585370 | ||
|} | |} | ||
<source lang="c"> | <source lang="c">unsigned long long sceKernelAtomicGetAndSub64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
< | |||
=== | === sceKernelAtomicGetAndXor8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xBAF47F7B | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned char sceKernelAtomicGetAndXor8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== | === sceKernelAtomicGetAndXor16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x711801E6 | ||
|} | |} | ||
<source lang=" | <source lang="c">unsigned short sceKernelAtomicGetAndXor16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== sceKernelAtomicGetAndXor32ForDriver === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x77E34309 | ||
|} | |} | ||
<source lang="c">unsigned int sceKernelAtomicGetAndXor32ForDriver(unsigned int *addr, unsigned int val);</source> | |||
=== | === sceKernelAtomicGetAndXor64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xE212ECAD | ||
|} | |} | ||
<source lang="c">unsigned long long sceKernelAtomicGetAndXor64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | |||
< | <hr> | ||
=== | === sceKernelAtomicOrAndGet8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x5D515F1B | ||
|} | |} | ||
<source lang="c">unsigned char sceKernelAtomicOrAndGet8ForDriver(unsigned char *addr, unsigned char val);</source> | |||
=== | === sceKernelAtomicOrAndGet16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xADD39B84 | ||
|} | |} | ||
<source lang="c">unsigned short sceKernelAtomicOrAndGet16ForDriver (unsigned short *addr, unsigned short val);</source> | |||
=== | === sceKernelAtomicOrAndGet32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xBC248C30 | ||
|} | |} | ||
<source lang="c">unsigned int sceKernelAtomicOrAndGet32ForDriver (unsigned int *addr, unsigned int val);</source> | |||
=== | === sceKernelAtomicOrAndGet64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x3E218AF7 | ||
|} | |} | ||
<source lang="c">unsigned long long sceKernelAtomicOrAndGet64ForDriver(unsigned long long *addr, int unused, long long val);</source> | |||
<hr> | |||
=== | === sceKernelAtomicSet8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x0836537E | ||
|} | |} | ||
=== | <source lang="c">void sceKernelAtomicSet8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== sceKernelAtomicSet16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x532CA3E8 | ||
|} | |} | ||
=== | <source lang="c">void sceKernelAtomicSet16ForDriver(unsigned short *addr, unsigned short val);</source> | ||
=== sceKernelAtomicSet32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x3168BC57 | ||
|} | |} | ||
=== | <source lang="c">void sceKernelAtomicSet32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== sceKernelAtomicSet64ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xC381CE8C | ||
|} | |} | ||
<source lang="c">void sceKernelAtomicSet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | |||
<hr> | |||
=== | === sceKernelAtomicSetIfGreaterGet8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xC3868071 | ||
|} | |} | ||
=== | <source lang="c">unsigned char sceKernelAtomicSetIfGreaterGet8ForDriver(unsigned char *addr, unsigned char val);</source> | ||
=== sceKernelAtomicSetIfGreaterGet16ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x875B094D | ||
|} | |} | ||
<source lang="c">unsigned short sceKernelAtomicSetIfGreaterGet16ForDriver(unsigned short *addr, unsigned short val);</source> | |||
=== | === sceKernelAtomicSetIfGreaterGet32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x26F71995 | ||
|} | |} | ||
=== | <source lang="c">unsigned int sceKernelAtomicSetIfGreaterGet32ForDriver(unsigned int *a1, unsigned int val);</source> | ||
<hr> | |||
=== sceKernelAtomicSubAndGet8ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xEB085370 | ||
|} | |} | ||
<source lang="c">unsigned char sceKernelAtomicSubAndGet8ForDriver(unsigned char *addr, unsigned char val);</source> | |||
=== | === sceKernelAtomicSubAndGet16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x515682C9 | ||
|} | |} | ||
<source lang="c">unsigned short sceKernelAtomicSubAndGet16ForDriver(unsigned short *addr, unsigned short val);</source> | |||
=== | === sceKernelAtomicSubAndGet32ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xA4884C4E | ||
|} | |} | ||
=== | <source lang="c">unsigned int sceKernelAtomicSubAndGet32ForDriver(unsigned int *addr, unsigned int val);</source> | ||
=== sceKernelAtomicSubAndGet64ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xB5F8919C | ||
|} | |} | ||
<source lang="c">unsigned long long sceKernelAtomicSubAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | |||
<hr> | |||
=== | === sceKernelAtomicXorAndGet8ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x03887992 | ||
|} | |} | ||
<source lang="c">unsigned char sceKernelAtomicXorAndGet8ForDriver (unsigned char *a1, unsigned char a2);</source> | |||
=== | === sceKernelAtomicXorAndGet16ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x646003D6 | ||
|} | |} | ||
=== | <source lang="c">unsigned short sceKernelAtomicXorAndGet16ForDriver (unsigned short *addr, unsigned short val);</source> | ||
=== sceKernelAtomicXorAndGet32ForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x4244BE65 | ||
|} | |} | ||
<source lang="c">unsigned int sceKernelAtomicXorAndGet32ForDriver(unsigned int *addr, unsigned int val);</source> | |||
=== | === sceKernelAtomicXorAndGet64ForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x692C51B3 | ||
|} | |} | ||
=== | <source lang="c">unsigned long long sceKernelAtomicXorAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);</source> | ||
<hr> | |||
=== sceKernelDcacheInvalidateRangeForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x02796361 | ||
|} | |} | ||
=== | Temp name was sceKernelDcacheInvalidateRange_1ForDriver, sceKernelCpuDcacheAndL2InvalidateMVACRange_1ForDriver, sceKernelCpuDcacheAndL2InvalidateRangeForDriver. | ||
<source lang="c">int sceKernelDcacheInvalidateRangeForDriver(const void *start, SceSize size);</source> | |||
=== sceKernelDcacheInvalidateRangeForL2WBWAForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990 || 0x614C6698 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== | Temp name was sceKernelDcacheInvalidateRange_0x10ForDriver, sceKernelCpuDcacheAndL2InvalidateMVACRange_10ForDriver. | ||
<source lang="c">int sceKernelDcacheInvalidateRangeForL2WBWAForDriver(const void *start, SceSize size);</source> | |||
=== sceKernelDcacheInvalidateRangeForL1WBWAForDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x8B4C26DF | ||
|} | |} | ||
Temp name was sceKernelDcacheInvalidateRange_0x20ForDriver, sceKernelCpuDcacheInvalidateRangeForDriver, sceKernelCpuDcacheAndL2InvalidateMVACRange_20ForDriver. | |||
= | <source lang="c">int sceKernelDcacheInvalidateRangeForL1WBWAForDriver(const void *start, SceSize size);</source> | ||
=== | === sceKernelDcacheCleanInvalidateRangeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x364E68A4 | ||
|} | |} | ||
Temp name was sceKernelDcacheCleanInvalidateRange_1ForDriver, sceKernelCpuDcacheAndL2CleanInvalidateMVACRange_1ForDriver, sceKernelCpuDcacheAndL2WritebackInvalidateRangeForDriver, sceKernelDcacheCleanInvalidateRange_0x10ForDriver. | |||
Also have another name "sceKernelDcacheCleanInvalidateRangeForL2WBWAForDriver" in 0.990. | |||
<source lang="c">int sceKernelDcacheCleanInvalidateRangeForDriver(const void *start, SceSize size);</source> | |||
=== sceKernelDcacheCleanInvalidateRangeForL1WBWAForDriver === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xE551F99B | ||
|} | |} | ||
Temp name was sceKernelDcacheCleanInvalidateRange_0x20ForDriver, sceKernelCpuDcacheAndL2CleanInvalidateMVACRange_20ForDriver. | |||
= | <source lang="c">int sceKernelDcacheCleanInvalidateRangeForL1WBWAForDriver(const void *start, SceSize);</source> | ||
=== | === sceKernelDcacheCleanRangeForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.931.010-3.740.011 || 0x103872A5 | ||
|} | |} | ||
<source lang=" | Temp name was sceKernelDcacheCleanRange_1ForDriver, sceKernelCpuDcacheAndL2WritebackRangeForDriver, sceKernelCpuDcacheAndL2CleanMVACRange_1ForDriver. | ||
<source lang="c">int sceKernelDcacheCleanRangeForDriver(const void *start, SceSize size);</source> | |||
=== | === sceKernelDcacheCleanRangeForL2WBWAForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.350.011 || 0x2A5344B7 | ||
|- | |||
| 3.500.011-3.740.011 || not present | |||
|} | |} | ||
Temp name was sceKernelDcacheCleanRange_0x10ForDriver. | |||
<source lang=" | <source lang="c">int sceKernelDcacheCleanRangeForL2WBWAForDriver(const void *start, SceSize size);</source> | ||
=== | === sceKernelDcacheCleanRangeForL1WBWAForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0x9CB9F0CE | ||
|} | |} | ||
Temp name was sceKernelCpuDcacheWritebackRangeForDriver, flush_dcache, sceKernelDcacheCleanRange_0x20ForDriver, sceKernelCpuDcacheAndL2CleanMVACRange_20ForDriver. | |||
<source lang=" | <source lang="c">int sceKernelDcacheCleanRangeForL1WBWAForDriver(const void *start, SceSize size);</source> | ||
=== | === SceCpuForDriver_E813EBB2 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0xE813EBB2 | ||
|} | |} | ||
Cleans L2 memory? A name could be sceKernelWaitL2CacheReg. | |||
<source lang="C"> | |||
#define SceL2CacheReg 0x1A002000 | |||
<source lang=" | __dsb(); | ||
*(int *)(SceL2CacheReg + 0x730) = 0; | |||
while ( *(int *)(SceL2CacheReg + 0x730) & 1 ) | |||
; | |||
__dmb(); | |||
</source> | |||
<source lang="c">int SceCpuForDriver_E813EBB2(void);</source> | |||
=== | === sceKernelIsUncacheAddressInTmpFsGameForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x337CBDF3 | ||
|} | |} | ||
Temp name was sceKernelCpuIsVaddrMappedForDriver. | |||
<source lang="C"> | |||
uint32_t vaddr_memory_type = sceKernelMMUGetMemoryTypeForKernel(vaddr); | |||
if (vaddr_memory_type != 8) { | |||
if (vaddr_memory_type <= 8) { | |||
if (vaddr_memory_type != 2) | |||
return 0; | |||
} else if (vaddr_memory_type != 0x40 && vaddr_memory_type != 0x80) | |||
return 0; | |||
} | |||
return 1; | |||
</source> | |||
<source lang="C"> | <source lang="C">SceBool sceKernelIsUncacheAddressInTmpFsGameForDriver(void *address);</source> | ||
=== | === sceKernelCpuSuspendIntrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.60-3.60 || 0x821FC0EE | ||
|} | |} | ||
Temp name was sceKernelCpuDisableInterruptsForDriver. | |||
<source lang=" | Disables IRQ (FIQ are not disabled, but they're routed to Secure state anyways...) and returns previous interrupt bit status (either 0 or 0x80). | ||
<source lang="c"> | |||
//Return CPSR.I and disable IRQ. | |||
SceKernelIntrStatus sceKernelCpuSuspendIntrForDriver(void); | |||
</source> | |||
=== | === sceKernelCpuResumeIntrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.60-3.60 || 0xF5BAD43B | ||
|} | |} | ||
Temp name was sceKernelCpuEnableInterruptsForDriver. | |||
Restore previous IRQ state. Pass the return value of the previous call to [[SceSysmem#sceKernelCpuSuspendIntrForDriver|sceKernelCpuSuspendIntrForDriver]]. | |||
<source lang="c"> | |||
//Enable IRQ if prev_state & 0x80. | |||
SceKernelIntrStatus sceKernelCpuResumeIntrForDriver(SceKernelIntrStatus prev_state); | |||
</source> | |||
<hr> | |||
'''Spinlock functions''' | |||
The following functions implement a simple mutal exclusion mechanism using atomic operation (LDREX/STREX). Spinlocks are owned by a single thread or CPU at a time. Unlike other lock/sync objects of the kernel, spinlocks can be used under any context. Use spinlocks if the data to protect may be accessed from an IRQ or exception handler. | |||
There are two version of the Spinlock functions: normal functions do not change the CPU state, while the <code>SuspendIntr</code> functions ensure the CPU cannot be interrupted while the lock is held. | |||
The same type of function must be used to lock and unlock a spinlock: for example, '''calling <code>sceKernelSpinlockLowLockCpuResumeIntr</code> followed by <code>sceKernelSpinlockLowUnlock</code> is an invalid usage of this API'''. | |||
Spinlocks can take two values: <code>0</code> means the spinlock is unlocked, and <code>1</code> means the spinlock is locked. | |||
<source lang=" | <source lang="c"> | ||
//Unofficial names | |||
typedef int SceKernelSpinlock; | |||
typedef int SceKernelRWSpinlock; | |||
typedef int SceKernelIntrStatus; | |||
//Sample usage: | |||
void function(Object* object) { | |||
sceKernelSpinlockLowLock(&object->lock); | |||
/* ... work on object ... */ | |||
sceKernelSpinlockUnlock(&object->lock); | |||
} | |||
== | void trylock_function(Object* object) { | ||
{ | int res = sceKernelSpinlockLowTrylock(&object->lock); | ||
if (res >= 0) { | |||
/* ... work on object ... */ | |||
} | |||
} | |||
void uninterruptible_function(Object* object) { | |||
SceKernelIntrStatus status = sceKernelSpinlockLowLockCpuSuspendIntr(&object->lock); | |||
/* ... work on object ... */ | |||
/* interrupts are disabled here */ | |||
sceKernelSpinlockUnlock(&object->lock, status); | |||
} | |||
void uninterruptible_trylock_function(Object* object) { | |||
SceKernelIntrStatus status = sceKernelSpinlockLowTrylockCpuSuspendIntr(&object->lock); | |||
if (status >= 0) { | |||
/* ... work on object ... */ | |||
/* interrupts are disabled here */ | |||
sceKernelSpinlockLowUnlockCpuResumeIntr(&object->lock, status); | |||
} | |||
} | |||
</source> | |||
=== | === sceKernelSpinlockLowLockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.60-3.60 || 0xBF82DEB2 | ||
|} | |} | ||
Temp name was sceKernelCpuLockStoreLRForDriver. | |||
Acquires a spinlock. | |||
<source lang=" | <source lang="c">void sceKernelSpinlockLowLockForDriver(SceKernelSpinlock *pLock);</source> | ||
=== | === sceKernelSpinlockLowTrylockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0x5AC9D394 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuTryLockStoreLRForDriver, sceKernelSpinlockLowTryLockForDriver. | |||
Attempts to acquire a spinlock. | |||
<source lang=" | <source lang="c"> | ||
/** | |||
* @param pLock Pointer to the spinlock | |||
* @retval SCE_OK if the spinlock is acquired | |||
* @retval <0 if the spinlock could not be acquired | |||
*/ | |||
int sceKernelSpinlockLowTrylockForDriver(SceKernelSpinlock *pLock); | |||
</source> | |||
=== | === sceKernelSpinlockLowUnlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 1.60-3.60 || 0xD6ED0C46 | ||
|} | |} | ||
Temp name was sceKernelCpuUnlockStoreLRForDriver. | |||
Unlocks a spinlock previously acquired with either [[SceSysmem#sceKernelSpinlockLowLockForDriver|sceKernelSpinlockLowLockForDriver]] or [[SceSysmem#sceKernelSpinlockLowTrylockForDriver|sceKernelSpinlockLowTrylockForDriver]]. | |||
| | |||
<source lang=" | <source lang="c">void sceKernelSpinlockLowUnlockForDriver(SceKernelSpinlock *pLock);</source> | ||
=== | === sceKernelSpinlockLowLockCpuSuspendIntrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xD32ACE9E | ||
|} | |} | ||
Temp name was sceKernelCpuSuspendIntrForDriver, sceKernelCpuLockSuspendIntrStoreLRForDriver. | |||
<source lang=" | Acquires a spinlock and suspend interrupts if necessary. | ||
<source lang="c"> | |||
/** | |||
* @param pLock Pointer to the spinlock | |||
* @return An opaque value describing the interrupt state | |||
*/ | |||
SceKernelIntrStatus sceKernelSpinlockLowLockCpuSuspendIntrForDriver(SceKernelSpinlock *pLock); | |||
</source> | |||
=== | === sceKernelSpinlockLowTrylockCpuSuspendIntrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x27C0B340 | ||
|} | |} | ||
Temp name was sceKernelCpuTryLockSuspendIntrStoreLRForDriver. | |||
<source lang=" | Attempts to acquire a spinlock. If successfully acquired, suspends interrupts if necessary. | ||
<source lang="c"> | |||
/** | |||
* @param pLock Pointer to the spinlock | |||
* @retval >=0 if the spinlock is acquired - opaque value describing the interrupt state | |||
* @retval <0 if the spinlock could not be acquired | |||
*/ | |||
SceKernelIntrStatus sceKernelSpinlockLowTrylockCpuSuspendIntrForDriver(SceKernelSpinlock *pLock); | |||
</source> | |||
=== | === sceKernelSpinlockLowUnlockCpuResumeIntrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x7BB9D5DF | ||
|} | |} | ||
Temp name was sceKernelCpuUnlockResumeIntrStoreLRForDriver, sceKernelCpuResumeIntrForDriver. | |||
Unlocks a spinlock previously acquired with either [[SceSysmem#sceKernelSpinlockLowLockCpuSuspendIntrForDriver|sceKernelSpinlockLowLockCpuSuspendIntrForDriver]] or [[SceSysmem#sceKernelSpinlockLowTrylockCpuSuspendIntrForDriver|sceKernelSpinlockLowTrylockCpuSuspendIntrForDriver]] and resumes interrupts if necessary. | |||
If interrupts were disabled before acquiring the spinlock, they will remain disabled after this call. | |||
<source lang="c">void sceKernelSpinlockLowUnlockCpuResumeIntrForDriver(SceKernelSpinlock *pLock, SceKernelIntrStatus prev_state); | |||
</source> | |||
< | <hr> | ||
'''RW Spinlock functions''' | |||
The following functions implement RW spinlocks. This variant of the spinlock allows multiple threads/CPUs to access data at the same time as long as only reads are performed. When acquired for writing, a single thread at a time can access the data and is thus free to modify it. Like regular spinlocks, the RW spinlocks can be used under any context. Use RW spinlocks if the data to protect may be accessed from an IRQ or exception handler. | |||
Like for regular spinlocks, all RWSpinlock functions are available in a normal and <code>SuspendIntr</code> version. Additionally, every function exists in <code>Read</code> and <code>Write</code> variants, depending on whether the caller wants to read or write to the object protected by the lock. | |||
< | Like for regular spinlocks, the same type of function must be used to lock and unlock a RW spinlock. | ||
'''Calling <code>sceKernelRWSpinlockLowReadLock</code> followed by <code>sceKernelRWSpinlockLowWriteUnlock</code> is an invalid usage of this API'''. '''Calling <code>sceKernelRWSpinlockLowReadLockCpuSuspendIntr</code> followed by <code>sceKernelRWSpinlockLowReadUnlockCpu</code> is also an invalid usage of this API'''. | |||
RW Spinlocks can take three kind of values: <code>0</code> means the spinlock is unlocked, <code>-0x80000000</code> means the spinlock is write-locked, and a positive value <code>x</code> means that <code>x</code> readers have read-locked the spinlock. | |||
=== | === sceKernelRWSpinlockLowReadLockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xCAC9AE80 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuSpinLockStoreLRForDriver. | |||
Acquires a RW spinlock for reading data. '''Modifying the data protected by the spinlock is not allowed'''. | |||
<source lang=" | <source lang="c">void sceKernelRWSpinlockLowReadLockForDriver(SceKernelRWSpinlock *pRWLock);</source> | ||
=== | === sceKernelRWSpinlockLowTryReadLockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x093925BD | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuTrySpinLockStoreLRForDriver. | |||
Attempts to acquire a RW spinlock for reading data. | |||
'''Even if the spinlock is acquired, modifying the data protected by the spinlock is not allowed'''. | |||
<source lang=" | <source lang="c"> | ||
/** | |||
* @param pLock Pointer to the spinlock | |||
* @retval SCE_OK if the spinlock is acquired | |||
* @retval <0 if the spinlock could not be acquired | |||
*/ | |||
int sceKernelRWSpinlockLowTryReadLockForDriver(SceKernelRWSpinlock *pRWLock); | |||
</source> | |||
=== | === sceKernelRWSpinlockLowReadUnlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xF5FD5676 | ||
|} | |} | ||
Temp name was sceKernelCpuSpinUnlockStoreLRForDriver. | |||
Unlocks a RW spinlock previously acquired with either [[SceSysmem#sceKernelRWSpinlockLowReadLockForDriver|sceKernelRWSpinlockLowReadLockForDriver]] or [[SceSysmem#sceKernelRWSpinlockLowTryReadLockForDriver|sceKernelRWSpinlockLowTryReadLockForDriver]]. | |||
= | <source lang="c">void sceKernelRWSpinlockLowReadUnlockForDriver(SceKernelRWSpinlock *pRWLock);</source> | ||
=== | === sceKernelRWSpinlockLowWriteLockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x3F42B434 | ||
|} | |} | ||
<source lang=" | This is a guessed name. Temp name was sceKernelCpuLockStoreFlagForDriver. | ||
Acquires a RW spinlock for writing data. | |||
<source lang="c">void sceKernelRWSpinlockLowWriteLockForDriver(SceKernelRWSpinlock *pRWLock);</source> | |||
=== | === sceKernelRWSpinlockLowTryWriteLockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x4F7790B4 | ||
|} | |} | ||
<source lang=" | This is a guessed name. Temp name was sceKernelCpuTryLockStoreFlagForDriver. | ||
Attempts to acquire a RW spinlock for writing data. | |||
<source lang="c"> | |||
/** | /** | ||
* @ | * @param pLock Pointer to the spinlock | ||
* | * @retval SCE_OK if the spinlock is acquired | ||
* @retval <0 if the spinlock could not be acquired | |||
* @ | |||
*/ | */ | ||
int | int sceKernelRWSpinlockLowTryWriteLockForDriver(SceKernelRWSpinlock *pRWLock); | ||
</source> | </source> | ||
=== | === sceKernelRWSpinlockLowWriteUnlockForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xCB8ABDF0 | ||
|} | |} | ||
Temp name was sceKernelCpuUnlockStoreFlagForDriver. | |||
=== | Unlocks a RW spinlock previously acquired with either [[SceSysmem#sceKernelRWSpinlockLowWriteLockForDriver|sceKernelRWSpinlockLowWriteLockForDriver]] or [[SceSysmem#sceKernelRWSpinlockLowTryWriteLockForDriver|sceKernelRWSpinlockLowTryWriteLockForDriver]]. | ||
<source lang="c">void sceKernelRWSpinlockLowWriteUnlockForDriver(SceKernelRWSpinlock *pRWLock);</source> | |||
=== sceKernelRWSpinlockLowReadLockCpuSuspendIntr === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0xEC53D007 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuSpinLockSuspendIntrStoreLRForDriver, sceKernelCpuSpinLockIrqSaveForDriver. | |||
Acquires a RW spinlock for reading data and suspends interrupts if necessary. | |||
= | <source lang="c"> | ||
/** | |||
* @param pLock Pointer to the spinlock | |||
* @return An opaque value describing the interrupt state | |||
*/ | |||
SceKernelIntrStatus sceKernelRWSpinlockLowReadLockCpuSuspendIntrForDriver(SceKernelRWSpinlock *pRWLock); | |||
</source> | |||
=== | === sceKernelRWSpinlockLowTryReadLockCpuSuspendIntrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xF02467D1 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuTrySpinLockSuspendIntrStoreLRForDriver. | |||
Attempts to acquire a RW spinlock for reading data. If successfully acquired, suspends interrupts if necessary. | |||
<source lang=" | <source lang="c"> | ||
/** | |||
* @param pLock Pointer to the spinlock | |||
* @retval >=0 if the spinlock is acquired - opaque value describing the interrupt state | |||
* @retval <0 if the spinlock could not be acquired | |||
*/ | |||
SceKernelIntrStatus sceKernelRWSpinlockLowTryReadLockCpuSuspendIntrForDriver(SceKernelRWSpinlock *pRWLock); | |||
</source> | |||
=== | === sceKernelRWSpinlockLowReadUnlockCpuResumeIntrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3. | | 0.990.000-3.740.011 || 0x740A0750 | ||
|} | |} | ||
<source lang=" | Temp name was sceKernelCpuSpinUnlockResumeIntrStoreLRForDriver, sceKernelCpuSpinLockIrqRestoreForDriver. | ||
Unlocks a RW spinlock previously acquired with either [[SceSysmem#sceKernelRWSpinlockLowReadLockCpuSuspendIntrForDriver|sceKernelRWSpinlockLowReadLockCpuSuspendIntrForDriver]] or [[SceSysmem#sceKernelRWSpinlockLowTryReadLockCpuSuspendIntrForDriver|sceKernelRWSpinlockLowTryReadLockCpuSuspendIntrForDriver]], and resumes interrupts if necessary. | |||
If interrupts were disabled before acquiring the spinlock, they will remain disabled after this call. | |||
<source lang="c">void sceKernelRWSpinlockLowReadUnlockCpuResumeIntrForDriver(SceKernelRWSpinlock *pRWLock, SceKernelIntrStatus prev_state);</source> | |||
=== | === sceKernelRWSpinlockLowWriteLockCpuSuspendIntrForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x4C38CE4D | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuLockSuspendIntrStoreFlagForDriver. | |||
Acquires a RW spinlock for writing data and suspends interrupts if necessary. | |||
=== | <source lang="c"> | ||
{| class="wikitable" | /** | ||
* @param pLock Pointer to the spinlock | |||
* @return An opaque value describing the interrupt state | |||
*/ | |||
SceKernelIntrStatus sceKernelRWSpinlockLowWriteLockCpuSuspendIntrForDriver(SceKernelRWSpinlock *pRWLock); | |||
</source> | |||
=== sceKernelRWSpinlockLowTryWriteLockCpuSuspendIntrForDriver === | |||
{| class="wikitable" | |||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xDE6482C6 | ||
|} | |} | ||
This is a guessed name. Temp name was sceKernelCpuTryLockSuspendIntrStoreFlagForDriver. | |||
=== | Attempts to acquire a RW spinlock for writing data. If successfully acquired, suspends interrupts if necessary. | ||
<source lang="c"> | |||
/** | |||
* @param pLock Pointer to the spinlock | |||
* @retval >=0 if the spinlock is acquired - opaque value describing the interrupt state | |||
* @retval <0 if the spinlock could not be acquired | |||
*/ | |||
SceKernelIntrStatus sceKernelRWSpinlockLowTryWriteLockCpuSuspendIntrForDriver(SceKernelRWSpinlock *pRWLock); | |||
</source> | |||
=== sceKernelRWSpinlockLowWriteUnlockCpuResumeIntrDriver === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0x9EC91017 | ||
|} | |} | ||
<source lang=" | Temp name was sceKernelCpuUnlockResumeIntrStoreFlagForDriver. | ||
Unlocks a RW spinlock previously acquired with either [[SceSysmem#sceKernelRWSpinlockLowWriteLockCpuSuspendIntrForDriver|sceKernelRWSpinlockLowWriteLockCpuSuspendIntrForDriver]] or [[SceSysmem#sceKernelRWSpinlockLowTryWriteLockCpuSuspendIntrForDriver|sceKernelRWSpinlockLowTryWriteLockCpuSuspendIntrForDriver]], and resumes interrupts if necessary. | |||
If interrupts were disabled before acquiring the spinlock, they will remain disabled after this call. | |||
<source lang="c">void sceKernelRWSpinlockLowWriteUnlockCpuResumeIntrDriver(SceKernelRWSpinlock *pRWLock, SceKernelIntrStatus prev_state);</source> | |||
== SceSysclibForKernel == | |||
This library was removed on FW 1.80. | |||
=== | === __prnt === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | |||
|- | |- | ||
| 0.931-1.50 || 0xE38E7605 | |||
|- | |- | ||
| 3.60 || | | 1.80-3.60 || not present. Moved to ForDriver. | ||
|} | |} | ||
This is a guessed name. from PSP. | |||
=== | === SceSysclibForKernel_F7E34376 === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.50 || 0xF7E34376 | ||
|} | |} | ||
=== SceSysclibForKernel_FA746181 === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.990-1.50 || 0xFA746181 | ||
|} | |} | ||
<source lang="C">int | return a1 * (- 0x6e19295b) - 0x6e19295b; | ||
In SceSysmem, it is used internally to modify a global variable, like a multiplication hash function would do. | |||
<source lang="C">int SceSysclibForKernel_FA746181(int a1);</source> | |||
== SceSysclibForDriver == | |||
=== | The C standard library for use in kernel only. Usermode has access to [[SceLibKernel]], which confusingly is usermode only. | ||
Includes standard string functions (no insecure variants like <code>strcpy</code>). | |||
=== memset2 === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-1.69 || 0x502B000D | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== sortof_vsnprintf === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x589BAF6B | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
This is a guessed name. | |||
=== | === sortof_vsnprintf_2 === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x658EA38E | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
This is a guessed name. | |||
=== | === SceSysclibForDriver_33388DBC === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x33388DBC | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Calculates xor of a1 and a2, then does some calculation with a3. | |||
=== SceSysclibForDriver_72429909 === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x72429909 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== SceSysclibForDriver_32373DF7 === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-0.990 || 0x32373DF7 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
Helper for strtol in base 10. | |||
<source lang="C"> | <source lang="C">int SceSysclibForDriver_32373DF7(char *__nptr, long *plResult);</source> | ||
int | |||
</source> | |||
=== | === __aeabi_idiv === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x2518CD9E | ||
|} | |} | ||
=== __aeabi_idivmod === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xAC86B4BA | ||
|} | |} | ||
=== __aeabi_lcmp === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x709077A1 | ||
|} | |} | ||
=== __aeabi_lmul === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0xFEE5E751 | ||
|} | |} | ||
=== __aeabi_uidiv === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xA9FF1205 | ||
|} | |} | ||
=== __aeabi_uidivmod === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.990-3.60 || 0xA46CB7DE | ||
|} | |} | ||
=== __aeabi_ldivmod === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x7554AB04 | ||
|} | |} | ||
=== __aeabi_uldivmod === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x9D148CDE | ||
|} | |} | ||
Returns the 64-bit quotient of the division of dividend by divisor. | |||
Used for example to convert [[SceRtc]] ticks to a simpler format (divide by time unit in ms) or to compute the number of storage device blocks in [[SceSdstor]] (divide by block size). | |||
=== | <source lang="C"> | ||
// ex: __aeabi_uldivmod(tick[0] + 0xd44000, (tick[1] - 0xdcbfff) + (uint)(0xff2bbfff < tick[0]), 1000000, 0); | |||
SceUInt64 __aeabi_uldivmod(SceUInt32 dividend_low, SceUInt32 dividend_hi, SceUInt32 divisor_low, SceUInt32 divisor_hi); | |||
</source> | |||
=== __aeabi_ulcmp === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0xFE900DE8 | ||
|} | |} | ||
=== __aeabi_llsr === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0xE46C47E6 | ||
|} | |} | ||
=== __aeabi_llsl === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 0.931-3.60 || 0x72D31F9D | ||
|} | |} | ||
=== __aeabi_lasr === | |||
{| class="wikitable" | |||
|- | |||
== | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x1D89F6C0 | ||
|} | |} | ||
=== | Temp name was rshift. | ||
=== __memcpy_chk === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x8A0B0815 | ||
|} | |} | ||
=== | === __memmove_chk === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x35DBB110 | ||
|} | |} | ||
=== | === __memset_chk === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x1A30BB28 | ||
|} | |} | ||
=== | === __stack_chk_fail === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.50-3.60 || 0xB997493D | ||
|} | |} | ||
=== | === __stack_chk_guard === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x99EEBD1F | ||
|} | |} | ||
=== | This is a variable. | ||
=== __strlcat_chk === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x224BE33F | ||
|} | |} | ||
=== | === __strlcpy_chk === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xCF86EA38 | ||
|} | |} | ||
=== | === __strncat_chk === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x33EE298B | ||
|} | |} | ||
=== | === __strncpy_chk === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x96268C53 | ||
|} | |} | ||
=== | === __snprintf_chk === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x7DBE7007 | ||
|} | |} | ||
=== | === __vsnprintf_chk === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-0.990 || not present | ||
|- | |||
| 3.60 || 0xCBF64DF6 | |||
|} | |} | ||
=== | === __prnt === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931 || not present. Present in ForKernel. | ||
|- | |||
| 3.60 || 0xE38E7605 | |||
|} | |} | ||
= | This is a guessed name. from PSP. | ||
<source lang="C">void __prnt(void (* cb)(void *argp, int ch), void *argp, const char *fmt, va_list list);</source> | |||
Supported formats: | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Format !! Description | ||
|- | |||
| \x20 || maybe space fill | |||
|- | |- | ||
| | | # || unknown | ||
|- | |- | ||
| * || unknown | |||
|- | |- | ||
| | | - || Left align | ||
|- | |- | ||
| + || unknown | |||
|- | |- | ||
| 0 | | . || unknown | ||
|} | |- | ||
| 0 || Padding number and Enter zero padding | |||
|- | |||
| 1~9 || Padding number | |||
|- | |||
| D || unknown (maybe with long?) | |||
|- | |||
| L || unknown (maybe with long?) | |||
|- | |||
| O || unknown (maybe with long?) | |||
|- | |||
| U || unknown (maybe with long?) | |||
|- | |||
| X || print hex number as uppercase | |||
|- | |||
| c || print char | |||
|- | |||
| d || print decimal number | |||
|- | |||
| h || unknown | |||
|- | |||
| l || long | |||
|- | |||
| o || unknown | |||
|- | |||
| p || print pointer as lowercase | |||
|- | |||
| s || print strings | |||
|- | |||
| u || unsigned number | |||
|- | |||
| x || print hex number as lowercase | |||
|} | |||
=== | === vsnprintf === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0x3DDBE2E1 | ||
|} | |} | ||
<source lang=" | <source lang="C">int vsnprintf(char *s, size_t n, const char *fmt, va_list arg);</source> | ||
</source> | |||
=== | === get_ctype_table === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-0.990 || 0x0614B013 | ||
|- | |||
| 3.60 || not present | |||
|} | |} | ||
=== look_ctype_table === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xCDF7F155 | ||
|} | |} | ||
<source lang="C"> | |||
typedef enum SceCTypeFlag { | |||
SCE_CTYPE_NONE = 0, | |||
SCE_CTYPE_UPPERCASE = 1, | |||
SCE_CTYPE_LOWERCASE = 2, | |||
SCE_CTYPE_NUMBER = 4, | |||
SCE_CTYPE_CONTROL = 8, | |||
SCE_CTYPE_SYMBOL = 0x10, | |||
SCE_CTYPE_INVISIBLE = 0x20, | |||
SCE_CTYPE_HEX_CASE = 0x40 | |||
} SceCTypeFlag; | |||
char look_ctype_table(char ch); | |||
</source> | |||
=== memchr === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x60DAEA30 | |||
|} | |||
=== | === timingsafe_memcmp === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xB5A4D745 | ||
|} | |} | ||
timing constant memcmp | |||
=== | === memcmp === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0xF939E83D | ||
|} | |} | ||
== | === memcpy === | ||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x40C88316 | |||
|} | |||
=== | === memmove === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.50-3.60 || 0x6CC9C1A1 | ||
|} | |} | ||
On FW 1.69, this seems to be implemented incorrectly. | |||
=== memset === | |||
== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 0.931-3.60 || 0x0AB9BF5C | ||
|} | |} | ||
=== | === snprintf === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.69-3.60 || 0xAE7A8981 | ||
|} | |} | ||
=== strchr === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.50-3.60 || 0x38463759 | ||
|} | |} | ||
=== | === strcmp === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.69-3.60 || 0x0B33BC43 | ||
|} | |} | ||
== | === strlcat === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x12504E09 | ||
|} | |} | ||
=== | === strlcpy === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x7FB4EBEC | ||
|} | |} | ||
=== | === strlen === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0xCFC6A9AC | ||
|} | |} | ||
=== | === strncat === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.69-3.60 || 0xA1D1C32C | ||
|} | |} | ||
=== | <source lang="C">char *strncat(char *s1, const char *s2, size_t n);</source> | ||
=== strncmp === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.60-3.60 || 0x12CEE649 | ||
|} | |} | ||
=== | <source lang="C">int strncmp(const char *s0, const char *s1, int n);</source> | ||
=== strncpy === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x6D286146 | |||
|} | |||
=== strncpy_s === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 0.990-3.60 || 0xFE39AEAC | |||
|} | |||
=== strnlen === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.69-3.60 || 0xCD4BD884 | |||
|} | |||
=== strrchr === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.69-3.60 || 0x7F0E0835 | ||
|} | |} | ||
=== | === strstr === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 1.69-3.60 || 0x1304A69D | ||
|} | |} | ||
=== | === strtol === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931-3.60 || 0xAB77C5AA | ||
|} | |} | ||
=== | === strtoll === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x87AAAFA2 | ||
|} | |} | ||
=== | === strtoul === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x4E5042DA | ||
|} | |} | ||
=== | === tolower === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0x0021DAF9 | ||
|} | |} | ||
=== | <source lang="C">char tolower(char ch);</source> | ||
=== toupper === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| | | 3.60 || 0xA685DCB1 | ||
|} | |} | ||
=== | <source lang="C">char toupper(char ch);</source> | ||
=== __strcpy_chk === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 0. | | 0.931.010-0.990 || not present | ||
|- | |||
| 0.996.090-3.740.011 || 0x545DA5FD | |||
|} | |||
Copy a string, with buffer overflow checking. | |||
|- | <source lang="C">char * __strcpy_chk(char * dest, const char * src, size_t destlen);</source> | ||
| 0. | |||
|} | === __strcat_chk === | ||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
<source lang="C"> | |- | ||
| 0.931.010-0.990 || not present | |||
=== | |- | ||
{| class="wikitable" | | 0.996.090-3.740.011 || 0xDE4666F0 | ||
|- | |} | ||
! Version !! NID | |||
|- | Concatenate two strings, with buffer overflow checking. | ||
| 0. | |||
|} | <source lang="C">char *__strcat_chk(char *dest, const char *src, SceSize destlen);</source> | ||
== SceSysrootForKernel == | |||
=== sceKernelSysrootSWBkptGetOriginalOpcodeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x9CFF80F9 | |||
|} | |||
This is a guessed name. | |||
See [[#sceKernelSysrootSWBkptGetOriginalOpcodeForDriver]]. | |||
== ScePmMgrForTZS == | === sceKernelSysrootSetGetPrxDebugFlagFuncForKernel === | ||
{| class="wikitable" | |||
=== sceSblPmMgrGetProductModeForTZS === | |- | ||
{| class="wikitable" | ! Version !! NID | ||
|- | |- | ||
! Version !! NID | | 0.940-2.060.011 || 0xE635DFCC | ||
|- | |- | ||
| 0.990- | | 2.100.081-3.740.011 || not present | ||
|} | |} | ||
== SceSblAIMgrForTZS == | This is a guessed name. | ||
=== sceSblAIMgrIsCEXForTZS === | Registers the function called by [[#sceKernelSysrootGetPrxDebugFlagForKernel]] which is also the fallback function called by [[#sceKernelSysrootGetCurrentAddressSpaceCBForKernel]]. | ||
{| class="wikitable" | |||
|- | This function has been removed since System Software 2.100.081 because its feature was moved to [[#SceSysrootForKernel_26458702]]. | ||
! Version !! NID | |||
|- | <source lang="C">int sceKernelSysrootSetGetPrxDebugFlagFuncForKernel(void *func);</source>3999F917 | ||
| 0.990- | |||
|} | === sceKernelSysrootGetPrxDebugFlagForKernel === | ||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x73522F65 | |||
|} | |||
This is a guessed name. | |||
Calls the function registered by [[#sceKernelSysrootSetGetPrxDebugFlagFuncForKernel]] on System Software version < 2.100.081 and by [[#sceKernelSysrootRegisterDbgpHandlerForKernel]] on System Software version >= 2.100.081. | |||
<source lang="C">int sceKernelSysrootGetPrxDebugFlagForKernel(SceUID pid, SceUInt32 *pFlag);</source> | |||
=== SceSysrootForKernel_5E7ECC37 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-2.060.011 || 0x5E7ECC37 | |||
|- | |||
| 2.100.081-3.740.011 || not present | |||
|} | |||
Registers the function called by [[#SceSysrootForKernel_5C86E49B]]. | |||
This function has been removed since System Software version 2.100.081 because its feature is now provided by [[#sceKernelSysrootRegisterDbgpHandlerForKernel]]. | |||
<source lang="C">int SceSysrootForKernel_5E7ECC37(void *func);</source> | |||
=== SceSysrootForKernel_5C86E49B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0x5C86E49B | |||
|} | |||
Calls the handler stored in SceSysrootDbgpHandler at offset 0x10 and registered by [[#SceSysrootForKernel_5E7ECC37]] or [[#sceKernelSysrootRegisterDbgpHandlerForKernel]]. | |||
=== sceKernelSysrootSetProcessDebugSuspendFuncForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.010.031 || 0x4337841F | |||
|- | |||
| 3.10-3.740.011 || 0x4337841F | |||
|} | |||
This is a guessed name. | |||
Registers the function called by [[#sceKernelSysrootProcessDebugSuspendForKernel]]. | |||
This function has been removed since System Software version 3.10 because its feature is already provided by [[#SceSysrootForKernel_D29BCA77]]. | |||
<source lang="C">int sceKernelSysrootSetProcessDebugSuspendFuncForKernel(void *func);</source> | |||
=== sceKernelSysrootProcessDebugSuspendForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x1247A825 | |||
|} | |||
This is a guessed name. Official name might be as well sceKernelProcessDebugSuspendForKernel. | |||
Calls the function registered by either [[#sceKernelSysrootSetProcessDebugSuspendFuncForKernel]] or [[#SceSysrootForKernel_D29BCA77]]. | |||
<source lang="C">int sceKernelSysrootProcessDebugSuspendForKernel(SceUID pid, int status);</source> | |||
=== SceSysrootForKernel_150DBA2B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.360.011 || 0x150DBA2B | |||
|- | |||
| 3.500.011-3.740.011 || not present | |||
|} | |||
=== SceSysrootForKernel_273EAE53 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.360.011 || 0x273EAE53 | |||
|- | |||
| 3.500.011-3.740.011 || not present | |||
|} | |||
=== sceKernelSysrootIsKernelProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.360.011 || 0xE0FC42C3 | |||
|- | |||
| 3.500.011-3.740.011 || not present | |||
|} | |||
This is a guessed name. | |||
<source lang="C">SceBool sceKernelSysrootIsKernelProcessForKernel(void);</source> | |||
=== sceKernelSysrootRegisterKPLSForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-1.70 || 0x23BEAF6B | |||
|- | |||
| 1.800.071-3.740.011 || not present | |||
|} | |||
=== SceSysrootForKernel_571E5B79 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x571E5B79 | |||
|} | |||
See [[#SceSysrootForDriver_571E5B79]]. | |||
=== sceKernelSysrootRegisterDbgpHandlerForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0x3999F917 | |||
|} | |||
Registers a debug process handler. | |||
<source lang="C">int sceKernelSysrootRegisterDbgpHandlerForKernel(SceSysrootDbgpHandler *handler);</source> | |||
=== sceKernelSysrootSetGetIntrMMUContextFuncForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.740.011 || 0x611F17A4 | |||
|} | |||
This is a guessed name. | |||
Registers the function called by [[#sceKernelSysrootGetIntrMMUContextForKernel]]. | |||
<source lang="C">int sceKernelSysrootSetGetIntrMMUContextFuncForKernel(void *func);</source> | |||
=== sceKernelSysrootGetIntrMMUContextForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.740.011 || 0x118657C6 | |||
|} | |||
This is a guessed name. | |||
Calls the function registered by [[#sceKernelSysrootSetGetIntrMMUContextFuncForKernel]]. | |||
Return value is officially named <code>pIntrMMUContext</code>. "Intr" likely stands for "interrupt" or for "internal". | |||
Used in [[SceExcpmgr]]. | |||
<source lang="C">SceKernelMMUContext* sceKernelSysrootGetIntrMMUContextForKernel(void);</source> | |||
=== SceSysrootForKernel_081F2C20 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 1.60-1.69 || 0x081F2C20 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
Registers sceKernelGetProcessId_2 from [[SceKernelThreadMgr]]. | |||
<source lang="C">int SceSysrootForKernel_081F2C20(void *func);</source> | |||
=== SceSysrootForKernel_C5EAF5F7 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xC5EAF5F7 | |||
|} | |||
Registers the function called by [[#SceSysrootForKernel_47724459]]. | |||
<source lang="C">int SceSysrootForKernel_C5EAF5F7(void *func);</source> | |||
=== SceSysrootForKernel_47724459 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x47724459 | |||
|} | |||
Calls the function registered by [[#SceSysrootForKernel_C5EAF5F7]]. | |||
=== SceSysrootForKernel_8747D415 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x8747D415 | |||
|} | |||
Registers the function used by [[#SceSysrootForKernel_B27B7530]]. | |||
<source lang="C">int SceSysrootForKernel_8747D415(void *func);</source> | |||
=== SceSysrootForKernel_B27B7530 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xB27B7530 | |||
|} | |||
Calls the function registered by [[#SceSysrootForKernel_8747D415]]. | |||
Used by [[SceKernelBusError]]. | |||
=== SceSysrootForKernel_82FC6405 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x82FC6405 | |||
|} | |||
Registers the function used by [[#SceSysrootForKernel_CD4B84F7]]. | |||
Used by [[SceKernelBusError]]. | |||
<source lang="C">int SceSysrootForKernel_82FC6405(void *func);</source> | |||
=== SceSysrootForKernel_CD4B84F7 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xCD4B84F7 | |||
|} | |||
Calls the function registered by [[#SceSysrootForKernel_82FC6405]]. | |||
Used by [[SceKernelBusError]]. | |||
=== SceSysrootForKernel_733C243E === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x733C243E | |||
|} | |||
Registers many Sysroot [[SceProcessmgr]] callbacks. | |||
<source lang="C">int SceSysrootForKernel_733C243E(const SceSysrootForKernel_733C243E_struct *pParam);</source> | |||
=== SceSysrootForKernel_7334F1E8 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x7334F1E8 | |||
|} | |||
Calls [[SceProcessmgr#SceProcessmgrForKernel_C77C2085]] function registered by [[#SceSysrootForKernel_733C243E]]. | |||
<source lang="C">int SceSysrootForKernel_7334F1E8(SceUID pid);</source> | |||
=== SceSysrootForKernel_D29BCA77 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0xD29BCA77 | |||
|} | |||
Registers many Sysroot [[SceProcessmgr]] callbacks. | |||
<source lang="C">int SceSysrootForKernel_D29BCA77(const SceSysrootForKernel_D29BCA77_struct *pParam);</source> | |||
=== SceSysrootForKernel_DD7821AA === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xDD7821AA | |||
|} | |||
Registers the function called by [[#SceSysrootForKernel_340575CB]]. | |||
<source lang="C">int SceSysrootForKernel_DD7821AA(void *func);</source> | |||
=== SceSysrootForKernel_340575CB === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x340575CB | |||
|} | |||
Return some PID. | |||
<source lang="C">SceUID SceSysrootForKernel_340575CB(void);</source> | |||
=== sceKernelSysrootSetCheckRemapCodeForUserFuncForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xBE1EF51C | |||
|} | |||
Registers the function called by [[#sceKernelSysrootCheckRemapCodeForUserForKernel]]. | |||
<source lang="C">int sceKernelSysrootSetCheckRemapCodeForUserFuncForKernel(void *func);</source> | |||
=== sceKernelSysrootCheckRemapCodeForUserForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xF8769E86 | |||
|} | |||
=== sceKernelSysrootAllocCurrentProcessHeapForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x2F75C1DC | |||
|} | |||
<source lang="C">void *sceKernelSysrootAllocCurrentProcessHeapForKernel(SceSize size);</source> | |||
=== sceKernelSysrootCorelockUnlockForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.740.011 || 0xAE55B7CC | |||
|} | |||
Calls [[#SceCpuForKernel_A5C9DBBA]]. | |||
<source lang="C">void sceKernelSysrootCorelockUnlockForKernel(void);</source> | |||
=== SceSysrootForKernel_21F5790B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 3.60 || 0x21F5790B | |||
|} | |||
Registers a function related to kernel panic. | |||
<source lang="C">int SceSysrootForKernel_21F5790B(void *func);</source> | |||
=== SceSysrootForKernel_0DF574A9 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 3.60 || 0x0DF574A9 | |||
|} | |||
Calls the function related to kernel panic registered by [[#SceSysrootForKernel_21F5790B]]. | |||
<source lang="C">int SceSysrootForKernel_0DF574A9(void);</source> | |||
=== SceSysrootForKernel_2D6B2A79 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x2D6B2A79 | |||
|} | |||
Registers a function related to kernel panic, called by [[#SceSysrootForKernel_CC7A0E63]]. | |||
=== SceSysrootForKernel_CC7A0E63 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xCC7A0E63 | |||
|} | |||
Calls a function related to kernel panic, registered by [[#SceSysrootForKernel_2D6B2A79]]. | |||
<source lang="C"> | |||
// type: 1: kernel_assertion_or_panic, 3: kernel_exception | |||
// size: must be <= 0x1000 | |||
// pBuf: address of the buffer got using SceDebugForKernel_BEF921A2 | |||
int SceSysrootForKernel_CC7A0E63(int type, SceSize size, const char *pBuf); | |||
</source> | |||
=== SceSysrootForKernel_1D84C4D4 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0x1D84C4D4 | |||
|} | |||
Get module name, fingerprint and base from address. | |||
<source lang="C">int SceSysrootForKernel_1D84C4D4(SceUID pid, uintptr_t address, SceUInt32 *pDbgFingerprint, SceUInt32 *pModuleBase, char *module_name);</source> | |||
=== SceSysrootForKernel_5B5EBFB1 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x5B5EBFB1 | |||
|} | |||
Registers pointer to SceLT5 used by [[#SceSysrootForKernel_E20F6FC8]]. | |||
<source lang="C">int SceSysrootForKernel_5B5EBFB1(uint a1);</source> | |||
=== SceSysrootForKernel_41636522 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0x41636522 | |||
|} | |||
Returns current SceLT5 value pointed by pointer registered using [[#SceSysrootForKernel_E20F6FC8]]. Long/low (64bit) time in microseconds. It is about "awake" uptime from system boot. | |||
<source lang="C">uint64_t SceSysrootForKernel_41636522(void);</source> | |||
=== SceSysrootForKernel_E20F6FC8 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0xE20F6FC8 | |||
|} | |||
Same as [[#SceSysrootForKernel_41636522]] but "asynchronous". | |||
Used by SceDebug Kernel Exceptions handlers. | |||
<source lang="C">uint64_t SceSysrootForKernel_E20F6FC8(void);</source> | |||
=== SceSysrootForKernel_1D8DB3A5 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0x1D8DB3A5 | |||
|} | |||
Same as [[#SceSysrootForKernel_41636522]] but "asynchronous". | |||
Returns 0 on success, 0x80020006 if pTime is a NULL pointer. | |||
<source lang="C">int SceSysrootForKernel_1D8DB3A5(SceUInt64 *pTime);</source> | |||
=== sceKernelSysrootCorelockLockForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.740.011 || 0x8E4B61F1 | |||
|} | |||
Calls [[#SceCpuForKernel_9D72DD1B]]. | |||
<source lang="C">int sceKernelSysrootCorelockLockForKernel(SceUInt32 core);</source> | |||
=== SceSysrootForKernel_06182D59 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0x06182D59 | |||
|} | |||
Reimplementation: | |||
<source lang="C"> | |||
int SceSysrootForKernel_06182D59(int idx) { | |||
return *(uint32_t *)(pSysroot + 0x20) + (idx << 0x5); | |||
} | |||
</source> | |||
<source lang="C">int SceSysrootForKernel_06182D59(int idx);</source> | |||
=== SceSysrootForKernel_7385CADE === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-0.990.000 || not present | |||
|- | |||
| 1.000.071-3.740.011 || 0x7385CADE | |||
|} | |||
Get current syscall's PID. | |||
<source lang="C"> | |||
// Returns KERNEL_PID if the function has not been set | |||
SceUID SceSysrootForKernel_7385CADE(void); | |||
</source> | |||
=== SceSysrootForKernel_D441DC34 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-0.990.000 || not present | |||
|- | |||
| 1.000.071-3.740.011 || 0xD441DC34 | |||
|} | |||
Calls a callback registered by [[#SceSysrootForKernel_26458702]], related to syscall frame printing on kernel panic. | |||
=== sceKernelSysrootGetSysrootClassItemsizeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xEEB867C0 | |||
|} | |||
This is a guessed name. Derived from get_SceKernelSysrootClass_itemsize. | |||
On System Software version 0.990, returns hardcoded value 0x470. | |||
On System Software version 3.200.010, returns hardcoded value 0x440. | |||
On System Software version 3.600.011, returns hardcoded value 0x41C. | |||
<source lang="C">SceSize sceKernelSysrootGetSysrootClassItemsizeForKernel(void);</source> | |||
=== sceKernelGetSysrootClassObjectForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x085C2BCB | |||
|} | |||
This is a guessed name. Derived from get_SceKernelSysrootClass_object. | |||
<source lang="C">SceKernelObject *sceKernelGetSysrootClassObjectForKernel(void);</source> | |||
=== sceKernelSysrootGetLibraryDBForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-2.060.011 || 0xCD70C9D7 | |||
|- | |||
| 2.100.081-3.740.011 || not present | |||
|} | |||
Equivalent to [[SceProcessmgr#sceKernelGetProcessLibdbForKernel|sceKernelGetProcessLibdbForKernel(0x10005)]] in 3.60 | |||
<source lang="C"> | |||
// size is 0x34-bytes on FW 2.00 | |||
void *sceKernelSysrootGetLibraryDBForKernel(void *pSysroot); | |||
</source> | |||
=== sceKernelSysrootSetLibraryDBForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-2.060.011 || 0xCB58A0F4 | |||
|- | |||
| 2.100.081-3.740.011 || not present | |||
|} | |||
Maybe sets a pointer to the library stub structure. See [[Modules]]. | |||
<source lang="C"> | |||
// size is 0x34-bytes on FW 2.00 | |||
int sceKernelSysrootSetLibraryDBForKernel(void *pSysroot, void *pLibDb); | |||
</source> | |||
=== sceKernelSysrootGetProcessLibraryDBForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-2.060.011 || 0xF1037820 | |||
|- | |||
| 2.100.081-3.740.011 || not present | |||
|} | |||
Equivalent to [[SceProcessmgr#sceKernelGetProcessLibdbForKernel|sceKernelGetProcessLibdbForKernel(pid)]] in System Software version 3.600.011. | |||
The return value of this function is an integer on error, but returns a pointer to LibraryDB on success. | |||
<source lang="C"> | |||
// size is 0x34-bytes on FW 2.00 | |||
int sceKernelSysrootGetProcessLibraryDBForKernel(SceUID pid); | |||
</source> | |||
=== sceKernelSysrootAllocForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.360.011 || 0xB0149E69 | |||
|- | |||
| 3.500.011-3.740.011 || Not present | |||
|} | |||
Allocates memory from the "Sysroot heap". The Sysroot heap is located after <code>SceSysroot</code> structure and consumes the rest of the page. Allocations from this "heap" are permanent and cannot be returned - there is no <code>sceKernelSysrootFreeForKernel</code>. | |||
Usage of this function is not recommended because of the lack of a "free" function. Use [[SceSysmem#sceKernelAllocForKernel]] instead. | |||
<source lang="C">void *sceKernelSysrootAllocForKernel(SceSize size);</source> | |||
=== sceKernelSysrootSetStatusForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0xA84676E3 | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! status !! description | |||
|- | |||
| 3 || Global malloc heap initialization completed. | |||
|- | |||
| 4 || Start initialization for load the module | |||
|- | |||
| 0x10 || Initialization to load the module is complete | |||
|- | |||
| 0x100 || First process create | |||
|- | |||
| 0x1000 || Kernel boot completed. | |||
|} | |||
<source lang="C">int sceKernelSysrootSetStatusForKernel(SceUInt32 status);</source> | |||
=== sceKernelSysrootGetProcessCBExitDeleteThreadForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xBBFD2E3C | |||
|} | |||
=== sceKernelSysrootGetCurrentProcessCBForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x9991B1AF | |||
|} | |||
=== sceKernelSysrootGetCurrentThreadAttrForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x73601453 | |||
|} | |||
<source lang="C">int sceKernelSysrootGetCurrentThreadAttrForKernel(SceUint32 *pThrAttr);</source> | |||
=== sceKernelSysrootGetCurrentTimeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990 || 0x4FCFA359 | |||
|} | |||
<source lang="C">SceRtcTick *sceKernelSysrootGetCurrentTimeForKernel(void);</source> | |||
=== sceKernelSysrootGetSystemTimeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-1.692.000 || 0xE0D41319 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="C">int sceKernelSysrootGetSystemTimeForKernel(SceRtcTick *pTick)</source> | |||
=== sceKernelSysrootGetSystemTimeLowForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-1.692.000 || 0x2464329D | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="C">int sceKernelSysrootGetSystemTimeLowForKernel(void);</source> | |||
=== sceKernelSysrootAssertSysrootForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-1.692.000 || 0x1B7F150F | |||
|- | |||
| 3.60 || not present | |||
|} | |||
Check sysroot->magic (offset 0xC must be 0xBA97F5A1) and sysroot->magic2 (offset 0x20C must be 0xA008B0C3). | |||
<source lang="C">int sceKernelSysrootAssertSysrootForKernel(void *sysroot);</source> | |||
=== sceKernelSysrootSetVbaseResetVectorForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0x0F2F2B4E | |||
|} | |||
=== sceKernelSysrootThreadMgrStartAfterProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0x0EB5D7CD | |||
|} | |||
=== sceKernelSysrootGetCurrentProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.996.090 || 0x5B7570C5 | |||
|} | |||
Return the current process id. | |||
<source lang="C">SceUID sceKernelSysrootGetCurrentProcessForKernel(void);</source> | |||
=== sceKernelSysrootTrapThreadAfterSyscallForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0x9139E22B | |||
|} | |||
Calls a callback registered by [[#SceSysrootForKernel_26458702]]. | |||
Prints syscall_critical_usage. | |||
=== sceKernelSysrootReturnFromExcpToThreadForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.740.011 || 0xDADFF828 | |||
|} | |||
Used in [[SceExcpmgr]]. | |||
<source lang="C">int sceKernelSysrootReturnFromExcpToThreadForKernel(void);</source> | |||
=== sceKernelSysrootBacktraceForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.740.011 || 0xCC893F37 | |||
|} | |||
See also [[SceKernelModulemgr#SceBacktraceForDriver]]. | |||
<source lang="C">int sceKernelSysrootBacktraceForKernel(SceUID threadId, SceKernelCallFrame *pCallFrameBuffer, SceSize numBytesBuffer, SceUInt32 *pNumReturn, SceInt32 mode);</source> | |||
=== sceKernelSysrootPrintBacktraceForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.740.011 || 0x491CE8DF | |||
|} | |||
See also [[SceKernelModulemgr#SceBacktraceForDriver]]. | |||
<source lang="C">int sceKernelSysrootPrintBacktraceForKernel(SceUID processId, const SceKernelCallFrame *pCallFrame, SceUInt32 numFrames);</source> | |||
=== sceKernelSysrootRegisterBacktraceForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.010.031 || 0x1C307A31 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="c">int sceKernelSysrootRegisterBacktraceForKernel(int (__cdecl *func)());</source> | |||
=== sceKernelSysrootGetSharedMemoryForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0xC8C8C321 | |||
|} | |||
=== sceKernelSysrootSetSharedMemoryForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0xFBB91741 | |||
|} | |||
=== sceKernelSysrootGetUIDEntryHeapForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0x88DE85EF | |||
|} | |||
Temp name was sceKernelSysrootGetPUIDEntryHeapForKernel. | |||
Gets the UID Entry Heap of the process. | |||
Kernel process's UID entry heap is the GUIDEntryHeap. All other process' UID entry heaps are PUID heaps. | |||
<source lang="C">int sceKernelSysrootGetUIDEntryHeapForKernel(SceUID pid, void **entryHeap);</source> | |||
=== sceKernelSysrootGetStatusForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0x5C426B19 | |||
|} | |||
<source lang="C">int sceKernelSysrootGetStatusForKernel(void);</source> | |||
=== sceKernelSysrootIofilemgrStartForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xF6A6D205 | |||
|} | |||
=== SceSysrootForKernel_F9FB9A2A === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-2.060.011 || 0xF9FB9A2A | |||
|- | |||
| 2.100.081-3.740.011 || not present | |||
|} | |||
Registers the function called by [[#sceKernelSysrootGetCurrentAddressSpaceCBForKernel]]. | |||
This function has been removed since System Software 2.100.081 because its feature was moved to [[#SceSysrootForKernel_D29BCA77]]. | |||
<source lang="C">int SceSysrootForKernel_F9FB9A2A(void *func);</source> | |||
=== sceKernelSysrootGetCurrentAddressSpaceCBForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.740.011 || 0x63EBB05B | |||
|} | |||
Gets the current Address Space's control block via TPIDRPRW. | |||
This function calls a callback registered by [[#SceSysrootForKernel_F9FB9A2A]] on System Software version < 2.10 and by [[#SceSysrootForKernel_D29BCA77]] on System Software version >= 2.10, if it was registered, else a fallback callback. The fallback callback is registered by [[#SceSysrootForKernel_E635DFCC]] on System Software version < 2.10 and by [[#SceSysrootForKernel_26458702]] on System Software version >= 2.10. | |||
<source lang="C">SceUIDAddressSpaceObject *sceKernelSysrootGetCurrentAddressSpaceCBForKernel(void);</source> | |||
=== SceSysrootForKernel_BF82931F === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.500.151-3.740.011 || 0xBF82931F | |||
|} | |||
Calls the function registered by [[#SceSysrootForDriver_2BE874EF]]. | |||
No usage seen on CEX OS. Maybe used in DEX/TOOL OS. | |||
<source lang="C">int SceSysrootForKernel_BF82931F(int maybe_app_id, void *pOut);</source> | |||
=== SceSysrootForKernel_6D111FA7 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.500.151-3.740.011 || 0x6D111FA7 | |||
|} | |||
Calls the function registered by [[#SceSysrootForDriver_3B19B06B]]. | |||
Used only in [[SceCoredump]]. | |||
<source lang="C">int SceSysrootForKernel_6D111FA7(int maybe_app_id, void *pOut);</source> | |||
=== SceSysrootForKernel_2A03DFA1 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x2A03DFA1 | |||
|} | |||
Calls the function registered by [[#SceSysrootForDriver_70AD47A9]]. | |||
Used only in [[SceCoredump]]. | |||
<source lang="C"> | |||
// pOut: A buffer of at least 0xF8 bytes | |||
int SceSysrootForKernel_2A03DFA1(void *pOut); | |||
</source> | |||
=== sceKernelSysrootAppMgrSpawnProcessForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x3ACACD22 | |||
|} | |||
=== sceKernelSysrootGetCachedSecureModuleInfoForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xF10AB792 | |||
|} | |||
Temp name was sceKernelSysrootGetSmSelfInfoForKernel. | |||
{| class="wikitable" | |||
! Index !! SM SELF location | |||
|- | |||
| 0 || os0:sm/gcauthmgr_sm.self | |||
|- | |||
| 1 || os0:sm/rmauth_sm.self | |||
|- | |||
| 2 || os0:sm/encdec_w_portability_sm.self | |||
|} | |||
<source lang="C">int sceKernelSysrootGetCachedSecureModuleForKernel(SceCachedSecureModule id, SceCachedSecureModuleInfo *pInfo);</source> | |||
=== sceKernelSysrootGetProcessSelfAuthInfoForKernel === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x4F0A4066 | |||
|} | |||
Temp name was sceSysrootGetSelfAuthInfoForKernel. | |||
<source lang="C">int sceKernelSysrootGetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *pSelfAuthInfo);</source> | |||
=== sceKernelSysrootGetProcessTitleIdForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xEC3124A3 | |||
|} | |||
Temp name was sceSysrootGetProcessTitleIdForPidForKernel. | |||
<source lang="C">int sceKernelSysrootGetProcessTitleIdForKernel(SceUID pid, char *title_id, SceSize len);</source> | |||
=== sceKernelSysrootSetGetFunctionNameByNIDFuncForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0xB39CD708 | |||
|} | |||
Registers the function called by [[#sceKernelSysrootGetFunctionNameByNIDForKernel]]. | |||
<source lang="c">int sceKernelSysrootSetGetFunctionNameByNIDFuncForKernel(void *func);</source> | |||
=== sceKernelSysrootGetFunctionNameByNIDForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0x0B79E220 | |||
|} | |||
Mirror of [[SceSysLibTrace#sceNidsymtblGetFunctionNameByNIDForDriver]]. | |||
<source lang="c">int sceKernelSysrootGetFunctionNameByNIDForKernel(SceNID funcnid, const char **name);</source> | |||
=== SceSysrootForKernel_26458702 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0x26458702 | |||
|} | |||
Registers some callbacks for example the fallback callback called by [[#sceKernelSysrootGetCurrentAddressSpaceCBForKernel]]. | |||
=== SceSysrootForKernel_B171CC2D === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0xB171CC2D | |||
|} | |||
Register some ModuleMgr handlers. | |||
Used by [[SceKernelModulemgr]]. | |||
<source lang="C">int SceSysrootForKernel_B171CC2D(SceSysrootModulemgrHandlers *pHandlers);</source> | |||
=== sceKernelSysrootGetProcessSyscallInfoForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xFF9F80FF | |||
|} | |||
<source lang="c">int sceKernelSysrootGetProcessSyscallInfoForKernel(SceUID pid, const void *PC, SceSyscallInfo *pInfo);</source> | |||
=== sceKernelSysrootGetVbaseResetVectorForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xCC85905B | |||
|} | |||
Returns the exception vectors base address. The address of the exception vectors for the CPU <code>i</code> is: <code>sceKernelSysrootGetVbaseResetVectorForKernel() + 0x40 * i</code>. | |||
<source lang="C">void *sceKernelSysrootGetVbaseResetVectorForKernel(void);</source> | |||
=== sceKernelSysrootSetLicMgrGetLicenseStatusFuncForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x71DB83A2 | |||
|} | |||
Registers [[SceSblPostSsMgr#sceSblLicMgrGetLicenseStatusForDriver]]. | |||
<source lang="c">int sceKernelSysrootSetLicMgrGetLicenseStatusFuncForKernel(int (__cdecl *sceSblLicMgrGetLicenseStatusForDriver)());</source> | |||
=== sceKernelSysrootLicMgrGetLicenseStatusForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x377895EB | |||
|} | |||
Called by [[SceSblAuthMgr#sceSblAuthMgrAuthHeaderForKernel|sceSblAuthMgrAuthHeaderForKernel]] before Cmep request. | |||
<source lang="C">int sceKernelSysrootLicMgrGetLicenseStatusForKernel(void);</source> | |||
=== sceKernelSysrootGetSysrootForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x3E455842 | |||
|} | |||
Temp name was sceKernelGetSysbaseForKernel. | |||
Returns pointer to SceUIDSysrootObject in SceSysmem. | |||
<source lang="C">SceUIDSysrootObject *sceKernelSysrootGetSysrootForKernel(void);</source> | |||
=== sceKernelSysrootGetKblParamForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.740.011 || 0x9DB56D1F | |||
|} | |||
Temp name was sceKernelGetSysrootBufferForKernel, sceSysrootGetSysrootBufferForKernel. | |||
Returns pointer to [[KBL Param]]. | |||
<source lang="C">SceKblParam *sceKernelSysrootGetKblParamForKernel(void);</source> | |||
=== sceKernelSysrootGetSoCRevisionForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xD3872270 | |||
|} | |||
return pSysroot->soc_revision; | |||
<source lang="C">int sceKernelSysrootGetSoCRevisionForKernel(void);</source> | |||
=== sceKernelSysrootGetPervasiveUnkDwordForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xFFD6E24D | |||
|} | |||
This is a guessed name. | |||
Returns value initially read from physical address 0xE3100004 (ScePervasiveMisc + 0x4). | |||
return pSysroot->pervasive_unk_dword; | |||
<source lang="C">int sceKernelSysrootGetPervasiveUnkDwordForKernel(void);</source> | |||
=== sceKernelSysrootGetKermitRevisionForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x403B509E | |||
|} | |||
return pSysroot->kermit_revision; | |||
Used by [[SceKernelBusError]], [[SceSysStateMgr]]. | |||
<source lang="C"> | |||
// Return value is 0x1FFFF-masked, at least on recent System Software versions. | |||
SceUInt32 sceKernelSysrootGetKermitRevisionForKernel(void); | |||
</source> | |||
=== sceKernelSysrootGetErnieSleepFactorForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.996.090-3.740.011 || 0xAB3CC7D0 | |||
|} | |||
This is a guessed name. | |||
See [[KBL Param#Sleep Factor]]. | |||
return kbl_param->sleep_factor; | |||
<source lang="C">int sceKernelSysrootGetErnieSleepFactorForKernel(void);</source> | |||
=== sceKernelSysrootGetErnieWakeupFactorForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x2F97041A | |||
|} | |||
This is the official name. Temp name was sceSysrootGetWakeupFactorForKernel. | |||
See [[KBL Param#Wakeup Factor]]. | |||
return kbl_param->wakeup_factor; | |||
<source lang="C">int sceKernelSysrootGetErnieWakeupFactorForKernel(void);</source> | |||
=== sceKernelSysrootGetSessionIdForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.81 || not present | |||
|- | |||
| 2.000.081-3.740.011 || 0x84783B71 | |||
|} | |||
Writes kbl_param->session_id to buffer. | |||
pSessionId buffer size is 0x10 bytes. | |||
<source lang="C">int sceKernelSysrootGetSessionIdForKernel(char *pSessionId);</source> | |||
=== sceKernelSysrootIsExternalBootModeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x89D19090 | |||
|} | |||
return *(int *)(kbl_param->boot_type_indicator_1) & 1; | |||
<source lang="C">int sceKernelSysrootIsExternalBootModeForKernel(void);</source> | |||
=== sceKernelSysrootIsSomeBootModeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-0.996.090 || not present | |||
|- | |||
| 1.000.071-3.740.011 || 0x7B7F8171 | |||
|} | |||
This is a guessed name. A possible name is sceKernelIsAllowSdCardFromMgmt. | |||
Used by [[SceSdif]], [[SceExfatfs]]. | |||
[[SceExfatfs]] will mount sd0: instead of gro0:/grw0: when this function returns SCE_TRUE. | |||
return (*(int *)(kbl_param->boot_type_indicator_1) >> 19) & 1; | |||
Returns true if boot_type_indicator_1 has flag 0x80000 ?sd mode? - (Mgmt bit 1) | |||
<source lang="C">int sceKernelSysrootIsSomeBootModeForKernel(void);</source> | |||
=== sceKernelSysrootIsExternalBootMode2ForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x7918D44E | |||
|} | |||
This is a guessed name. Temp name was sceSysrootIsSomeBootMode2ForKernel. A possible name is sceKernelIsAllowFwCheckSkip. | |||
return kbl_param->boot_type_indicator_1[2] & 1; | |||
Return true if boot_type_indicator_1 has flag 0x10000 but it seems to be never set in external (release) second_loader. It allows to bypass current fw version check for module loading. | |||
<source lang="C">int sceKernelSysrootIsExternalBootMode2ForKernel(void);</source> | |||
=== sceKernelSysrootIsUartModeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.740.011 || 0xAE7A8F1D | |||
|} | |||
This is a guessed name. Temp name was sceSysrootIsSomeModeForKernel. | |||
Returns true if (kbl_param->boot_flags[1] != 0xFF). | |||
Used to check if UART must be initialized or not. | |||
<source lang="C">int sceKernelSysrootIsUartModeForKernel(void);</source> | |||
=== sceKernelSysrootIsSafeModeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x834439A7 | |||
|} | |||
<source lang="C">int sceKernelSysrootIsSafeModeForKernel(void);</source> | |||
=== sceKernelSysrootIsUpdateModeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xB0E1FC67 | |||
|} | |||
<source lang="C">int sceKernelSysrootIsUpdateModeForKernel(void);</source> | |||
=== sceKernelSysrootIsBsodRebootForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0x4373AC96 | |||
|} | |||
return ((pKblParam->wakeup_factor) & 0x7Fu) == 0x17; | |||
<source lang="C">int sceKernelSysrootIsBsodRebootForKernel(void);</source> | |||
=== sceKernelSysrootIsUsbEnumWakeupForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.996.090-3.740.011 || 0x79C9AE10 | |||
|} | |||
<source lang="C"> | |||
if ( *(int *)(kbl_param->unk_C0) & 0x90000 ) | |||
return 1; | |||
else | |||
return (*(int *)(kbl_param->wakeup_factor) & 0x7Fu) == 0xF; | |||
</source> | |||
<source lang="C">int sceKernelSysrootIsUsbEnumWakeupForKernel(void);</source> | |||
=== sceKernelSysrootIsUnknownRebootForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0xE4EA1960 | |||
|} | |||
return (*(int *)(kbl_param->wakeup_factor) & 0x7Fu) <= 1; | |||
<source lang="C">int sceKernelSysrootIsUnknownRebootForKernel(void);</source> | |||
=== sceKernelSysrootIsManufacturingModeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.740.011 || 0x55392965 | |||
|} | |||
This is a guessed name. Temp name was sceSysrootUseExternalStorageForKernel. | |||
When returns true it allows loading sd0:psp2config.skprx. | |||
Returns true when Manufacturing Mode flag is set: | |||
return (*(int *)(kbl_param->boot_type_indicator_1) >> 2) & 1; | |||
<source lang="C">int sceKernelSysrootIsManufacturingModeForKernel(void);</source> | |||
=== sceKernelSysrootUseInternalStorageForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x50FE3B4D | |||
|} | |||
Returns true when use internal storage flag is not set: | |||
return *(char *)(kbl_param->boot_flags[5]) & 1 ^ 1; | |||
<source lang="C">int sceKernelSysrootUseInternalStorageForKernel(void);</source> | |||
=== sceKernelSysrootGetThreadAccessLevelForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x20009397 | |||
|} | |||
Calls int (__cdecl *GetThreadAccessLevel)(); // 0x344 on 3.60 | |||
<source lang="c">int sceKernelSysrootGetThreadAccessLevelForKernel(void);</source> | |||
=== sceKernelSysrootAllocRemoteProcessHeapForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xD351EBC8 | |||
|} | |||
Temp name was sceKernelAllocHeapMemoryForKernel. | |||
Same as <code>sceKernelAllocHeapMemoryWithOptForDriver</code> but does set <code>pid</code> to 0x1000B. | |||
Checks that pid is 0x10013 or 0x10005 (kernel). | |||
<source lang="C">void* sceKernelSysrootAllocRemoteProcessHeapForKernel(SceUID pid, SceSize size, SceKernelHeapMemoryOpt *pOpt);</source> | |||
=== sceKernelSysrootGetModulePrivateForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x37EC12BB | |||
|} | |||
data : 3: system memory (0xDC-bytes), 7: some process data (?-bytes), 9: kbl module cb (0xAC-bytes) | |||
<source lang="C">void *sceKernelSysrootGetModulePrivateForKernel(int idx);</source> | |||
=== sceKernelSysrootSetModulePrivateForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x7A7E7C0C | |||
|} | |||
<source lang="C">void sceKernelSysrootSetModulePrivateForKernel(int idx, void *data);</source> | |||
=== sceKernelSysrootSetSysrootForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.740.011 || 0x36916C30 | |||
|} | |||
<source lang="C">void sceKernelSysrootSetSysrootForKernel(SceUID sysroot_uid);</source> | |||
=== sceKernelSysrootProcessmgrStart2ForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.011-3.740.011 || 0x62E8F511 | |||
|} | |||
=== sceKernelSysrootDbgpSuspendProcessAndWaitResumeForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.740.011 || 0x256B2394 | |||
|} | |||
<source lang="C">sceKernelSysrootDbgpSuspendProcessAndWaitResumeForKernel(SceUID pid, SceUID modid, SceUInt32 stopReason, SceUInt64 time);</source> | |||
=== sceKernelSysrootSetIsUserModeThreadFuncForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || 0x5BD911A8 | |||
|- | |||
| 2.100.081-3.740.011 || not present | |||
|} | |||
This is a guessed name. | |||
This function has been removed since System Software version 2.100.081 because its feature is now provided by [[#sceKernelSysrootRegisterDbgpHandlerForKernel]]. | |||
<source lang="C">int sceKernelSysrootSetIsUserModeThreadFuncForKernel(void *func);</source> | |||
=== sceKernelSysrootIsUserModeThreadForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.011-3.740.011 || 0x7FC7A163 | |||
|} | |||
=== sceKernelSysrootGetSecureStatusForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940 || 0x0A63CA5E | |||
|- | |||
| 3.60 || not present | |||
|} | |||
return *(uint *)some_buf->field_0x28 & 1; | |||
<source lang="C">int sceKernelSysrootGetSecureStatusForKernel(void);</source> | |||
=== sceKernelSysrootIsSecureStateForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940 || 0x3193DAB2 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
return (*(uint *)some_buf->field_0x28 ^ 1) & 1; | |||
<source lang="C">SceBool sceKernelSysrootIsSecureStateForKernel(void);</source> | |||
=== sceKernelSysrootIsColdBootForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0xD7198963 | |||
|} | |||
return (*(uint *)some_buf->field_0x28 & 10; // FW 3.60 in IDA PRO | |||
return ((*(uint *)some_buf->field_0x28 ^ 0x10) << 0x1b) >> 0x1f; // FW 0.940 in Ghidra | |||
<source lang="C">int sceKernelSysrootIsColdBootForKernel(void);</source> | |||
== SceSysrootForDriver == | |||
=== SceSysrootForDriver_4B8C305A === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| ?3.60? || 0x4B8C305A | |||
|} | |||
Variable of 12 bytes holding the AutoClockDown idle context. | |||
Used by [[SceLowio]] for the [[SceLowio#AutoClockDown_idle_loop|AutoClockDown idle loop]]. | |||
See also: [[SceSysmem#sceKernelSysrootDisableAutoClockDownForDriver]], [[SceSysmem#sceKernelSysrootEnableAutoClockDownForDriver]]. | |||
<code>num_active_cores</code> is usually initialized to 0x4. However, if the console is in product mode (as per [[KBL_Param#Boot_type_indicator_1]]), then the initialization value is 0x14 instead, which disables the AutoClockDown. | |||
<source lang="C"> | |||
struct low_power_idle_context { | |||
/* backup of ScePervasiveBaseClk registers */ | |||
uint32_t arm_baseclk_config[2]; | |||
/* counter used to clock down ARM when all cores are idle */ | |||
uint32_t num_active_cores; // default: 4, AutoClockDown disabled: 0x14 | |||
}; | |||
</source> | |||
=== SceSysrootForDriver_6219CC14 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x6219CC14 | |||
|} | |||
Used in [[SceUlobjMgr#SceUlobjMgrForDriver_332F2E58]]. | |||
<source lang="C">int SceSysrootForDriver_6219CC14(int a1, int a2, int a3, int a4, int a5);</source> | |||
=== SceSysrootForDriver_F804F761 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.18 || not present | |||
|- | |||
| 3.300.041-3.740.011 || 0xF804F761 | |||
|} | |||
Official name might be sceKernelSysrootHasSDCardSupportForDriver. | |||
This function always returns <code>SCE_FALSE</code> on some release System Software versions, for example 3.500.000 and 3.600.011. | |||
Used in [[SceSdstor]] and [[SceVshBridge#vshSdGetCardInfo]]. | |||
If this function returns <code>SCE_TRUE</code>, then <code>[[SceSdif#get_sd_context_part_validate_sd]](1)</code> is called. | |||
<source lang="C">SceBool SceSysrootForDriver_F804F761(void);</source> | |||
=== sceKernelSysrootSetVipRpcDebugFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xA6A0A038 | |||
|} | |||
This is a guessed name. | |||
<source lang="C">void sceKernelSysrootSetVipRpcDebugFuncForDriver(SceKernelSysrootVipRpcDebugFunc func);</source> | |||
=== sceKernelSysrootClearVipRpcDebugFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x0ECD711E | |||
|} | |||
This is a guessed name. | |||
<source lang="C">void sceKernelSysrootClearVipRpcDebugFuncForDriver();</source> | |||
=== sceKernelSysrootGetVipRpcDebugFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x483EF108 | |||
|} | |||
This is a guessed name. | |||
<source lang="C">SceKernelSysrootVipRpcDebugFunc sceKernelSysrootGetVipRpcDebugFuncForDriver();</source> | |||
=== sceKernelSysrootSetVeneziaRpcDebugFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x47F19DD3 | |||
|} | |||
This is a guessed name. | |||
<source lang="C">void sceKernelSysrootSetVeneziaRpcDebugFuncForDriver(SceKernelSysrootVeneziaRpcDebugFunc func);</source> | |||
=== sceKernelSysrootClearVeneziaRpcDebugFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x5B106EB3 | |||
|} | |||
This is a guessed name. | |||
<source lang="C">void sceKernelSysrootClearVeneziaRpcDebugFuncForDriver();</source> | |||
=== sceKernelSysrootGetVeneziaRpcDebugFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x49843C16 | |||
|} | |||
This is a guessed name. | |||
<source lang="C">SceKernelSysrootVeneziaRpcDebugFunc sceKernelSysrootGetVeneziaRpcDebugFuncForDriver();</source> | |||
=== sceKernelApiDeclareErrorMsgForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.65 || 0x8CD02748 | |||
|} | |||
=== sceKernelApiDeclareTypeRawForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.65 || 0x8A760856 | |||
|} | |||
=== sceKernelApiDeclareTypeInt32ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.65 || 0xD86BD6DC | |||
|} | |||
=== sceKernelApiDeclareTypeUInt32ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.65 || 0x6E0BC27C | |||
|} | |||
=== sceKernelApiDeclareTypeInt64ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.65 || 0x08B8F1D0 | |||
|} | |||
=== sceKernelApiDeclareTypeUInt64ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60-3.65 || 0x2A5DBD38 | |||
|} | |||
Sets a value to 3. | |||
<source lang="C">void sceKernelApiDeclareTypeUInt64ForDriver(void);</source> | |||
=== sceKernelSysrootGetTimebaseClockFrequencyForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.500.071-3.740.011 || 0xBFD8F2A2 | |||
|} | |||
Calls a function registered by [[#SceSysrootForDriver_C94C76FA]]. | |||
Used by [[SceGpuEs4]], only on DevKit. | |||
<source lang="C">SceUInt32 sceKernelSysrootGetTimebaseClockFrequencyForDriver(void);</source> | |||
=== SceSysrootForDriver_C94C76FA === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.360.011 || not present | |||
|- | |||
| 3.500.011-3.740.011 || 0xC94C76FA | |||
|} | |||
Registers some Sysroot functions related to clock frequency. | |||
<source lang="C">int SceSysrootForDriver_C94C76FA(SceSysrootForDriver_C94C76FA_struct *pParam);</source> | |||
=== SceSysrootForDriver_2BE874EF === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.500.151-3.740.011 || 0x2BE874EF | |||
|} | |||
Registers the function called by [[#SceSysrootForKernel_BF82931F]]. | |||
Used only in [[SceAppMgr]]. | |||
<source lang="C">int SceSysrootForDriver_2BE874EF(void *func);</source> | |||
=== SceSysrootForDriver_3B19B06B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.500.151-3.740.011 || 0x3B19B06B | |||
|} | |||
Registers the function called by [[#SceSysrootForKernel_6D111FA7]]. | |||
Used only in [[SceAppMgr]]. | |||
<source lang="C">int SceSysrootForDriver_3B19B06B(void *func);</source> | |||
=== SceSysrootForDriver_70AD47A9 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.500.151-3.740.011 || 0x70AD47A9 | |||
|} | |||
Registers the function called by [[#SceSysrootForKernel_2A03DFA1]]. | |||
Used only in [[SceAppMgr]]. | |||
<source lang="C">int SceSysrootForDriver_70AD47A9(void *func);</source> | |||
=== SceSysrootForDriver_AA770EF7 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.360.011 || not present | |||
|- | |||
| 3.500.011-3.740.011 || 0xAA770EF7 | |||
|} | |||
Registers the function called by [[#SceSysrootForDriver_591BB490]]. | |||
The function is registered from [[SceTty2uart]] only if [[KBL Param|DIP Switch]] 211 is set. | |||
<source lang="C">int SceSysrootForDriver_AA770EF7(void *func);</source> | |||
=== SceSysrootForDriver_591BB490 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.360.011 || not present | |||
|- | |||
| 3.500.011-3.740.011 || 0x591BB490 | |||
|} | |||
Calls the function registered by [[#SceSysrootForDriver_AA770EF7]]. | |||
Gets tty2uart information into a 0x1000-sized buffer, similarly to [[#sceKernelGetTtyInfoForDriver]]. Returns some size, maybe size of the written tty2uart buffer. | |||
Used only in [[SceCoredump]]. | |||
<source lang="C"> | |||
// size: usually 0x1000 | |||
int SceSysrootForDriver_591BB490(int magic_or_size, void *pBuf, SceSize size); | |||
</source> | |||
=== SceSysrootForDriver_C5EAF5F7 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xC5EAF5F7 | |||
|} | |||
Registers the function called by [[#SceSysrootForDriver_47724459]]. | |||
<source lang="C">int SceSysrootForDriver_C5EAF5F7(void *func);</source> | |||
=== SceSysrootForDriver_47724459 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x47724459 | |||
|} | |||
Calls the function registered by [[#SceSysrootForDriver_C5EAF5F7]]. | |||
=== SceSysrootForDriver_D4457D4F === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010 || not present | |||
|- | |||
| 0.990.000-3.740.011 || 0xD4457D4F | |||
|} | |||
Registers the function called by [[#SceSysrootForDriver_40F28DC6]]. | |||
<source lang="C">int SceSysrootForDriver_D4457D4F(void *func);</source> | |||
=== SceSysrootForDriver_40F28DC6 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.740.011 || 0x40F28DC6 | |||
|} | |||
Calls the function registered by [[#SceSysrootForDriver_D4457D4F]]. | |||
=== sceKernelSysrootGetCompiledSdkVersionByPidForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.692.000 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0xCAE820B2 | |||
|} | |||
Temp name was sceKernelGetProcessHeapIDForDriver. | |||
Calls a callback registered by [[#SceSysrootForKernel_D29BCA77]]. | |||
Used in [[SceKernelModulemgr]] functions that load modules, for example [[SceKernelModulemgr#sceKernelStartModuleForPidForKernel]]. | |||
<source lang="C">int sceKernelSysrootGetCompiledSdkVersionByPidForDriver(SceUID pid, SceUInt32 *puiSdkVer);</source> | |||
=== SceSysrootForDriver_8747D415 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x8747D415 | |||
|} | |||
Used by [[SceDeci4pSDfMgr]]. | |||
Registers the function called by [[#SceSysrootForDriver_B27B7530]]. | |||
<source lang="C">int SceSysrootForDriver_8747D415(void *func);</source> | |||
=== SceSysrootForDriver_B27B7530 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xB27B7530 | |||
|} | |||
Calls the function registered by [[#SceSysrootForDriver_8747D415]]. | |||
=== sceKernelSysrootSetGetBuserrorDataFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x82FC6405 | |||
|} | |||
This is a guessed name. | |||
Registers the function called by [[#sceKernelSysrootGetBuserrorDataForDriver]]. | |||
<source lang="C">int sceKernelSysrootSetGetBuserrorDataFuncForDriver(void *func);</source> | |||
=== sceKernelSysrootGetBuserrorDataForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xCD4B84F7 | |||
|} | |||
This is a guessed name. | |||
Calls the function registered by [[#sceKernelSysrootSetGetBuserrorDataFuncForDriver]]. | |||
=== SceSysrootForDriver_FF2DD7AB === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xFF2DD7AB | |||
|} | |||
Registers something. | |||
<source lang="C"> | |||
typedef struct SceSysrootForDriver_FF2DD7AB_struct { // size is 0x1C on FW 3.60 | |||
SceSize size; // Size of this structure | |||
char unk_4[0x18]; | |||
} SceSysrootForDriver_FF2DD7AB_struct; | |||
int SceSysrootForDriver_FF2DD7AB(SceSysrootForDriver_FF2DD7AB_struct *pData); | |||
</source> | |||
=== SceSysrootForDriver_3AE319DA === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x3AE319DA | |||
|} | |||
Used by [[SceSyscon]]. | |||
Get something registered by [[#SceSysrootForDriver_FF2DD7AB]]. | |||
<source lang="C">int SceSysrootForDriver_3AE319DA(void);</source> | |||
=== sceKernelSysrootGetHardwareFlagsForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x46E72428 | |||
|} | |||
This is a guessed name. Temp name was sceSysrootIsAuCodecIcConexantForDriver. | |||
Writes kbl_param->hardware_flags to buffer. | |||
pFlags buffer size is 0x10 bytes. | |||
<source lang="C">int sceKernelSysrootGetHardwareFlagsForDriver(void *pFlags);</source> | |||
=== sceKernelSysrootGetHardwareInfoForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x930B1342 | |||
|} | |||
return kbl_param->hardware_info; | |||
<source lang="C">int sceKernelSysrootGetHardwareInfoForDriver(void);</source> | |||
=== sceKernelSysrootSetSDfCtlSetBootParameterFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE541959B | |||
|} | |||
<source lang="C">int sceKernelSysrootSetSDfCtlSetBootParameterFuncForDriver(void *func);</source> | |||
=== sceKernelSysrootClearSDfCtlSetBootParameterFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x9421B223 | |||
|} | |||
<source lang="C">int sceKernelSysrootClearSDfCtlSetBootParameterFuncForDriver(void);</source> | |||
=== sceKernelSysrootSDfCtlSetBootParameterForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x7AAC4EE7 | |||
|} | |||
<source lang="C"> | |||
// bootparam max size is 0x80 bytes | |||
int sceKernelSysrootSDfCtlSetBootParameterForDriver(const char *bootparam); | |||
</source> | |||
=== sceKernelSysrootSetUtMgrGetTrilithiumBufferFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x35875119 | |||
|} | |||
Registers the function called by [[#sceKernelSysrootUtMgrGetTrilithiumBufferForDriver]]. | |||
<source lang="C">int sceKernelSysrootSetUtMgrGetTrilithiumBufferFuncForDriver(void *func);</source> | |||
=== sceKernelSysrootUtMgrGetTrilithiumBufferForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-3.01 || not present | |||
|- | |||
| 3.180.011-3.740.011 || 0xD75D4F37 | |||
|} | |||
Used in [[SceSblAuthMgr#sceSblAuthMgrAuthHeaderForKernel]] to overwrite fSELF authinfo. | |||
Returns 0 on success, 0x800f1a02 on error. | |||
<source lang="C">int sceKernelSysrootUtMgrGetTrilithiumBufferForDriver(SceUtokenDecrypted *buffer);</source> | |||
=== sceKernelSysrootSetSceSblPostSsMgrForDriver_A12C9950FuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.06 || not present | |||
|- | |||
| 1.500.151-3.740.011 || 0xA12C9950 | |||
|} | |||
Registers the function called by [[#sceKernelSysrootSceSblPostSsMgrForDriver_56D85EB0ForDriver]]. | |||
The function is [[SceSblPostSsMgr#SceSblPostSsMgrForDriver_D8A2D465]]. | |||
<source lang="C">int sceKernelSysrootSetSceSblPostSsMgrForDriver_A12C9950FuncForDriver(void *func);</source> | |||
=== sceKernelSysrootSceSblPostSsMgrForDriver_56D85EB0ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x56D85EB0 | |||
|} | |||
Used by [[SceSblACMgr]]. | |||
Calls the function registered by [[#sceKernelSysrootSetSceSblPostSsMgrForDriver_56D85EB0FuncForDriver]]. | |||
The function is [[SceSblPostSsMgr#SceSblPostSsMgrForDriver_D8A2D465]]. | |||
=== sceKernelSysrootSetSblUtMgrHasUNK1FlagFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-0.996 || not present | |||
|- | |||
| 1.000.071-3.740.011 || 0xE25D2FD5 | |||
|} | |||
Registers the functions called by [[#sceKernelSysrootSblUtMgrHasUNK1FlagForDriver]]. | |||
<source lang="C">int sceKernelSysrootSetSblUtMgrHasUNK1FlagFuncForDriver(void *func);</source> | |||
=== sceKernelSysrootSblUtMgrHasUNK1FlagForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-0.996 || not present | |||
|- | |||
| 1.000.071-3.740.011 || 0x26AA237C | |||
|} | |||
Calls the function registered by [[#sceKernelSysrootSetSblUtMgrHasUNK1FlagFuncForDriver]]. | |||
<source lang="C">int sceKernelSysrootSblUtMgrHasUNK1FlagForDriver(void);</source> | |||
=== sceKernelSysrootSetSblUtMgrHasUNK2FlagFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE2E88E3E | |||
|} | |||
Registers the function called by [[#sceKernelSysrootSblUtMgrHasUNK2FlagForDriver]]. | |||
<source lang="C">int sceKernelSysrootsceSetSblUtMgrHasUNK2FlagFuncForDriver(void *func);</source> | |||
=== sceKernelSysrootSblUtMgrHasUNK2FlagForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE2515A08 | |||
|} | |||
Calls the function registered by [[#sceKernelSysrootSetSblUtMgrHasUNK2FlagFuncForDriver]]. | |||
Used by [[SceSblACMgr#sceSblACMgrHasSystemDataFilePlayReadyFlagForDriver]]. | |||
<source lang="C">int sceKernelSysrootSblUtMgrHasUNK2FlagForDriver(void);</source> | |||
=== sceKernelSysrootSetUtMgrHasNpTestFlagFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.18 || not present | |||
|- | |||
| 3.300.041-3.740.011 || 0xEE5D6CE9 | |||
|} | |||
<source lang="C">int sceKernelSysrootSetUtMgrHasNpTestFlagFuncForDriver(void *func);</source> | |||
=== sceKernelSysrootUtMgrHasNpTestFlagForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.18 || not present | |||
|- | |||
| 3.300.041-3.740.011 || 0xA43599E9 | |||
|} | |||
<source lang="c">int sceKernelSysrootUtMgrHasNpTestFlagForDriver(void);</source> | |||
=== SceSysrootForDriver_2D6B2A79 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x2D6B2A79 | |||
|} | |||
Registers a function related to kernel panic, called by [[#SceSysrootForDriver_CC7A0E63]] or [[#SceSysrootForKernel_CC7A0E63]]. | |||
=== SceSysrootForDriver_CC7A0E63 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xCC7A0E63 | |||
|} | |||
Calls a function related to kernel panic, registered by [[#SceSysrootForDriver_2D6B2A79]] or [[#SceSysrootForKernel_2D6B2A79]]. | |||
<source lang="C"> | |||
// type: 1: kernel_assertion_or_panic, 3: kernel_exception | |||
// size: must be <= 0x1000 | |||
// pBuf: address of the buffer got using SceDebugForKernel_BEF921A2 | |||
int SceSysrootForDriver_CC7A0E63(int type, SceSize size, const char *pBuf); | |||
</source> | |||
=== sceKernelSysrootDisableAutoClockDownForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 3.60 || 0xEE934615 | |||
|} | |||
Derived from [[SceVshBridge#vshKernelDisableAutoClockDown]]. | |||
Atomically adds 0x10 to [[SceSysmem#SceSysrootForDriver_4B8C305A|<code>SceSysrootForDriver_4B8C305A.num_active_cores</code>]]. | |||
The correct return type may be <code>void</code> instead (currently, return value is the incremented <code>num_active_cores</code>). | |||
<source lang="C">int sceKernelSysrootDisableAutoClockDownForDriver(void);</source> | |||
=== sceKernelSysrootEnableAutoClockDownForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 3.60 || 0xEEF091A7 | |||
|} | |||
Derived from [[SceVshBridge#vshKernelEnableAutoClockDown]]. | |||
Atomically substracts 0x10 from [[SceSysmem#SceSysrootForDriver_4B8C305A|<code>SceSysrootForDriver_4B8C305A.num_active_cores</code>]]. | |||
The correct return type may be <code>void</code> instead (currently, return value is the decremented <code>num_active_cores</code>). | |||
Used by [[SceCompat]], [[ScePower]], [[SceKernelDmacMgr]], [[SceSblAuthMgr]], [[SceSblSmschedProxy]], [[SceSblSsSmComm]]. | |||
<source lang="C">int sceKernelSysrootEnableAutoClockDownForDriver(void);</source> | |||
=== SceSysrootForDriver_6050A467 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x6050A467 | |||
|} | |||
Debug related. Returns an error when called because there is no handler set for retail. | |||
<source lang="C">int SceSysrootForDriver_6050A467(SceUID pid);</source> | |||
=== SceSysrootForDriver_F4340469 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xF4340469 | |||
|} | |||
Coredump related. Called during process load. Something is same as in [[#SceSysrootForDriver_6050A467]]. | |||
<source lang="C">int SceSysrootForDriver_F4340469(int something, SceUID pid, ...);</source> | |||
=== sceKernelSysrootRegisterCoredumpTriggerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xDD473B05 | |||
|} | |||
<source lang="C">int sceKernelSysrootRegisterCoredumpTriggerForDriver(void *func);</source> | |||
=== sceKernelSysrootCoredumpTriggerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xCD8CD242 | |||
|} | |||
Used by [[SceDeci4pDbgp]]. | |||
<source lang="C">int sceKernelSysrootCoredumpTriggerForDriver(int a1, int a2, int a3, SceCoredumpForDriver_A7D214A7_Opt *pOpt);</source> | |||
=== sceKernelSysrootRegisterCoredumpCancelForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x400B9793 | |||
|} | |||
<source lang="C">int sceKernelSysrootRegisterCoredumpCancelForDriver(void *func);</source> | |||
=== sceKernelSysrootCoredumpCancelForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x80FBC69D | |||
|} | |||
<source lang="C">int sceKernelSysrootCoredumpCancelForDriver(int a1);</source> | |||
=== sceKernelSysrootSetProcessHandlerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x0F07C3FC | |||
|} | |||
Registers some handlers. | |||
<source lang="C">int sceKernelSysrootSetProcessHandlerForDriver(SceSysrootProcessHandler *pHandler);</source> | |||
=== sceKernelSysrootClearProcessHandlerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x5A7FFDC1 | |||
|} | |||
<source lang="C">void sceKernelSysrootClearProcessHandlerForDriver(void);</source> | |||
=== SceSysrootForDriver_421EFC96 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.692 || not present | |||
|- | |||
| 1.800.071-3.740.011 || 0x421EFC96 | |||
|} | |||
Calls SceSysrootProcessHandler's on_process_created. | |||
Used only by [[SceAppMgr]] and called on process creation. | |||
Hooked to make it return 0 (success) for example in: | |||
* [https://github.com/henkaku/henkaku/blob/master/payload/payload.c#L423 HENkaku payload by Team Molecule] | |||
* [https://github.com/TheOfficialFloW/update365/blob/2d175c3d2cb6618ba048aee5776acace68ac4493/installer/src/kernel.c#L1058 update365 by TheFloW] | |||
<source lang="C">int SceSysrootForDriver_421EFC96(int maybe_pid, int maybe_modid, int a3);</source> | |||
=== sceKernelSysrootSWBkptGetOriginalOpcodeForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x9CFF80F9 | |||
|} | |||
This is a guessed name. | |||
<source lang="C">int sceKernelSysrootSWBkptGetOriginalOpcodeForDriver(SceUID pid, void *address, SceUInt32 *opcode);</source> | |||
=== SceSysrootForDriver_571E5B79 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x571E5B79 | |||
|} | |||
Calls SceSysrootProcessHandler's unk_4. | |||
=== SceSysrootForDriver_51F9C118 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x51F9C118 | |||
|} | |||
Calls SceSysrootProcessHandler's unk_18. | |||
Used in [[SceProcessmgr#SceProcessmgrForKernel_8729DE79]]. | |||
<source lang="C"> | |||
// a3: second argument of SceProcessmgrForKernel_8729DE79 | |||
int SceSysrootForDriver_51F9C118(SceUID pid, SceUID modid, int a3, void* maybe_process_info, SceUInt64 time); | |||
</source> | |||
=== SceSysrootForDriver_582616EC === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x582616EC | |||
|} | |||
Calls SceSysrootProcessHandler's unk_24. | |||
Used in [[SceProcessmgr#SceProcessmgrForKernel_8729DE79]]. | |||
<source lang="C"> | |||
// a3: second argument of SceProcessmgrForKernel_8729DE79 | |||
int SceSysrootForDriver_582616EC(SceUID pid, SceUID modid, int a3); | |||
</source> | |||
=== sceKernelSysrootDbgpSuspendProcessAndWaitResumeForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x256B2394 | |||
|} | |||
=== sceKernelSysrootGetShellPidForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x05093E7B | |||
|} | |||
<source lang="C">SceUID sceKernelSysrootGetShellPidForDriver(void);</source> | |||
=== sceKernelSysrootAppMgrSpawnProcessForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x3ACACD22 | |||
|} | |||
=== sceKernelSysrootInformUpdateStartedForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x9A486846 | |||
|} | |||
<source lang="C">int sceKernelSysrootInformUpdateStartedForDriver(int number1, int number2, const char *str, SceSize len);</source> | |||
=== sceKernelSysrootInformUpdateOngoingForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x9EC02A41 | |||
|} | |||
<source lang="C">int sceKernelSysrootInformUpdateOngoingForDriver(int number1, int number2);</source> | |||
=== sceKernelSysrootInformUpdateFinishedForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x217B2871 | |||
|} | |||
<source lang="C">int sceKernelSysrootInformUpdateFinishedForDriver(int number, const char *str, SceSize len);</source> | |||
=== sceKernelSysrootSetSwInfoIntForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x631141E2 | |||
|} | |||
<source lang="C">int sceKernelSysrootSetSwInfoIntForDriver(char *str, SceSize len, SceUInt32 number);</source> | |||
=== sceKernelSysrootSetSwInfoStrForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x17DD213C | |||
|} | |||
<source lang="C">int sceKernelSysrootSetSwInfoStrForDriver(char *str1, SceSize len1, char *str2, SceSize len2);</source> | |||
=== sceKernelSysrootSetSwInfoBinForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x9E96D990 | |||
|} | |||
<source lang="C">int sceKernelSysrootSetSwInfoBinForDriver(char *str1, SceSize size1, char *str2, SceSize size2);</source> | |||
=== sceKernelSysrootSetGetSystemSwVersionFuncForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x3276086B | |||
|} | |||
Temp name was sceKernelSysrootSetSystemSwVersionForDriver. | |||
Used by [[SceSblUpdateMgr]]. | |||
<source lang="c">void sceKernelSysrootSetGetSystemSwVersionFuncForDriver(void *func);</source> | |||
=== sceKernelSysrootGetSystemSwVersionForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x67AAB627 | |||
|} | |||
Returns System Software version as int from SceSysmem memory. For exemple: 0x0365000 on 3.65. | |||
<source lang="c">int sceKernelSysrootGetSystemSwVersionForDriver(void);</source> | |||
=== sceKernelSysrootIsSafeModeForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x834439A7 | |||
|} | |||
<source lang="C">int sceKernelSysrootIsSafeModeForDriver(void);</source> | |||
=== sceKernelSysrootIsUpdateModeForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xB0E1FC67 | |||
|} | |||
<source lang="C">int sceKernelSysrootIsUpdateModeForDriver(void);</source> | |||
=== sceKernelSysrootGetModelInfoForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 3.60 || 0x4D98B15B | |||
|} | |||
This is a guessed name, based on "sysroot->model_info". | |||
Returns sysroot->model_info. | |||
Used only in [[SceProcessmgr]] initializeBudget() on module start. According to model_info, ScePhyMemPartShell is allocated with different parameters. | |||
<source lang="C">SceUInt32 sceKernelSysrootGetModelInfoForDriver(void);</source> | |||
=== SceSysrootForDriver_ED688AEE === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0xED688AEE | |||
|} | |||
Registers the callback called by [[#SceSysrootForDriver_F404026C]]. | |||
<source lang="C">SceSysrootForDriver_ED688AEE(void* cb);</source> | |||
=== SceSysrootForDriver_F404026C === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0xF404026C | |||
|} | |||
Calls the callback registered by [[#SceSysrootForDriver_ED688AEE]]. | |||
=== sceKernelSysrootCheckModelCapabilityForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0x8AA268D6 | |||
|} | |||
This is an official name. Name derived from [[#sceKernelSysrootCheckModelCapability]]. | |||
Each model capability corresponds to a bit in a Sysroot field derived from Syscon [[KBL_Param#Hardware_Info|Hardware Info]] and [[KBL_Param#Hardware_Info_2|Hardware Info 2]]. | |||
Model capabilities: | |||
* 0: unknown | |||
* 1: Multi-controllers support | |||
* 2: unknown | |||
* 4: unknown | |||
* 5: unknown | |||
* 6: unknown | |||
* 7: unknown, ?OLED display? | |||
* 8: unknown, ?LCD display? | |||
* 9: unknown, set on almost all models | |||
* 10: unknown | |||
* 11: SD card support | |||
* 12: unknown | |||
* 13: unknown | |||
{| class="wikitable" | |||
|- | |||
! Case !! Model !! Model capabilities (raw) !! Model capabilities (bits set) | |||
|- | |||
| ErnieHwInfo & 0xFF0000 <= 0x410000 / Unknown Model || 0x10100 || 0x604 || 2, 9, 10 | |||
|- | |||
| ErnieHwInfo & 0xFF0000 == 0x510000 || 0x20100 || 0x1232 || 1, 4, 5, 9, 12 | |||
|- | |||
| ErnieHwInfo & 0xFF0000 == 0x600000 || 0x10150 || 0x604 || 2, 9, 10 | |||
|- | |||
| ErnieHwInfo & 0xFF0000 == 0x700000 || 0x20100 || 0x1232 || 1, 4, 5, 9, 12 | |||
|- | |||
| ErnieHwInfo & 0xFF0000 == 0x720000 || 0x20110 || 0x232 || 1, 4, 5, 9 | |||
|- | |||
| ErnieHwInfo & 0xFF0000 == 0x800000 || 0x10200 || 0x604 || 2, 9, 10 | |||
|- | |||
| ErnieHwInfo & 0xFF0000 == 0x820000 || 0x10220 || 0x604 || 2, 9, 10 | |||
|- | |||
| PDEL-10xx in PS TV Emulation mode || 0x20101 || 0x252 || 1, 4, 6, 9 | |||
|- | |||
| (ErnieHwInfo2 & 0x9 == 0) && PSTV or PSTVEmu || - || 0x80 || 7 | |||
|- | |||
| ErnieHwInfo2 & 0x9 != 0 || - || 0x100 || 8 | |||
|- | |||
| (Model == 0x20110) && (ErnieHwInfo2 & 0x100 != 0) || - || 0x1000 || 12 | |||
|- | |||
| (Model == 0x20110) && (ErnieHwInfo2 & 0x100 == 0) || - || & ~0x1000 || UNSET 12 | |||
|- | |||
| ErnieHwInfo2 & 0x200 != 0 || - || 0x2000 || 13 | |||
|} | |||
Used in [[SceCtrl]], [[SceSdstor]], [[SceUsbEtherRtl]] and [[SceVshBridge]]. | |||
<source lang="C">int sceKernelSysrootCheckModelCapabilityForDriver(int capability);</source> | |||
=== sceKernelSysrootGetSyscallFrameForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60-3.65 || 0x44EA3197 | |||
|} | |||
<source lang="C">SceSyscallFrame *sceKernelSysrootGetSyscallFrameForDriver(void);</source> | |||
=== sceKernelSysrootRegisterInitCallbackForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x778D0966 | |||
|} | |||
<source lang="C"> | |||
// idx: 0-8 | |||
// idx 8: func = ScePower/SceMsif functions | |||
int sceKernelSysrootRegisterInitCallbackForDriver(const void *func, SceUInt32 idx, SceUInt32 arg, SceUInt32 *ret); | |||
</source> | |||
=== sceKernelSysrootInvokeInitCallbackForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x93CD44CD | |||
|} | |||
<source lang="C"> | |||
// idx: 0-8, 5: disable NSKBL, more...? | |||
int sceKernelSysrootInvokeInitCallbackForDriver(int idx); | |||
</source> | |||
=== sceKernelSysrootInvokeInitCallbackExForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 0.990-3.60 || 0x7C2C10E2 | |||
|} | |||
This is a guessed name. | |||
<source lang="C"> | |||
// idx: 0-8, 5: disable NSKBL, more...? | |||
// unk: argument passed to the init callback | |||
int sceKernelSysrootInvokeInitCallbackExForDriver(int idx, int unk); | |||
</source> | |||
== SceKernelUtilsForDriver == | |||
=== sceAesDecrypt1ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xD8678061 | |||
|} | |||
Perform normal AES decrypt. | |||
<source lang="c">int sceAesDecrypt1ForDriver(void *ctx, const void *src, void *dst);</source> | |||
=== sceAesDecrypt2ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE39CD272 | |||
|} | |||
Perform AES decrypt using encryption round key. | |||
<source lang="c">int sceAesDecrypt2ForDriver(void *ctx, const void *src, void *dst);</source> | |||
=== sceAesEncrypt1ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xC2A61770 | |||
|} | |||
Perform AES encrypt. There are two functions that are the same on 1.69. | |||
<source lang="c">int sceAesEncrypt1ForDriver(void *ctx, const void *src, void *dst);</source> | |||
=== sceAesEncrypt2ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.69-3.60 || 0x302947B6 | |||
|} | |||
Perform AES encrypt. Similar to sceAesEncrypt1ForDriver. | |||
<source lang="c">int sceAesEncrypt2ForDriver(void *ctx, const void *src, void *dst);</source> | |||
=== sceAesInit1ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.69-3.60 || 0xF12B6451 | |||
|} | |||
This sets up the AES engine. <code>ctx</code> is a 0x3C0 byte buffer (on FW 1.69). <code>blocksize</code> and <code>keysize</code> values are in bits. 128/196/256 are supported values. | |||
last arg to subroutine is 0 | |||
<source lang="c">int sceAesInit1ForDriver(void *ctx, int blocksize, int keysize, const void *key);</source> | |||
=== sceAesInit2ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xEDA97D6D | |||
|} | |||
last arg to subroutine is 1 | |||
<source lang="c">int sceAesInit2ForDriver(void *ctx, int blocksize, int keysize, const void *key);</source> | |||
=== sceAesInit3ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x72408E29 | |||
|} | |||
last arg to subroutine is 2 | |||
<source lang="c">int sceAesInit3ForDriver(void *ctx, int blocksize, int keysize, const void *key);</source> | |||
=== SceKernelUtilsForDriver_C76A7685 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xC76A7685 | |||
|} | |||
Looks like it relates to AES InvMixColumns. | |||
=== SceKernelUtilsForDriver_60ED6EA9 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x60ED6EA9 | |||
|} | |||
Equivalent to AES getSBox32Value | |||
=== sceDeflateDecompressForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x8AF1FAD4 | |||
|} | |||
=== sceDeflateDecompressPartialForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x3D74CCDF | |||
|} | |||
=== sceGzipDecompressForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x367EE3DF | |||
|} | |||
=== sceGzipGetCommentForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xCD3AE08F | |||
|} | |||
=== sceGzipGetCompressedDataForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x63619124 | |||
|} | |||
=== sceGzipGetInfoForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xFFC6A10F | |||
|} | |||
=== sceGzipGetNameForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xF901FD3E | |||
|} | |||
=== sceGzipIsValidForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xD8FAEFD4 | |||
|} | |||
=== sceHmacSha1DigestForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x29A28957 | |||
|} | |||
<source lang="C">int sceHmacSha1DigestForDriver(const void *key, int key_len, const void *data, int data_len, void *digest);</source> | |||
=== sceHmacSha224DigestForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x7F2A7B99 | |||
|} | |||
<source lang="C">int sceHmacSha224DigestForDriver(const void *key, int key_len, const void *data, int data_len, void *digest);</source> | |||
=== sceHmacSha256DigestForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x83EFA1CC | |||
|} | |||
<source lang="C">int sceHmacSha256DigestForDriver(const void *key, int key_len, const void *data, int data_len, void *digest);</source> | |||
=== sceMt19937GlobalInitForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xD428CC2A | |||
|} | |||
cp_timestamp_2 is gotten from SceKblParam. | |||
<source lang="C">int sceMt19937GlobalInitForDriver(uint32_t cp_timestamp_2);</source> | |||
=== sceMt19937GlobalUIntInRangeForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x875B2A1C | |||
|} | |||
Temp name was sceMt19937GlobalUninitForDriver. | |||
<source lang="C"> | |||
// Both the address and size must be aligned on four bytes. | |||
int sceMt19937GlobalUIntInRangeForDriver(void *pBase, SceSize length); | |||
</source> | |||
=== sceMt19937InitForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x4C9A5730 | |||
|} | |||
=== sceMt19937UIntForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x92AEDFBC | |||
|} | |||
=== sceSfmt19937FillArray32ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x2B30548B | |||
|} | |||
=== sceSfmt19937FillArray64ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x49B41540 | |||
|} | |||
=== sceSfmt19937GenRand32ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xBBE4701A | |||
|} | |||
=== sceSfmt19937GenRand64ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x45DEAAD6 | |||
|} | |||
=== sceSfmt19937InitByArrayForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x33AE1203 | |||
|} | |||
=== sceSfmt19937InitGenRandForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xAB48C3CA | |||
|} | |||
=== sceSha1BlockInitForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE4390FFA | |||
|} | |||
<source lang="C">int sceSha1BlockInitForDriver(void* ctx);</source> | |||
=== sceSha1BlockResultForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x48F24106 | |||
|} | |||
<source lang="C">int sceSha1BlockResultForDriver(void* ctx, void *digest);</source> | |||
=== sceSha1BlockUpdateForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x478A6F3C | |||
|} | |||
<source lang="C">int sceSha1BlockUpdateForDriver(void* ctx, const void *data, int size);</source> | |||
=== sceSha1DigestForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x87DC7F2F | |||
|} | |||
<source lang="C">int sceSha1DigestForDriver(const void *data, int size, void *digest);</source> | |||
=== sceSha224BlockInitForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xC762EA6D | |||
|} | |||
<source lang="C">int sceSha224BlockInitForDriver(void* ctx);</source> | |||
=== sceSha224BlockResultForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xFBF2A442 | |||
|} | |||
<source lang="C">int sceSha224BlockResultForDriver(void* ctx, void *digest);</source> | |||
=== sceSha224BlockUpdateForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x7556E611 | |||
|} | |||
<source lang="C">int sceSha224BlockUpdateForDriver(void* ctx, const void *data, int size);</source> | |||
=== sceSha224DigestForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x9EA9D4DC | |||
|} | |||
<source lang="C">int sceSha224DigestForDriver(const void *data, int size, void *digest);</source> | |||
=== sceSha256BlockInitForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xD909FA2C | |||
|} | |||
<source lang="C">int sceSha256BlockInitForDriver(void* ctx);</source> | |||
=== sceSha256BlockResultForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x4899CD4B | |||
|} | |||
<source lang="C">int sceSha256BlockResultForDriver(void* ctx, void *digest);</source> | |||
=== sceSha256BlockUpdateForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x236A9097 | |||
|} | |||
<source lang="C">int sceSha256BlockUpdateForDriver(void* ctx, const void *data, int size);</source> | |||
=== sceSha256DigestForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xA773A6A8 | |||
|} | |||
<source lang="C">int sceSha256DigestForDriver(const void *data, SceSize size, void *digest);</source> | |||
=== sceZlibDecompressForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x900148DB | |||
|} | |||
=== sceZlibGetCompressedDataForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x01EB6C45 | |||
|} | |||
=== sceZlibGetInfoForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x5B9BCD75 | |||
|} | |||
=== sceXorshift128ForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990 || not present | |||
|- | |||
| 3.60 || 0x335AF34D | |||
|} | |||
Similar implementation as [https://github.com/RIOT-OS/RIOT/blob/master/sys/random/xorshift.c#L41 xorshift128]. | |||
<source lang="C">int sceXorshift128ForDriver(SceUInt32 *state);</source> | |||
=== SceKernelUtilsForDriver_B55C69B7 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xB55C69B7 | |||
|} | |||
If buffer is full of zeroes, then each of the four dwords of buffer are set to 1. Always success and always return 0. | |||
Used in [[SceProcessmgr]]. | |||
<source lang="C">int SceKernelUtilsForDriver_B55C69B7(SceUInt32 *buffer);</source> | |||
== SceZlibForDriver == | |||
This library was moved to [[SceSblPostSsMgr#SceZlibForDriver]] on FW 1.800.071. | |||
[http://www.zlib.net/ zlib] compression library. | |||
=== zlibVersion === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x517BC5F7 | |||
|} | |||
<source lang="C">const char *zlibVersion(void);</source> | |||
=== inflateInit === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x81D0667B | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_723495A5|alias]]. | |||
<source lang="C">int inflateInit(SceZlibStream *strm, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_723495A5 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0x723495A5 | |||
|} | |||
<source lang="C">int SceZlibForDriver_723495A5(SceZlibStream *strm, const char *version, int stream_size);</source> | |||
=== inflateInit2_ === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x0BDDF66A | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_21A03034|alias]]. | |||
<source lang="C">int inflateInit2_(SceZlibStream *strm, int windowBits, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_21A03034 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x21A03034 | |||
|} | |||
<source lang="C">int SceZlibForDriver_21A03034(SceZlibStream *strm, int windowBits, const char *version, int stream_size);</source> | |||
=== inflateInit_2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x44DA19D2 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_B03E109B|alias]]. | |||
<source lang="C">int inflateInit_2(SceZlibStream *strm, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_B03E109B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xB03E109B | |||
|} | |||
<source lang="C">int SceZlibForDriver_B03E109B(SceZlibStream *strm, const char *version, int stream_size);</source> | |||
=== inflateInit2_2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xA1E7E8B3 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_AC2F8437|alias]]. | |||
<source lang="C">int inflateInit2_2(SceZlibStream *strm, int a2, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_AC2F8437 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xAC2F8437 | |||
|} | |||
<source lang="C">int SceZlibForDriver_AC2F8437(SceZlibStream *strm, int a2, const char *version, int stream_size);</source> | |||
=== inflate === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xD4A85178 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_E4F34A68|alias]]. | |||
<source lang="C">int inflate(SceZlibStream *strm, int flush);</source> | |||
=== SceZlibForDriver_E4F34A68 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.60-3.60 || 0xE4F34A68 | |||
|} | |||
=== inflateSetDictionary === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.60-3.60 || 0x7B16DBD6 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_00561385|alias]]. | |||
<source lang="C">int inflateSetDictionary(SceZlibStream *strm, const void *dictionary, int dictLength);</source> | |||
=== SceZlibForDriver_00561385 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x00561385 | |||
|} | |||
<source lang="C">int SceZlibForDriver_00561385(SceZlibStream *strm, const void *dictionary, int dictLength);</source> | |||
=== inflateEnd === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x9030BAE4 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_134E91EA|alias]]. | |||
<source lang="C">int inflateEnd(SceZlibStream *strm);</source> | |||
=== SceZlibForDriver_134E91EA === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x134E91EA | |||
|} | |||
<source lang="C">int SceZlibForDriver_134E91EA(SceZlibStream *strm);</source> | |||
=== inflateCopy === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x4C27A382 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_89B30588|alias]]. | |||
<source lang="C">int inflateCopy(SceZlibStream *dst, SceZlibStream *src);</source> | |||
=== SceZlibForDriver_89B30588 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x89B30588 | |||
|} | |||
<source lang="C">int SceZlibForDriver_89B30588(SceZlibStream *dst, SceZlibStream *src);</source> | |||
=== inflateSyncPoint === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x4CB63BCD | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_834CC4A2|alias]]. | |||
<source lang="C">int inflateSyncPoint(SceZlibStream *strm);</source> | |||
=== SceZlibForDriver_834CC4A2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x834CC4A2 | |||
|} | |||
<source lang="C">int SceZlibForDriver_834CC4A2(SceZlibStream *strm);</source> | |||
=== deflate === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.60-3.60 || 0xE859D60F | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_5B718E55|alias]]. | |||
<source lang="C">int deflate(SceZlibStream *strm, int flush);</source> | |||
=== SceZlibForDriver_5B718E55 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010-3.60 || 0x5B718E55 | |||
|} | |||
Used by [[SceCoredump]]. | |||
<source lang="C">int SceZlibForDriver_5B718E55(SceZlibStream *strm, int flush);</source> | |||
=== deflateReset === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.60-3.60 || 0x68CFEA45 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_211D25F5|alias]]. | |||
This function could be deflateResetKeep. | |||
<source lang="C">int deflateReset(SceZlibStream *strm);</source> | |||
=== SceZlibForDriver_211D25F5 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x211D25F5 | |||
|} | |||
<source lang="C">int SceZlibForDriver_211D25F5(SceZlibStream *strm);</source> | |||
=== crc32 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.60-3.60 || 0xE0CE06C0 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_3370B9AD|alias]]. | |||
<source lang="C">unsigned long crc32(unsigned long crc, const unsigned char *buf, z_size_t len);</source> | |||
=== SceZlibForDriver_3370B9AD === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x3370B9AD | |||
|} | |||
<source lang="C">unsigned long SceZlibForDriver_3370B9AD(unsigned long crc, const unsigned char *buf, z_size_t len);</source> | |||
=== adler32 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.60-3.60 || 0x98619620 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_7E823337|alias]]. | |||
=== SceZlibForDriver_7E823337 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x7E823337 | |||
|} | |||
=== deflateInit2_2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x20A122F8 | |||
|} | |||
May be an initialization function. | |||
Used by [[SceCoredump]]. | |||
This function have [[SceSysmem#SceZlibForDriver_BE5CE88A|alias]]. | |||
<source lang="C">int deflateInit2_2(SceZlibStream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_BE5CE88A === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xBE5CE88A | |||
|} | |||
<source lang="C">int SceZlibForDriver_BE5CE88A(SceZlibStream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);</source> | |||
=== deflateEnd === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x5492B3F2 | |||
|} | |||
Used by [[SceCoredump]]. | |||
This function have [[SceSysmem#SceZlibForDriver_A5D70E95|alias]]. | |||
<source lang="C">int deflateEnd(SceZlibStream *strm);</source> | |||
=== SceZlibForDriver_A5D70E95 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xA5D70E95 | |||
|} | |||
<source lang="C">int SceZlibForDriver_A5D70E95(SceZlibStream *strm);</source> | |||
=== deflateInit_ === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x25F28DA7 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_520CAA7F|alias]]. | |||
<source lang="C">int deflateInit_(SceZlibStream *strm, int level, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_520CAA7F === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x520CAA7F | |||
|} | |||
<source lang="C">int SceZlibForDriver_520CAA7F(SceZlibStream *strm, int level, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_05F712FE === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x05F712FE | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_67A085C4|alias]]. | |||
=== SceZlibForDriver_67A085C4 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x67A085C4 | |||
|} | |||
=== SceZlibForDriver_0FA805A3 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x0FA805A3 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_1C344E27|alias]]. | |||
<source lang="C">int SceZlibForDriver_0FA805A3(SceZlibStream *strm, int a2, SceUInt16 a3);</source> | |||
=== SceZlibForDriver_1C344E27 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x1C344E27 | |||
|} | |||
<source lang="C">int SceZlibForDriver_1C344E27(SceZlibStream *strm, int a2, SceUInt16 a3);</source> | |||
=== deflateCopy === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x1E135CC1 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_3252D28C|alias]]. | |||
<source lang="C">int deflateCopy(SceZlibStream *dst, SceZlibStream *src);</source> | |||
=== SceZlibForDriver_3252D28C === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x3252D28C | |||
|} | |||
<source lang="C">int SceZlibForDriver_3252D28C(SceZlibStream *dst, SceZlibStream *src);</source> | |||
=== SceZlibForDriver_35E0108C === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x35E0108C | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_E2DF5A8B|alias]]. | |||
<source lang="C">int SceZlibForDriver_35E0108C(SceZlibStream *strm);</source> | |||
=== SceZlibForDriver_E2DF5A8B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xE2DF5A8B | |||
|} | |||
<source lang="C">int SceZlibForDriver_E2DF5A8B(SceZlibStream *strm);</source> | |||
=== zError === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x3B4466F4 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_3F33F55F|alias]]. | |||
<source lang="C">const char *zError(int err);</source> | |||
=== SceZlibForDriver_3F33F55F === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x3F33F55F | |||
|} | |||
<source lang="C">const char *SceZlibForDriver_3F33F55F(int err);</source> | |||
=== inflateReset === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x408311E8 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_EEC6D267|alias]]. | |||
<source lang="C">int inflateReset(SceZlibStream *strm);</source> | |||
=== SceZlibForDriver_EEC6D267 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xEEC6D267 | |||
|} | |||
<source lang="C">int SceZlibForDriver_EEC6D267(SceZlibStream *strm);</source> | |||
=== SceZlibForDriver_4EE6C080 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x4EE6C080 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_93168F72|alias]]. | |||
=== SceZlibForDriver_93168F72 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x93168F72 | |||
|} | |||
=== SceZlibForDriver_5377643A === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x5377643A | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_7C40CC39|alias]]. | |||
=== SceZlibForDriver_7C40CC39 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x7C40CC39 | |||
|} | |||
=== deflateInit_2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x5A0078D6 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_AD23EEBB|alias]]. | |||
<source lang="C">int deflateInit_2(SceZlibStream *strm, int level, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_AD23EEBB === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xAD23EEBB | |||
|} | |||
<source lang="C">int SceZlibForDriver_AD23EEBB(SceZlibStream *strm, int level, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_6ED5B677 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x6ED5B677 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_7993ADAB|alias]]. | |||
=== SceZlibForDriver_7993ADAB === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x7993ADAB | |||
|} | |||
=== SceZlibForDriver_7048F14C === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x7048F14C | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_E323828B|alias]]. | |||
=== SceZlibForDriver_E323828B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xE323828B | |||
|} | |||
=== SceZlibForDriver_82167CD9 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x82167CD9 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_E94663DD|alias]]. | |||
=== SceZlibForDriver_E94663DD === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xE94663DD | |||
|} | |||
=== SceZlibForDriver_86FF6C8B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x86FF6C8B | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_904AA7AE|alias]]. | |||
=== SceZlibForDriver_904AA7AE === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x904AA7AE | |||
|} | |||
=== SceZlibForDriver_89A13883 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x89A13883 | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_D9BDC778|alias]]. | |||
=== SceZlibForDriver_D9BDC778 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xD9BDC778 | |||
|} | |||
=== SceZlibForDriver_938F34FA === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0x938F34FA | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_BC022D38|alias]]. | |||
=== SceZlibForDriver_BC022D38 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xBC022D38 | |||
|} | |||
=== deflateInit2_ === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xE6EB524C | |||
|} | |||
This function have [[SceSysmem#SceZlibForDriver_F2D8FC1A|alias]]. | |||
<source lang="C">int deflateInit2_(SceZlibStream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);</source> | |||
=== SceZlibForDriver_F2D8FC1A === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.200.010 || 0xF2D8FC1A | |||
|} | |||
<source lang="C">int SceZlibForDriver_F2D8FC1A(SceZlibStream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);</source> | |||
== SceKernelSuspendForDriver == | |||
Used to register handlers for handling suspend/resume related events. | |||
=== sceKernelLockSuspendForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x4DF40893 | |||
|} | |||
This is a guessed name. | |||
Called in [[SceProcessmgr#sceKernelStartProcessForKernel]] and [[SceProcessmgr#sceKernelStartProcessExtForKernel]] just before starting a process. | |||
Called just before NVS write. | |||
<source lang="C">int sceKernelLockSuspendForDriver(SceUInt32 a1);</source> | |||
=== sceKernelUnlockSuspendForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x2BB92967 | |||
|} | |||
This is a guessed name. | |||
Called in [[SceProcessmgr#sceKernelStartProcessForKernel]] and [[SceProcessmgr#sceKernelStartProcessExtForKernel]] just after starting a process. | |||
Called just after NVS write. | |||
<source lang="C">int sceKernelUnlockSuspendForDriver(SceUInt32 a1);</source> | |||
=== sceKernelLockSuspendProcForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.740.011 || 0x254525F8 | |||
|} | |||
This is a guessed name. | |||
Temp name was sceKernelPowerLockForDriver. | |||
Used in [[SceProcessmgr#sceKernelPowerLock]]. | |||
<source lang="C">int sceKernelPowerLockForDriver(SceUInt32 a1);</source> | |||
=== sceKernelUnlockSuspendProcForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.740.011 || 0x230495ED | |||
|} | |||
This is a guessed name. | |||
Temp name was sceKernelPowerUnlockForDriver. | |||
Used in [[SceProcessmgr#sceKernelPowerUnlock]]. | |||
<source lang="C">int sceKernelPowerUnlockForDriver(SceUInt32 a1);</source> | |||
=== SceKernelSuspendForDriver_FE2118BD === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xFE2118BD | |||
|} | |||
=== sceKernelPowerSetIdleCallbackForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xE677B343 | |||
|} | |||
This is guessed name. | |||
=== SceKernelSuspendForDriver_B4B13615 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xB4B13615 | |||
|} | |||
=== SceKernelSuspendForDriver_AEA9440D === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xAEA9440D | |||
|} | |||
=== SceKernelSuspendForDriver_81D9E41C === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x81D9E41C | |||
|} | |||
=== SceKernelSuspendForDriver_6A503956 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x6A503956 | |||
|} | |||
=== SceKernelSuspendForDriver_250ACD90 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x250ACD90 | |||
|} | |||
<source lang="C">int SceKernelSuspendForDriver_250ACD90(const SceKernelSuspendPowerCallback *pPowerCallback);</source> | |||
=== SceKernelSuspendForDriver_0A6CA124 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x0A6CA124 | |||
|} | |||
=== SceKernelSuspendForDriver_0106C0F0 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x0106C0F0 | |||
|} | |||
=== sceKernelRegisterSysEventHandlerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x04C05D10 | |||
|} | |||
Temp name was sceKernelSuspendRegisterCallbackForDriver. | |||
Registers a function for handling suspend/resume. <code>resume</code> is 0 if we are currently suspending and 1 if we are currently resuming. <code>opt</code> is passed from the registration. Registration adds an entry to a linked list and returns the block id for the new entry. | |||
Returns the suspend_handler_id. | |||
<source lang="C"> | |||
typedef int (* SceKernelSysEventHandler)(int resume, int event, void *param, void *argp); | |||
SceUID sceKernelRegisterSysEventHandlerForDriver(const char *name, SceKernelSysEventHandler handler, void *argp); | |||
</source> | |||
=== SceKernelSuspendForDriver_CE7A2207 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xCE7A2207 | |||
|} | |||
Registers a handler for a suspend event. | |||
<source lang="c"> | |||
// idx: ex: 0x15 | |||
// args: can be 0 | |||
SceUID SceKernelSuspendForDriver_CE7A2207(SceUInt idx, void *handler, void *args); | |||
</source> | |||
=== SceKernelSuspendForDriver_105C5752 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0x105C5752 | |||
|} | |||
Registers a handler for a resume event. | |||
<source lang="c"> | |||
// idx: ex: 0x15 | |||
// args: can be 0 | |||
SceUID SceKernelSuspendForDriver_105C5752(SceUInt idx, void *handler, void *args); | |||
</source> | |||
=== SceKernelSuspendForDriver_D4958E6F === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xD4958E6F | |||
|} | |||
Dispatch handler registered by [[#SceKernelSuspendForDriver_CE7A2207]]. | |||
<source lang="c">SceUID SceKernelSuspendForDriver_D4958E6F(void *args);</source> | |||
=== sceKernelUnregisterSysEventHandlerForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xDD61D621 | |||
|} | |||
Call with the id returned from <code>suspend_register_handler</code> to remove the entry from the linked list and free the memory. | |||
<source lang="c">int sceKernelUnregisterSysEventHandlerForDriver(SceUID id);</source> | |||
=== sceKernelSysEventDispatchForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xD4622EA8 | |||
|} | |||
This function goes through the linked list and calls each handler. If <code>ppFailed</code> is set, then the first handler that returns a negative value stops the call chain and returns the block id of the handler that broke the chain. Otherwise, this function invokes each handler and returns 0. | |||
<source lang="C"> | |||
typedef struct _SceKernelSysEventDispatchSuspendParam { | |||
SceSize size; | |||
SceUInt32 unk_0x04; | |||
SceUInt32 unk_0x08; | |||
SceUInt32 unk_0x0C; | |||
void *pSuspendContextBuffer; | |||
SceUInt32 unk_0x14; | |||
} SceKernelSysEventDispatchSuspendParam; | |||
typedef struct _SceKernelSysEventDispatchResumeParam { | |||
SceSize size; | |||
SceUInt32 unk_0x04; | |||
} SceKernelSysEventDispatchResumeParam; | |||
int sceKernelSysEventDispatchForDriver(SceUInt32 resume, SceUInt32 eventid, void *param, void **ppFailed); | |||
</source> | |||
=== sceKernelPowerTickForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990.000-3.740.011 || 0xE0489831 | |||
|} | |||
Cancel specified idle timers to prevent entering in power save processing. | |||
Returns 0 on success. | |||
<source lang="c"> | |||
typedef enum SceKernelPowerTickType { | |||
/** Cancel all timers */ | |||
SCE_KERNEL_POWER_TICK_DEFAULT = 0, | |||
/** Cancel automatic suspension timer */ | |||
SCE_KERNEL_POWER_TICK_DISABLE_AUTO_SUSPEND = 1, | |||
/** Cancel OLED-off timer */ | |||
SCE_KERNEL_POWER_TICK_DISABLE_OLED_OFF = 4, | |||
/** Cancel OLED dimming timer */ | |||
SCE_KERNEL_POWER_TICK_DISABLE_OLED_DIMMING = 6 | |||
} SceKernelPowerTickType; | |||
int sceKernelPowerTickForDriver(int type); | |||
</source> | |||
=== SceKernelSuspendForDriver_1FA2F8F1 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.000.071-3.740.011 || 0x1FA2F8F1 | |||
|} | |||
Calls a power handler. | |||
<source lang="C">int SceKernelSuspendForDriver_1FA2F8F1(int a1, int a2);</source> | |||
=== SceKernelSuspendForDriver_F2B07167 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 2.100.081-3.740.011 || 0xF2B07167 | |||
|} | |||
Registers a global variable used by [[#sceKernelPowerTickForDriver]]. | |||
<source lang="C">int SceKernelSuspendForDriver_F2B07167(int a1);</source> | |||
=== SceKernelSuspendForDriver_B5C58EE8 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 2.100.081-3.740.011 || 0xB5C58EE8 | |||
|} | |||
Registers a global variable used by [[#sceKernelSysEventDispatchForDriver]]. | |||
<source lang="C">int SceKernelSuspendForDriver_B5C58EE8(int a1);</source> | |||
=== SceKernelSuspendForDriver_D6124071 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 2.100.081-3.740.011 || 0xD6124071 | |||
|} | |||
Registers a global variable used by [[#sceKernelSysEventDispatchForDriver]]. | |||
<source lang="C">int SceKernelSuspendForDriver_D6124071(int a1);</source> | |||
=== SceKernelSuspendForDriver_0DE3CC02 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 2.100.081-3.740.011 || 0x0DE3CC02 | |||
|} | |||
Registers a global variable used by [[#SceKernelSuspendForDriver_2BB92967]]. | |||
<source lang="C">int SceKernelSuspendForDriver_0DE3CC02(int a1);</source> | |||
=== SceKernelSuspendForDriver_4E5A3A23 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 2.100.081-3.740.011 || 0x4E5A3A23 | |||
|} | |||
Registers a global variable used by [[#SceKernelSuspendForDriver_4DF40893]]. | |||
<source lang="C">int SceKernelSuspendForDriver_4E5A3A23(int a1);</source> | |||
=== SceKernelSuspendForDriver_C00826AC === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 2.100.081-3.740.011 || 0xC00826AC | |||
|} | |||
Registers a global variable used by [[#SceKernelSuspendForDriver_4DF40893]]. | |||
<source lang="C">int SceKernelSuspendForDriver_C00826AC(int a1);</source> | |||
=== SceKernelSuspendForDriver_8B3F02B8 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 2.100.081-3.740.011 || 0x8B3F02B8 | |||
|} | |||
Registers a global variable used by [[#SceKernelSuspendForDriver_1FA2F8F1]]. | |||
<source lang="C">int SceKernelSuspendForDriver_8B3F02B8(int a1);</source> | |||
== SceQafMgrForDriver == | |||
Provides many device permission checks including running app privilege checks, debugging enabled checks, and so on. | |||
=== SceQafMgrForDriver_41E04800 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x4F20A014 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
=== SceQafMgrForDriver_082A4FC2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x082A4FC2 | |||
|} | |||
Temp name was sceSblQafMgrIsAllowHost0AccessForDriver. A potential name could be sceSblQafMgrIsAllowRemoteLoadForDriver. | |||
Used by [[SceSblFwLoader#sceSblFwLoaderLockForDriver|sceSblFwLoaderLockForDriver]], [[SceKernelModulemgr]], [[SceSysStateMgr]] and [[SceSblPostSsMgr]]. | |||
Used by [[SceSblPostSsMgr#sceSblSpsfoMgrOpenForDriver|sceSblSpsfoMgrOpenForDriver]]. | |||
When this flag is set, it allows for example to load some files from host0:, for example SPSFO and psp2config.skprx. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xE) & 1) | |||
int SceQafMgrForDriver_082A4FC2(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowGameDebugForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x694D1096 | |||
|} | |||
This is a guessed name. | |||
Only used by [[SceSblACMgr]]. | |||
Might be something like sceSblQafMgrIsAllowUserAppDebug. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xB) & 4) | |||
int sceSblQafMgrIsAllowGameDebugForDriver(void); | |||
</source> | |||
=== SceQafMgrForDriver_0E588747 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x0E588747 | |||
|} | |||
Only used by [[SceRegistryMgr]]. | |||
Returns true if the PSVita is an "Internal system". | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xF) & 1) | |||
int SceQafMgrForDriver_0E588747(void); | |||
</source> | |||
=== SceSblQafMgrForDriver_4BC1883F === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x4BC1883F | |||
|} | |||
Like a sceSblQafMgrIsAllowPSPEmuDevelopmentForDriver. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0x6) & 2) | |||
int SceSblQafMgrForDriver_4BC1883F(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowSystemAppDebugForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xCAD47130 | |||
|} | |||
Used by [[SceDeci4pDtracep]] and [[SceSblACMgr]]. | |||
If it returns false, syscalls debug trace printf is disabled. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xD) & 2) | |||
int sceSblQafMgrIsAllowSystemAppDebugForDriver(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowKernelDebugForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x382C71E8 | |||
|} | |||
Used by [[SceKernelModulemgr]], [[SceExcpmgr]], [[SceCrashDump]], [[SceHdmi]], [[SceKernelBlueScreenOfDeath]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xD) & 1) | |||
int sceSblQafMgrIsAllowKernelDebugForDriver(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowQAUpdateForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x3CB55F98 | |||
|} | |||
Only used by [[SceSblUpdateMgr]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xF) & 1) | |||
int sceSblQafMgrIsAllowQAUpdateForDriver(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowForceUpdateForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x8C423C18 | |||
|} | |||
Only used by [[SceSblUpdateMgr]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xF) & 2) | |||
int sceSblQafMgrIsAllowForceUpdateForDriver(void); | |||
</source> | |||
=== SceQafMgrForDriver_52B4E164 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x52B4E164 | |||
|} | |||
Only used by [[SceWlanBt]] and [[SceEnumWakeUp]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xD) & 1) | |||
int SceQafMgrForDriver_52B4E164(void); | |||
</source> | |||
=== SceQafMgrForDriver_883E9465 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x883E9465 | |||
|} | |||
Temp name was sceSblQafMgrIsAllowDecryptedBootConfigLoadForDriver. | |||
Used by [[SceSysStateMgr]] only. | |||
Allows loading psp2config.skprx as plaintext format. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xE) & 1) | |||
int SceQafMgrForDriver_883E9465(void); | |||
</source> | |||
=== SceQafMgrForDriver_B9770A13 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xB9770A13 | |||
|} | |||
Needed to be enabled to work with DIPSW 251 (Enable "dummytty0:"). Needed by [[SceSysStateMgr]] to allow loading <code>host0:psp2config.rpath</code>. | |||
Used by [[SceKernelModulemgr]] and [[SceSysmodule]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xD) & 2) | |||
int SceQafMgrForDriver_B9770A13(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowRemotePlayDebugForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xBFD5E463 | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xC) & 2) | |||
int sceSblQafMgrIsAllowRemotePlayDebugForDriver(void); | |||
</source> | |||
=== SceQafMgrForDriver_E573F124 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xE573F124 | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0x0) & 0x10) | |||
int SceQafMgrForDriver_E573F124(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowMarlinTestForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.03-3.60 || 0x10283EB8 | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xD) & 2) | |||
int sceSblQafMgrIsAllowMarlinTestForDriver(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowNearTestForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.03-3.60 || 0x9644171D | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0x6) & 2) | |||
int sceSblQafMgrIsAllowNearTestForDriver(void); | |||
</source> | |||
=== SceQafMgrForDriver_AE033133 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xAE033133 | |||
|} | |||
Only used by [[SceNpDrm]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0x0) & 0x10) | |||
int SceQafMgrForDriver_AE033133(void); | |||
</source> | |||
=== SceQafMgrForDriver_DEC6DF4E === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xDEC6DF4E | |||
|} | |||
Only used by [[SceNpDrm]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xF) & 1) | |||
int SceQafMgrForDriver_DEC6DF4E(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowPSPEmuShowQAInfoForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xB7B195B2 | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xF) & 1) | |||
int sceSblQafMgrIsAllowPSPEmuShowQAInfoForDriver(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowLoadMagicGateForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x36E5312E | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xB) & 0x10) | |||
int sceSblQafMgrIsAllowLoadMagicGateForDriver(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowDtcpIpResetForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE8B8F31F | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0x6) & 2) | |||
int sceSblQafMgrIsAllowDtcpIpResetForDriver(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowControlIduAutoUpdateForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xF8BFEE48 | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0x6) & 2) | |||
int sceSblQafMgrIsAllowControlIduAutoUpdateForDriver(void); | |||
</source> | |||
=== sceSblQafMgrIsAllowKeepCoreFileForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xC1EA75C8 | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xF) & 1) | |||
int sceSblQafMgrIsAllowKeepCoreFileForDriver(void); | |||
</source> | |||
=== SceQafMgrForDriver_70A67A4B === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x70A67A4B | |||
|} | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xF) & 1) | |||
int SceQafMgrForDriver_70A67A4B(void); | |||
</source> | |||
=== SceQafMgrForDriver_41E04800 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x41E04800 | |||
|} | |||
Only used by [[SceAppMgr]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xB) & 4) | |||
int SceQafMgrForDriver_41E04800(void); | |||
</source> | |||
=== SceQafMgrForDriver_7B14DC45 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x7B14DC45 | |||
|} | |||
Only used by [[SceAppMgr]]. | |||
<source lang="C"> | |||
// (*(uint8_t *)(qaf + 0xD) & 2) | |||
int SceQafMgrForDriver_7B14DC45(void); | |||
</source> | |||
== ScePmMgrForDriver == | |||
=== scePmMgrGetProductModeForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x2AC815A2 | |||
|} | |||
Returns 0 on success, 0x800f0a29 on failure. | |||
Gets kbl_param using [[SceSysmem#sceKernelSysrootGetKblParamForKernel|sceKernelSysrootGetKblParamForKernel]]. | |||
result = ((int *)(kbl_param->boot_type_indicator_1) >> 2) & 1; // manufacturing mode flag | |||
<source lang="C">int scePmMgrGetProductModeForDriver(char* result);</source> | |||
=== scePmMgrIsExternalBootModeForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xBD1F193B | |||
|} | |||
Gets kbl_param using [[SceSysmem#sceKernelSysrootGetKblParamForKernel|sceKernelSysrootGetKblParamForKernel]]. | |||
return (int *)(kbl_param->boot_type_indicator_1) & 1; // external boot mode flag | |||
<source lang="C">int scePmMgrIsExternalBootModeForDriver(void);</source> | |||
== SceSblAIMgrForDriver == | |||
=== sceSblAIMgrGetSMIForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x47D9CF13 | |||
|} | |||
SMI means Service / Manufacturing Information. | |||
SMI is read from SceKblParam->min_fw_version. | |||
<source lang="C">int sceSblAIMgrGetSMIForDriver(SceUInt32 *pSMI);</source> | |||
=== sceSblAIMgrGetProductCodeForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x14345161 | |||
|} | |||
Temp name was sceSblAIMgrGetTargetIdForDriver. | |||
Product Code = Target Id | |||
<source lang="C">int sceSblAIMgrGetProductCodeForDriver(void);</source> | |||
=== sceSblAIMgrGetProductSubCodeForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xB33CEC8F | |||
|} | |||
Product Sub Code = model revision | |||
<source lang="C">int sceSblAIMgrGetProductSubCodeForDriver(void);</source> | |||
=== sceSblAIMgrIsTestForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x3B638885 | |||
|} | |||
TEST = Internal Test Unit | |||
Returns true if PsCode Product Code == 0x100. | |||
<source lang="C">int sceSblAIMgrIsTestForDriver(void);</source> | |||
=== sceSblAIMgrIsToolForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x274663A0 | |||
|} | |||
TOOL = DevKit | |||
Returns true if PsCode Product Code == 0x101. | |||
<source lang="C">int sceSblAIMgrIsToolForDriver(void);</source> | |||
=== sceSblAIMgrIsDEXForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xF4B98F66 | |||
|} | |||
Returns true if PsCode Product Code == 0x102. | |||
<source lang="C">int sceSblAIMgrIsDEXForDriver(void);</source> | |||
=== sceSblAIMgrIsCEXForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xD78B04A2 | |||
|} | |||
Returns true if PsCode Product Code 0x103-0x111 AND sceSblAIMgrIsSpecialCEXForDriver returns false. | |||
<source lang="C">int sceSblAIMgrIsCEXForDriver(void);</source> | |||
=== sceSblAIMgrIsVITAForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0x4273B97B | |||
|} | |||
Returns sceSblAIMgrIsGenuineVITAForDriver. If the console is a PS TV, it returns false. | |||
<source lang="C">int sceSblAIMgrIsVITAForDriver(void);</source> | |||
=== sceSblAIMgrIsDolceForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931.010-2.060.011 || not present | |||
|- | |||
| 2.100.081-3.740.011 || 0x71608CA3 | |||
|} | |||
Returns sceSblAIMgrIsGenuineDolceForDriver if returns true else returns sceKernelCheckDipswForDriver(0x98). | |||
<source lang="C">int sceSblAIMgrIsDolceForDriver(void);</source> | |||
=== sceSblAIMgrIsGenuineVITAForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x963CA644 | |||
|} | |||
Returns true if: | |||
*PsCode Product Code <= 0x111 AND sceSblAIMgrIsGenuineDolceForDriver returns false | |||
*sceSblAIMgrIsSpecialCEXForDriver returns true AND HardwareInfo != 0x700000 != 0x720000 != 0x510000 | |||
<source lang="C">int sceSblAIMgrIsGenuineVITAForDriver(void);</source> | |||
=== sceSblAIMgrIsGenuineDolceForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xC6E83F34 | |||
|} | |||
<source lang="C">int sceSblAIMgrIsGenuineDolceForDriver(void);</source> | |||
=== sceSblAIMgrIsDiagForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x6D5A3FC9 | |||
|} | |||
Temp name was sceSblAIMgrIsSpecialCEXForDriver, sceSblAIMgrIsCEXJpFatForDriver. | |||
Returns true if PsCode Product Code == 0x103 (Japan), PsCode Product Sub Code == 0x10 (FAT chassis) and PsCode Factory Code == 0x24 (SCE labs). | |||
<source lang="C">int sceSblAIMgrIsDiagForDriver(void);</source> | |||
=== sceSblAIMgrIsToolDVT1ForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xBB9D146B | |||
|} | |||
Returns true if PsCode Product Code == 0x101 and PsCode Product Sub Code == 3. | |||
<source lang="C">int sceSblAIMgrIsToolDVT1ForDriver(void);</source> | |||
=== sceSblAIMgrIsToolRev4ForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x37A79140 | |||
|} | |||
Returns true if PsCode Product Code == 0x101 and PsCode Product Sub Code == 4. | |||
<source lang="C">int sceSblAIMgrIsToolRev4ForDriver(void);</source> | |||
=== sceSblAIMgrIsToolDVT2ForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE5E47FF7 | |||
|} | |||
Returns true if PsCode Product Code == 0x101 and PsCode Product Sub Code == 5. | |||
<source lang="C">int sceSblAIMgrIsToolDVT2ForDriver(void);</source> | |||
=== sceSblAIMgrIsCEXPrototypeRev2ForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xFF5784B9 | |||
|} | |||
Returns true if PsCode Product Code == 0x103 and PsCode Product Sub Code == 2. | |||
<source lang="C">int sceSblAIMgrIsCEXPrototypeRev2ForDriver(void);</source> | |||
=== sceSblAIMgrIsCEXPrototypeRev7ForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x05F79D4A | |||
|} | |||
Returns true if PsCode Product Code == 0x103 and PsCode Product Sub Code == 7. | |||
<source lang="C">int sceSblAIMgrIsCEXPrototypeRev7ForDriver(void);</source> | |||
== SceProcEventForDriver == | |||
=== sceKernelUnregisterProcEventHandlerForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x3DED57CC | |||
|} | |||
Temp name was sceProcEventDeleteUidForDriver. | |||
Wrapper to [[SceSysmem#sceGUIDCloseForDriver|sceGUIDCloseForDriver]]. | |||
<source lang="C">int sceKernelUnregisterProcEventHandlerForDriver(int uid);</source> | |||
=== sceKernelRegisterProcEventHandlerForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x2A43912D | |||
|} | |||
Temp name was sceProcEventCreateEventForDriver. | |||
Uses [[SceSysmem#sceKernelCreateEventForDriver|sceKernelCreateEventForDriver]]. | |||
Returns uid. | |||
<source lang="C"> | |||
typedef struct SceProcEventInvokeParam1 { | |||
SceSize size; // SceProcEventInvokeParam1 struct size : 0x10 | |||
int unk_0x04; | |||
int unk_0x08; | |||
int unk_0x0C; | |||
} SceProcEventInvokeParam1; | |||
typedef struct SceProcEventInvokeParam2 { | |||
SceSize size; // SceProcEventInvokeParam2 struct size : 0x14 | |||
SceUID pid; | |||
int unk_0x08; | |||
int unk_0x0C; | |||
int unk_0x10; | |||
} SceProcEventInvokeParam2; | |||
typedef struct SceProcEventHandler { | |||
SceSize size; // SceProcEventHandler struct size : 0x1C | |||
int (* create)(SceUID pid, SceProcEventInvokeParam2 *pParam, void *pCommon); | |||
int (* exit)(SceUID pid, SceProcEventInvokeParam1 *pParam, void *pCommon); // current process exit | |||
int (* kill)(SceUID pid, SceProcEventInvokeParam1 *pParam, void *pCommon); // by SceShell | |||
int (* suspend)(SceUID pid, int phase, SceProcEventInvokeParam1 *pParam, void *pCommon); | |||
int (* resume)(SceUID pid, int phase, SceProcEventInvokeParam1 *pParam, void *pCommon); | |||
int (* event_notify)(int evtype, int phase, SceProcEventInvokeParam2 *pParam, void *pCommon); //for arbitrary event types | |||
} SceProcEventHandler; | |||
/*** | |||
* Registers a process event handler | |||
* | |||
* @param[in] name - Name of the event handler | |||
* @param[in] pHandler - Pointer to the handler structure | |||
* @param[in] pCommon - Arbitrary data passed to handlers | |||
* | |||
* @return Positive on success, < 0 on error. | |||
* @note Event handler pointers in pHandler may be NULL. | |||
*/ | |||
SceUID sceKernelRegisterProcEventHandlerForDriver(const char *name, SceProcEventHandler *pHandler, void *pCommon); | |||
</source> | |||
=== sceKernelInvokeProcEventHandlerForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x414CC813 | |||
|} | |||
Walks the list of registered process event handlers and invokes the ones related to the signaled event. | |||
<source lang="C"> | |||
//Event type constants (for evtype parameter) | |||
#define CREATE_EVENT 1 //<! Call create() handlers | |||
#define EXIT_EVENT 2 //<! Call exit() handlers | |||
#define KILL_EVENT 3 //<! Call kill() handlers | |||
#define SUSPEND_EVENT 4 //<! Call suspend() handlers | |||
#define RESUME_EVENT 5 //<! Call resume() handlers | |||
//All other values result in event_notify() handlers being called | |||
/*** | |||
* Invoke process event handlers | |||
* | |||
* @param[in] process - PID of the process for which event happened | |||
* @param[in] evtype - Event type | |||
* @param[in] phase - Unknown | |||
* @param[in] pParam - Pointer to handler parameter | |||
* @param[out] pFailer - Pointer to a variable that receives UID of a failing handler. May be NULL. | |||
* @param[in] stop - GUID of a handler that should stop execution | |||
* | |||
* @return Positive number on success, < 0 on error. | |||
* Corresponds to the last executed handler's return value (or SCE_OK if none were executed). | |||
* | |||
* @note process, pFailer and stop are unofficial argument names | |||
* | |||
* Invocation is performed by walking the list in order (from first to last registered handler): | |||
* - If the GUID of the handler matches the "stop" parameter, the handle is NOT executed and the function returns. | |||
* This can be used to ensure only process event handlers registered before a specific one are executed. | |||
* - If the handler has no function pointer corresponding to the evtype, execution continues with the next handler. | |||
* - If the handler has a function pointer corresponding to the evtype, the function is called with the appropriate | |||
* arguments. If the return value is positive, execution continues with the next handler. If the return value is | |||
* negative, the handler has failed, the GUID of the failing handler is saved in *pFailer if non-NULL and the function | |||
* returns directly. | |||
*/ | |||
int sceKernelInvokeProcEventHandlerForDriver(ScePID pid, int evtype, int phase, void* pParam, SceUID *pFailer, SceUID stop); | |||
</source> | |||
== SceDebugLed == | |||
=== sceKernelGetGPI === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x14F582CF | |||
|} | |||
<source lang="C">int sceKernelGetGPI(void);</source> | |||
=== sceKernelSetGPO === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x78E702D3 | |||
|} | |||
<source lang="C"> | |||
/** | |||
* @brief Output to LED | |||
* | |||
* This sets the content displayed on the DevKit LED. | |||
* @param[in] uiBitd Bit pattern. only low-order 8 bits are valid. | |||
*/ | |||
int sceKernelSetGPO(SceUInt32 uiBits); | |||
</source> | |||
=== call_cb74 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x2B6EABAD | |||
|} | |||
<source lang="C">void call_cb74(int a1, int a2, int a3, int a4);</source> | |||
=== call_cb78 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x0E6B9890 | |||
|} | |||
<source lang="C">void call_cb78(int a1, int a2, int a3, int a4);</source> | |||
== SceDebugLedForDriver == | |||
GPI stands for General Purpose Input, and GPO stands for General Purpose Output. | |||
=== sceKernelGetGPIForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x14F582CF | |||
|} | |||
Only SceDebugLedForDriver function used by SceCoredump. | |||
<source lang="C">int sceKernelGetGPIForDriver(void);</source> | |||
=== sceKernelSetGPIForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x51C5325A | |||
|} | |||
<source lang="C">int sceKernelSetGPIForDriver(int value);</source> | |||
=== sceKernelGetGPOForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x3BB289F7 | |||
|} | |||
<source lang="C">int sceKernelGetGPOForDriver(void);</source> | |||
=== sceKernelSetGPOForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x78E702D3 | |||
|} | |||
<source lang="C">int sceKernelSetGPOForDriver(SceUInt32 uiBits);</source> | |||
=== sceKernelSetGPOMaskForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x098473B0 | |||
|} | |||
<source lang="C">sceKernelSetGPOMaskForDriver(int a1, int a2);</source> | |||
=== call_cb74 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x2B6EABAD | |||
|} | |||
<source lang="C">void call_cb74(int a1, int a2, int a3, int a4);</source> | |||
=== set_cb74 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x24173819 | |||
|} | |||
<source lang="C">int set_cb74(void *cb);</source> | |||
=== call_cb78 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x0E6B9890 | |||
|} | |||
<source lang="C">void call_cb78(int a1, int a2, int a3, int a4);</source> | |||
=== set_cb78 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xF62154E7 | |||
|} | |||
<source lang="C">int set_cb78(void *cb);</source> | |||
== SceDebugForKernel == | |||
=== sceKernelDebugModuleStart2ForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xF624CE22 | |||
|} | |||
<source lang="C">int sceKernelDebugModuleStart2ForKernel(void);</source> | |||
=== sceKernelRegisterKprintfHandlerForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x10067B7B | |||
|} | |||
Temp name was sceDebugSetHandlersForKernel. | |||
<source lang="c">int sceKernelRegisterKprintfHandlerForKernel(int (* handler)(int unk, const char *format, va_list args), void *argp);</source> | |||
=== sceKernelGetDebugPutcharHandlerForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE783518C | |||
|} | |||
This is guessed name. | |||
Temp name was sceDebugGetPutcharHandlerForKernel, sceKernelGetDebugPutcharForKernel. | |||
Returns pointer to current debug putchar handler. | |||
<source lang="c">void *sceKernelGetDebugPutcharHandlerForKernel(void);</source> | |||
=== sceKernelRegisterDebugPutcharHandlerForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xE6115A72 | |||
|} | |||
Temp name was sceDebugRegisterPutcharHandlerForKernel, sceKernelRegisterDebugPutcharForKernel. | |||
Set debug print char handler. | |||
<source lang="c">int sceKernelRegisterDebugPutcharHandlerForKernel(int (* handler)(void *args, char c), void *args);</source> | |||
=== sceKernelDebugPutcharForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x82D2EDCE | |||
|} | |||
Temp name was sceDebugPutcharForKernel. | |||
Print character to uart. | |||
Return 1. | |||
<source lang="c">int sceKernelDebugPutcharForKernel(char c);</source> | |||
=== sceKernelTtyPutcharForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x254A4997 | |||
|} | |||
This is a guessed name. | |||
Prints a character to the 0x1000-byte buffer returned by [[SceSysmem#sceKernelGetTtyInfoForDriver]]. | |||
On success, returns printed size (always 1). | |||
<source lang="c">int sceKernelTtyPutcharForKernel(char c);</source> | |||
=== sceKernelStoppedForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || 0xF1F0C365 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="C">int sceKernelStoppedForKernel(const char *pFile, const char *pFunc, int line);</source> | |||
=== panic_on_kernel_exception === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 3.60 || 0x082B8D6A | |||
|- | |||
| 3.65 || 0xCCABDD98 | |||
|} | |||
Prints information about a Kernel Exception, ?and certainly calls [[SceCoredump]]?, then calls SceSysrootForKernel_0DF574A9 in an infinite loop. | |||
This function doesn't return. | |||
See [[SceExcpmgr#sceKernelRegisterExceptionHandlerForKernel]] for the meaning of excpcode. | |||
<source lang="C"> | |||
// excp_name can be: | |||
// UNDEF - Undefined instruction | |||
// PABT - Prefetch Abort | |||
// DABT - Data Abort | |||
// NEST - Nested? Same excpcode as UNDEF | |||
void panic_on_kernel_exception(SceKernelDebugInfo *dbginfo, SceExcpmgrExceptionContext *excp_ctx, int excpcode, const char *excp_name); | |||
</source> | |||
=== register_unk_handler === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 3.60 || 0x66D82EC8 | |||
|} | |||
used by [[SceDeci4pSDbgp]]. | |||
handler definition: | |||
<source lang="C">handler(int some_level, void *unk, const void *buf);</source> | |||
<source lang="C">int register_unk_handler(void *handler);</source> | |||
=== sceKernelEnableCrashDumpForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931.010-1.81 || not present | |||
|- | |||
| 2.000.081-3.610.011 || 0xF857CDD6 | |||
|- | |||
| 3.630.011-3.740.011 || 0xA465A31A | |||
|} | |||
This is a guessed name. Temp name was sceDebugDisableInfoDumpForKernel, sceKernelEnableInfoDumpForKernel. | |||
Returns previous crash dump state. | |||
<source lang="C">int sceKernelEnableCrashDumpForKernel(SceBool enable);</source> | |||
=== register_log_buffer === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x4703ECC4 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="C">int register_log_buffer(const void *log_buffer_addr, SceSize log_buffer_size);</source> | |||
=== start_logging === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x4C377B11 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
Returns 1 if logging has been started successfully, -1 else. | |||
<source lang="C">int start_logging(int state);</source> | |||
=== stop_logging === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x604F56AE | |||
|- | |||
| 3.60 || not present | |||
|} | |||
If state is not zero, stops logging and return 1, else does nothing and return 0. | |||
Returns 1 if logging has been stopped, 0 else. | |||
<source lang="C">int stop_logging(void);</source> | |||
=== refresh_logs === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x04A3046D | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="C">int refresh_logs(void);</source> | |||
=== _sceKernelPrintDebugLogForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0xEFDE973B | |||
|- | |||
| 3.60 || not present | |||
|} | |||
If a2 is not zero, the current log buffer address is updated, else it is unchanged. | |||
maxNum is guessed to be either the number of entries or the index of the chosen entry. Entry size is 0x40 bytes. | |||
Uses sceKernelPrintfLevelForDriver to print. | |||
<source lang="C">int _sceKernelPrintDebugLogForKernel(int a1, int a2, int maxNum);</source> | |||
=== sceKernelPrintDebugLogForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0xBD5D0BB0 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
Calls _sceKernelPrintDebugLogForKernel with maxNum = (log_buf_end - log_buf_start) / 0x40. | |||
<source lang="C">int sceKernelPrintDebugLogForKernel(int a1, int a2);</source> | |||
=== print_with_log_buffer === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x904FF72D | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="C">int print_with_log_buffer(const char *string, SceSize maxlen);</source> | |||
=== sceKernelPrintfCore0ForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x2D7380FE | |||
|- | |||
| 3.60 || not present | |||
|} | |||
Same as sceKernelPrintfForDriver but only prints if CPU ID is 0. | |||
<source lang="C">int sceKernelPrintfCore0ForKernel(const char *fmt, ...);</source> | |||
=== sceKernelPrintfLevelCore0ForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x14241F51 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
Same as sceKernelPrintfLevelForDriver but only prints if CPU ID is 0. | |||
<source lang="C">int sceKernelPrintfLevelCore0ForKernel(int level, const char *fmt, ...);</source> | |||
=== sceKernelSetDebugLevelForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xBE2C05A2 | |||
|} | |||
Temp name was sceKernelSetMinimumLogLevelForKernel. | |||
<source lang="C">SceUInt32 sceKernelSetDebugLevelForKernel(SceUInt32 dbgLevel);</source> | |||
=== sceKernelGetDebugLevelForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0xDA6B6770 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
Temp name was sceKernelGetMinimumLogLevelForKernel. | |||
Returns the dbgLevel set by sceKernelSetDebugLevelForKernel. | |||
<source lang="C">SceUInt32 sceKernelGetDebugLevelForKernel(void);</source> | |||
=== sceKernelSetAssertLevelForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xCE9060F1 | |||
|} | |||
Temp name was sceKernelSetMinimumAssertionLevelForKernel. | |||
Overrides in memory g_assertLevel set by DIP switches 201 and 202. | |||
Returns the previous assert level. | |||
<source lang="C">SceInt32 sceKernelSetAssertLevelForKernel(SceUInt32 assertLevel);</source> | |||
=== sceKernelGetAssertLevelForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x374B7868 | |||
|- | |||
| 0.990-3.60 || not present. Present in [[#SceDebugForDriver]]. | |||
|} | |||
Temp name was sceKernelGetMinimumAssertionLevelForKernel. | |||
Returns g_assertLevel from memory. | |||
<source lang="C">SceInt32 sceKernelGetAssertLevelForKernel(void);</source> | |||
=== SceDebugForKernel_BEF921A2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 3.60-3.61 || 0xBEF921A2 | |||
|- | |||
| 3.63 || 0x5D6F0CFC | |||
|} | |||
<source lang="C"> | |||
// buf size is 0x1000 bytes | |||
// buf_400 size is 0x400 bytes | |||
SceSSize SceDebugForKernel_BEF921A2(void *dst, int cpuId, SceUInt64 time, SceKernelDebugInfo *dbginfo, const void *excp_info_buf_0x400, int excpcode); | |||
</source> | |||
=== add_entry === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || 0x1208240D | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="C"> | |||
// ex: add_entry(0xA1, in_lr, 3, name); in SceSysmem | |||
// ex: add_entry(0xAB, in_lr, 1, uid); in SceSysmem | |||
// ex: add_entry(0xBB, in_lr, 0, param_4); in SceProcessmgr | |||
int add_entry(SceSize maxlen, int a2, int a3, void *log_buffer_start); | |||
</source> | |||
=== add_entry2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x061A4657 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
<source lang="C">int add_entry2(int a1, const char *msg, void *log_buffer_start, int a4);</source> | |||
=== sceDebugRegisterBacktraceInternalForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.610.011 || 0xEFF9962B | |||
|- | |||
| 3.630.011-3.740.011 || 0x91E7D24F | |||
|} | |||
This is a guessed name. | |||
Registers a callback for [[SceKernelModulemgr#sceKernelBacktraceInternalForDriver]]. | |||
If callback runs successfully (returns >= 0), value of pNumReturn is used as third argument of PrintBacktrace, else PrintBacktrace is not called at all. | |||
<source lang="C">int sceDebugRegisterBacktraceInternalForKernel(int (* callback)(SceUID threadId, SceKernelCallFrame *pCallFrameBuffer, SceSize numBytesBuffer, SceUInt32 *pNumReturn, SceInt32 mode));</source> | |||
=== sceDebugRegisterPrintBacktraceForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xB5943011 | |||
|} | |||
This is a guessed name. | |||
Registers a callback for [[SceKernelModulemgr#sceKernelPrintBacktraceForDriver]]. | |||
<source lang="C">int sceDebugRegisterPrintBacktraceForKernel(int (* callback)(SceUID processId, const SceKernelCallFrame *pCallFrame, SceUInt32 numFrames));</source> | |||
=== sceKernelPrintSyscallFrameForKernel === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x25E31E18 | |||
|- | |||
| 3.65 || 0xBCC8D0B2 | |||
|} | |||
<source lang="C"> | |||
// if pSyscallFrame is NULL, it will use the current syscall frame | |||
// pResult is a pointer to a 0x10 bytes buffer and may be NULL | |||
void sceKernelPrintSyscallFrameForKernel(SceUID pid, SceSyscallFrame *pSyscallFrame, SceUInt32 *pResult); | |||
</source> | |||
=== SceDebugForKernel_F1F861CF === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 2.00-3.60 || 0xF1F861CF | |||
|} | |||
Registers a callback that is called when a crash occur. | |||
Used by [[SceKernelBlueScreenOfDeath]]. | |||
<source lang="C">int SceDebugForKernel_F1F861CF(void *cb);</source> | |||
=== SceDebugForKernel_1526DD83 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.20 || 0x1526DD83 | |||
|} | |||
Register [[SceSysmem#sceEventLogPutForDriver|sceEventLogPutForDriver]] internal callback. | |||
== SceDebugForDriver == | |||
If AllowKernelDebug QA flag is not set, calls to functions with non-zero SceKernelDebugLevel are ignored. | |||
=== sceKernelPrintfForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x391B74B7 | |||
|} | |||
Temp name was sceDebugPrintfForDriver. | |||
<source lang="C">int sceKernelPrintfForDriver(const char *fmt, ...);</source> | |||
=== sceKernelVprintfForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x411C0733 | |||
|} | |||
<source lang="C">int sceKernelVprintfForDriver(const char *fmt, va_list arg);</source> | |||
=== sceKernelPrintfLevelForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x1A3F2AA4 | |||
|} | |||
<source lang="C">int sceKernelPrintfLevelForDriver(SceUInt32 level, const char *fmt, ...);</source> | |||
=== sceKernelVprintfLevelForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x611A158B | |||
|} | |||
<source lang="C">int sceKernelVprintfLevelForDriver(SceUInt32 level, const char *fmt, va_list arg);</source> | |||
=== sceKernelPrintfLevelWithInfoForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0xD9703808 | |||
|} | |||
This is a guessed name. | |||
Temp name was sceKernelPrintfLevelWithCtxForDriver. | |||
<source lang="C">int sceKernelPrintfLevelWithInfoForDriver(SceUInt32 level, int flags, const SceKernelDebugInfo *dbginfo, const char *fmt, ...);</source> | |||
=== sceKernelPrintfWithInfoForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x02B04343 | |||
|} | |||
This is a guessed name. | |||
Temp name was sceDebugPrintf2ForDriver, sceKernelVprintfLevelWithCtxForDriver. | |||
<source lang="C">int sceKernelPrintfWithInfoForDriver(SceUInt32 flags, const SceKernelDebugInfo *dbginfo, const char *fmt, ...);</source> | |||
=== sceKernelAssertForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x35A35322 | |||
|} | |||
Temp name was sceDebugPrintKernelAssertionForDriver. | |||
Condition 0 can trigger "kernel stopped". | |||
<source lang="C"> | |||
// 0.931-0.990: | |||
// addr is maybe not an argument but the stack pointer got within the function | |||
int sceKernelAssertForDriver(SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr); | |||
// 3.60: | |||
int sceKernelAssertForDriver(SceBool condition, const SceKernelDebugInfo *dbginfo, const void *addr); | |||
</source> | |||
=== sceKernelAssertLevelForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xFD753E7A | |||
|} | |||
<source lang="C"> | |||
// 0.931-0.990: | |||
int sceKernelAssertLevelForDriver(int level, SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr); | |||
// 3.60: | |||
int sceKernelAssertLevelForDriver(int level, SceBool condition, const SceKernelDebugInfo *dbginfo, const void *addr); | |||
</source> | |||
=== sceKernelPrintfAssertLevelForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 0.990-3.60 || 0x821A2D59 | |||
|} | |||
This is a guessed name. | |||
Temp name was sceDebugPrintfKernelAssertionForDriver, sceKernelVprintfAssertLevelForDriver. | |||
<source lang="C"> | |||
// 0.990: | |||
int sceKernelPrintfAssertLevelForDriver(SceUInt32 level, SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr, const char *fmt, va_list arg); | |||
// 3.50-3.60: | |||
int sceKernelPrintfAssertLevelForDriver(SceUInt32 level, SceBool condition, const SceKernelDebugInfo *dbginfo, const void *lr, const char *fmt, ...); | |||
</source> | |||
=== sceKernelGetAssertLevelForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present. Present in [[#SceDebugForKernel]]. | |||
|- | |||
| 0.990-3.60 || 0x374B7868 | |||
|} | |||
Temp name was sceKernelGetMinimumAssertionLevelForDriver. | |||
Returns g_assertLevel from memory. | |||
<source lang="C">SceInt32 sceKernelGetAssertLevelForDriver(void);</source> | |||
=== sceKernelPanicForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x391B5B74 | |||
|} | |||
Temp name was sceDebugPrintKernelPanicForDriver. | |||
<source lang="C">int sceKernelPanicForDriver(const SceKernelDebugInfo *dbginfo, const void *addr);</source> | |||
=== sceKernelPrintfPanicForDriver === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x00CCE39C | |||
|} | |||
<source lang="C">void sceKernelPrintfPanicForDriver(const SceKernelDebugInfo *dbginfo, const void *addr, const char *fmt, ...);</source> | |||
=== sceKernelGetDebugTailLogForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x62466B0A | |||
|} | |||
Temp name was sceKernelGetTtyInfoForDriver. | |||
Gets tty tail log. | |||
<source lang="C"> | |||
// max bufSize is 0x1000 | |||
int sceKernelGetDebugTailLogForDriver(void *pBuf, SceSize bufSize); | |||
</source> | |||
=== _sceEventLogPutForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x95B38C6C | |||
|} | |||
Derived from [[SceVshBridge#_vshEventLogPut]]. | |||
Calls [[SceSysmem#sceEventLogPutForDriver]] with KERNEL PID and [[SceSysmem#SceSysrootForKernel_D441DC34]] return value as second argument. | |||
<source lang="C"> | |||
// id: 10001 (SceProcessmgr), 20001 (SceWlanBt) | |||
// index: 1, 2, 3, 4, 5 (SceProcessmgr), 1, 2, 3, 4 (SceWlanBt) | |||
// a3: 0 (SceProcessmgr, SceWlanBt) | |||
// bufSize: 0x1C (SceProcessmgr), 4 (SceWlanBt) | |||
// max bufSize is 0x80 | |||
int _sceEventLogPutForDriver(int id, int index, int a3, void *pBuf, SceSize bufSize); | |||
</source> | |||
=== sceEventLogPutForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x912CF2BA | |||
|} | |||
This is a guessed name. | |||
<source lang="C"> | |||
// max bufSize is 0x80 | |||
int sceEventLogPutForDriver(SceUInt32 pid, int a2, int id, int index, int a5, void *pBuf, SceSize bufSize); | |||
</source> | |||
=== sceKernelGetEventLogForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0xCC5365D3 | |||
|} | |||
Temp name was sceEventLogGetInfoForDriver. | |||
Copy by blocks of 0x30 bytes (or maybe 0xC0 bytes). | |||
<source lang="C"> | |||
// max bufSize is 0xC00 (0x40 blocks of size 0x30) | |||
int sceKernelGetEventLogForDriver(SceKernelDebugEventLog *pBuf, SceSize bufSize, SceSize *pReadBlocks); | |||
</source> | |||
== SceSysmemForTZS == | |||
=== sceKernelProcModeVAtoPAForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x119B9547 | |||
|- | |||
| 0.990-3.73 || not present | |||
|} | |||
<source lang="C">int sceKernelProcModeVAtoPAForTZS(SceUID pid, uint32_t mode, void *pVA, void **pPA);</source> | |||
=== sceKernelAllocPartitionStackMemBlockForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x69022B7F | |||
|- | |||
| 0.990-3.73 || not present | |||
|} | |||
=== sceKernelGetPhyPageResetForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-1.80 || 0x3FEF6B39 | |||
|- | |||
| 3.60-3.73 || not present | |||
|} | |||
=== sceKernelDeleteHeapForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x624454BC | |||
|} | |||
=== sceKernelCreateHeapForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x56A16D84 | |||
|} | |||
=== sceKernelAllocHeapMemoryWithOptionForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xEA712806 | |||
|} | |||
=== sceKernelAllocHeapMemoryForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x473871D8 | |||
|} | |||
=== sceKernelFreeHeapMemoryForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x42FB5B12 | |||
|} | |||
=== sceKernelAllocUncacheHeapMemoryForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0x29DE887D | |||
|} | |||
=== sceKernelAllocUncacheHeapMemoryWithOptionForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x6A3FBAF0 | |||
|} | |||
=== sceKernelFreeUncacheHeapMemoryForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x2F18E288 | |||
|} | |||
=== sceKernelNameHeapDeleteForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xF459D09D | |||
|} | |||
=== sceKernelNameHeapInsertForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x42AD34AB | |||
|} | |||
=== sceKernelSetSuspendIntrFuncForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-1.80 || 0xB4306D21 | |||
|- | |||
| 3.60-3.73 || not present | |||
|} | |||
=== sceKernelSetResumeIntrFuncForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-1.80 || 0x418111B0 | |||
|- | |||
| 3.60-3.73 || not present | |||
|} | |||
=== sceKernelAddressSpaceUnmapForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0x31273DC7 | |||
|} | |||
=== sceKernelGetMemBlockBaseForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xE1DEDFF4 | |||
|} | |||
<source lang="C"> | |||
/** | |||
* @brief Get mapped base address of memory block. | |||
* | |||
* Get base address of memory block. | |||
* @param[in] uid block id | |||
* @param[out] ppBase base address of memory block | |||
* @retval SCE_OK success | |||
* @retval <SCE_OK Error | |||
*/ | |||
int sceKernelGetMemBlockBaseForTZS(SceUID uid, void **ppBase); | |||
</source> | |||
=== sceKernelFreeMemBlockForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0x658EACE3 | |||
|} | |||
=== sceKernelAllocMemBlockForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0x402EB970 | |||
|} | |||
<source lang="c"> | |||
SceUID sceKernelAllocMemBlockForTZS(const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOptKernel *pOpt); | |||
</source> | |||
=== sceKernelAllocPartitionMemBlockForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0x0028E26C | |||
|} | |||
Temp name was sceKernelAllocMemBlockForPidForTZS. | |||
<source lang="c">SceUID sceKernelAllocPartitionMemBlockForTZS(SceUID pid, const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOptKernel *pOpt);</source> | |||
=== sceKernelVAtoPAForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x1DEADF6C | |||
|} | |||
This will write the physical address for a virtual address <code>pVA</code> to memory pointed to by <code>ppPA</code>. | |||
Returns <0 on error, values >=0 indicate success. | |||
<source lang="c">int sceKernelVAtoPAForTZS(void *pVA, void **ppPA);</source> | |||
=== sceKernelVARangeToPAVectorForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x9D43E416 | |||
|} | |||
=== sceKernelCreateAddressSpaceForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x21906368 | |||
|- | |||
| 0.990-3.73 || not present | |||
|} | |||
=== SceSysmemForTZS_038EAEEE === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x038EAEEE | |||
|} | |||
== SceDipswForTZS == | |||
=== sceKernelCheckDipswForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0xA98FC2FD | |||
|} | |||
== SceUartForTZS == | |||
=== sceUartWriteForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x3AFD5E71 | |||
|} | |||
== SceDebugForTZS == | |||
=== sceKernelDebugModuleStart2ForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x32E3D4B9 | |||
|} | |||
<source lang="C">int sceKernelDebugModuleStart2ForTZS(void);</source> | |||
=== sceKernelRegisterKprintfHandlerForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x0AD558D5 | |||
|} | |||
<source lang="c">int sceKernelRegisterKprintfHandlerForTZS(int (*kprintf)(const char *fmt, ...), const void *args);</source> | |||
=== sceKernelDebugPutcharForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0xD36F27BA | |||
|} | |||
Print character. | |||
<source lang="c">int sceKernelDebugPutcharForTZS(char c);</source> | |||
=== sceKernelStoppedForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || 0xCB502FD1 | |||
|- | |||
| 1.80 || not present | |||
|} | |||
<source lang="C">int sceKernelStoppedForTZS(const char *maybe_pFile, const char *maybe_pFunc, int maybe_line);</source> | |||
=== sceKernelAssertForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x2F9B8AA8 | |||
|} | |||
<source lang="C"> | |||
// 0.931-0.990: | |||
int sceKernelAssertForTZS(SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr); | |||
// 3.60: | |||
int sceKernelAssertForTZS(SceBool condition, const SceKernelDebugInfo *dbginfo, const void *addr); | |||
</source> | |||
=== sceKernelAssertLevelForTZS === | |||
{| class="wikitable" | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x618F89E6 | |||
|} | |||
<source lang="C"> | |||
// 3.60: | |||
int sceKernelAssertLevelForTZS(int level, SceBool condition, const SceKernelDebugInfo *dbginfo, const void *addr); | |||
</source> | |||
=== sceKernelGetAssertLevelForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xF851BA4F | |||
|} | |||
Returns g_assertLevel from memory. | |||
<source lang="C">SceInt32 sceKernelGetAssertLevelForTZS(void);</source> | |||
=== _sceKernelPrintDebugLogForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x4FF6536C | |||
|} | |||
<source lang="C">int _sceKernelPrintDebugLogForTZS(int a1, int a2, int maxNum);</source> | |||
=== sceKernelPrintDebugLogForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x85BF33E1 | |||
|} | |||
<source lang="C">int sceKernelPrintDebugLogForTZS(int a1, int a2);</source> | |||
=== print_with_log_buffer === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x1FD92289 | |||
|} | |||
<source lang="C">int print_with_log_buffer(const char *msg, SceSize maxlen);</source> | |||
=== sceKernelPrintfForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0x1655E0E3 | |||
|} | |||
<source lang="C">int sceKernelPrintfForTZS(const char *fmt, ...);</source> | |||
=== sceKernelPrintfLevelForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0xC70CBB58 | |||
|} | |||
<source lang="C">int sceKernelPrintfLevelForTZS(int level, const char *fmt, ...);</source> | |||
=== sceKernelPrintfCore0ForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x08F8AD70 | |||
|} | |||
Same as sceKernelPrintfForTZS but only prints if CPU ID is 0. | |||
<source lang="C">int sceKernelPrintfCore0ForTZS(const char *fmt, ...);</source> | |||
=== sceKernelPrintfLevelCore0ForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0xD4E6A0C0 | |||
|} | |||
Same as sceKernelPrintfLevelForTZS but only prints if CPU ID is 0. | |||
<source lang="C">int sceKernelPrintfLevelCore0ForTZS(int level, const char *fmt, ...);</source> | |||
=== sceKernelSetMinimumLogLevelForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x898E417E | |||
|} | |||
<source lang="C"> | |||
/** | |||
* @brief Specifies the minimum severity level for the output of logging information. | |||
* | |||
* Specifies the minimum severity level for the output of logging information. The default level is SCE_DBG_LOG_LEVEL_TRACE. | |||
* | |||
* @param minimumLogLevel The minimum severity at which debugging messages should be output. | |||
* @retval SCE_OK The operation was completed successfully. | |||
* @retval Negative value Error code | |||
*/ | |||
int sceKernelSetMinimumLogLevelForTZS(SceInt32 minimumLogLevel); | |||
</source> | |||
=== register_log_buffer === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0xF2A87E96 | |||
|} | |||
<source lang="C">int register_log_buffer(const void *log_buffer_addr, SceSize log_buffer_size);</source> | |||
=== start_logging === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x1FF65E15 | |||
|} | |||
<source lang="C">int start_logging(int state);</source> | |||
=== stop_logging === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x5A35E3E0 | |||
|} | |||
If state is not zero, stops logging and return 1, else does nothing and return 0. | |||
Returns 1 if logging has been stopped, 0 else. | |||
<source lang="C">int stop_logging(void);</source> | |||
=== refresh_logs === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x91B41C34 | |||
|} | |||
<source lang="C">int refresh_logs(void);</source> | |||
=== add_entry === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x95E1A80B | |||
|} | |||
<source lang="C">int add_entry(int a1, int a2, int a3, void *log_buffer_start);</source> | |||
=== add_entry2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x538319EB | |||
|} | |||
<source lang="C">int add_entry2(int a1, const char *msg, void *log_buffer_start, int a4);</source> | |||
=== register_unk_cb === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x3598118B | |||
|} | |||
The callback has this definition: | |||
<source lang="C"> | |||
// unk: 2 or 3 | |||
int unk_cb(SceUID pid, void *buf, SceSize size, int *pOut, int unk); | |||
</source> | |||
If unk_cb runs successfully (return >= 0), pOut is used as third argument of unk_cb2, else unk_cb2 is not called at all. | |||
<source lang="C">int register_unk_cb(void *some_cb);</source> | |||
=== register_unk_cb2 === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0xE844FC5A | |||
|- | |||
| 0.990-3.60 || not present | |||
|} | |||
The callback has this definition: | |||
<source lang="C">int unk_cb2(SceUID pid, void *buf, int unk);</source> | |||
<source lang="C">int register_unk_cb2(void *some_cb);</source> | |||
=== sceKernelPanicForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || not present | |||
|- | |||
| 1.80-3.60 || 0x563B623D | |||
|} | |||
=== SceDebugForTZS_0D799DAE === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0x0D799DAE | |||
|} | |||
<source lang="C">int SceDebugForTZS_0D799DAE(SceUInt32 msg_type, void *msg_ctx, const char *fmt, va_list arg);</source> | |||
=== SceDebugForTZS_D26EB4BB === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-0.990 || not present | |||
|- | |||
| 3.60 || 0xD26EB4BB | |||
|} | |||
<source lang="C">int SceDebugForTZS_D26EB4BB(SceBool condition, SceUInt32 msg_type, void *msg_ctx, const char *fmt, ...);</source> | |||
== SceCpuForTZS == | |||
* 0.931: 0xACA39932: unknown, save context that will be restored with 0xCA74C9A2 | |||
* 0.931: 0xCA74C9A2: unknown, restore context saved with 0xACA39932 | |||
* 0.931: 0xE0B34336: unknown, same as SceCpuForKernel_9D72DD1B | |||
* 0.931-0.990: 0x40DEC1B6: sceKernelWaitForEvent | |||
* 0.931-0.990: 0xF42F079B: sceKernelSendEvent | |||
* 0.940: 0x1266F962: sceKernelAbort | |||
* 0.931-0.940: 0x98BF47D3: sceKernelGetVmaccessRange | |||
* 0.931: 0x49AD8B60: sceKernelSetFIQModeStack | |||
* 0.931: 0xC2A428F3: sceKernelSetMonModeStack | |||
* 0.931: 0xD9013440: sceKernelSetIRQModeStack | |||
* 0.931: 0xDF17E4A3: sceKernelSetUndModeStack | |||
* 0.931: 0xF832C341: sceKernelSetAbtModeStack | |||
* 0.931: 0xFB1D3114: sceKernelSetSvcModeStack | |||
* 0.931: 0xF6CE21EA: sceKernelPrintCpuMode | |||
* 3.60: 0x31E78A4B: unknown | |||
* 3.60: 0x4FED4BCE: unknown | |||
* 3.60: 0x7548CBCF: unknown | |||
* 3.60: 0xD4E7413D: unknown | |||
1.80: | |||
NID 0: 0x0A15B41C: sceKernelL1DcacheCleanInvalidateAll | |||
NID 1: 0x17A88E69: sceKernelL1DcacheCleanRange | |||
NID 2: 0x190D96D5: sceKernelDcacheCleanRange | |||
NID 3: 0x2A0A3DC6 | |||
NID 4: 0x2B6403F8: on FW 3.60, does nothing and returns -1. sceKernelCpuWaitL2Cache | |||
NID 5: 0x2FE24445: sceKernelCpuAtomicSet32 | |||
NID 6: 0x308D7ABE: sceKernelCpuDcacheInvalidateMVACRange | |||
NID 7: 0x324727D1: sceKernelGetCpsr | |||
NID 8: 0x39FCFCC2: sceKernelDomainTextMemcpy | |||
NID 9: 0x44C423D3: sceKernelCpuId | |||
NID 10: 0x49B11FF8 | |||
NID 11: 0x71FD9AB5: sceKernelSpinlockLowLock | |||
NID 12: 0x72CA4F7A: sceKernelGetSpsr | |||
NID 13: 0x75D87321: sceKernelCpuAtomicOrAndGet32 | |||
NID 14: 0x7A5373EB: sceKernelDcacheCleanInvalidateRange | |||
NID 15: 0x7CCE9480: sceKernelDcacheCleanInvalidateAll | |||
NID 16: 0x864E3DED | |||
NID 17: 0x9E4C0D0D: on FW 3.60, does nothing and returns -1 | |||
NID 18: 0xA5965CBF: sceKernelL1IcacheInvalidateEntireAllCore | |||
NID 19: 0xACF209F3: sceKernelSpinlockLowTrylockCpuSuspendIntr | |||
NID 20: 0xB421FAFD: sceKernelL1IcacheInvalidateRange | |||
NID 21: 0xB8F00FBE: sceKernelSpinlockLowUnlockCpuResumeIntr | |||
NID 22: 0xC4137AED: sceKernelPleFlushRequest | |||
NID 23: 0xCD98416C: sceKernelSpinlockLowUnlock | |||
NID 24: 0xCDD46655: sceKernelDcacheInvalidateRange | |||
NID 25: 0xD67A4356: sceKernelSpinlockLowLockCpuSuspendIntr | |||
NID 26: 0xEFD6F289: sceKernelCpuAtomicCompareAndSet8 | |||
== SceSysclibForTZS == | |||
=== __stack_chk_fail === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.80-3.60 || 0xE5457B97 | |||
|} | |||
=== __stack_chk_guard === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xBA505B15 | |||
|} | |||
This is a variable. | |||
=== strncpy === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-3.60 || 0x361850BB | |||
|} | |||
=== memcpy === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0xBE3AF2EE | |||
|} | |||
=== memset === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x956DB750 | |||
|} | |||
== SceSysrootForTZS == | |||
=== sceKernelSysrootBacktraceForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0xF26A5E68 | |||
|} | |||
=== sceKernelSysrootPrintBacktraceForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x463EA380 | |||
|} | |||
=== sceKernelSysrootShowCallerInfoForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931 || 0x2F3D9414 | |||
|} | |||
=== sceKernelSysrootGetModulePrivateForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0xC9DD8EB3 | |||
|} | |||
=== sceKernelSysrootSetModulePrivateForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0xEA572BD9 | |||
|} | |||
=== sceKernelSysrootSetSharedMemoryForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-1.80 || 0x45EEB2E0 | |||
|} | |||
=== sceKernelSysrootGetKermitRevisionForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-1.80 || 0xDB3DAB76 | |||
|} | |||
=== sceKernelSysrootGetSharedMemoryForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-3.60 || 0x1C96096F | |||
|} | |||
=== sceKernelSysrootCorelockLockForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0xD653194A | |||
|} | |||
=== sceKernelSysrootGetVbaseMonitorVectorForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0xD4E6D8E8 | |||
|} | |||
=== sceKernelSysrootGetKernelMMUContextForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0xA8B7DAF9 | |||
|} | |||
=== sceKernelSysrootCorelockUnlockForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0x2F5FD9A8 | |||
|} | |||
=== sceKernelSysrootGetVbaseResetVectorForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0x2460ADFA | |||
|} | |||
=== sceKernelIsColdBootForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-1.80 || 0x0567B4B9 | |||
|} | |||
=== sceKernelIsSecureStateForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940 || 0xEFA54B46 | |||
|- | |||
| 3.60 || not present | |||
|} | |||
=== sceKernelSysrootGetErnieWakeupFactorForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-1.80 || 0x8E871C6D | |||
|} | |||
=== sceKernelSysrootGetKblParamForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.931-1.80 || 0x29C1049E | |||
|} | |||
Returns pointer to [[KBL Param]] buffer. | |||
<source lang="C">void *sceKernelSysrootGetKblParamForTZS(void);</source> | |||
=== sceKernelSysrootAllocForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.940-1.80 || 0x1A9E1D28 | |||
|} | |||
<source lang="C">void *sceKernelSysrootAllocForTZS(uint32_t size);</source> | |||
=== sceKernelSysrootGetModelInfoForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xD6FBF445 | |||
|} | |||
This is guessed name. | |||
=== sceSysrootGetSessionIdForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0xCC36643A | |||
|} | |||
This is guessed name. | |||
=== sceKernelSysrootGetSleepFactorForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x7DA87A7F | |||
|} | |||
This is guessed name. | |||
=== sceKernelSysrootGetCoredumpEncryptionKeyForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x32546BDB | |||
|} | |||
This is guessed name. | |||
== SceQafMgrForTZS == | |||
=== sceSblQafManagerIsAllowKernelDebugForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-1.80 || 0x54D22D74 | |||
|} | |||
return *(char *)(sceKernelSysrootGetKblParamForTZS() + 0x2D) & 1; | |||
== ScePmMgrForTZS == | |||
=== sceSblPmMgrGetProductModeForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0xCF554E69 | |||
|} | |||
== SceSblAIMgrForTZS == | |||
=== sceSblAIMgrIsCEXForTZS === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 0.990-3.60 || 0x536B38F4 | |||
|} | |||
[[Category:ARM]] | |||
[[Category:Kernel]] | |||
[[Category:Modules]] | [[Category:Modules]] | ||
[[Category: | [[Category:Library]] |
Latest revision as of 12:07, 5 October 2024
SceSysmem is a kernel module that acts as the heart of the kernel. It exports multiple libraries for various features. SceSysmem is the first module that is loaded in the kernel load sequence and its libraries are imported by almost all other modules. See Virtual Memory and Physical Memory for more details on the memory subsystem.
Module
This module exists in both non-secure and secure world. The non-secure world SELF can be found in os0:kd/sysmem.skprx
. It also can be found in the Boot Image.
Version | World | Privilege |
---|---|---|
1.50-3.61 | Non-secure | Kernel |
1.69-1.80 | Secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
0.990-3.61 | SceSysmemForKernel | Non-secure | Kernel | 0x63A519E5 |
3.63-3.65 | SceSysmemForKernel | Non-secure | Kernel | 0x02451F0F |
0.990-3.65 | SceSysmemForDriver | Non-secure | Kernel | 0x6F25E18A |
0.990-1.692 | SceSysmemForDebugger | Non-secure | Kernel | 0xC7309957 |
1.80-3.74 | SceSysmemForDebugger | Non-secure | Kernel | not present. Removed. |
0.990-3.60 | SceSysmem | Non-secure | User | 0x37FE725A |
0.990-3.65 | SceDipsw | Non-secure | User | 0xB36D5922 |
0.990-3.65 | SceDipswForDriver | Non-secure | Kernel | 0xC9E26388 |
0.990-3.61 | SceUartForKernel | Non-secure | Kernel | 0xC03DBE40 |
3.63-3.65 | SceUartForKernel | Non-secure | Kernel | 0x1CCD9BA3 |
0.990-3.740.011 | SceCpu | Non-secure | User | 0x45265161 |
0.990-3.61 | SceCpuForKernel | Non-secure | Kernel | 0x54BF2BAB |
3.63-3.65 | SceCpuForKernel | Non-secure | Kernel | 0xA5195D20 |
0.990-3.65 | SceCpuForDriver | Non-secure | Kernel | 0x40ECDB0E |
0.990-1.692 | SceSysclibForKernel | Non-secure | Kernel | 0x24878615 |
1.80-3.74 | SceSysclibForKernel | Non-secure | Kernel | not present. Removed. |
0.990-3.65 | SceSysclibForDriver | Non-secure | Kernel | 0x7EE45391 |
0.990-3.65 | SceSysrootForKernel | Non-secure | Kernel | 0x3691DA45 |
0.990-3.65 | SceSysrootForDriver | Non-secure | Kernel | 0x2ED7F97A |
0.990-3.65 | SceKernelUtilsForDriver | Non-secure | Kernel | 0x496AD8B4 |
0.990-1.692 | SceZlibForDriver | Non-secure | Kernel | 0xE241534E |
1.80-3.74 | SceZlibForDriver | Non-secure | Kernel | not present. Moved to SceSblPostSsMgr#SceZlibForDriver. |
0.990-3.65 | SceKernelSuspendForDriver | Non-secure | Kernel | 0x7290B21C |
0.990-3.65 | SceQafMgrForDriver | Non-secure | Kernel | 0x4E29D3B6 |
0.990-3.65 | ScePmMgrForDriver | Non-secure | Kernel | 0xF13F32F9 |
0.990-3.65 | SceSblAIMgrForDriver | Non-secure | Kernel | 0xFD00C69A |
0.990-3.65 | SceProcEventForDriver | Non-secure | Kernel | 0x887F19D0 |
0.990-3.65 | SceDebugLed | Non-secure | User | 0xAE004C0A |
0.990-3.65 | SceDebugLedForDriver | Non-secure | Kernel | 0x7BC05EAD |
0.990-3.61 | SceDebugForKernel | Non-secure | Kernel | 0x88C17370 |
3.63-3.65 | SceDebugForKernel | Non-secure | Kernel | 0x13D793B7 |
0.990-3.65 | SceDebugForDriver | Non-secure | Kernel | 0x88758561 |
0.931-3.60 | SceSysmemForTZS | Secure | Kernel | 0x08680060 |
0.931-3.60 | SceDipswForTZS | Secure | Kernel | 0x9DBF584C |
0.931-3.60 | SceUartForTZS | Secure | Kernel | 0xA1D740D7 |
0.931-3.60 | SceDebugForTZS | Secure | Kernel | 0x028FFADB |
0.931-3.60 | SceCpuForTZS | Secure | Kernel | 0xC516B23E |
0.931-3.60 | SceSysclibForTZS | Secure | Kernel | 0xC839BB78 |
0.931-3.60 | SceSysrootForTZS | Secure | Kernel | 0xFEFF641D |
0.931-3.60 | SceQafMgrForTZS | Secure | Kernel | 0x637069DD |
0.931-3.60 | ScePmMgrForTZS | Secure | Kernel | 0x27F1AFD8 |
0.931-3.60 | SceSblAIMgrForTZS | Secure | Kernel | 0x60D19047 |
The SceCpu libraries provide wrappers for much ARM CP15 co-processor access as well as low level support of spinlocks and other synchronization primitives.
Types
See SceSysmem Types.
SysEvent
Dispatcher
Module | Type | Event | Description |
---|---|---|---|
ScePower | 0 | 0x100 | SCE_KERNEL_SYSEVENT_SUSPEND_START . before sceKernelCpuSuspendIntr.
|
ScePower | 0 | 0x101 | unknown |
ScePower | 0 | 0x102 | unknown. later sceKernelCpuResumeIntr. |
ScePower | 0 | 0x20F -> 0x200 | SCE_KERNEL_SYSEVENT_SUSPEND_PHASE2 . after sceKernelCpuResumeIntr.
|
ScePower | 0 | 0x400 | SCE_KERNEL_SYSEVENT_SUSPEND_PHASE1_START .
|
ScePower | 0 | 0x401 | SCE_KERNEL_SYSEVENT_SUSPEND_PHASE1_MAIN . (this is a guessed name. but should be official name)
|
ScePower | 0 | 0x402 | SCE_KERNEL_SYSEVENT_SUSPEND_PHASE1_END . (this is a guessed name)
|
ScePower | 1 | 0x1000 | SCE_KERNEL_SYSEVENT_SUSPEND_FREEZE_TIME .
|
ScePower | 1 | 0x400F -> 0x4000 | SCE_KERNEL_SYSEVENT_SUSPEND_PHASE0 .
|
ScePower | 1 | 0x10000 -> 0x1000F | SCE_KERNEL_SYSEVENT_RESUME_PHASE0 .
|
ScePower | 1 | 0x40000 | SCE_KERNEL_SYSEVENT_RESUME_MELT_TIME . before sceKernelCpuResumeIntr.
|
ScePower | 1 | 0x100000 | SCE_KERNEL_SYSEVENT_RESUME_PHASE1_START . after sceKernelCpuResumeIntr.
|
ScePower | 1 | 0x100001 | SCE_KERNEL_SYSEVENT_RESUME_PHASE1_MAIN .
|
ScePower | 1 | 0x100002 | SCE_KERNEL_SYSEVENT_RESUME_PHASE1_END . (this is a guessed name)
|
ScePower | 1 | 0x400000 | SCE_KERNEL_SYSEVENT_RESUME_COMPLETED
|
Handler
Module | Type | Event | Description |
---|---|---|---|
SceAppMgr | 0 | 0x20F | _sceAppMgrSystemSuspend |
SceAppMgr | 1 | 0x400000 | _sceAppMgrSystemResume |
SceAudio | 0 | 0x1000 | Something |
SceAudio | 0 | 0x400F | Something |
SceAudio | 0 | 0x102 | Something |
SceAudio | 1 | 0x1000F | Something |
SceAudioin (SceAudioIn) | 0 | 0x102 | Something |
SceAudioin (SceAudioIn) | 1 | 0x1000F | Something |
SceAVConfig | 0 | 0x200 | Something |
SceAVConfig | 1 | 0x400000 | Something |
SceAVConfig | 1 | 0x1000F | Something |
SceAVConfig | 1 | 0x100001 | Something |
SceBt | 0 | 0x401 | Something |
SceBt | 0 | 0x402 | Something |
SceBt | 1 | 0x100001 | Something |
SceBt | 1 | 0x100002 | Something |
SceCamera | 0 | 0x401 | Something |
SceCamera | 0 | 0x402 | Something |
SceCamera | 0 | 0x400 | Something |
SceCamera | 1 | 0x100000 | Something |
SceCamera | 1 | 0x100002 | Something |
SceClockgen | 1 | 0x10000 | Something |
SceClockgen | 1 | 0x100000 | Something |
SceCodec | 0 | 0x200 | Something |
SceCodec | 1 | 0x10000 | Something |
SceCodecEngineWrapper | 0 | 0x401 | Something |
SceCodecEngineWrapper | 0 | 0x200 | Something |
SceCodecEngineWrapper | 0 | 0x402 | Something |
SceCodecEngineWrapper | 0 | 0x400E | Something |
SceCodecEngineWrapper | 1 | 0x1000E | Something |
SceCodecEngineWrapper | 1 | 0x100000 | Something |
SceCompat | 1 | 0x100000 | Something |
SceCtrl | 0 | 0x402 | Something |
SceCtrl | 0 | 0x400C | Something |
SceCtrl | 0 | 0x400 | Something |
SceCtrl | 1 | 0x1000C | Something |
SceDbgSdio (SceDbgSdio1) | 0 | 0x102 | Something |
SceDbgSdio (SceDbgSdio1) | 0 | 0x4003 | Something |
SceDbgSdio (SceDbgSdio1) | 1 | 0x10003 | Something |
SceDeci4pDbgp | 0 | 0x102 | Something |
SceDeci4pDbgp | 0 | 0x4000 | Something |
SceDeci4pDbgp | 1 | 0x10000 | Something |
SceDeci4pDbgp | 1 | 0x400000 | Something |
SceDeci4pDfMgr | 0 | 0x200 | Something |
SceDeci4pDfMgr | 0 | 0x100 | Something |
SceDeci4pDfMgr | 0 | 0x401 | Something |
SceDeci4pDfMgr | 0 | 0x402 | Something |
SceDeci4pDfMgr | 1 | 0x100002 | Something |
SceDeci4pDfMgr | 1 | 0x400000 | Something |
SceDeci4pDfMgr | 1 | 0x100000 | Something |
SceDeci4pDrfp | 0 | any | Something |
SceDeci4pDtracep | 0 | 0x200 | Something |
SceDeci4pDtracep | 0 | 0x1000 | Something |
SceDeci4pDtracep | 1 | 0x40000 | Something |
SceDeci4pDtracep | 1 | 0x100002 | Something |
SceDeci4pSDfCtl | 0 | 0x102 | Something |
SceDisplay | 0 | 0x400 | Something |
SceDisplay | 0 | 0x200 | Something |
SceDisplay | 0 | 0x402 | Something |
SceDisplay | 0 | 0x400A | Something |
SceDisplay | 1 | 0x40000 | Something |
SceDisplay | 1 | 0x100000 | Something |
SceDisplay | 1 | 0x1000A | Something |
SceError | 0 | 0x200 | Something |
SceError | 1 | 0x100001 | Something |
SceGps (SceGpsd) | 0 | 0x102 | Something |
SceGps (SceGpsd) | 1 | 0x400000 | Something |
SceGpuEs4 (SceGpu) | 0 | 0x402 | Something |
SceGpuEs4 (SceGpu) | 0 | 0x4005 | Something |
SceGpuEs4 (SceGpu) | 0 | 0x400 | Something |
SceGpuEs4 (SceGpu) | 1 | 0x10005 | Something |
SceHdmi | 0 | 0x400 | Something |
SceHdmi | 0 | 0x402 | Something |
SceHdmi | 1 | 0x100000 | Something |
SceHid | 0 | 0x402 | Something |
SceHid | 0 | 0x4000 | Something |
SceHid | 0 | 0x200 | Something |
SceHid | 1 | 0x100000 | Something |
SceHpremote (SceHprm) | 1 | 0x1000C | Something |
SceIdStorage | ? | ? | Something |
SceIofilemgr | 0 | 0x401 | vfs_sync_all_mount_point |
SceIofilemgr | 0 | 0x402 | Something |
SceIofilemgr | 0 | 0x400 | Something |
SceIofilemgr | 1 | 0x10000 | Something |
SceIofilemgr | 1 | 0x400000 | Something |
SceLowio (ScePervasive) | 1 | 0x10000 | Something |
SceLowio (SceGpio) | 1 | 0x10002 | Something |
SceLowio (ScePwm) | 0 | 0x4002 | Something |
SceLowio (ScePwm) | 1 | 0x10002 | Something |
SceLowio (SceI2c) | 0 | 0x402 | Something |
SceLowio (SceI2c) | 0 | 0x4002 | Something |
SceLowio (SceI2c) | 1 | 0x10002 | Something |
SceLowio (SceDsi) | 0 | 0x4004 | Something |
SceLowio (SceIftu) | 0 | 0x4005 | Something |
SceLowio (SceIftu) | 1 | 0x10005 | Something |
SceLowio (SceCsi) | 0 | 0x4004 | Something |
SceLowio (SceCsi) | 1 | 0x10004 | Something |
SceMotionDev (SceMotion) | 0 | 0x401 | Something |
SceMotionDev (SceMotion) | 0 | 0x402 | Something |
SceMotionDev (SceMotion) | 0 | 0x400 | Something |
SceMotionDev (SceMotion) | 1 | 0x100000 | Something |
SceMotionDev (SceMotion) | 1 | 0x100002 | Something |
SceMsif | 0 | 0x400C | Something |
SceMsif | 1 | 0x1000C | Something |
SceNetPs | 0 | 0x200 | Something |
SceNetPs | 1 | 0x400000 | Something |
SceOled | 0 | 0x402 | Something |
SceOled | 0 | 0x4003 | Something |
SceOled | 1 | 0x10003 | Something |
ScePfsMgr | 0 | 0x402 | Something |
ScePower (ScePower) | 0 | 0x402 | Something |
ScePower (ScePower) | 0 | 0x4009 | Something |
ScePower (ScePower) | 0 | 0x400 | Something |
ScePower (ScePower) | 1 | 0x10009 | Something |
ScePower (ScePower) | 1 | 0x100000 | Something |
ScePower (SceLed) | 0 | 0x102 | Something |
ScePower (SceLed) | 0 | 0x400A | Something |
ScePower (SceLed) | 1 | 0x100000 | Something |
SceRtc | 0 | 0x200 | Something |
SceRtc | 0 | 0x1000 | Something |
SceRtc | 1 | 0x1000A | Something |
SceRtc | 1 | 0x100000 | Something |
SceSblSmSchedProxy | 1 | 0x10004 | Something |
SceSblSsMgr | 0 | 0x200 | Something |
SceSblSsMgr | 1 | 0x100000 | Something |
SceSblUpdateMgr | 0 | any | Something |
SceSdif | 0 | 0x400C | Something |
SceSdif | 1 | 0x10009 | resume eMMC with sdif reset |
SceSdif | 1 | 0x1000C | resume eMMC |
SceSdstor | 0 | 0x200 | Umount 0x900/0xA00/0x100. invalidate gc sdpart str. |
SceSdstor | 0 | 0x400D | disable intr/power off for gc/rm |
SceSdstor | 1 | 0x100000 | Something |
SceSdstor | 1 | 0x400000 | Something |
SceSyscon | 0 | 0x4006 | Something |
SceSyscon | 0 | 0x402 | Something |
SceSyscon | 0 | 0x400F | Something |
SceSyscon | 1 | 0x10006 | Something |
SceSyscon | 1 | 0x1000F | Something |
SceTouch | 0 | 0x401 | Something |
SceTouch | 0 | 0x400 | Something |
SceTouch | 0 | 0x402 | Something |
SceTouch | 0 | 0x400C | Something |
SceTouch | 1 | 0x1000C | Something |
SceTouch | 1 | 0x100000 | Something |
SceUsbEtherRtl | 0 | 0x401 | Something |
SceUsbEtherRtl | 0 | 0x402 | Something |
SceUsbEtherRtl | 0 | 0x400 | Something |
SceUsbEtherSmsc | 0 | 0x401 | Something |
SceUsbEtherSmsc | 0 | 0x402 | Something |
SceUsbEtherSmsc | 0 | 0x400 | Something |
SceUsbServ | 0 | 0x200 | Something |
SceUsbServ | 0 | 0x400E | Something |
SceUsbServ | 1 | 0x100000 | Something |
SceUsbServ | 1 | 0x100002 | Something |
SceWlanBt (SceWlanBtRobin) | 0 | 0x401 | Something |
SceWlanBt (SceWlanBtRobin) | 0 | 0x400 | Something |
SceWlanBt (SceWlanBtRobin) | 1 | 0x100000 | Something |
SceWlanBt (SceWlanBtRobin) | 1 | 0x100002 | Something |
SceSysmemForKernel
SceSysmemForKernel_A7D44B50
Version | NID |
---|---|
0.931.010-1.692.000 | 0xA7D44B50 |
1.800.071-3.740.011 | not present |
A guessed name is sceKernelSetSysmemFuncForKernel.
Used by SceKernelSSProxy's module_start to register a function that just calls SMC 0x10E (BusErrorClear).
The registered function is used internally by #sceKernelPhysicalMemReadForKernel and #sceKernelPhysicalMemWriteForKernel.
int SceSysmemForKernel_A7D44B50(void* pBusErrorClearFunc);
sceKernelSysmemModuleStartAfterProcessmgrForKernel
Version | NID |
---|---|
3.600.011-3.610.011 | 0xE7938BFB |
3.630.011-3.740.011 | 0x4E74DA48 |
Temp name was sceKernelInitProcessMemoryForKernel.
Used by SceProcessmgr.
int sceKernelSysmemModuleStartAfterProcessmgrForKernel(void);
sceKernelSysmemCleanerForKernel
Version | NID |
---|---|
3.60-3.61 | 0x43E81C4B |
3.63 | 0x50980298 |
Only implemented in sysdbg build.
int sceKernelSysmemCleanerForKernel(void);
sceKernelStrnlenFromUserForKernel
Version | NID |
---|---|
0.931 | 0x9BC3DEAC |
3.60 | not present |
SceSize sceKernelStrnlenFromUserForKernel(const char *s, SceSize maxlen);
sceKernelPhysicalMemWriteForKernel
Version | NID |
---|---|
0.931.010-1.060.031 | 0x4B86A751 |
1.50-3.740.011 | not present |
Writes to physical address pdest
using a pre-allocated memblock. Destination must belong into a hardcoded table describing physical ranges.
SceSSize sceKernelPhysicalMemWriteForKernel(SceUIntPAddr pdest, const void *src, SceSize size);
sceKernelPhysicalMemReadForKernel
Version | NID |
---|---|
0.931.010-1.060.031 | 0xF96E3AE2 |
1.50-3.740.011 | not present |
Temp name was memcpy_from_paddr.
Dest must be a virtual address and src must be a physical address. Returns copied size on success.
int sceKernelPhysicalMemReadForKernel(void *dest, const void *src, SceSize dest_size, SceSize src_size);
sceKernelCopyFromUser32DomainForKernel
Version | NID |
---|---|
0.931 | 0xD530399A |
3.60 | not present |
int sceKernelCopyFromUser32DomainForKernel(SceUID pid, void *dst, const void *src, SceSize size);
sceKernelCopyToUserProcTextDomainForKernel
Version | NID |
---|---|
0.931-3.60 | 0x30931572 |
3.65 | 0x2995558D |
Temp name was sceKernelRxMemcpyKernelToUserForPidForKernel, sceKernelProcCopyToUserRxForKernel.
Same as sceKernelCopyToUserProcDomain, but performs a DCache clean after the copy. Use this function if you want to write code in user pages.
This function is usually called when resolving stubs during a module loads. In 3.60, DACR is set to 0x15450FC3 instead of 0xFFFFFFFF.
SceInt32 sceKernelCopyToUserProcTextDomainForKernel(SceUID pid, void *uaddr, const void *kaddr, SceSize size);
sceKernelCopyToUserProcTextDomainForDBGPForKernel
Version | NID |
---|---|
3.60-3.61 | 0xE65EA709 |
3.63 | 0x4345C61F |
int sceKernelCopyToUserProcTextDomainForDBGPForKernel(SceUID pid, void *dst, const void *src, SceSize length);
sceKernelCopyToUserTextDomainForKernel
Version | NID |
---|---|
3.60 | 0x67BAD5B4 |
3.65 | 0x5EF1DAAF |
This is a guessed name. Temp name was sceKernelMemcpyToUserRxForKernel, sceKernelCopyToUserRxForKernel.
Similar to sceKernelCopyToUserProcTextDomain, but performed in the current address space.
In FW 3.60, sceKernelCopyToUserProcTextDomain calls this function to perform the copy after changing address space.
SceInt32 sceKernelCopyToUserTextDomainForKernel(void *dst, const void *src, SceSize len);
sceKernelCopyToUserDomainForKernel
Version | NID |
---|---|
0.931.010 | Not present |
3.60-3.61 | 0xA6F95838 |
3.63 | 0x499A9FFF |
This is a guessed name. Temp name was sceKernelMemcpyToUserRoForKernel, sceKernelCopyToUserRoForKernel.
Similar to sceKernelCopyToUserTextDomain, but doesn't perform any DCache clean.
Uses the same DACR, 0x15450FC3, for the copy.
int sceKernelCopyToUserDomainForKernel(void *dst, const void *src, SceSize len);
sceKernelRegisterClassForKernel
Version | NID |
---|---|
0.990 | 0x11761B77 |
3.60 | not present |
sceKernelFindClassByNameForKernel
Version | NID |
---|---|
3.60 | 0x62989905 |
3.65 | 0x7D87F706 |
int sceKernelFindClassByNameForKernel(const char *name, SceClass **ppClass);
sceKernelGetUIDHeapClassForKernel
Version | NID |
---|---|
3.60-3.61 | 0x4CCA935D |
3.63 | 0x7C878E94 |
SceClass *sceKernelGetUIDHeapClassForKernel(void);
sceKernelGetUIDMemBlockClassForKernel
Version | NID |
---|---|
3.60-3.61 | 0xAF729575 |
3.63 | 0x86681B64 |
SceClass *sceKernelGetUIDMemBlockClassForKernel(void);
sceKernelGetUIDDLinkClassForKernel
Version | NID |
---|---|
0.990-3.610.011 | 0xC105604E |
3.630.011-3.740.011 | 0xE4193EB6 |
SceClass *sceKernelGetUIDDLinkClassForKernel(void);
sceKernelGetUIDAddressSpaceClassForKernel
Version | NID |
---|---|
3.60-3.61 | 0xAF180A3F |
3.63 | 0x99D3BF76 |
This is a guessed name.
SceClass *sceKernelGetUIDAddressSpaceClassForKernel(void);
sceKernelGetUIDPartitionClassForKernel
Version | NID |
---|---|
3.60-3.61 | 0x2791F109 |
3.63 | 0x5C0FC6BE |
This is a guessed name.
SceClass *sceKernelGetUIDPartitionClassForKernel(void);
sceUIDDLinkClassInitForKernel
Version | NID |
---|---|
3.60-3.61 | 0x21285F40 |
3.63 | 0x7CDB7655 |
Temp name was sceKernelCreateClassForKernel, sceUIDClassInitClassForKernel.
Calls sceUIDClassInitClassForDriver.
int sceUIDDLinkClassInitForKernel(SceClass *pClass, const char *name, SceClass *subclass, SceSize itemsize, void *cstr, void *dstr);
sceUIDClassGetClassInfoAllForKernel
Version | NID |
---|---|
0.990 | not present |
3.60-3.61 | 0xC0BF149E |
3.63 | 0x100B4029 |
This is a guessed name (ForDriver function name and NID changed at some point before 1.69). Temp name was sceKernelGetRegisterClassInfoForKernel.
typedef struct SceClassInfo { SceSize size; SceClass *pClass; SceClass *pSubClass; const char *name; } SceClassInfo; int sceUIDClassGetClassInfoAllForKernel(SceClassInfo *vector, uint32_t maxNumClass, uint32_t *pNumClassInBuf);
sceKernelCreateAddressSpaceForKernel
Version | NID |
---|---|
0.990-3.60 | 0x4A3737F0 |
3.65 | 0x8EE89D2C |
// type: 0x10000001 (user AS) // name: maybe titleid SceUID sceKernelCreateAddressSpaceForKernel(SceUID pid, const char *name, SceUInt32 type, SceKernelCreateAddressSpaceOpt *pOpt);
sceKernelDeleteAddressSpaceForKernel
Version | NID |
---|---|
0.931-3.60 | 0xF2D7FE3A |
3.65 | 0x4A2E421D |
int sceKernelDeleteAddressSpaceForKernel(SceUID guid);
sceKernelAddressSpaceSetNameForKernel
Version | NID |
---|---|
0.990-1.50 | not present |
3.60 | 0x7BD56D6D |
3.65 | 0xCEBC4963 |
Used by SceProcessmgr.
int sceKernelAddressSpaceSetNameForKernel(SceUID guid, const char *name);
sceKernelAddressSpaceSetPhyMemPartForKernel
Version | NID |
---|---|
0.931-3.60 | 0x67955EE9 |
3.65 | 0x7DF07D60 |
int sceKernelAddressSpaceSetPhyMemPartForKernel(SceUID guid, SceUInt32 index, SceKernelPhyMemPart *pPhyMemPart);
sceKernelAddressSpaceCtrSetObjectHeapForKernel
Version | NID |
---|---|
3.60-3.61 | 0xFC74A355 |
3.63 | 0xFA348CB1 |
sceKernelAddressSpaceFreeAllMemBlockForKernel
Version | NID |
---|---|
0.931-3.60 | 0x89CE1F31 |
3.65 | 0x36159CF5 |
int sceKernelAddressSpaceFreeAllMemBlockForKernel(SceUID guid);
sceKernelAddressSpaceUnmapForKernel
Version | NID |
---|---|
0.931-3.61 | 0xCE72839E |
3.63 | 0x73C38695 |
# For FW 0.931: int sceKernelAddressSpaceUnmapForKernel(SceUID uid, int a2, void* addr, SceSize size); # For FW 3.60: int sceKernelAddressSpaceUnmapForKernel(SceUID uid, int a2, int a3, void* addr, SceSize size);
Example: 0.990 SceSysStateMgr:
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF7, 0x51000000, 0x1000000); sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0xE0000000, 0x8000000); sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0x1A000000, 0x100000);
Example: 3.60 SceSysStateMgr:
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF7, 0xC, 0x51000000, 0x1000000); sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0xC, 0xE0000000, 0x8000000); sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0xC, 0x1A000000, 0x100000);
sceKernelAddressSpaceSetProcessForKernel
Version | NID |
---|---|
0.990-3.61 | 0x2476B90F |
3.63 | 0x5E772E19 |
int sceKernelAddressSpaceSetProcessForKernel(SceUID address_space, SceUID pid);
sceKernelAddressSpaceChangeMMUContextForKernel
Version | NID |
---|---|
0.931-3.61 | 0x653B0849 |
3.63 | 0x20D01AFA |
Changes to the MMU context (CONTEXTIDR.ASID + DACR + TTBR1) of target address space.
SceInt32 sceKernelAddressSpaceChangeMMUContextForKernel(SceUID address_space);
sceKernelAddressSpaceGetMMUContextForKernel
Version | NID |
---|---|
0.990 | not present |
3.10-3.61 | 0x9894B9E1 |
3.63 | 0xA7C91D62 |
This is a guessed name.
int sceKernelGetAddressSpaceMMUContextForKernel(SceUID address_space, SceKernelMMUContext **ppCtx);
SceSysmemForKernel_FBEF93AA
Version | NID |
---|---|
0.931 | not present |
0.990-3.01 | 0xFBEF93AA |
3.10-3.74 | not present |
Maybe gets MMU context. Maybe was replaced by #sceKernelAddressSpaceGetMMUContextForKernel.
int SceSysmemForKernel_FBEF93AA(SceUID address_space, void* pOut);
sceKernelAddressSpaceGetTimerVbaseForKernel
Version | NID |
---|---|
0.990 | not present |
0.996.090-3.610.011 | 0x7D92B2D3 |
3.630.011-3.740.011 | 0xFA1A73DD |
int sceKernelAddressSpaceGetTimerVbaseForKernel(SceUID address_space, void **ppBase);
sceKernelGetAddressSpaceInfoForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0x4492421F |
3.630.011-3.740.011 | 0xC3EF4055 |
This is a guessed name..
int sceKernelGetAddressSpaceInfoForKernel(SceUID address_space, SceKernelAddressSpaceInfo *pInfo);
sceKernelAddressSpaceGetMMUL1InfoForKernel
Version | NID |
---|---|
0.931-0.990 | 0x671A3444 |
3.60 | not present |
Gets information about a L1PT entry in the translation table of an address space. Pass the virtual address of the target entry maps as addr
.
SceInt32 sceKernelAddressSpaceGetMMUL1InfoForKernel(SceUID address_space, const void *addr, SceKernelMMUL1Info *pInfo);
sceKernelAddressSpaceGetMMUL2InfoForKernel
Version | NID |
---|---|
0.931 | 0xCB6E1C80 |
3.60 | not present |
int sceKernelAddressSpaceGetMMUL2InfoForKernel(SceUID address_space, const void *addr, void *pInfo);
sceKernelAddressSpaceGetMMUL1AllInfoForKernel
Version | NID |
---|---|
0.931-0.990 | 0x1A898F2E |
3.60 | not present |
typedef struct SceKernelAddressSpaceMMUL1AllInfo { // size is 0x400C on FW 0.931 SceSize size; // Size of this structure char unk[0x4008]; } SceKernelAddressSpaceMMUL1AllInfo; int sceKernelAddressSpaceGetMMUL1AllInfoForKernel(SceUID address_space, SceKernelAddressSpaceMMUL1AllInfo *pInfo);
sceKernelAddressSpaceGetMMUL2AllInfoForKernel
Version | NID |
---|---|
0.931 | 0x1E1AA29B |
3.60 | not present |
typedef struct SceKernelAddressSpaceMMUL2AllInfo { // size is 0x404 on FW 0.931 SceSize size; // Size of this structure char unk[0x400]; } SceKernelAddressSpaceMMUL2AllInfo; int sceKernelAddressSpaceGetMMUL2AllInfoForKernel(SceUID address_space, const void *addr, SceKernelAddressSpaceMMUL2AllInfo *pInfo);
sceKernelAddressSpaceGetMemoryTypeForKernel
Version | NID |
---|---|
0.990-3.61 | 0xCC7BB240 |
3.63 | 0x0B5A3E93 |
int sceKernelAddressSpaceGetMemoryTypeForKernel(uint32_t *memory_type);
sceKernelAddressSpaceVAtoPAForKernel
Version | NID |
---|---|
0.990-3.61 | 0xF2179820 |
3.63 | 0x1BAF8C0B |
int sceKernelAddressSpaceVAtoPAForKernel(SceAddressSpace *pAS, SceUInt32 mode, void *pVA, void **pPA);
sceKernelAddressSpaceVARangeToPAVectorForKernel
Version | NID |
---|---|
0.990-3.61 | 0xF7250E6C |
3.63 | 0xA541E0CF |
int sceKernelAddressSpaceVARangeToPAVectorForKernel(SceUID address_space, const SceKernelVARange *vRange, SceKernelPAVector *pPAV);
sceKernelAddressSpaceGetPhyMemPartByIndexForKernel
Version | NID |
---|---|
3.60-3.61 | 0x3F74E45C |
3.63 | 0x47C55DCC |
int sceKernelAddressSpaceGetPhyMemPartByIndexForKernel(SceUInt32 index, void **result);
sceKernelAddressSpaceGetPartitionByIndexForKernel
Version | NID |
---|---|
3.60-3.61 | 0x210DB518 |
3.63 | 0x1F84FE44 |
This is a guessed name.
SceUIDPartitionObject *sceKernelAddressSpaceGetPartitionByIndexForKernel(void *pAS, int pindex);
sceKernelAddressSpaceGetMemBlockInfoByAddrForKernel
Version | NID |
---|---|
3.60-3.61 | 0x46A5CB84 |
3.63 | 0xC3F9607E |
int sceKernelAddressSpaceGetMemBlockInfoByAddrForKernel(SceUID asid, int a2, int a3, int a4);
sceKernelCheckAddressSpaceForKernel
Version | NID |
---|---|
3.60-3.61 | 0x8B07BB52 |
3.63 | 0x16A54BFE |
This is a guessed name.
int sceKernelCheckAddressSpaceForKernel(void);
sceKernelGetKernelAddressSpaceForKernel
Version | NID |
---|---|
1.500.151-3.610.011 | 0xC38B4D52 |
3.630.011-3.740.011 | 0x2E5CC243 |
void* sceKernelGetKernelAddressSpaceForKernel(void);
sceKernelCreatePhyMemPartForKernel
Version | NID |
---|---|
0.931-3.61 | 0x2E36E0C4 |
3.63 | 0xA2DFA383 |
Calls #sceKernelCreatePhyMemPartByPbaseForKernel with pbase = 0.
int sceKernelCreatePhyMemPartForKernel(const char *name, int type, SceSize psize, SceKernelPhyMemPart **pPhyMemPart);
sceKernelCreatePhyMemPartByPbaseForKernel
Version | NID |
---|---|
0.931-3.61 | 0x63D83911 |
3.63 | 0x5CC56F87 |
/* type ORed values: 0x00002 : Shell 0x00004 : Game 0x00005 : PhyCont 0x00060 : CDialog 0x10000 : Lpddr2Main 0x30000 : Cdram seen values: 0x10002 : ShellLpddr2Main (shared) 0x10004 : GameLpddr2Main 0x10005 : PhyContLpddr2Main 0x10064 : GameCDialogLpddr2Main 0x30002 : ShellCdram 0x30004 : GameCdram */ int sceKernelCreatePhyMemPartByPbaseForKernel(const char *name, int type, void *pbase, SceSize psize, SceKernelPhyMemPart **ppPhyMemPart);
sceKernelDeletePhyMemPartForKernel
Version | NID |
---|---|
0.931-3.61 | 0x2AEA9E09 |
3.63 | 0x3F72B2E7 |
int sceKernelDeletePhyMemPartForKernel(SceKernelPhyMemPart *pPhyMemPart);
sceKernelGetPhyMemPartAllForKernel
Version | NID |
---|---|
0.931-3.61 | 0x2F6F9C2C |
3.63 | 0x021053DD |
int sceKernelGetPhyMemPartAllForKernel(SceUInt32 vis_level, SceUID *pVector, SceSize vectorSize, SceUInt32 *ret_num);
sceKernelGetPhyMemPartInfoForKernel
Version | NID |
---|---|
0.931-0.990 | 0x67849418 |
3.60 | not present |
int sceKernelGetPhyMemPartInfoForKernel(SceKernelPhyMemPart *pPhyMemPart, SceKernelPhyMemPartInfo *pInfo);
sceKernelGetPhyMemPartInfoByIDForKernel
Version | NID |
---|---|
0.931-3.61 | 0xF4FA0575 |
3.63 | 0x029F5989 |
typedef struct SceKernelPhyMemPartInfo { // size is 0x44 on FW 0.931-0.990 SceSize size; // Size of this structure uint32_t unk_4; // some size or address uint32_t unk_8; // some size or address char unk1[0xC]; char *name; // name, maybe pointer or array char unk2[0x24]; } SceKernelPhyMemPartInfo; int sceKernelGetPhyMemPartInfoByIDForKernel(SceUID guid, SceKernelPhyMemPartInfo *pInfo);
sceKernelGetPhyMemPartInfoCoreForKernel
Version | NID |
---|---|
0.931 | not present |
0.990-3.61 | 0x3650963F |
3.63-3.65 | 0xB9B69700 |
int sceKernelGetPhyMemPartInfoCoreForKernel(SceKernelPhyMemPart *pPhyMemPart, ScePhyMemPartInfoCore *pInfo);
sceKernelGetPhyMemPartInfoForDebuggerForKernel
Version | NID |
---|---|
0.990-1.50 | not present |
3.60-3.61 | 0x54E85275 |
3.63 | 0x73E03A38 |
info size is 0xB0-bytes.
int sceKernelGetPhyMemPartInfoForDebuggerForKernel(SceKernelPhyMemPart *pPhyMemPart, void *pInfo);
sceKernelGrowPhyMemPartForKernel
Version | NID |
---|---|
0.990-3.61 | 0x6B3F4102 |
3.63 | 0x5B434019 |
Calls sceKernelGrowPhyMemPartWithFlagsForKernel with flags = 0.
int sceKernelGrowPhyMemPartForKernel(SceKernelPhyMemPart *pPhyMemPart, SceSize psize);
sceKernelGrowPhyMemPartByPbaseForKernel
Version | NID |
---|---|
0.990 | not present |
3.60-3.61 | 0x775AA5E3 |
3.63 | 0x36FDA794 |
Temp name was sceKernelGrowPhyMemPartWithFlagsForKernel.
Grows physical memory partition with pbase.
int sceKernelGrowPhyMemPartByPbaseForKernel(SceKernelPhyMemPart *pPMP, SceUIntPtr pbase, SceSize psize);
sceKernelGetGrownPhyMemPartSizeForKernel
Version | NID |
---|---|
0.990 | not present |
3.60-3.61 | 0x4D809B47 |
3.63 | 0xBC36755F |
This is a guessed name.
Returns a global variable. This global variable is either a size or offset or address and is incremented by sceKernelGrowPhyMemPartWithFlagsForKernel.
int sceKernelGetGrownPhyMemPartSizeForKernel(void);
SceSysmemForKernel_153A08A0
Version | NID |
---|---|
0.990-3.61 | 0x153A08A0 |
3.63 | 0x6D563733 |
Adds 1 to pPhyMemPart->nClient
using SceSysmem#sceKernelCpuAtomicAddAndGet32ForDriver, and returns its new value.
SceUInt32 SceSysmemForKernel_153A08A0(SceKernelPhyMemPart* pPhyMemPart);
sceKernelAllocPhyPageForKernel
Version | NID |
---|---|
0.990-3.61 | 0xD449547B |
3.63-3.74 | 0xB488C82E |
Temp name was sceKernelPhyMemPartAllocPhyPageForKernel.
int sceKernelAllocPhyPageForKernel(void *pPhyMemPart, SceSize size, void **ppPhyPage);
sceKernelResetPhyMemPartForKernel
Version | NID |
---|---|
3.60 | 0xEEB85560 |
3.65 | 0x9B7E673F |
Used by SceProcessmgr#sceKernelResetGameBudgetForKernel.
Called with same argument as #sceKernelSetPhyPartGameForKernel.
int sceKernelResetPhyMemPartForKernel(SceKernelPhyMemPart *pPhyMemPart);
sceKernelShowPhyMemPartForKernel
Version | NID |
---|---|
3.60-3.61 | 0x5C257482 |
3.63-3.65 | 0x8F0B5536 |
Prints information about a Physical Memory Partition.
Only implemented in sysdbg build.
SceInt32 sceKernelShowPhyMemPartForKernel(SceKernelPhyMemPart *pPMP);
sceKernelFreePhyPageForKernel
Version | NID |
---|---|
0.990-3.61 | 0x00BC5B4A |
3.63 | 0x193A9D2F |
int sceKernelFreePhyPageForKernel(void *pPhyMemPart, void *pPage);
sceKernelSetPhyMemPartHookForKernel
Version | NID |
---|---|
3.60-3.61 | 0x17F1AA22 |
3.63 | 0x31FA81B5 |
This is a guessed name.
Only implemented in sysdbg build.
int sceKernelSetPhyMemPartHookForKernel(void *pHook);
sceKernelSetPhyMemPartLogCallbackForKernel
Version | NID |
---|---|
3.60-3.61 | 0x72E7BFAC |
3.63 | 0x93D0A183 |
This is a guessed name.
Only implemented in sysdbg build.
int sceKernelSetPhyMemPartLogCallbackForKernel(void *pCallbacks);
sceKernelAllocKernelHeapForKernel
Version | NID |
---|---|
0.931-0.990 | 0x432EADA6 |
3.60 | not present |
int sceKernelAllocKernelHeapForKernel(SceSize size);
sceKernelGetHeapInfoForKernel
Version | NID |
---|---|
0.931-3.61 | 0x91733EF4 |
3.63 | 0x17DB1A0A |
// 0.931-0.990: int sceKernelGetHeapInfoForKernel(SceUID heapid, SceKernelHeapInfo *pInfo); // 3.60: int sceKernelGetHeapInfoForKernel(SceUID heapid, SceUInt32 level, SceKernelHeapInfo *pInfo);
sceKernelGetHeapInfoAllForKernel
Version | NID |
---|---|
0.990-3.61 | 0x48D87E17 |
3.63 | 0x1380E144 |
This is a guessed namee.
int sceKernelGetHeapInfoAllForKernel(SceUInt32 vis_level, void *pInfo, SceSize infoSize, SceUInt32 *pnInfo);
sceKernelGetHeapInfoAllChunkForKernel
Version | NID |
---|---|
0.931-0.990 | 0xAC4C0EB1 |
3.60 | not present |
int sceKernelGetHeapInfoAllChunkForKernel(SceUID heapid, SceKernelHeapInfo *pInfo);
sceKernelGetHeapInfoByPtrForKernel
Version | NID |
---|---|
0.931-0.990 | not present |
3.60-3.61 | 0x68451777 |
3.63 | 0x80A75187 |
Temp name was sceKernelGetHeapInfoByPointerForKernel.
int sceKernelGetHeapInfoByPtrForKernel(void *pObject, SceKernelHeapInfo *pInfo);
sceKernelReallocHeapMemoryForKernel
Version | NID |
---|---|
3.60-3.61 | 0xFDC0EA11 |
3.63 | 0x8EE8B917 |
This is a guessed name.
void *sceKernelReallocHeapMemoryForKernel(SceUID heapid, void *ptr, SceSize size);
sceKernelHeapEnableModeForKernel
Version | NID |
---|---|
3.60-3.61 | 0xF1433852 |
3.63 | 0x0B36F7F9 |
This is a guessed name.
int sceKernelHeapEnableModeForKernel(SceUID heapid, SceUInt32 mode);
sceKernelHeapDiableModeForKernel
Version | NID |
---|---|
3.60-3.61 | 0x71869119 |
3.63 | 0x6E82D5A0 |
This is a guessed name.
int sceKernelHeapDiableModeForKernel(SceUID heapid, SceUInt32 mode);
sceKernelHeapMemoryGetAllocateSizeForKernel
Version | NID |
---|---|
3.60-3.61 | 0x60735311 |
3.63 | 0xD124075A |
This is a guessed name.
SceSize sceKernelHeapMemoryGetAllocateSizeForKernel(void *ptr);
sceKernelPrintHeapSegmentListForKernel
Version | NID |
---|---|
3.60-3.61 | 0x2EE50533 |
3.63 | 0x82059651 |
Only implemented in sysdbg build.
int sceKernelPrintHeapSegmentListForKernel(SceUID heap_guid);
sceKernelGetKernelFixedHeapForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0x68CB9266 |
3.630.000-3.740.011 | 0x3717C322 |
Temp name was sceKernelGetFixedHeapBySizeForKernel.
SceUIDFixedHeapObject *sceKernelGetKernelFixedHeapForKernel(SceSize size);
sceKernelGetFixedHeapInfoForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0x4FA4A624 |
3.630.000-3.740.011 | 0x890D9160 |
int sceKernelGetFixedHeapInfoForKernel(SceUID heapid, SceKernelFixedHeapInfo *pInfo);
sceKernelGetFixedHeapInfoByPointerForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0x219E90FD |
3.630.000-3.740.011 | 0xA24D2C8D |
int sceKernelGetFixedHeapInfoByPointerForKernel(SceUIDFixedHeapObject *pFixedHeap, SceKernelFixedHeapInfo *pInfo);
sceKernelFixedHeapSetHookForKernel
Version | NID |
---|---|
0.931.010-1.06 | not present |
1.500.151-3.610.011 | 0x8C8E2DD1 |
3.630.000-3.740.011 | 0xD4511A52 |
int sceKernelFixedHeapSetHookForKernel(SceUID heapid, void *hookdata);
sceKernelFixedHeapAllocObjectForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0xC8672A3D |
3.630.000-3.740.011 | 0xABA5313C |
This is a guessed name.
void *sceKernelFixedHeapAllocObjectForKernel(SceUIDFixedHeapObject *pFixedHeap);
sceKernelFixedHeapFreeObjectForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0x571660AA |
3.630.000-3.740.011 | 0x93344755 |
This is a guessed name.
int sceKernelFixedHeapFreeObjectForKernel(SceUIDFixedHeapObject *pFixedHeap, void *pObject);
sceKernelFixedHeapSetHookByPointerForKernel
Version | NID |
---|---|
0.931.010-2.12 | not present |
2.500.071-3.610.011 | 0x3EC2345B |
3.630.000-3.740.011 | 0x811C452B |
This is a guessed name.
int sceKernelFixedHeapSetHookByPointerForKernel(SceUIDFixedHeapObject *pFixedHeap, void *a2);
sceKernelNameHeapInsertForKernel
Version | NID |
---|---|
0.990-3.61 | 0x08AB3DAE |
3.63 | 0xB628B46B |
int sceKernelNameHeapInsertForKernel(const char *name, int flags, char **result);
sceKernelNameHeapDeleteForKernel
Version | NID |
---|---|
0.990-3.61 | 0x9C7B62AB |
3.63 | 0x634D0D0C |
name max length is 31 characters.
int sceKernelNameHeapDeleteForKernel(const char *name, SceUInt32 flag);
sceKernelNameHeapLinkForKernel
Version | NID |
---|---|
3.60-3.61 | 0xEC1293D2 |
3.63 | 0x40965FD1 |
int sceKernelNameHeapLinkForKernel(const char *name, int flags, void **result);
sceKernelNameHeapFindForKernel
Version | NID |
---|---|
3.60-3.61 | 0xB543A23C |
3.63 | 0x9F1A9AA6 |
Search for name
in one of the NameHeap
s.
If found, a pointer to the heap's copy of name
is returned in ppHeapName
.
/* Search in the "unique" NameHeap (contains name of OPENABLE objects) when this flag is set */ #define SCE_KERNEL_NAME_HEAP_ATTR_UNIQUE (0x2u) int sceKernelNameHeapFindForKernel(const char *name, uint32_t attr, char **ppHeapName);
sceKernelNameHeapGetKeyForKernel
Version | NID |
---|---|
3.60-3.61 | 0x942D15FC |
3.63 | 0xEB48682E |
This is a guessed name.
Calculates the MurmurHash3
hash of key
. Used to get UID by name.
SceUInt32 sceKernelNameHeapGetKeyForKernel(const char *key, SceSize len, SceUInt32 seed);
sceKernelNameHeapGetInfoForKernel
Version | NID |
---|---|
0.931.010-0.990 | not present |
0.996.090-3.610.011 | 0xE443253B |
3.630.000-3.740.011 | 0x01194C2E |
int sceKernelNameHeapGetInfoForKernel(void *pInfo);
sceKernelCreateObjectHeapForKernel
Version | NID |
---|---|
3.60-3.61 | 0x36830F46 |
3.63 | 0x9D8F3BE8 |
int sceKernelCreateObjectHeapForKernel(SceUID pid, SceBool a2, SceFixedHeapHook *pHeapHook, SceKernelObjectHeap **ppObjectHeap);
sceKernelCreateObjectHeapWithHeapForKernel
Version | NID |
---|---|
3.60-3.61 | 0x7FD757FE |
3.63 | 0x660DC18A |
This is a guessed name.
int sceKernelCreateObjectHeapWithHeapForKernel(SceKernelObjectHeap *pObjectHeap, SceUID pid, SceUID heapid);
sceKernelDeleteObjectHeapForKernel
Version | NID |
---|---|
3.60-3.61 | 0x080BA2F3 |
3.63 | 0x2F526AB8 |
This is a guessed name.
int sceKernelDeleteObjectHeapForKernel(SceKernelObjectHeap *pObjectHeap);
sceKernelObjectHeapAllocForKernel
Version | NID |
---|---|
3.60-3.61 | 0x7FDF483A |
3.63 | 0xEBFC8E10 |
This is a guessed name.
void *sceKernelObjectHeapAllocForKernel(SceKernelObjectHeap *pObjectHeap, SceSize size);
sceKernelObjectHeapFreeForKernel
Version | NID |
---|---|
3.60-3.61 | 0x131CEF52 |
3.63 | 0x17D3D4BD |
This is a guessed name.
int sceKernelObjectHeapFreeForKernel(SceKernelObjectHeap *pObjectHeap, SceSize size, void *pObject);
sceKernelObjectHeapSetResourceLimitForKernel
Version | NID |
---|---|
3.60-3.61 | 0x98E6905B |
3.63 | 0xDFA1EB57 |
int sceKernelObjectHeapSetResourceLimitForKernel(int a1, int a2, int a3, int a4, int a5);
sceKernelObjectHeapSetResourceLimitAllForKernel
Version | NID |
---|---|
3.60-3.61 | 0x5409397F |
3.63 | 0x067F2550 |
int sceKernelObjectHeapSetResourceLimitAllForKernel(SceKernelObjectHeap *pObjectHeap, int a2, int a3);
sceKernelObjectHeapSetSizeForKernel
Version | NID |
---|---|
3.60-3.61 | 0x6427560F |
3.63 | 0xB591E49F |
This is a guessed name.
int sceKernelObjectHeapSetSizeForKernel(SceUInt32 index, SceUInt32 size);
sceKernelGetObjectHeapForKernel
Version | NID |
---|---|
3.60-3.61 | 0x3B75CBED |
3.63 | 0x857408DA |
This is a guessed name.
SceKernelObjectHeap *sceKernelGetObjectHeapForKernel(void);
Version | NID |
---|---|
3.60-3.61 | 0xBF0294E4 |
3.63 | 0x791D6205 |
This is a guessed name.
SceKernelObjectHeap *sceKernelGetSharedObjectHeapForKernel(void);
SceSysmemForKernel_B8D769C6
Version | NID |
---|---|
3.60-3.61 | 0xB8D769C6 |
3.63 | 0xDBEACE2C |
int SceSysmemForKernel_B8D769C6(SceKernelObjectHeap *pObjectHeap, void *info);
sceUIDCreateEntryHeapForKernel
Version | NID |
---|---|
0.990-3.60 | 0x19CAEF35 |
3.65 | 0x89BEF058 |
int sceUIDCreateEntryHeapForKernel(SceUID pid, SceUID heap_guid);
sceUIDDeleteEntryHeapForKernel
Version | NID |
---|---|
0.990-3.60 | 0xF0C3FCFC |
3.65 | 0xF6D09BD9 |
int sceUIDDeleteEntryHeapForKernel(SceUID guid);
sceUIDRegisterForKernel
Version | NID |
---|---|
0.931-0.990 | 0x59162CD7 |
3.60 | not present |
Calls #sceGUIDRegisterForKernel.
int sceUIDRegisterForKernel(SceClass *pClass, const char *name, SceKernelObject *pObject);
sceUIDObjectSetClassForKernel
Version | NID |
---|---|
0.931-0.990 | 0x226DE851 |
3.60 | not present |
int sceUIDObjectSetClassForKernel(SceKernelObject *pObject, SceClass *pClass);
sceUIDGetUIDVectorByClassForKernel
Version | NID |
---|---|
0.931.010-1.060.031 | 0xA2F03233 |
1.500.151-3.740.011 | not present |
Calls #sceGUIDGetUIDVectorByClassForKernel.
sceUIDGetProcUIDVectorByClassForKernel
Version | NID |
---|---|
0.990.000-1.060.031 | 0x51C08396 |
1.500.151-3.740.011 | not present |
sceUIDReferObjectWithLevelForKernel
Version | NID |
---|---|
0.990 | 0xF79B52B2 |
3.60 | not present |
int sceUIDReferObjectWithLevelForKernel(SceUID uid, SceUInt32 level, SceKernelObject **ppEntry);
sceUIDGetObjectForKernel
Version | NID |
---|---|
0.931-0.990 | 0xC4893914 |
3.60 | not present |
Calls #sceGUIDGetObjectForDriver.
int sceUIDGetObjectForKernel(SceUID uid, SceKernelObject **ppEntry);
sceUIDtoObjectForKernel
Version | NID |
---|---|
0.990-3.60 | 0xED221825 |
3.65 | 0xFA6C098C |
Calls SceSysmem#sceGUIDGetObjectForDriver.
SceKernelObject *sceUIDtoObjectForKernel(SceUID uid);
sceUIDClassIsSubclassForKernel
Version | NID |
---|---|
0.990-1.691 | not present (in ForDriver) |
3.60-3.61 | 0x48750A5A |
3.63 | 0x7F7D5C4A |
This is a guessed name. Temp name was sceUIDClassIsWithinSubclassChainForKernel.
SceBool sceUIDClassIsSubclassForKernel(SceClass *pClass, SceClass *pTargetClass);
sceUIDEntryHeapCloseAllPUIDForKernel
Version | NID |
---|---|
0.931-3.60 | 0xFAF96C1F |
3.65 | 0x133024A5 |
int sceUIDEntryHeapCloseAllPUIDForKernel(SceUID guid);
sceKernelUIDEntryHeapGetInfoForKernel
Version | NID |
---|---|
0.990 | not present |
3.60-3.61 | 0x686AA15C |
3.63 | 0xCCD47B97 |
Official name may also be sceUIDEntryHeapGetInfoForKernel (seen in 4.00).
typedef struct SceUIDEntryHeapInfo { SceSize size; //<! Size of this structure (0x18) SceSize objectSize; SceSize totalHeapSize; SceSize totalItemCount; SceSize unk10; SceSize unk14; } SceUIDEntryHeapInfo; SceInt32 sceKernelUIDEntryHeapGetInfoForKernel(SceUID entryHeapId, SceUIDEntryHeapInfo *pInfo);
sceUIDEntryHeapSetHookForKernel
Version | NID |
---|---|
3.60-3.61 | 0xCD985AEB |
3.63 | 0x666C878F |
?Implemented in internal system software.? Not implemented in external system software.
int sceUIDEntryHeapSetHookForKernel(SceUID guid, void *pHook);
sceUIDEntryGetNameForKernel
Version | NID |
---|---|
3.60-3.61 | 0x114E6476 |
3.63 | 0x5FD15C6E |
This is a guessed name.
char *sceUIDEntryGetNameForKernel(SceUIDEntry *pEntry);
sceUIDEntryGetLevelForKernel
Version | NID |
---|---|
3.60-3.61 | 0xC2F7D8A4 |
3.63 | 0x797C858B |
This is a guessed name.
SceUInt16 sceUIDEntryGetLevelForKernel(SceUIDEntry *pEntry);
sceUIDEntryGetAttrForKernel
Version | NID |
---|---|
3.60-3.61 | 0x8FB73A29 |
3.63 | 0x17F12DCE |
This is a guessed name.
SceUInt32 sceUIDEntryGetAttrForKernel(SceUIDEntry *pEntry);
sceUIDEntryGetLinkCountForKernel
Version | NID |
---|---|
3.60-3.61 | 0x876A7F44 |
3.63 | 0xF3DB2D71 |
This is a guessed name.
SceUInt8 sceUIDEntryGetLinkCountForKernel(SceUIDEntry *pEntry);
sceUIDEntryGetUIDForKernel
Version | NID |
---|---|
3.60-3.61 | 0x6BB6AF94 |
3.63 | 0x03A2CAF0 |
This is a guessed name.
SceUID sceUIDEntryGetUIDForKernel(SceUIDEntry *pEntry);
sceGUIDRegisterForKernel
Version | NID |
---|---|
0.990-3.61 | 0xAF42AAD5 |
3.63 | 0x6DB44A42 |
SceUID sceGUIDRegisterForKernel(SceClass *pClass, const char *name, SceKernelObject *pObject);
sceGUIDUnregisterForKernel
Version | NID |
---|---|
0.931-0.990 | 0xE79BBCF2 |
3.60 | not present |
int sceGUIDUnregisterForKernel(SceUID uid);
sceGUIDOpenByGUIDForKernel
Version | NID |
---|---|
0.990-3.61 | 0xCF53EEE4 |
3.63 | 0x89D33DF0 |
SceUID sceGUIDOpenByGUIDForKernel(SceUID guid);
sceGUIDNameForKernel
Version | NID |
---|---|
0.990.000-1.060.031 | 0x250EE289 |
1.50-3.740.011 | not present |
char *sceGUIDNameForKernel(SceUID uid);
sceGUIDtoClassForKernel
Version | NID |
---|---|
0.990-3.61 | 0x66636970 |
3.63 | 0x368F1C36 |
SceClass *sceGUIDtoClassForKernel(SceUID guid);
sceGUIDGetObjectWithClassForKernel
Version | NID |
---|---|
0.990-3.61 | 0x7ABFA9A7 |
3.63 | 0x0E43E113 |
Possible name are sceUIDGetObjectWithClassForKernel or sceUIDtoProcessForKernel.
int sceGUIDGetObjectWithClassForKernel(SceUID uid, SceClass *pClass, SceKernelObject **obj);
sceGUIDGetUIDVectorByClassForKernel
Version | NID |
---|---|
0.931.010-3.600.011 | 0xEC7D36EF |
3.630.011-3.740.011 | 0x52137FA3 |
Copy UIDs to pVector
by referring to all objects created by pClass
.
/* * nVector - maximum number of copied UIDs * ret_num - number of retrieved UIDs */ int sceGUIDGetUIDVectorByClassForKernel(SceClass *pClass, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num);
sceGUIDGetUIDVectorWeakByClassForKernel
Version | NID |
---|---|
0.931.010-1.060.031 | not present |
1.500.151-3.610.011 | 0x59F577E8 |
3.630.011-3.740.011 | 0xE9957329 |
Copy UIDs to pVector
by referring to all objects created by pClass
.
/* * nVector - maximum number of copied UIDs * ret_num - number of retrieved UIDs */ int sceGUIDGetUIDVectorWeakByClassForKernel(SceClass *pClass, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num);
sceGUIDGetEntryForKernel
Version | NID |
---|---|
3.60-3.61 | 0x45F2A59C |
3.63 | 0xFF464A49 |
int sceGUIDGetEntryForKernel(SceUID guid, SceUIDEntry **ppEntry);
sceGUIDGetEntryInfoAllForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0x2A79C51C |
3.630.011-3.740.011 | 0x3BF0DE65 |
int sceGUIDGetEntryInfoAllForKernel(SceUInt32 vis_level, SceUID guid, SceUID *pVector, SceUInt32 nVector, void *pInfo);
sceGUIDGetEntryInfoClassForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0xE90CFD62 |
3.630.011-3.740.011 | 0x71E934DB |
int sceGUIDGetEntryInfoClassForKernel(SceUID guid, SceClass *pClass, SceUInt32 vis_level, void *pInfoVector, SceUInt32 nVector, SceUInt32 *ret_num);
sceGUIDKernelCreateForKernel
Version | NID |
---|---|
0.990 | 0xE6FAD50A |
3.60 | not present |
Create a GUID with default attribute (0x30000).
int sceGUIDKernelCreateForKernel(SceClass *pClass, const char *name, SceKernelObject **ppEntry);
sceGUIDKernelCreateWithAttrForKernel
Version | NID |
---|---|
0.990-3.61 | 0x53E1FFDE |
3.63 | 0x6D26B066 |
Create a GUID with the specified attribute.
int sceGUIDKernelCreateWithAttrForKernel(SceClass *pClass, const char *name, SceUInt32 attr, SceKernelObject **ppEntry);
sceGUIDKernelCreateWithOptForKernel
Version | NID |
---|---|
0.990-0.995 | not present |
0.996-3.60 | 0xDF0288D7 |
3.65 | 0xFB6390CE |
This is a guessed name. Temp name was sceKernelCreateUidObjForKernel, scePUIDKernelCreateWithAttrForKernel.
typedef struct SceGUIDKernelCreateOpt { // size is at least 0x20 on FW 3.60 SceUInt32 attr; SceUInt32 field_4; SceUID uid; SceUID pid; SceUInt32 field_10; SceUInt32 classAttr; SceUInt32 uidAttr; SceUID pid2; } SceGUIDKernelCreateOpt; SceUID sceGUIDKernelCreateWithOptForKernel(SceClass *pClass, const char *name, SceGUIDKernelCreateOpt *pOpt, SceKernelObject **ppEntry);
sceGUIDGetVisibilityLevelForKernel
Version | NID |
---|---|
3.60-3.61 | 0xC69666C3 |
3.63 | 0x4E923101 |
SceUInt32 sceGUIDGetVisibilityLevelForKernel(SceUID guid);
sceGUIDSetVisibilityLevelForKernel
Version | NID |
---|---|
3.60-3.61 | 0xCB8D03C0 |
3.63 | 0xE8CC2166 |
Sets visibilityLevel into guid's GUIDEntry.
int sceGUIDSetVisibilityLevelForKernel(SceUID guid, int visibilityLevel);
sceGUIDFindByObjectForKernel
Version | NID |
---|---|
0.990-3.61 | 0x95ABFDC3 |
3.63 | 0xEC90AA11 |
SceUID sceGUIDFindByObjectForKernel(void *pObject);
sceGUIDFindByNameForKernel
Version | NID |
---|---|
3.60-3.61 | 0xCEBA8031 |
3.63 | 0xBDE00106 |
SceUID sceGUIDFindByNameForKernel(const char *name);
sceGUIDFindByNameAllForKernel
Version | NID |
---|---|
3.60-3.61 | 0x4B5C85AC |
3.63 | 0xF49C0BE8 |
// return value: to reverse, should be either SceUID guid or void* pObj SceUID sceGUIDFindByNameAllForKernel(const char *name);
sceGUIDGetPIDForKernel
Version | NID |
---|---|
3.60-3.61 | 0xCF5A2311 |
3.63 | 0xBD42A0FC |
Returns Process ID for guid.
SceUID sceGUIDGetPIDForKernel(SceUID guid);
sceGUIDSetPIDForKernel
Version | NID |
---|---|
3.60-3.61 | 0x812E7A53 |
3.63 | 0x46DF8C8A |
Sets Process ID for guid.
int sceGUIDSetPIDForKernel(SceUID guid, SceUID pid);
sceGUIDSetCNOAForKernel
Version | NID |
---|---|
3.60-3.61 | 0x8D6AF468 |
3.63 | 0x5EDDEEB5 |
Setting Class Name Object Attr.
int sceGUIDSetCNOAForKernel(SceUID guid, SceClass *pClass, const char *name, void *pObject, SceUInt32 attr);
sceGUIDSetForKernel
Version | NID |
---|---|
0.931-3.61 | 0xD7B323EB |
3.63 | 0xBF275C5A |
Re setting the GUID on an object that already has a uid assigned may cause the system to malfunction.
int sceGUIDSetForKernel(SceUID guid, SceClass *pClass, const char *name, SceKernelObject *pObject);
scePUIDGetEntryInfoAllForKernel
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.610.011 | 0x2770A7D7 |
3.630.011-3.740.011 | 0x3C3005EE |
int scePUIDGetEntryInfoAllForKernel(SceUID pid, SceClass *pClass, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, void *pInfo);
scePUIDGetAttrForKernel
Version | NID |
---|---|
3.60-3.61 | 0x86E83C0D |
3.63 | 0x96BD47D1 |
int scePUIDGetAttrForKernel(SceUID pid, SceUID puid, SceUInt32 *pAttr);
scePUIDReleaseObjectForKernel
Version | NID |
---|---|
0.990-3.61 | 0x3FCA782B |
3.63 | 0xCE561224 |
int scePUIDReleaseObjectForKernel(SceUID pid, SceUID puid);
scePUIDGetInfoForKernel
Version | NID |
---|---|
0.990 | not present |
3.60-3.61 | 0x12ED88AE |
3.63 | 0x857701D4 |
// pInfo size is 0x14 bytes int scePUIDGetInfoForKernel(SceUID pid, SceUID puid, void *pInfo);
scePUIDtoGUIDWithDebugForKernel
Version | NID |
---|---|
3.60-3.61 | 0xB3E2AA7A |
3.63 | 0x188C8742 |
This is a guessed name.
SceUID scePUIDtoGUIDWithDebugForKernel(SceUID pid, SceUID puid);
scePUIDReferObjectForKernel
Version | NID |
---|---|
0.990-3.61 | 0x620E00E7 |
3.63 | 0x2C15615F |
int scePUIDReferObjectForKernel(SceUID pid, SceUID puid, SceObject **ppObject);
scePUIDOpenByNameWithOptForKernel
Version | NID |
---|---|
3.60-3.61 | 0x22F79E82 |
3.63 | 0x201E970B |
SceUID scePUIDOpenByNameWithOptForKernel(ScePID pid, const char *name, void *pOpt);
scePUIDGetPUIDVectorByGUIDForKernel
Version | NID |
---|---|
0.931.010-2.06 | not present |
2.100.081-3.610.011 | 0xBF04FC83 |
3.630.011-3.740.011 | 0xCE16AD91 |
int scePUIDGetPUIDVectorByGUIDForKernel(SceUID pid, SceUID guid, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num);
scePUIDGetUIDVectorByClassForKernel
Version | NID |
---|---|
0.990.000-3.610.011 | 0xB16D5136 |
3.630.000-3.740.011 | 0x08C05493 |
Similar to #sceGUIDGetUIDVectorByClassForKernel.
int scePUIDGetUIDVectorByClassForKernel(SceUID pid, SceClass *pClass, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num);
scePUIDReferObjectWithClassForKernel
Version | NID |
---|---|
3.60-3.61 | 0x9C53F457 |
3.63 | 0x9C23DFF7 |
This is a guessed name.
int scePUIDReferObjectWithClassForKernel(SceUID pid, SceUID puid, SceClass *pClass, void **ppObject);
scePUIDOpenByGUIDWithOptForKernel
Version | NID |
---|---|
3.60-3.61 | 0x53A2E272 |
3.63 | 0x1FF2749A |
This is a guessed name.
SceUID scePUIDOpenByGUIDWithOptForKernel(SceUID pid, SceUID guid, void *pOpt);
scePUIDGetGUIDVectorForKernel
Version | NID |
---|---|
3.60-3.61 | 0x3203AE64 |
3.63 | 0x66489B4B |
This is a guessed name.
int scePUIDGetGUIDVectorForKernel(SceUID pid, SceUInt32 vis_level, SceUID *pVector, SceUInt32 nVector, SceUInt32 *ret_num);
sceKernelGetPhyPartKernelForKernel
Version | NID |
---|---|
0.931-3.61 | 0x4D38F861 |
3.63-3.65 | 0x0164D817 |
return gpPhyPartKernel;
void *sceKernelGetPhyPartKernelForKernel(void);
sceKernelGetPhyPartToolForKernel
Version | NID |
---|---|
0.990-3.61 | 0xF8E95A5A |
3.63-3.65 | 0x0B1B4ACA |
void *sceKernelGetPhyPartToolForKernel(void);
sceKernelGetPhyPartGameForKernel
Version | NID |
---|---|
3.60-3.61 | 0xB60568F9 |
3.63-3.65 | 0x62800A6B |
void *sceKernelGetPhyPartGameForKernel(void);
sceKernelSetPhyPartGameForKernel
Version | NID |
---|---|
3.60-3.61 | 0x77876A8D |
3.63-3.65 | 0x3753C584 |
void sceKernelSetPhyPartGameForKernel(void *pPhyPart);
sceKernelSetPhyPartCdramForKernel
Version | NID |
---|---|
3.60-3.61 | 0x07FEBBCA |
3.63 | 0xDCEF10B2 |
This is a guessed name.
void sceKernelSetPhyPartCdramForKernel(void *pPhyPart);
sceKernelPhyMemLowAllocForKernel
Version | NID |
---|---|
0.931-3.61 | 0x5E169FEF |
3.63 | 0xEA98CCE1 |
Allocate a range of physically contiguous "pages" from a PhyMemLow object.
// type must be one of SCE_KERNEL_PHYMEMLOW_TYPE (0x10001, 0x10002 or 0x20001) // size and alignment must be aligned to the target PHYMEMLOW granularity // On success, *pOut contains the base physical address of a range with the provided size SceInt32 sceKernelPhyMemLowAllocForKernel(SceUInt32 type, SceSize size, SceSize alignment, SceUIntPAddr* pOut);
sceKernelPhyMemLowPA2VAForKernel
Version | NID |
---|---|
0.931-3.61 | 0x0FD6B756 |
3.63 | 0x2CFD8C9A |
// type must be 0x10002 int sceKernelPhyMemLowPA2VAForKernel(int type, void *PA, void **pVA);
sceKernelGetPhyMemLowInfoForKernel
Version | NID |
---|---|
0.931-0.990 | 0x06A4DA6C |
3.60 | not present |
// type must be one of SCE_KERNEL_PHYMEMLOW_TYPE (0x10001, 0x10002 or 0x20001) SceInt32 sceKernelGetPhyMemLowInfoForKernel(SceUInt32 type, SceKernelPhyMemLowInfo *info);
sceKernelPhyMemLowFreeForKernel
Version | NID |
---|---|
0.931-3.61 | 0x18B99FDD |
3.63 | 0x844DF3DA |
Free a range of physical "pages" from a PhyMemLow object.
// type must be one of SCE_KERNEL_PHYMEMLOW_TYPE (0x10001, 0x10002 or 0x20001) SceInt32 sceKernelPhyMemLowFreeForKernel(SceUInt32 type, SceUIntPAddr pbase, SceSize size);
sceKernelSetPhyMemLowHookForKernel
Version | NID |
---|---|
3.60-3.61 | 0x2658EE0A |
3.63 | 0x2C7B8D65 |
This is a guessed name.
Only implemented in sysdbg build.
int sceKernelSetPhyMemLowHookForKernel(void *pHook);
sceKernelAllocMemBlockByCommandForKernel
Version | NID |
---|---|
3.60-3.61 | 0xCA91B9D5 |
3.63 | 0x455B0A4C |
typedef struct SceKernelMemBlockAllocCommand { // size is 0x94 on FW 3.65 SceSize size; // Size of this structure SceUInt32 code; char* name; char unk_8[0x74]; void* typeInfo; char unk_0x84[0x10]; } SceKernelMemBlockAllocCommand; int sceKernelAllocMemBlockByCommandForKernel(SceKernelMemBlockAllocCommand *pCommand);
sceKernelAllocSimpleMemBlockForKernel
Version | NID |
---|---|
0.990-3.61 | 0xF81F4672 |
3.63 | 0x814CDCC5 |
typedef struct SceKernelSimpleMemBlock { char unk_0[0x14]; void *base; char unk_18[0x14]; void *PhyPage; SceSize size; } SceKernelSimpleMemBlock; int sceKernelAllocSimpleMemBlockForKernel(const char *name, SceKernelMemBlockType type, SceSize vsize, SceKernelSimpleMemBlock *smb);
sceKernelFreeSimpleMemBlockForKernel
Version | NID |
---|---|
0.990-3.61 | 0xA1FFA2C9 |
3.63 | 0xA4DB88E1 |
int sceKernelFreeSimpleMemBlockForKernel(void *a1);
sceKernelGetSimpleMemBlockBaseForKernel
Version | NID |
---|---|
0.990-3.61 | 0x0A8D14EC |
3.63 | 0x39D5A3B7 |
int sceKernelGetSimpleMemBlockBaseForKernel(SceKernelSimpleMemBlock *smb, void **base);
sceKernelSimpleMemBlockGetFIFOForKernel
Version | NID |
---|---|
3.60-3.61 | 0x43DFCE89 |
3.63 | 0xBD625136 |
This is a guessed name.
int sceKernelSimpleMemBlockGetFIFOForKernel(void *pResult);
sceKernelGetMemBlockInfoAllForKernel
Version | NID |
---|---|
3.60-3.61 | 0xFEF54604 |
3.63 | 0x1D19C864 |
int sceKernelGetMemBlockInfoAllForKernel(void *pPart, int a2, int a3, int a4, int a5, SceUInt32 level, void *pInfoBuffer, int a8, SceUInt32 *a9);
sceKernelGetMemBlockInfoSimpleForKernel
Version | NID |
---|---|
0.990-3.61 | 0x2364A170 |
3.63 | 0xBA441FD0 |
int sceKernelGetMemBlockInfoSimpleForKernel(SceUID uid, SceKernelMemBlockInfoSimple *pInfo);
sceKernelGetMemBlockTypeForKernel
Version | NID |
---|---|
3.60-3.61 | 0x289BE3EC |
3.63 | 0xD44FE44B |
/*** * Gets the memory block type of a memory block * * @param[in] uid - SceUID of the memory block * @param[out] type - Type of the memory block identified by uid * * @return 0 on success, < 0 on error. */ int sceKernelGetMemBlockTypeForKernel(SceUID uid, unsigned int *type);
sceKernelRemapMemBlockForKernel
Version | NID |
---|---|
0.931-1.05 | 0x8D332AE1 |
1.50-3.60 | not present. Moved to ForDriver |
Temp name was sceKernelRemapBlockForKernel.
See sceKernelRemapMemBlockForDriver.
sceKernelSetMemBlockDebugCallbackForKernel
Version | NID |
---|---|
3.60-3.61 | 0x01DE3AB7 |
3.63 | 0xF57A97A0 |
This is a guessed name.
Only implemented in sysdbg build.
int sceKernelSetMemBlockDebugCallbackForKernel(void *pCallbacks);
sceKernelMemBlockAssocPhyPageForKernel
Version | NID |
---|---|
3.60-3.61 | 0xA88F6D88 |
3.63 | 0x441E6BE9 |
This is a guessed name.
int sceKernelMemBlockAssocPhyPageForKernel(SceUID guid, const SceUIntPtr *a2);
sceKernelAllocPartitionStackMemBlockForKernel
Version | NID |
---|---|
3.60-3.61 | 0x64133268 |
3.63 | 0x40870E74 |
Temp name was sceKernelAllocStackBlockForKernel.
SceUID sceKernelAllocPartitionStackMemBlockForKernel(const char *name, SceSize size, int a3);
sceKernelMemBlockGetCodeForKernel
Version | NID |
---|---|
3.60-3.61 | 0x61C2AA52 |
3.63 | 0x48D2E408 |
This is a guessed name.
SceUint32 sceKernelMemBlockGetCodeForKernel(SceUint32 type);
sceKernelAllocPartitionMemBlockForKernel
Version | NID |
---|---|
0.931-3.60 | 0x5FFE4B79 |
3.65 | 0x6DB46017 |
Temp name was sceKernelAllocSystemCallTableForKernel.
SceUID sceKernelAllocPartitionMemBlockForKernel(SceUID part, const char *name, SceKernelMemBlockType type, SceSize size, const struct SceKernelAllocMemBlockOptKernel *pOpt);
sceKernelPartitionGetInfoForKernel
Version | NID |
---|---|
3.60-3.61 | 0x7BE4D3D1 |
3.63 | 0xFB101B86 |
int sceKernelPartitionGetInfoForKernel(SceUID part_id, void *pInfo);
sceKernelGetPhyPageResetForKernel
Version | NID |
---|---|
0.990-3.61 | 0xEB350679 |
3.63 | 0x8FD11E02 |
void *sceKernelGetPhyPageResetForKernel(void);
SceSysmemForKernel_BD33EDDF
Version | NID |
---|---|
0.931 | 0xBD33EDDF |
3.60 | not present |
Gets thread's name. Returns 0 on success.
int SceSysmemForKernel_BD33EDDF(int maybe_thid, char **pThreadName);
sceKernelAllocForKernel
Version | NID |
---|---|
0.990-3.60 | 0xC0A4D2F3 |
3.65 | 0x85571907 |
void *sceKernelAllocForKernel(SceSize len);
sceKernelAllocWithOptForKernel
Version | NID |
---|---|
3.60-3.61 | 0xA2CD1697 |
3.63 | 0xCF3C3F7A |
typedef struct SceAllocOpt { SceSize size; // 0x14 SceSize data04; // maybe len align? SceSize align; int data0C; int data10; } SceAllocOpt; void *sceKernelAllocWithOptForKernel(SceSize len, SceAllocOpt *pOpt);
sceKernelFreeForKernel
Version | NID |
---|---|
0.990-3.60 | 0xABAB0FAB |
3.65 | 0x4233C16D |
int sceKernelFreeForKernel(void *ptr);
sceKernelSetAllocFreeHookForKernel
Version | NID |
---|---|
3.60-3.61 | 0xBC2E2B2B |
3.63 | 0x42834422 |
Only implemented in sysdbg build.
int sceKernelSetAllocFreeHookForKernel(void *pHook);
SceSysmemForKernel_C38D61FC
Version | NID |
---|---|
0.990 | 0xC38D61FC |
3.60 | not present |
Calls #SceSysmemForDriver_89A44858.
SceSysmemForKernel_7C797940
Version | NID |
---|---|
0.931-0.990 | 0x7C797940 |
3.60 | not present |
Calls #SceSysmemForKernel_620E00E7 or #sceGUIDReferObjectForDriver.
sceKernelVSlotMapProcMemoryForKernel
Version | NID |
---|---|
3.60-3.61 | 0xFAD03241 |
3.63 | 0x14D3807B |
int sceKernelVSlotMapProcMemoryForKernel(SceUID pid, void *addr, SceSize size, SceUInt32 flag, SceKernelVSlot *pVslot, int *pBaseAddrOrOffset);
sceKernelVSlotUnmapProcMemoryForKernel
Version | NID |
---|---|
3.60-3.61 | 0x789CD5BF |
3.63 | 0x4EEF69C7 |
int sceKernelVSlotUnmapProcMemoryForKernel(SceKernelVSlot *pVslot);
SceSysmemForKernel_ECF9435A
Version | NID |
---|---|
3.60-3.61 | 0xECF9435A |
3.63 | 0xFCB5745A |
Writes nWords
times the 4-byte ch
starting at usermode address u_dst
. Write is performed with the STRT
instruction and DACR=0x15450FC3
(same as |sceKernelCopyToUserTextDomain - required because NID tables are in RX segments).
Used by SceKernelModulemgr to overwrite NID tables once a module's imports are bound with a random value from Bigmac RNG. This overwrite was called "NID Poisoning" by Team Molecule.
int SceSysmemForKernel_ECF9435A(void *u_dst, SceUInt32 ch, SceUInt32 nWords);
SceSysmemForKernel_ECC68E7B
Version | NID |
---|---|
3.60-3.61 | 0xECC68E7B |
3.63 | 0x05822B82 |
int SceSysmemForKernel_ECC68E7B(SceUInt32 phymem_type, SceUInt32 *result);
SceSysmemForKernel_E68A9F1B
Version | NID |
---|---|
3.60-3.61 | 0xE68A9F1B |
3.63 | 0x1DE4953F |
int SceSysmemForKernel_E68A9F1B(int a1, SceClass **ppClass);
sceKernelCheckOpenVMDomainForKernel
Version | NID |
---|---|
2.000.081-3.610.011 | 0xD514BB56 |
3.630.000-3.740.011 | 0x4E6D8BC3 |
Returns 2 if Virtual Machine is open, 0 else. Returns 0x80027101 on error.
SceUInt32 sceKernelCheckOpenVMDomainForKernel(void);
sceeKernelSetNameHeapHookForKernel
Version | NID |
---|---|
3.60-3.61 | 0x1E11F41D |
3.63 | 0x6DBDA03B |
This is a guessed name.
Not implemented in sysdbg build either. Probably only implemented during real development.
Only return 0.
int sceeKernelSetNameHeapHookForKernel(void *pHook);
SceSysmemForKernel_22708F14
Version | NID |
---|---|
3.60-3.61 | 0x22708F14 |
3.63 | 0x456ECB54 |
SceUInt32 SceSysmemForKernel_22708F14(void *a1, int a2);
SceSysmemForKernel_22A26637
Version | NID |
---|---|
3.60-3.61 | 0x22A26637 |
3.63 | 0xAD19285A |
int SceSysmemForKernel_22A26637(void *a1, int a2, int a3, int a4, int a5, int a6, void *a7);
SceSysmemForKernel_C6F04370
Version | NID |
---|---|
3.60-3.61 | 0xC6F04370 |
3.63 | 0x02DAD732 |
init budget data in sysmem.
int SceSysmemForKernel_C6F04370(void);
SceSysmemForKernel_B339A865
Version | NID |
---|---|
3.60-3.61 | 0xB339A865 |
3.63 | 0x320E907F |
Returns 0.
int SceSysmemForKernel_B339A865(void);
SceSysmemForKernel_AD5A83E3
Version | NID |
---|---|
3.60-3.61 | 0xAD5A83E3 |
3.63 | 0xBF70207B |
int SceSysmemForKernel_AD5A83E3(SceUID guid, SceUInt32 vis_level, SceUInt32 a3, int *a4);
SceSysmemForKernel_A504BA60
Version | NID |
---|---|
3.60-3.61 | 0xA504BA60 |
3.63 | 0xCAB15F74 |
SceSysmemForKernel_7DC46969
Version | NID |
---|---|
3.60-3.61 | 0x7DC46969 |
3.63 | 0x8450BFF7 |
Returns 1.
int SceSysmemForKernel_7DC46969(void);
SceSysmemForDriver
sceKernelProcessGetContextForDriver
Version | NID |
---|---|
1.80-3.74 | 0x2ECF7944 |
This is a guessed name.
int sceKernelProcessGetMMUContextForDriver(SceUID pid, SceKernelMMUContext **ppCtx);
sceKernelProcessSwitchContextForDriver
Version | NID |
---|---|
0.990-3.74 | 0x2D711589 |
This is a guessed name.
int sceKernelProcessSwitchMMUContextForDriver(SceKernelMMUContext *new_context, SceKernelMMUContext *prev_context);
scePUIDOpenByGUIDForDriver
Version | NID |
---|---|
0.931-3.60 | 0xBF209859 |
Temp name was sceKernelCreateUserUidForDriver.
SceUID scePUIDOpenByGUIDForDriver(SceUID pid, SceUID guid);
scePUIDOpenByGUIDWithFlagsForDriver
Version | NID |
---|---|
0.990-3.60 | 0xCED1547B |
Temp name was sceKernelCreateUserUidForClassForDriver.
SceUID scePUIDOpenByGUIDWithFlagsForDriver(SceUID pid, SceUID guid, SceUInt32 flags);
scePUIDOpenByNameForDriver
Version | NID |
---|---|
0.931-3.60 | 0x513B9DDD |
Temp name was sceKernelCreateUserUidForNameForDriver.
SceUID scePUIDOpenByNameForDriver(SceUID pid, const char *name);
scePUIDOpenByNameWithClassForDriver
Version | NID |
---|---|
0.931-3.60 | 0x8DA0BCA5 |
Equivalent to scePUIDOpenByNameForDriver, but object's class is checked to be a subclass of provided pClass
before opening.
SceUID scePUIDOpenByNameWithClassForDriver(ScePID pid, const char *name, SceClass *pClass);
scePUIDOpenByNameWithExactClassForDriver
Version | NID |
---|---|
0.990.000-3.010.031 | 0xB800123C |
3.10-3.740.011 | not present |
This is a guessed name. Temp name was add_heap
.
Equivalent to scePUIDOpenByNameWithClass, but the object's class must match exactly the provided pClass
.
SceUID scePUIDOpenByNameWithExactClassForDriver(ScePID pid, const char *name, const SceClass *pClass);
scePUIDCloseForDriver
Version | NID |
---|---|
0.990-3.60 | 0x84A4AF5E |
Temp name was sceKernelDeleteUserUidForDriver.
int scePUIDCloseForDriver(SceUID pid, SceUID puid);
scePUIDSetNameForDriver
Version | NID |
---|---|
0.990-3.60 | 0x12624884 |
Temp name was sceKernelSetNameForPidForUidForDriver.
int scePUIDSetNameForDriver(SceUID pid, SceUID puid, const char *name);
scePUIDGetObjectForDriver
Version | NID |
---|---|
0.990-3.60 | 0xFE6D7FAE |
Temp name was sceKernelGetObjectForPidForUidForDriver.
int scePUIDGetObjectForDriver(SceUID pid, SceUID uid, SceKernelObject **ppEntry);
scePUIDtoGUIDForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x45D22597 |
Temp name was sceKernelKernelUidForUserUidForDriver.
Returns the Global UID of a process based on its Process UID.
SceUID scePUIDtoGUIDForDriver(SceUID pid, SceUID puid);
scePUIDtoGUIDWithClassForDriver
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x184172B1 |
Temp name was sceKernelKernelUidForUserUidForClassForDriver.
SceUID scePUIDtoGUIDWithClassForDriver(SceUID pid, SceUID puid, SceClass *pClass);
scePUIDGetNameForDriver
Version | NID |
---|---|
0.990-3.60 | 0x09896EB7 |
Temp name was sceKernelGetNameForPidByUidForDriver, scePUIDGetEntryHeapNameForDriver
int scePUIDGetNameForDriver(SceUID pid, SceUID puid, char **pName);
scePUIDGetClassForDriver
Version | NID |
---|---|
0.990-3.60 | 0xE9728A12 |
Temp name was sceKernelGetClassForPidForUidForDriver.
int scePUIDGetClassForDriver(SceUID pid, SceUID puid, SceClass **ppClass);
sceUIDKernelCreateForDriver
Version | NID |
---|---|
0.990.000-1.060.031 | 0x7FC849B1 |
1.50-3.740.011 | not present |
Calls #sceGUIDKernelCreateForKernel.
Create a UID with default attribute (0x30000).
int sceUIDKernelCreateForDriver(SceClass *pClass, const char *name, SceKernelObject **ppEntry);
sceGUIDKernelCreateForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
1.000.071-3.740.011 | 0x56A13E90 |
Temp name was sceUIDKernelCreate2ForDriver, sceKernelCreateUidObj2ForDriver.
Create a UID with default attribute (0x30000).
SceUID sceGUIDKernelCreateForDriver(SceClass *pClass, const char *name, SceKernelObject **ppEntry);
sceUIDOpenByNameForDriver
Version | NID |
---|---|
0.931-0.990 | 0x796881D6 |
3.60 | not present |
Calls #sceGUIDOpenByNameForDriver.
SceUID sceUIDOpenByNameForDriver(const char *name);
sceUIDCloseForDriver
Version | NID |
---|---|
0.990 | 0x32C5F628 |
3.60 | not present |
if (flag_or_addr_or_pid & 0x40000000) == 0 calls #sceGUIDCloseForDriver else #scePUIDCloseForDriver.
int sceUIDCloseForDriver(SceUID uid, SceUInt32 flag_or_addr_or_pid);
SceSysmemForDriver_F09A7D09
Version | NID |
---|---|
0.990 | 0xF09A7D09 |
3.60-3.74 | not present |
Calls #sceGUIDCloseForDriver.
int SceSysmemForDriver_F09A7D09(SceUID uid);
sceUIDGetDefaultClassForDriver
Version | NID |
---|---|
0.931-0.990 | 0xFE28F5EB |
3.60 | not present |
SceClass *sceUIDGetDefaultClassForDriver(void);
sceUIDtoObjectForDriver
Version | NID |
---|---|
0.990 | 0xAB7AC3D1 |
This is a guessed name.
Calls #sceUIDtoObjectForKernel.
SceKernelObject *sceUIDtoObjectForDriver(SceUID uid);
sceUIDtoClassForDriver
Version | NID |
---|---|
0.990 | 0x65B9B393 |
3.60 | not present |
Calls #sceGUIDtoClassForKernel.
SceClass *sceUIDtoClassForDriver(SceUID uid);
sceUIDClassInitForDriver
Version | NID |
---|---|
0.931-0.990 | 0xE6D75E99 |
3.60 | not present |
Renamed to sceUIDClassInitClassForDriver.
int sceUIDClassInitForDriver(SceClass *pClass, const char *name, uint32_t uid_class, SceSize item_size, void *constructor, void *destructor);
sceUIDClassInitClassForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x61317102 |
Temp name was sceKernelCreateClassForDriver.
int sceUIDClassInitClassForDriver(SceClass *cls, const char *name, const SceClass *group, SceSize item_size, SceClassCallback create, SceClassCallback destroy);
sceUIDGetClassInfoAllForDriver
Version | NID |
---|---|
0.990 | 0x3EF32C6C |
3.60 | not present. Moved to ForKernel |
See sceUIDClassGetClassInfoAllForKernel
sceGUIDCreateForDriver
Version | NID |
---|---|
0.990-3.60 | 0x89A44858 |
Temp name was sceKernelCreateUidObjForUidForDriver.
Create a GUID with default attribute (0x30000) for the specified UID.
SceUID sceGUIDCreateForDriver(SceClass *pClass, const char *name, SceUID guid, SceKernelObject **ppEntry);
sceGUIDOpenByNameForDriver
Version | NID |
---|---|
0.931-3.60 | 0xD76E7452 |
Temp name was sceKernelOpenUidForNameForDriver.
SceUID sceGUIDOpenByNameForDriver(const char *name);
sceGUIDCloseForDriver
Version | NID |
---|---|
0.990-3.60 | 0x047D32F2 |
Temp name was sceKernelDeleteUidForDriver.
int sceGUIDCloseForDriver(SceUID guid);
sceGUIDGetClassForDriver
Version | NID |
---|---|
0.990-3.60 | 0xC74B0152 |
Temp name was sceKernelGetClassForUidForDriver.
int sceGUIDGetClassForDriver(SceUID guid, SceClass **ppClass);
sceGUIDSetNameForDriver
Version | NID |
---|---|
1.50-3.60 | 0x4CFA4100 |
Temp name was sceKernelSetObjectForUidForDriver. Wrongfully named scePUIDSetNameForDriver.
Calls the same routine as sceGUIDSetForKernel, but passes NULL for pClass and pObject.
SceInt32 sceGUIDSetNameForDriver(SceUID guid, const char *name);
sceGUIDNameForDriver
Version | NID |
---|---|
0.990 | 0xB2BB6216 |
3.60 | 0xE655852F |
Temp name was sceKernelGetNameForUid2ForDriver.
char* sceGUIDNameForDriver(SceUID guid);
sceGUIDGetNameForDriver
Version | NID |
---|---|
3.60 | 0xA78755EB |
Temp name was sceKernelGetNameForUidForDriver.
int sceGUIDGetNameForDriver(SceUID guid, char **pName);
sceGUIDGetObjectForDriver
Version | NID |
---|---|
0.990-3.60 | 0x0FC24464 |
Temp name was sceKernelGUIDGetObjectForDriver.
int sceGUIDGetObjectForDriver(SceUID uid, SceKernelObject **ppEntry);
sceGUIDReferObjectForDriver
Version | NID |
---|---|
3.60 | 0x0F5C84B7 |
Temp name was sceKernelGetObjectForUidForDriver.
int sceGUIDReferObjectForDriver(SceUID uid, SceKernelObject **ppEntry);
sceGUIDReferObjectWithLevelForDriver
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xF6DB54BA |
Temp name was sceKernelGetObjectForUidForAttrForDriver.
int sceGUIDReferObjectWithLevelForDriver(SceUID uid, SceUInt32 level, SceKernelObject **pEntry);
sceGUIDReferObjectWithClassLevelForDriver
Version | NID |
---|---|
0.990-3.60 | 0x77066FD1 |
int sceGUIDReferObjectWithClassLevelForDriver(SceUID guid, SceClass *pClass, SceUInt32 level, SceKernelObject **ppEntry);
sceGUIDReferObjectWithClassForDriver
Version | NID |
---|---|
0.990-3.60 | 0x00ED6C14 |
Temp name was sceKernelGetObjForUidForDriver.
int sceGUIDReferObjectWithClassForDriver(SceUID uid, SceClass *pClass, SceKernelObject **ppEntry);
sceGUIDReferObjectWithSubclassForDriver
Version | NID |
---|---|
0.990-3.60 | 0x72A98D17 |
Temp name was sceKernelGetObjectForUidForClassTreeForDriver.
int sceGUIDReferObjectWithSubclassForDriver(SceUID guid, SceClass *pClass, SceKernelObject **ppEntry);
sceGUIDReleaseObjectForDriver
Version | NID |
---|---|
0.990-3.60 | 0x149885C4 |
Temp name was sceKernelUidReleaseForDriver.
int sceGUIDReleaseObjectForDriver(SceUID uid);
sceKernelGetUIDClassForDriver
Version | NID |
---|---|
3.60 | 0x85336A1C |
This is a guessed name.
SceClass *sceKernelGetUIDClassForDriver(void);
sceKernelIsSubclassForDriver
Version | NID |
---|---|
0.990 | 0x6484D03E |
1.691 | 0x55F4826F |
3.60 | not present. Moved to ForKernel |
See sceUIDClassIsSubclassForKernel
SceSysmemForDriver_6F2ACDAE
Version | NID |
---|---|
1.69 | 0x6F2ACDAE |
1.80-3.74 | not present |
Temp name was switch_ttb_for_pid.
Changes the TTBR to point to the tables for a given PID.
int SceSysmemForDriver_6F2ACDAE(SceUID pid);
sceKernelAllocMemBlockForDriver
Version | NID |
---|---|
0.931-3.65 | 0xC94850C9 |
The interface is the same as the usermode version of this function, however more types can be specified and more options are in the pOpt argument.
To allocate a kernel RW block of memory, specify type = SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_RW
.
To allocate a block of memory with a specific physical address, specify type = SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_SO_RW
or type = SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_RW
, pOpt->attr = 2
, and pOpt->pbase = physical address
.
To allocate a block of memory that is kernel executable, specify type = SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RX
.
To allocate a block of memory that is physically contiguous, specify type = 0x30808006
, pOpt->attr = 0x200004
and an alignment to pOpt->alignment
.
To allocate a block of memory inside the CDRAM, specify type = 0x40404006
.
SceUID sceKernelAllocMemBlockForDriver(const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOptKernel *pOpt);
sceKernelAllocMemBlockForDebuggerForDriver
Version | NID |
---|---|
0.940-1.50 | 0x59F3159C |
Same as #sceKernelAllocMemBlockForDriver but authorizes null pOpt.
SceUID sceKernelAllocMemBlockForDebuggerForDriver(const char *name, SceKernelMemBlockType type, SceSize vsize, SceKernelAllocMemBlockOptKernel *pOpt);
sceKernelAllocMemBlockWithInfoForDriver
Version | NID |
---|---|
0.990-3.60 | 0xD44F464D |
Temp name was sceKernelAllocMemBlockExtForDriver.
SceUID sceKernelAllocMemBlockWithInfoForDriver(const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOptKernel *pOpt, SceKernelMemBlockInfo *pInfo);
sceKernelFreeMemBlockForDriver
Version | NID |
---|---|
0.931-3.65 | 0x009E1C61 |
int sceKernelFreeMemBlockForDriver(SceUID uid);
sceKernelFindMemBlockByAddrForDriver
Version | NID |
---|---|
0.990-3.60 | 0x8A1742F6 |
SceUID sceKernelFindMemBlockByAddrForDriver(const void *addr, SceSize size);
sceKernelFindProcMemBlockByAddrForDriver
Version | NID |
---|---|
0.990-3.60 | 0x857F1D5A |
Temp name was sceKernelFindMemBlockByAddrForPidForDriver.
SceUID sceKernelFindProcMemBlockByAddrForDriver(SceUID pid, const void *addr, SceSize size);
sceKernelGetMemBlockAllocSizeForDriver
Version | NID |
---|---|
0.990.000-2.120.011 | 0x63E5754B |
2.500.071-3.740.011 | not present |
This function was replaced since System Software version 2.500.071 by #sceKernelGetMemBlockAllocMapSizeForDriver.
int sceKernelGetMemBlockAllocSizeForDriver(SceUID memid, SceSize *pAllocSize);
sceKernelGetMemBlockAllocMapSizeForDriver
Version | NID |
---|---|
0.931.010-2.120.011 | not present |
2.500.071-3.740.011 | 0x78337B62 |
Temp name was sceKernelMemBlockGetSomeSizeForDriver.
This function is a replacement since System Software version 2.500.071 of #sceKernelGetMemBlockAllocSizeForDriver.
int sceKernelGetMemBlockAllocMapSizeForDriver(SceUID memid, SceSize *pAllocMapSize);
sceKernelGetMemBlockMemtypeByAddrForDriver
Version | NID |
---|---|
0.990-3.60 | 0xF3BBE2E1 |
Temp name was sceKernelFindMemBlockByAddrForDefaultSizeForDriver.
SceKernelMemoryType sceKernelGetMemBlockMemtypeByAddrForDriver(const void *addr);
sceKernelGetMemBlockPARangeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x98C15666 |
Temp name was sceKernelGetMemBlockAddrPairForUidForDriver.
Returns the physical address and size (pRange) of the memory block if it is physically continuous.
int sceKernelGetMemBlockPARangeForDriver(SceUID uid, SceKernelPARange *pRange);
sceKernelGetMemBlockBaseForDriver
Version | NID |
---|---|
0.990-3.74 | 0xA841EDDA |
/** * @brief Get mapped base address of memory block. * * Get base address of memory block. * @param[in] uid block id * @param[out] ppBase base address of memory block * @retval SCE_OK success * @retval <SCE_OK Error */ int sceKernelGetMemBlockBaseForDriver(SceUID uid, void **ppBase);
sceKernelGetMemBlockVBaseForDriver
Version | NID |
---|---|
3.60 | 0xB81CF0A3 |
Temp name was sceKernelGetMemBlockKernelPageForDriver.
int sceKernelGetMemBlockVBaseForDriver(SceUID uid, void **kernel_page);
sceKernelGetMemBlockMappedBaseForDriver
Version | NID |
---|---|
3.60 | 0x0B1FD5C3 |
int sceKernelGetMemBlockMappedBaseForDriver(SceUID uid, void **basep);
sceKernelGetMemBlockPAVectorForDriver
Version | NID |
---|---|
0.990-3.60 | 0x19A51AC7 |
Temp name was sceKernelGetMemBlockPaddrListForUidForDriver.
int sceKernelGetMemBlockPAVectorForDriver(SceUID uid, SceKernelPAVector *pPAV);
sceKernelGetMemBlockInfoForDriver
Version | NID |
---|---|
0.990-3.60 | 0xA73CFFEF |
Temp name was sceKernelMemBlockGetInfoExForVisibilityLevelForDriver.
int sceKernelGetMemBlockInfoForDriver(SceUID uid, uint32_t level, SceKernelMemBlockInfoEx *pInfo);
sceKernelGetMemBlockInfoExForDriver
Version | NID |
---|---|
3.60 | 0x24A99FFF |
This is a guessed name.
int sceKernelGetMemBlockInfoExForDriver(SceUID uid, SceKernelMemBlockInfoEx *pInfo);
sceKernelDecRefCountMemBlockForDriver
Version | NID |
---|---|
0.990-3.60 | 0xF50BDC0C |
Temp name was sceKernelMemBlockDecRefCounterAndReleaseUidForDriver.
int sceKernelDecRefCountMemBlockDriver(SceUID uid);
sceKernelIncRefCountMemBlockForDriver
Version | NID |
---|---|
0.990-3.60 | 0xEAF3849B |
Temp name was sceKernelMemBlockIncRefCounterAndReleaseUidForDriver.
int sceKernelIncRefCountMemBlockForDriver(SceUID uid);
sceKernelMemBlockType2MemtypeForDriver
Version | NID |
---|---|
0.931-3.60 | 0x20C811FA |
int sceKernelMemBlockType2MemtypeForDriver(SceKernelMemBlockType type);
sceKernelMemBlockTypeGetPrivilegesForDriver
Version | NID |
---|---|
3.60 | 0x6A0792A3 |
int sceKernelMemBlockTypeGetPrivilegesForDriver(SceKernelMemBlockType type);
sceKernelMemBlockType2SourceMemTypeForDriver
Version | NID |
---|---|
0.990-3.60 | 0xCB0F3A33 |
This is a guessed name. Temp name was sceKernelMemBlockTypeGetUnknownForDriver.
#define SCE_KERNEL_SOURCE_MEMORY_TYPE_IO 0x100000 #define SCE_KERNEL_SOURCE_MEMORY_TYPE_LPDDR 0x200000 #define SCE_KERNEL_SOURCE_MEMORY_TYPE_CDRAM 0x400000 int sceKernelMemBlockType2SourceMemTypeForDriver (SceKernelMemBlockType type);
sceKernelMapMemBlockForDriver
Version | NID |
---|---|
0.990-3.60 | 0x58D21746 |
Temp name was sceKernelMapBlockUserVisibleForDriver, sceKernelPartitionMapMemBlockForDriver.
int sceKernelMapMemBlockForDriver(SceUID uid);
sceKernelMapMemBlockWithFlagForDriver
Version | NID |
---|---|
3.60 | 0x04059C4B |
This is a guessed name. Temp name was sceKernelMapBlockUserVisibleWithFlagForDriver.
/** * Map a memblock. * * @param[in] uid - GUID of the memblock to map. * @param[in] flag - Set to 1 to prevent DCache invalidation before mapping. * * @return 0 on success, < 0 on error. */ int sceKernelMapMemBlockWithFlagForDriver(SceUID uid, int flag);
sceKernelRemapMemBlockForDriver
Version | NID |
---|---|
0.990-1.06 | not present |
1.500.151-3.740.011 | 0xDFE2C8CB |
Temp name was sceKernelRemapBlockForDriver, sceKernelPartialRemapMemBlockForDriver.
This can be used to remap RW memory as RX. To do this, first allocate a memory block of type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW
. After you are done writing, call sceKernelRemapMemBlockForDriver with type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RX
.
int sceKernelRemapMemBlockForDriver(SceUID uid, SceKernelMemBlockType type);
sceKernelUnmapMemBlockForDriver
Version | NID |
---|---|
3.60 | 0xFFCD9B60 |
int sceKernelUnmapMemBlockForDriver(SceUID uid);
sceKernelGetPhysicalMemoryTypeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x0AAA4FDD |
Temp name was sceKernelVaddrMaybeGetSectionTypeForDriver
int sceKernelGetPhysicalMemoryTypeForDriver(void *vaddr);
sceKernelGetPhyMemInfoForDriver
Version | NID |
---|---|
0.931-3.60 | 0x89475192 |
typedef struct SceKernelPhyMemInfo { // Size is 0xC on 0.931-3.60 SceSize size; // Size of this structure void* pbase; // Base physical address SceSize psize; // Physical size } SceKernelPhyMemInfo; // as of FW 0.931-0.990, pindex must be one of these values: 1 PhyPartKernel, 8 PageVenezia, 9 PageVIP #define SCE_KERNEL_PHYMEMPART_KERNEL_INDEX 1 #define SCE_KERNEL_PHYMEMPART_LPDDR2MAIN_KERNEL_INDEX 6 #define SCE_KERNEL_PAGE_VENEZIA_INDEX 8 #define SCE_KERNEL_PAGE_VIP_INDEX 9 SceInt32 sceKernelGetPhyMemInfoForDriver(SceUInt32 pindex, SceKernelPhyMemInfo *pInfo);
sceKernelPartialAllocMemBlockForDriver
Version | NID |
---|---|
3.60 | 0x16713BE8 |
This is a guessed name.
/** * Allocates PhyPages for a partial range of a memblock. * * @param[in] uid - GUID of the memblock. * @param[in] vbase - Start of the range. * @param[in] vsize - Size of the range. * @param[in] check - SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[FREE|NONE] * * @return 0 on success, < 0 on error. */ int sceKernelPartialAllocMemBlockForDriver(SceUID uid, void* vbase, SceSize vsize, SceUInt32 opCheck);
sceKernelPartialFreeMemBlockForDriver
Version | NID |
---|---|
3.60 | 0x8C43B052 |
This is a guessed name.
/** * Unmaps and frees PhyPages for a partial range of a memblock. * * @param[in] uid - GUID of the memblock. * @param[in] vbase - Start of the range. * @param[in] vsize - Size of the range. * @param[in] check - SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[ALLOCATED|NONE] * * @return 0 on success, < 0 on error. */ int sceKernelPartialFreeMemBlockForDriver(SceUID uid, void* vbase, SceSize vsize, SceUInt32 check);
sceKernelPartialMapMemBlockForDriver
Version | NID |
---|---|
3.60 | 0x13805CA8 |
This is a guessed name.
/** * Maps PhyPages for a partial range of a memblock. * * @param[in] uid - GUID of the memblock. * @param[in] vbase - Start of the range. * @param[in] vsize - Size of the range. * @param[in] check - SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[ALLOCATED|FREE|ALLOCNOMAP|NONE] * * @return 0 on success, < 0 on error. */ int sceKernelPartialMapMemBlockForDriver (SceUID uid, void* vbase, SceSize vsize, SceUInt32 check);
sceKernelPartialRemapMemBlockForDriver
Version | NID |
---|---|
3.60 | 0x4C584B29 |
This is a guessed name.
/** * Remaps PhyPages for a partial range of a memblock. * * @param[in] uid - GUID of the memblock. * @param[in] vbase - Start of the range. * @param[in] vsize - Size of the range. * @param[in] op - SCE_KERNEL_MEMBLOCK_PARTIAL_OP_[REMAP_RO|REMAP_RW] | SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[MAPPED_RW|MAPPED_RO|NONE] * * @return 0 on success, < 0 on error. */ int sceKernelPartialRemapMemBlockForDriver(SceUID uid, void* vbase, SceSize vsize, SceUInt32 op);
sceKernelPartialUnmapMemBlockForDriver
Version | NID |
---|---|
3.60 | 0x6C76AD89 |
This is a guessed name.
/** * Unmaps PhyPages for a partial range of a memblock. * * @param[in] uid - GUID of the memblock. * @param[in] vbase - Start of the range. * @param[in] vsize - Size of the range. * @param[in] check - SCE_KERNEL_MEMBLOCK_PARTIAL_CHECK_[MAPPED|NONE] * * @return 0 on success, < 0 on error. */ int sceKernelPartialUnmapMemBlockForDriver(SceUID uid, void* vbase, SceSize vsize, SceUInt32 check);
sceKernelGetMemBlockProcessForDriver
Version | NID |
---|---|
0.990-3.60 | 0x1EFC96EA |
int sceKernelGetMemBlockProcessForDriver(SceUID uid);
sceKernelMemBlockToPARangeForDriver
Version | NID |
---|---|
3.60 | 0x64DBE472 |
This is a guessed name. Temp name was sceKernelMemBlockGetVirPageForDriver.
Gets a single PARange from the memblock. Returns an error if the memblock has more than one PARange.
int sceKernelMemBlockToPARangeForDriver(SceUID uid, SceKernelPARange *pRange);
sceKernelMemBlockToPAVectorForDriver
Version | NID |
---|---|
3.60 | 0x987EE587 |
int sceKernelMemBlockToPAVectorForDriver(SceUID uid, SceKernelPAVector *pPAV);
sceKernelCreateHeapForDriver
Version | NID |
---|---|
0.931-3.60 | 0x9328E0E8 |
The heap pool is thread safe.
has list "SCE_KERNEL_HEAP_HAS_HEAPCB".
// pOpt can be NULL SceUID sceKernelCreateHeapForDriver(const char *name, SceSize size, SceKernelHeapCreateOpt *pOpt);
sceKernelDeleteHeapForDriver
Version | NID |
---|---|
0.940-3.60 | 0xD6437637 |
int sceKernelDeleteHeapForDriver(SceUID uid);
sceKernelVerifyHeapForDriver
Version | NID |
---|---|
0.990-3.60 | 0xC50A9C0D |
int sceKernelVerifyHeapForDriver(SceUID uid, void *ptr);
sceKernelShrinkHeapForDriver
Version | NID |
---|---|
3.60 | 0x856FA2E3 |
int sceKernelShrinkHeapForDriver(SceUID heapid);
sceKernelAllocHeapMemoryForDriver
Version | NID |
---|---|
0.931-3.60 | 0x7B4CB60A |
Temp name was sceKernelMemPoolAlloc. Official name might also be sceUIDKernelCreateForDriver.
Calls sceKernelAllocHeapMemoryWithOptionForDriver with a3 = 0.
void *sceKernelAllocHeapMemoryForDriver(SceUID uid, SceSize size);
sceKernelAllocUncacheHeapMemoryForDriver
Version | NID |
---|---|
3.60 | 0x7750CEA7 |
Temp name was sceKernelAllocHeapMemoryFromGlobalHeapForDriver.
Calls sceKernelAllocHeapMemoryForDriver with uncache heap.
void* sceKernelAllocUncacheHeapMemoryForDriver(SceSize size);
sceKernelAllocUncacheHeapMemoryWithOptionForDriver
Version | NID |
---|---|
0.990-3.60 | 0x0B4ED16A |
Temp name was sceKernelAllocHeapMemoryFromGlobalHeapWithOptForDriver.
Calls sceKernelAllocHeapMemoryWithOptionForDriver with uncache heap.
void* sceKernelAllocUncacheHeapMemoryWithOptionForDriver(SceSize size, SceKernelHeapMemoryOpt *pOpt);
sceKernelAllocHeapMemoryWithOptForDriver
Version | NID |
---|---|
3.60 | 0xB415B5A8 |
Temp name was sceKernelAllocHeapMemoryWithOpt1ForDriver.
Same as sceKernelAllocHeapMemoryForDriver
but uses pOpt
.
void* sceKernelAllocHeapMemoryWithOptForDriver(SceUID uid, SceSize size, SceKernelHeapMemoryOpt *pOpt);
sceKernelAllocHeapMemoryWithOptionForDriver
Version | NID |
---|---|
0.990-3.60 | 0x49D4DD9B |
Temp name was sceKernelAllocHeapMemoryWithOpt2ForDriver.
Same as sceKernelAllocHeapMemoryForDriver
but uses pOpt
.
void* sceKernelAllocHeapMemoryWithOptionForDriver(SceUID uid, SceSize size, SceKernelHeapMemoryOpt *pOpt);
sceKernelFreeHeapMemoryForDriver
Version | NID |
---|---|
0.990-3.60 | 0x3EBCE343 |
Temp name was sceKernelMemPoolFreeForDriver.
int sceKernelFreeHeapMemoryForDriver(SceUID uid, void *ptr);
sceKernelFreeUncacheHeapMemoryForDriver
Version | NID |
---|---|
3.60 | 0xFB817A59 |
Temp name was sceKernelFreeHeapMemoryFromGlobalHeapForDriver.
int sceKernelFreeUncacheHeapMemoryForDriver(void *ptr);
sceKernelCountFillValueFromUserForDriver
Version | NID |
---|---|
3.60 | 0xBDA6E42B |
Temp name was sceKernelFirstDifferentBlock32UserForDriver.
int sceKernelCountFillValueFromUserForDriver(unsigned int *ptr, int value, int byte_size);
sceKernelCountFillValueFromUserProcForDriver
Version | NID |
---|---|
1.69-3.60 | 0x8334454F |
Temp name was sceKernelFirstDifferentBlock32UserForPidForDriver.
int sceKernelCountFillValueFromUserProcForDriver(SceUID pid, unsigned int *ptr, int value, int byte_size);
sceKernelCountFillValue64FromUserForDriver
Version | NID |
---|---|
0.931.010-2.120.011 | not present |
2.500.071-3.740.011 | 0xBB3B02C2 |
Temp name was sceKernelFirstDifferentBlock64UserForDriver.
int sceKernelCountFillValue64FromUserForDriver(unsigned long long *ptr, int unused, unsigned long long value, int byte_size);
sceKernelCountFillValue64FromUserProcForDriver
Version | NID |
---|---|
0.931.010-2.120.011 | not present |
2.500.071-3.740.011 | 0xE83855FD |
Temp name was sceKernelFirstDifferentBlock64UserForPidForDriver.
int sceKernelCountFillValue64FromUserProcForDriver(SceUID pid, unsigned long long *ptr, unsigned long long value, int byte_size);
sceKernelVAtoPAForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x8D160E65 |
Temp name was sceKernelGetPaddrForDriver.
This will write the physical address for a virtual address pVA
to memory pointed to by pPA
.
Returns <0 on error, values >=0 indicate success.
int sceKernelVAtoPAForDriver(ScePVoid pVA, SceUIntPtr *pPA);
sceKernelVAtoPABySWForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x65419BD3 |
Temp name was sceKernelGetPaddrWithSectionTypeCheckForDriver, sceKernelAddressSpaceVAtoPABySWForDriver.
int sceKernelVAtoPABySWForDriver(void *pVA, void **pPA);
sceKernelProcVAtoPAForDriver
Version | NID |
---|---|
0.990.000-2.120.011 | 0xC51934BD |
2.500.071-3.740.011 | not present |
int sceKernelProcVAtoPAForDriver(SceUID pid, void *pVA, void **pPA);
sceKernelProcModeVAtoPAForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x61A67D32 |
Temp name was sceKernelGetPaddrForPidForDriver.
int sceKernelProcModeVAtoPAForDriver(SceUID pid, SceUInt32 mode, void *pVA, void **pPA);
sceKernelVARangeToPAVectorForDriver
Version | NID |
---|---|
0.931.010-3.740.011 | 0xE68BEEBD |
Temp name was sceKernelGetPaddrListForDriver.
This function writes into pVector->output_buffer
an array of vRange
that encompasses the block of memory specified in the input. pVector->ret_count
will contain the number of entries written. If pVector->output_buffer
is null, it will just write the count.
int sceKernelVARangeToPAVectorForDriver(const SceKernelVARange *vRange, SceKernelPAVector *pPAV);
sceKernelVARangeToPAVectorBySWForDriver
Version | NID |
---|---|
0.931.010-1.06 | not present |
1.500.151-3.740.011 | 0x08A8A7E8 |
This is a guessed name. Temp name was sceKernelGetPaddrListForLargePageForDriver.
int sceKernelVARangeToPAVectorBySWForDriver(const SceKernelVARange *vRange, SceKernelPAVector *pPAV);
sceKernelVARangeToPAVectorByHWForDriver
Version | NID |
---|---|
0.931.010-1.06 | not present |
1.500.151-3.740.011 | 0x16844CE6 |
Temp name was sceKernelGetPaddrListForSmallPageForDriver.
int sceKernelVARangeToPAVectorByHWForDriver(const SceKernelVARange *vRange, SceKernelPAVector *pPAV);
sceKernelVARangeToPARangeForDriver
Version | NID |
---|---|
0.940-3.740.011 | 0xAE36C775 |
Temp name was sceKernelGetPaddrPairForDriver.
int sceKernelVARangeToPARangeForDriver(const SceKernelVARange *vRange, SceKernelPARange *pRange);
sceKernelVARangeToPARangeBySWForDriver
Version | NID |
---|---|
0.931.010-1.06 | not present |
1.500.151-3.740.011 | 0x32257A24 |
This is a guessed name. Temp name was sceKernelGetPaddrPairForLargePageForDriver.
int sceKernelVARangeToPARangeBySWForDriver(SceKernelVARange *vRange, SceKernelPARange *pRange);
sceKernelVARangeToPARangeByHWForDriver
Version | NID |
---|---|
0.931.010-1.06 | not present |
1.500.151-3.740.011 | 0xB3575090 |
This is a guessed name. Temp name was sceKernelGetPaddrPairForSmallPageForDriver.
int sceKernelVARangeToPARangeByHWForDriver(SceKernelVARange *vRange, SceKernelPARange *pRange);
sceKernelIsAccessibleRangeForDriver
Version | NID |
---|---|
0.931-3.60 | 0x9C78064C |
Temp name was sceKernelFindMemBlockForDriver.
Also exported as #sceKernelIsAccessibleRangeForDebugger.
?Returns 0 on success (if is accessible range)?
int sceKernelIsAccessibleRangeForDriver(SceUInt32 permission_type, const void *pVA, SceSize len);
sceKernelIsAccessibleRangeProcForDriver
Version | NID |
---|---|
0.931-3.60 | 0x9F6E45E3 |
Temp name was sceKernelFindMemBlockForPidForDriver.
Also exported as #sceKernelIsAccessibleRangeProcForDebugger.
?Returns 0 on success (if is accessible range)?
int sceKernelIsAccessibleRangeProcForDriver(SceUID pid, SceUInt32 permission_type, const void *pVA, SceSize len);
sceKernelIsEqualAccessibleRangeProcBySWForDriver
Version | NID |
---|---|
1.800.071-3.740.011 | 0xF4AD89D8 |
Temp name was sceKernelProcIsPAWithinSameSection, sceKernelIsPaddrWithinSameSectionForUidForDriver.
int sceKernelIsEqualAccessibleRangeProcBySWForDriver(SceUID pid, int permission_type, void *pVA, SceSize len);
sceKernelGetDebugPADramRangeForDriver
Version | NID |
---|---|
1.800.071-3.740.011 | 0xC9928F5E |
This is a guessed name. Temp name was sceKernelGetUnknownValidPhysAddressSpaceForDriver.
int sceKernelGetDebugPADramRangeForDriver(SceUIntPtr *address, SceSize *length);
sceKernelIsVAWithinDebugPADramRangeForDriver
Version | NID |
---|---|
1.800.071-3.740.011 | 0xA7C0D1FC |
This is a guessed and bad name. Temp name was sceKernelIsPaddrWithinUnknownValidPhysAddressSpaceForDriver.
int sceKernelIsVAWithinDebugPADramRangeForDriver(const void *pVA);
sceKernelUserMapForDriver
Version | NID |
---|---|
0.990-3.60 | 0x278BC201 |
Temp name was sceKernelMapUserBlockDefaultTypeForDriver.
Assigns type 0.
SceUID sceKernelUserMapForDriver(const char *name, SceKernelMemoryRefPerm permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, SceUInt32 *kernel_offset);
sceKernelProcUserMapForDriver
Version | NID |
---|---|
0.931.010-3.36 | not present |
3.500.000-3.740.011 | 0x0091D74D |
Temp name was sceKernelMapUserBlockForDefaultTypeForPidForDriver. sceKernelProcUserMapForDriver is certainly the real name.
Assigns type 0.
SceUID sceKernelProcUserMapForDriver(SceUID pid, const char *name, SceKernelMemoryRefPerm permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, SceUInt32 *kernel_offset);
sceKernelUserMapWithFlagsForDriver
Version | NID |
---|---|
0.931.030-1.060.031 | not present |
1.500.151-3.740.011 | 0x7D4F8B5F |
Temp name was sceKernelMapUserBlockForDriver.
Permission is either "1" for read only, no execute or "2"/"3" for read write, no execute. Type is either 0, 1, or 17 and affects the block type. 0 is default. This will allocate kernel memory starting at kernel_page. To get the same memory as the user pointer, add the kernel_offset. kernel_size is how much is allocated.
// this signature is for FW 1.50-1.69 int sceKernelUserMapWithFlagsForDriver(SceKernelMemoryRefPerm permission, int type, void *user_buf, int size, void **kernel_page, int *kernel_size, int *kernel_offset); // this signature is for FW 3.60 - it now allows to give a name int sceKernelUserMapWithFlagsForDriver(char *name, SceKernelMemoryRefPerm permission, int type, void *user_buf, int size, void **kernel_page, int *kernel_size, int *kernel_offset);
sceKernelUserUnmapForDriver
Version | NID |
---|---|
0.990-3.60 | 0x00575B00 |
Temp name was sceKernelMemBlockReleaseForDriver.
int sceKernelUserUnmapForDriver(SceUID uid);
sceKernelUnlockRangeForDriver
Version | NID |
---|---|
3.60 | 0x75C70DE0 |
Temp name was sceKernelMemRangeReleaseForDriver.
int sceKernelUnlockRangeForDriver(void *addr, SceSize size);
sceKernelUnlockRangeProcForDriver
Version | NID |
---|---|
3.60 | 0xA8525B06 |
Temp name was sceKernelMemRangeReleaseForPidForDriver.
int sceKernelUnlockRangeProcForDriver(SceUID pid, void *addr, SceSize size);
sceKernelUnlockRangeWithModeForDriver
Version | NID |
---|---|
3.60 | 0x22CBE925 |
Temp name was sceKernelMemRangeReleaseWithPermForDriver, sceKernelUnlockRangeWithPermForDriver.
Decreases references to pages.
int sceKernelUnlockRangeWithModeForDriver(SceKernelLockMode mode, void *addr, SceSize size);
sceKernelLockRangeForDriver
Version | NID |
---|---|
3.60 | 0x59A4402F |
Temp name was sceKernelMemRangeRetainForDriver.
int sceKernelLockRangeForDriver(void *addr, SceSize size);
sceKernelLockRangeProcForDriver
Version | NID |
---|---|
3.60 | 0x659586BF |
Temp name was sceKernelMemRangeRetainForPidForDriver.
int sceKernelLockRangeProcForDriver(SceUID pid, void *addr, SceSize size);
sceKernelLockRangeWithModeForDriver
Version | NID |
---|---|
3.60 | 0xBC0A1D60 |
Temp name was sceKernelMemRangeRetainWithPermForDriver, sceKernelLockRangeWithPermForDriver.
Increases references to pages.
int sceKernelLockRangeWithModeForDriver(SceKernelLockMode mode, const void *addr, SceSize size);
sceKernelReadUserForDriver
Version | NID |
---|---|
0.990 | 0xE08F3967 |
3.60 | not present |
int sceKernelReadUserForDriver(void *dst, const void *src, SceSize size);
sceKernelCopyToUserForDriver
Version | NID |
---|---|
0.931-3.60 | 0x6D88EF8A |
Temp name was sceKernelMemcpyKernelToUserForDriver.
Copies size
bytes from a kernel buffer to a user buffer. Writes to uaddr
are performed using strt
-type instructions which cause a Data Abort if the pages are not user-accessible. If any Data Abort occurs during the operation, the exception is swallowed and an error is returned. Otherwise, the function returns SCE_OK
.
SceInt32 sceKernelCopyToUserForDriver(void *uaddr, const void *kaddr, SceSize size);
sceKernelCopyToUserProcForDriver
Version | NID |
---|---|
0.931-3.60 | 0x6B825479 |
Temp name was sceKernelMemcpyKernelToUserForPidForDriver, sceKernelProcCopyToUserForDriver.
Temporarily switches to specified process' address space for a call to sceKernelCopyToUser.
SceInt32 sceKernelProcCopyToUserForDriver(ScePID pid, void *uaddr, const void *kaddr, SceSize size);
sceKernelCopyToUserProcDomainForDriver
Version | NID |
---|---|
0.931-1.69 | 0x571D2739 |
3.60 | not present |
Temp name was sceKernelRoMemcpyKernelToUserForPidForDriver, sceKernelProcCopyToUserRoForDriver.
Same as sceKernelCopyToUserProc, but sets DACR to 0xFFFFFFFF (ignore access permission bits in page table) before the copy then restores it. Use this function instead of sceKernelCopyToUserProc if you need to write data to read-only pages.
SceInt32 sceKernelCopyToUserProcDomainForDriver(SceUID pid, void *dst, const void *src, SceSize size);
sceKernelCopyFromUserForDriver
Version | NID |
---|---|
0.931-3.60 | 0xBC996A7A |
Temp name was sceKernelMemcpyUserToKernelForDriver.
Copies size
bytes from a user buffer to a kernel buffer. Reads from uaddr
are performed using ldrt
-type instructions which cause a Data Abort if the pages are not user-accessible. If any Data Abort occurs during the operation, the exception is swallowed and an error is returned. Otherwise, the function returns SCE_OK
.
SceInt32 sceKernelCopyFromUserForDriver(void *kaddr, const void *uaddr, SceSize size);
sceKernelCopyFromUserProcForDriver
Version | NID |
---|---|
0.931.010-3.60 | 0x605275F8 |
Temp name was sceKernelMemcpyUserToKernelForPidForDriver, sceKernelProcCopyFromUserForDriver.
Temporarily switches to specified process' address space for a call to sceKernelCopyFromUser.
SceInt32 sceKernelCopyFromUserProcForDriver(SceUID pid, void *dst, void *src, SceSize size);
sceKernelCopyFromToUserForDriver
Version | NID |
---|---|
0.990 | not present |
1.50-3.60 | 0x1BD44DD5 |
Temp name was sceKernelMemcpyUserToUserForDriver, sceKernelUserCopyForDriver.
int sceKernelCopyFromToUserForDriver(void *dst, const void *src, SceSize size);
sceKernelCopyFromToUserProcForDriver
Version | NID |
---|---|
0.990 | not present |
1.50-3.60 | 0x8E086C33 |
Temp name was sceKernelMemcpyUserToUserForPidForDriver, sceKernelProcUserCopyForDriver.
int sceKernelCopyFromToUserProcForDriver(SceUID pid, void *dst, const void *src, SceSize size);
sceKernelUserStrnlenForDriver
Version | NID |
---|---|
0.931 | not present (in ForKernel) |
0.940-0.990 | 0xFF06898A |
1.50-3.60 | not present |
Temp name was sceKernelStrnlenFromUserForDriver.
SceSize sceKernelUserStrnlenForDriver(const char *s, SceSize maxlen);
sceKernelStrnlenUserForDriver
Version | NID |
---|---|
0.990 | not present |
1.50-3.60 | 0xB429D419 |
SceSize sceKernelStrnlenUserForDriver(const char *s, SceSize maxlen);
sceKernelProcStrnlenUserForDriver
Version | NID |
---|---|
0.990 | not present |
1.50-3.60 | 0x9929EB07 |
SceSize sceKernelProcStrnlenUserForDriver(SceUID pid, const char *s, SceSize maxlen);
sceKernelProcUserStrcpyForDriver
Version | NID |
---|---|
0.990-1.50 | 0xEBCB3970 |
3.60 | not present |
int sceKernelProcUserStrcpyForDriver(SceUID pid, char *dst, const char *src);
sceKernelStrncpyFromUserSpecialForDriver
Version | NID |
---|---|
0.990-1.50 | 0x7440BCDA |
3.60 | not present |
int sceKernelStrncpyFromUserSpecialForDriver(char *dst, const char *src, SceSize maxlen, SceSize *dst_size);
sceKernelStrncpyToUserSpecialForDriver
Version | NID |
---|---|
0.990-1.50 | 0x369355F1 |
3.60 | not present |
int sceKernelStrncpyToUserSpecialForDriver(char *dst, const char *src, SceSize maxlen, SceSize *dst_size);
sceKernelUserStrncpyForDriver
Version | NID |
---|---|
0.931 | not present. Present but not exported. |
0.940-0.990 | 0xE6D5EFE4 |
1.50-3.60 | not present |
Returns 0 on success.
int sceKernelUserStrncpyForDriver(char *dst, const char *src, SceSize maxlen);
sceKernelStrncpyFromUserForDriver
Version | NID |
---|---|
0.990 | not present |
1.50-3.60 | 0xDB3EC244 |
Temp name was sceKernelStrncpyUserToKernelForDriver.
int sceKernelStrncpyFromUserForDriver(char *dst, const char *src, SceSize maxlen);
sceKernelProcStrncpyFromUserForDriver
Version | NID |
---|---|
0.990 | not present |
1.50-3.60 | 0x75AAF178 |
Temp name was sceKernelStrncpyUserForPidForDriver.
int sceKernelProcStrncpyFromUserForDriver(SceUID pid, char *dst, const char *src, SceSize maxlen);
sceKernelStrncpyToUserForDriver
Version | NID |
---|---|
0.990 | not present |
1.50-3.60 | 0x80BD6FEB |
Temp name was sceKernelStrncpyKernelToUserForDriver.
int sceKernelStrncpyToUserForDriver(char* dst, const char *src, SceSize maxlen);
sceKernelProcStrncpyToUserForDriver
Version | NID |
---|---|
0.990 | not present |
1.50-3.60 | 0xFED82F2D |
Temp name was sceKernelMemcpyKernelToUserForPidUncheckedForDriver.
int sceKernelProcStrncpyToUserForDriver(SceUID pid, char *dst, const char *src, SceSize maxlen);
SceSysmemForDebugger
This library was removed on FW 1.80.
sceKernelPhysicalAddressSpaceStartForDebugger
Version | NID |
---|---|
0.931 | 0x6AE2188F |
1.691-3.60 | not present |
int sceKernelPhysicalAddressSpaceStartForDebugger(void);
sceKernelGetPhysicalAddressSpaceForDebugger
Version | NID |
---|---|
0.931 | 0xE8905626 |
1.691-3.60 | not present |
In FW 0.931, it calls sceKernelPhysicalAddressSpaceStartForDebugger.
void *sceKernelGetPhysicalAddressSpaceForDebugger(void);
sceKernelIsAccessibleRangeProcForDebugger
Version | NID |
---|---|
0.931-1.692 | 0x01DFC193 |
1.80-3.60 | not present. Exported as #sceKernelIsAccessibleRangeProcForDriver. |
?Returns 0 on success (if is accessible range)?
int sceKernelIsAccessibleRangeProcForDebugger(SceUID pid, SceUInt32 mode, const void *pVA, SceSize size);
sceKernelIsAccessibleRangeForDebugger
Version | NID |
---|---|
0.931-1.692 | 0xD027761F |
1.80-3.60 | not present. Exported as #sceKernelIsAccessibleRangeForDriver. |
?Returns 0 on success (if is accessible range)?
int sceKernelIsAccessibleRangeForDebugger(SceUInt32 mode, const void *pVA, SceSize size);
SceSysmem
The SceSysmem library is responsible for both low-level and high-level memory management. There are functions for allocating raw blocks of memory (similar to Linux sbrk
) as well as functions for maintaining a heap-like structure (similar to malloc
) for kernel, however SceLibKernel implements a proper heap and that is used for user code.
sceKernelMapMemBlock
Version | NID |
---|---|
0.990-1.69 | 0x7B763A21 |
3.60 | not present |
sceKernelRemapMemBlock
Version | NID |
---|---|
0.990-1.69 | 0x3B29E0F5 |
3.60 | not present |
sceKernelPartialMapMemBlock
Version | NID |
---|---|
0.990 | not present |
1.69 | 0xC0A59868 |
3.60 | not present |
sceKernelUnmapMemBlock
Version | NID |
---|---|
0.990-1.69 | 0xEE30D976 |
3.60 | not present |
int sceKernelUnmapMemBlock(SceUID uid);
sceKernelPartialUnmapMemBlock
Version | NID |
---|---|
0.990 | not present |
1.69 | 0xCA99929B |
3.60 | not present |
sceKernelGetMemBlockInfoByRange
Version | NID |
---|---|
0.990 | not present |
0.996-3.60 | 0x006F3DB4 |
/** * @brief Get memory block informaton by virtual address range * @param[in] vbase base address * @param[in] vsize size * @param[inout] pInfo information structure */ int sceKernelGetMemBlockInfoByRange(void *vbase, SceSize vsize, SceKernelMemBlockInfo *pInfo);
sceKernelGetMemBlockInfoByAddr
Version | NID |
---|---|
0.990-3.60 | 0x4010AD65 |
/** * @brief Get memory block information. * * Get information about a memory block. * @param[in] vbase Base address * @param[inout] pInfo Information structure */ int sceKernelGetMemBlockInfoByAddr(void *vbase, SceKernelMemBlockInfo *pInfo);
sceKernelGetSubbudgetInfo
Version | NID |
---|---|
0.990 | not present |
1.69-3.60 | 0x832B4A65 |
#define SCE_KERNEL_SUBBUDGET_ID_MAIN (0) #define SCE_KERNEL_SUBBUDGET_ID_CDLG (1) typedef struct SceKernelSubbudgetInfo { // size is 0xC on FW 3.60 int size; // Size of this structure SceUInt32 totalSize; SceUInt32 freeSize; } SceKernelSubbudgetInfo; /** * Get the subbudget info * * @param[in] subbudget - The subbudget ID * @param[out] pInfo - The subbudget info * * @return 0 on success, < 0 on error. */ int sceKernelGetSubbudgetInfo(SceInt subbudget, SceKernelSubbudgetInfo *pInfo);
sceKernelGetFreeMemorySize
Version | NID |
---|---|
1.69-3.60 | 0x87CC580B |
/** * Get free memory size */ int sceKernelGetFreeMemorySize(SceKernelFreeMemorySizeInfo *info);
sceKernelOpenMemBlock
Version | NID |
---|---|
0.990-3.60 | 0x8EB8DFBB |
// on FW <= 1.691, flags is not used SceUID sceKernelOpenMemBlock(const char *name, int flags);
sceKernelFindMemBlockByAddr
Version | NID |
---|---|
0.990-3.60 | 0xA33B99D1 |
/** * Find memory block by virtual range (base address and size) * If size == 0, API returns a memory block which contains 'start' * If size > 0, API returns a memory block just fit range [start, start + size]. * @param[in] vaddr base address * @param[in] size address size * @retval >=SCE_OK block id * @retval <SCE_OK error */ SceUID sceKernelFindMemBlockByAddr(void *vaddr, SceSize size);
sceKernelFreeMemBlock
Version | NID |
---|---|
0.990-3.60 | 0xA91E15EE |
/** * Free memory block. * * @param[in] uid block uid * @retval SCE_OK Success * @retval <SCE_OK Error code */ int sceKernelFreeMemBlock(SceUID uid);
sceKernelFreeMemBlockForVM
Version | NID |
---|---|
3.60 | 0x4EA13FEA |
int sceKernelFreeMemBlockForVM(SceUID uid);
sceKernelCloseMemBlock
Version | NID |
---|---|
0.990-3.60 | 0xB680E3A0 |
int sceKernelCloseMemBlock(SceUID uid);
sceKernelGetMemBlockBase
Version | NID |
---|---|
0.996-3.60 | 0xB8EF5818 |
/** * @brief Get mapped base address of memory block. * * Get base address of memory block. * @param[in] uid block id * @param[out] ppBase base address of memory block * @retval SCE_OK success * @retval <SCE_OK Error */ int sceKernelGetMemBlockBase(SceUID uid, void **ppBase);
sceKernelAllocMemBlock
Version | NID |
---|---|
0.990-3.60 | 0xB9D5EBDE |
/** * Reserve a new memory block. * * The memory types that can be specified for type are as follows. * - SCE_KERNEL_MEMBLOCK_TYPE_USER_RW * - SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE * - SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_RW * - SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_RW * - SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW * * Allocate a memory block. * * @param[in] name Memory block name * @param[in] vsize Memory block virtual size * @param[in] flags Options * @retval id UID of memory block * @retval <SCE_OK Error code */ SceUID sceKernelAllocMemBlock(const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOpt *pOpt);
sceKernelAllocUnmapMemBlock
Version | NID |
---|---|
3.60 | 0xEC636BCB |
int sceKernelAllocUnmapMemBlock(char *name, SceSize size);
sceKernelOpenVMDomain
Version | NID |
---|---|
1.69-3.60 | 0x9CA3EB2B |
int sceKernelOpenVMDomain();
sceKernelSyncVMDomain
Version | NID |
---|---|
1.69-3.60 | 0x19D2A81A |
int sceKernelSyncVMDomain(SceUID uid, void *data, SceSize size);
sceKernelCloseVMDomain
Version | NID |
---|---|
1.69-3.60 | 0xD6CA56CA |
int sceKernelCloseVMDomain();
sceKernelAllocMemBlockForVM
Version | NID |
---|---|
1.69-3.60 | 0xE2D7E137 |
SceUID sceKernelAllocMemBlockForVM(const char *name, SceSize vsize);
sceKernelCheckModelCapability
Version | NID |
---|---|
0.931.010-2.12 | not present |
2.500.071-3.570.011 | 0x0144FBD9 |
Only bits 7 and 10 are supported.
Returns 0x80020005 if bit
is not supported.
On success, returns SCE_TRUE if the model has capability, else SCE_FALSE.
int sceKernelCheckModelCapability(int bit);
sceKernelGetModelForCDialog
Version | NID |
---|---|
3.60 | 0xA2CB322F |
int sceKernelGetModelForCDialog();
sceKernelGetModel
Version | NID |
---|---|
3.60 | 0xD0D4F729 |
int sceKernelGetModel();
sceKernelIsPSVitaTV
Version | NID |
---|---|
3.60 | 0x1453A5E5 |
int sceKernelIsPSVitaTV();
SceDipsw
sceKernelCheckDipsw
Version | NID |
---|---|
1.69-3.60 | 0x1C783FB2 |
sceKernelClearDipsw
Version | NID |
---|---|
1.69-3.60 | 0x800EDCC1 |
sceKernelSetDipsw
Version | NID |
---|---|
1.69-3.60 | 0x817053D4 |
SceDipswForDriver
sceKernelCheckDipswForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0xA98FC2FD |
int sceKernelCheckDipswForDriver(int no);
sceKernelClearDipswForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0xF1F3E9FE |
void sceKernelClearDipswForDriver(int no);
sceKernelSetDipswForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x82E45FBF |
void sceKernelSetDipswForDriver(int no);
sceKernelGetDipswInfoForDriver
Version | NID |
---|---|
1.800.071-3.740.011 | 0xB2AD48BE |
This is a guessed name.
All it does is:
return *(int *)(dipsw_addr + 4 * info_id);
info_id possible values:
- 0: CP timestamp 1
- 1: CP Version, CP Board ID
- 2: CP timestamp 2
- 3: ASLR Seed
int sceKernelGetDipswInfoForDriver(SceUInt32 info_id);
SceUartForKernel
sceKernelUartChStartForKernel
Version | NID |
---|---|
0.931-3.60 | 0xA9C74212 |
Temp name was sceKernelUartInitForKernel, sceUartInitForKernel.
It initializes the clock generator registers for the UART channel
. See UART Registers. The default baud rate is 115200 for channels 0-5 and 250000 for channel 6.
// channel: 0-6 int sceKernelUartChStartForKernel(SceUInt32 channel);
sceKernelUartReadAvailableForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x38DB7629 |
Temp name was sceUartReadAvailableForKernel.
Returns the number of words available to read from the read FIFO.
int sceKernelUartReadAvailableForKernel(int channel);
sceKernelUartReadForKernel
Version | NID |
---|---|
0.931-3.60 | 0x9BBF1255 |
Temp name was sceUartReadForKernel.
int sceKernelUartReadForKernel(int channel);
sceKernelUartWriteForKernel
Version | NID |
---|---|
0.931-3.60 | 0x41973874 |
Temp name was sceUartWriteForKernel.
int sceKernelUartWriteForKernel(int channel, char c);
sceKernelUartPutcharForKernel
Version | NID |
---|---|
0.931-0.990 | 0xAF243C6A |
3.60 | not present |
int sceKernelUartPutcharForKernel(char c);
SceCpu
sceKernelCpuId
Version | NID |
---|---|
1.000.071-3.740.011 | 0x2704CFEE |
Returns the CPU ID of the current core.
SceUInt sceKernelCpuId(void);
SceCpuForKernel
sceKernelSendEventForKernel
Version | NID |
---|---|
0.990 | 0x45885327 |
3.60 | not present |
void sceKernelSendEventForKernel(void);
sceKernelWaitForEventForKernel
Version | NID |
---|---|
0.931 | 0xD2629465 |
3.60 | not present |
void sceKernelWaitForEventForKernel(void);
sceKernelPrintCpuModeForKernel
Version | NID |
---|---|
0.931 | 0xDC99515C |
3.60 | not present |
sceKernelTlsKernelSetForKernel
Version | NID |
---|---|
0.940 | 0x7A180AA4 |
3.60 | not present |
// thread_index must be < 8 void *sceKernelTlsKernelSetForKernel(SceUInt32 thread_index, void *tls);
sceKernelTlsKernelGetForKernel
Version | NID |
---|---|
0.940 | 0x28E080BC |
3.60 | not present |
// thread_index must be < 8 void *sceKernelTlsKernelGetForKernel(SceUInt32 thread_index);
sceKernelRoundupDCacheLineForKernel
Version | NID |
---|---|
0.931-0.990 | 0xED512F50 |
3.60 | not present |
Calls the function previously registered by SceSysmem#sceKernelSetRoundupDCacheLineFuncForKernel.
int sceKernelRoundupDCacheLineForKernel(int a1);
sceKernelSetRoundupDCacheLineFuncForKernel
Version | NID |
---|---|
0.931-0.990 | 0x66C3AA93 |
3.60 | not present |
Uses CTR and CTR-DMINLINE to determine which function to return.
(int sceKernelRoundupDCacheLineForKernel(int) *) sceKernelSetRoundupDCacheLineFuncForKernel(void);
sceKernelReadUser8ForKernel
Version | NID |
---|---|
0.990 | 0x942B92C3 |
3.60 | not present |
int sceKernelReadUser8ForKernel(uint8_t *dest, uint8_t *psrc);
sceKernelReadUser16ForKernel
Version | NID |
---|---|
0.990 | maybe present |
3.60 | not present |
int sceKernelReadUser16ForKernel(uint16_t *dest, uint16_t *psrc);
sceKernelReadUser32ForKernel
Version | NID |
---|---|
0.990 | 0x6091086F |
3.60 | not present |
int sceKernelReadUser32ForKernel(uint32_t *dest, uint32_t *psrc);
sceKernelWriteUser8ForKernel
Version | NID |
---|---|
0.990 | 0x13B7B151 |
3.60 | not present |
int sceKernelWriteUser8ForKernel(uint8_t *dest, uint8_t val);
sceKernelWriteUser16ForKernel
Version | NID |
---|---|
0.990 | maybe present |
3.60 | not present |
int sceKernelWriteUser16ForKernel(uint16_t *dest, uint16_t val);
sceKernelWriteUser32ForKernel
Version | NID |
---|---|
0.990 | 0x101894E0 |
3.60 | not present |
int sceKernelWriteUser32ForKernel(uint32_t *dest, uint32_t val);
sceKernelVMRead8ForKernel
Version | NID |
---|---|
0.990 | 0xA2F0FE9D |
3.60 | not present |
int sceKernelVMRead8ForKernel(uint8_t *dest, uint8_t *psrc);
sceKernelVMRead16ForKernel
Version | NID |
---|---|
0.990 | 0xF31D4D10 |
3.60 | not present |
int sceKernelVMRead16ForKernel(uint16_t *dest, uint16_t *psrc);
sceKernelVMRead32ForKernel
Version | NID |
---|---|
0.931-0.990 | 0x316574B1 |
3.60 | not present |
int sceKernelVMRead32ForKernel(uint32_t *dest, uint32_t *psrc);
sceKernelVMWrite8ForKernel
Version | NID |
---|---|
0.931 | 0xA3C65664 |
3.60 | not present |
int sceKernelVMWrite8ForKernel(uint8_t *dest, uint8_t val);
sceKernelVMWrite16ForKernel
Version | NID |
---|---|
0.931 | 0xBF38A460 |
3.60 | not present |
int sceKernelVMWrite16ForKernel(uint16_t *dest, uint16_t val);
sceKernelVMWrite32ForKernel
Version | NID |
---|---|
0.931 | 0x04D129B2 |
3.60 | not present |
int sceKernelVMWrite32ForKernel(uint32_t *dest, uint32_t val);
sceKernelMMUIsValidMapForKernel
Version | NID |
---|---|
0.931 | 0x4891F923 |
3.60 | not present |
int sceKernelMMUIsValidMapForKernel(SceKernelMMUContext *context, const void *vbase, SceSize size, const void *pbase);
sceKernelMMUIsValidUnmapForKernel
Version | NID |
---|---|
0.931 | 0x60EA8433 |
3.60 | not present |
int sceKernelMMUIsValidUnmapForKernel(SceKernelMMUContext *context, const void *vbase, SceSize size);
sceKernelMMUL1GetInfoForKernel
Version | NID |
---|---|
0.931-0.990 | 0x9D346F87 |
3.60 | not present |
Parses a L1PT for information about a specific entry. Pass the address of the L1PT in l1pt
. Used by sceKernelAddressSpaceGetMMUL1InfoForKernel.
SceInt32 sceKernelMMUL1GetInfoForKernel(void* l1pt, const void *addr, SceKernelMMUL1Info *pInfo);
sceKernelMMUL2GetInfoForKernel
Version | NID |
---|---|
0.931-0.990 | 0x247629A7 |
3.60 | not present |
int sceKernelMMUL2GetInfoForKernel(int a1, void *addr, void *pInfo);
sceKernelMMUMapSectionsForKernel
Version | NID |
---|---|
0.931-0.990 | 0x868B471A |
3.60 | not present |
3.65 | Present, but not exported |
SceInt32 sceKernelMMUMapSectionsForKernel(const void *ttbr, SceKernelMemoryType code, SceUInt32 domain, void *vaddr, SceSize vsize, void *paddr);
sceKernelMMUMapSupersectionsForKernel
Version | NID |
---|---|
0.931-0.990 | 0x0D9DA15F |
3.60 | not present |
3.65 | Present, but not exported |
SceInt32 sceKernelMMUMapSupersectionsForKernel(const void *ttbr, SceKernelMemoryType code, SceUInt32 domain, void *vaddr, SceSize vsize, void *paddr);
sceKernelMMUMapSmallPagesForKernel
Version | NID |
---|---|
0.931-0.990 | 0xB953E022 |
3.60 | not present |
3.65 | Present, but not exported |
int sceKernelMMUMapSmallPagesForKernel(const void *table, SceKernelMemoryType code, void *vbase, SceUInt32 voffset, SceSize vsize, void *paddr);
sceKernelMMUMapSmallPageForKernel
Version | NID |
---|---|
0.931-0.990 | 0xCC7C16F8 |
3.60 | not present |
int sceKernelMMUMapSmallPageForKernel(const void *table, SceKernelMemoryType code, void *vbase, SceUInt32 voffset, void *paddr);
sceKernelMMUMapLargePagesForKernel
Version | NID |
---|---|
0.931-0.990 | 0x78D32D38 |
3.60 | not present |
3.65 | Present, but not exported |
int sceKernelMMUMapLargePagesForKernel(const void *table, SceKernelMemoryType code, void *vbase, SceUInt32 voffset, SceSize vsize, void *paddr);
sceKernelMMUUnmapSectionsWithFlagsForKernel
Version | NID |
---|---|
0.931-0.990 | 0xFC657FD1 |
3.60 | not present |
int sceKernelMMUUnmapSectionsWithFlagsForKernel(const void *table, uint32_t maybe_ttbr0, void *vbase, SceSize vsize, SceUInt32 flags);
sceKernelMMUUnmapSupersectionsWithFlagsForKernel
Version | NID |
---|---|
0.931-0.990 | 0x0E4D29C6 |
3.60 | not present |
int sceKernelMMUUnmapSupersectionsWithFlagsForKernel(const void *table, uint32_t maybe_ttbr0, void *vbase, SceSize vsize, SceUInt32 flags);
sceKernelMMUUnmapSmallPagesWithFlagsForKernel
Version | NID |
---|---|
0.931-0.990 | 0x11EBA8CE |
3.60 | not present |
int sceKernelMMUUnmapSmallPagesWithFlagsForKernel(const void *table, uint32_t maybe_ttbr0, void *vbase, SceUInt32 voffset, SceSize vsize, SceUInt32 flags);
sceKernelMMUUnmapLargePagesWithFlagsForKernel
Version | NID |
---|---|
0.931-0.990 | 0x44319918 |
3.60 | not present |
int sceKernelMMUUnmapLargePagesWithFlagsForKernel(const void *table, uint32_t maybe_ttbr0, void *vbase, SceUInt32 voffset, SceSize vsize, SceUInt32 flags);
sceKernelMMUL1VAtoPABySWForKernel
Version | NID |
---|---|
0.990 | 0x8E4ECF17 |
3.60 | not present |
int sceKernelMMUL1VAtoPABySWForKernel(const void *table, void *pVA, void **pPA);
sceKernelMMUSetL2PageTableForKernel
Version | NID |
---|---|
0.990 | 0xAECA0820 |
3.60 | not present |
int sceKernelMMUSetL2PageTableForKernel(const void *ttbr, const void *map, const void *pbase);
sceKernelMMUUnsetL2PageTableForKernel
Version | NID |
---|---|
0.990 | 0xCB519DF3 |
3.60 | not present |
int sceKernelMMUUnsetL2PageTableForKernel(const void *ttbr, const void *PTE);
SceCpuForKernel_CA4124DE
Version | NID |
---|---|
0.990 | 0xCA4124DE |
3.60 | not present |
Returns 1, 2 or 6 based on some page/section properties.
int SceCpuForKernel_CA4124DE(const void *table, void *pVA, void **pPA);
sceKernelMMUGetContextForKernel
Version | NID |
---|---|
0.931 | 0x211B89DA |
1.03-3.60 | not present |
Temp name was sceKernelCpuSaveContextForKernel.
int sceKernelMMUGetContextForKernel(SceKernelMMUContext *context);
sceKernelMMUChangeContextForKernel
Version | NID |
---|---|
0.931 | 0x0A4F0FB9 |
1.03-3.60 | not present |
Temp name was sceKernelCpuRestoreContextForKernel.
int sceKernelMMUChangeContextForKernel(SceKernelMMUContext *context);
sceKernelMMUVAtoPAWithModeForKernel
Version | NID |
---|---|
0.931-3.60 | 0x67343A07 |
Temp name was sceKernelCpuGetPaddrWithMaskForKernel.
mode (maskPAR) is usually 0x33, sometimes 2.
int sceKernelMMUVAtoPAWithModeForKernel(int mode, void *pVA, void **ppPA);
sceKernelMMUCheckRangeWithModeForKernel
Version | NID |
---|---|
0.931 | 0xCCDA3B8C |
3.60 | not present |
Return 0 if all pages are valid, < 0 else.
int sceKernelMMUCheckRangeWithModeForKernel(int mode, void *start, SceSize size);
sceKernelMMUVAtoPAForKernel
Version | NID |
---|---|
0.931-3.60 | 0x2A46E800 |
Temp name was sceKernelCpuGetPaddrForKernel.
Uses mode (maskPAR) 0x33.
This will write the physical address for a virtual address pVA
to memory pointed to by pPA
.
Returns <0 on error, values >=0 indicate success.
int sceKernelMMUVAtoPAForKernel(void *pVA, void **pPA);
sceKernelCpuGetCONTEXTIDRForKernel
Version | NID |
---|---|
3.60 | 0x5B6B3274 |
return (SceUInt8)__mrc(15, 0, 13, 0, 1); // Read CONTEXTIDR (Context ID Register)
SceUInt8 sceKernelCpuGetCONTEXTIDRForKernel(void);
sceKernelCpuUpdateSCTLRForKernel
Version | NID |
---|---|
3.60 | 0x04008CF7 |
int result; result = __mrc(15, 0, 1, 0, 0) | 0x1806; // Read SCTLR (System Control Register) __mcr(15, 0, result, 1, 0, 0); // Write SCTLR (System Control Register) return result;
void sceKernelCpuUpdateSCTLRForKernel(void); // SCTLR (System Control Register)
sceKernelCpuBranchPredictorInvalidateAllISForKernel
Version | NID |
---|---|
3.60 | 0x1BB2BB8D |
void sceKernelCpuBranchPredictorInvalidateAllISForKernel(void); // BPIALLIS, Branch predictor invalidate all (IS)
sceKernelCpuBranchPredictorInvalidateAllForKernel
Version | NID |
---|---|
3.60 | 0x4C4C7D6B |
void sceKernelCpuBranchPredictorInvalidateAllForKernel(void); // BPIALL, Branch predictor invalidate all
sceKernelDcacheCleanInvalidateAllForKernel
Version | NID |
---|---|
0.931.010 | 0x85A27F98 |
Flushes PLE then cleans and invalidates L1 Dcache and L2 cache in this order.
void sceKernelDcacheCleanInvalidateAllForKernel(void);
sceKernelL1DcacheInvalidateForKernel
Version | NID |
---|---|
3.60 | 0x470EAE1E |
Temp name was sceKernelCpuDcacheInvalidateMVACForKernel.
void sceKernelL1DcacheInvalidateForKernel(void* addr); // DCIMVAC, Data cache invalidate by MVA (PoC)
sceKernelL1DcacheInvalidateRangeForKernel
Version | NID |
---|---|
3.60 | 0x583F30D1 |
This is a guessed name. Temp name was sceKernelCpuDcacheInvalidateMVACRangeForKernel.
void sceKernelL1DcacheInvalidateRangeForKernel(void *addr, unsigned int size); // DCIMVAC, Data cache invalidate by MVA (PoC)
sceKernelL1DcacheCleanInvalidateRangeForKernel
Version | NID |
---|---|
0.931-3.60 | 0x6BA2E51C |
This is a guessed name. Temp name was sceKernelCpuDcacheCleanInvalidateMVACRangeForKernel, sceKernelCpuDcacheWritebackInvalidateRangeForKernel, sceKernelDcacheWritebackInvalidateRangeForKernel.
// DCCIMVAC, Data cache clean and invalidate by MVA (PoC) void sceKernelL1DcacheCleanInvalidateRangeForKernel(const void *addr, unsigned int size);
sceKernelL1DcacheInvalidateAllForKernel
Version | NID |
---|---|
3.60 | 0x2F3BF020 |
This is a guessed name. Temp name was sceKernelCpuDcacheInvalidateSWForKernel.
void sceKernelL1DcacheInvalidateAllForKernel(void); // DCISW, Data cache invalidate by set/way (all the cache)
sceKernelL1DcacheCleanAllForKernel
Version | NID |
---|---|
3.60 | 0x73A30DB2 |
This is a guessed name. Temp name was sceKernelCpuDcacheCleanSWForKernel.
void sceKernelL1DcacheCleanAllForKernel(void); // DCCSW, Data cache clean by set/way (all the cache)
sceKernelL1DcacheCleanInvalidateAllForKernel
Version | NID |
---|---|
0.931-3.60 | 0x76DAB4D0 |
Guessed name was sceKernelCpuDcacheCleanInvalidateSWForKernel.
void sceKernelL1DcacheCleanInvalidateAllForKernel(void);
sceKernelL1DcacheCleanForKernel
Version | NID |
---|---|
3.60 | 0xF7159B55 |
Temp name was sceKernelCpuDcacheCleanMVACForKernel.
void sceKernelL1DcacheCleanForKernel(void* addr); // DCCMVAC, Data cache clean by MVA (PoC)
sceKernelL1DcacheCleanRangeForKernel
Version | NID |
---|---|
0.931-3.60 | 0xC5C1EE4E |
Guessed name was sceKernelCpuDcacheCleanMVACRangeForKernel.
void sceKernelL1DcacheCleanRangeForKernel(void *addr, unsigned int size); // DCCMVAC, Data cache clean by MVA (PoC)
sceKernelL1DcacheCleanInvalidateForKernel
Version | NID |
---|---|
3.60 | 0xC8E8C9E9 |
This is a guessed name. Temp name was sceKernelCpuDcacheCleanInvalidateMVACForKernel.
void sceKernelL1DcacheCleanInvalidateForKernel(void *start); // DCCIMVAC, Data cache clean and invalidate by MVA (PoC)
sceKernelL1IcacheInvalidateEntireAllCoreForKernel
Version | NID |
---|---|
0.931-3.60 | 0x264DA250 |
3.65 | 0x803C84BF |
Guessed name was sceKernelCpuIcacheInvalidateAllUISForKernel.
Invalidates the L1 Icache for all cores.
void sceKernelL1IcacheInvalidateEntireAllCoreForKernel(void);
sceKernelL1IcacheInvalidateEntireForKernel
Version | NID |
---|---|
3.60 | 0xAEE0B489 |
This is a guessed name. Temp name was sceKernelCpuIcacheInvalidateAllUForKernel.
Invalidates the entire L1 Icache of this core.
void sceKernelL1IcacheInvalidateEntireForKernel(void); // ICIALLU, Instruction cache invalidate all (PoU)
sceKernelL1IcacheInvalidateRangeForKernel
Version | NID |
---|---|
0.931-3.60 | 0xF4C7F578 |
Temp name was sceKernelCpuIcacheInvalidateRangeForKernel, sceKernelCpuIcacheInvalidateMVAURange.
Invalidates a range in L1 Icache of this core.
// ICIMVAU, Instruction cache invalidate by MVA (PoU) void sceKernelL1IcacheInvalidateRangeForKernel(void *start, SceSize size);
sceKernelIcacheInvalidateRangeForKernel
Version | NID |
---|---|
0.931-3.60 | 0x19F17BD0 |
3.65-3.68 | 0x73E895EA |
Temp name was sceKernelCpuIcacheAndL2InvalidateMVAURangeForKernel, sceKernelCpuIcacheAndL2WritebackInvalidateRangeForKernel.
Cleans and invalidates range in L2 cache, then in L1 Icache of core.
int sceKernelIcacheInvalidateRangeForKernel(void *start, SceSize size);
sceKernelPleFlushRequestForKernel
Version | NID |
---|---|
3.60 | 0xD0D85FF8 |
Temp name was sceKernelCpuPreloadEngineKillForKernel.
- NSACR (Non-Secure Access Control Register)
- Test bit NS access to the Preload Engine resources
- [>] PLEFF (Preload Engine FIFO flush operation)
- [>] PLEKC (Preload Engine kill channel operation)
- [<] PLEASR (Preload Engine Activity Status Register)
void sceKernelPleFlushRequestForKernel(void);
sceKernelDomainTextMemcpyForKernel
Version | NID |
---|---|
0.931-3.60 | 0x8C683DEC |
3.63-3.65 | not present. Removed from library. |
Temp name was sceKernelCpuUnrestrictedMemcpyForKernel.
Unrestricted memcpy by first setting the DACR
register to 0xFFFF0000
then doing a memcpy.
In FW 0.931, DACR
is set to 0xFFFFFFFF
instead and interrupts are disabled for the operation.
int sceKernelDomainTextMemcpyForKernel(void *dest, const void *src, SceSize len);
sceKernelMMUGetMemoryTypeForKernel
Version | NID |
---|---|
3.60 | 0x9B8173F4 |
Return value can be:
- 2
- 8
- 0x40
- 0x80
- 0xD0
- 0x80022007 (SCE_KERNEL_ERROR_VA2PA_FAULT)
int sceKernelMMUGetMemoryTypeForKernel(void *vaddr);
sceKernelCorelockUnlockForKernel
Version | NID |
---|---|
3.60 | 0xA5C9DBBA |
This is a guessed name. Temp name was sceKernelWaitCore3ForKernel.
typedef struct SceKernelCorelockContext { int lock; int16_t core_count; int16_t last_wait_core; } SceKernelCorelockContext; void sceKernelCorelockUnlockForKernel(SceKernelCorelockContext *pCtx);
sceKernelCorelockLockForKernel
Version | NID |
---|---|
0.931-3.60 | 0x9D72DD1B |
This is a guessed name.
void sceKernelCorelockLockForKernel(SceKernelCorelockContext *pCtx, int core);
sceKernelCorelockInitializeForKernel
Version | NID |
---|---|
0.931-3.60 | 0x4CD4D921 |
3.65 | 0xA65F6F14 |
This is a guessed name.
void sceKernelCorelockInitializeForKernel(SceKernelCorelockContext *pCtx);
SceCpuForKernel_43CC6E20
Version | NID |
---|---|
3.60 | 0x43CC6E20 |
DACR off
Does some memory copies between the args.
int SceCpuForKernel_43CC6E20(void *addr, int a2, int a3, int a4);
sceKernelDomainTextBzeroIntForKernel
Version | NID |
---|---|
3.60 | 0x76EB0DD4 |
This is a guessed name.
Temp name was sceCpuUnrestrictedBzeroIntForKernel.
DACR off
int sceKernelDomainTextBzeroIntForKernel(int *addr);
SceCpuForKernel_337473B5
Version | NID |
---|---|
0.931-3.60 | 0x337473B5 |
DACR off
If addr.unk_0 equals 0, changes addr.unk_0 to new_val, else increase addr.unk_4.
int SceCpuForKernel_337473B5(CpuUnkStruct *addr, unsigned int new_val);
sceKernelAtomicSubIfGreater64ForKernel
Version | NID |
---|---|
3.60 | 0x37FBFD12 |
DACR is not disabled
int sceKernelAtomicSubIfGreater64ForKernel(unsigned long long *a1, unsigned int a2);
sceKernelAtomicLimit64ForKernel
Version | NID |
---|---|
3.60 | 0x6190A018 |
DACR is not disabled
int sceKernelAtomicLimit64ForKernel(unsigned long long *result, int limit);
sceKernelAtomicAdd32AndGet64InRangeForKernel
Version | NID |
---|---|
3.60 | 0xD8A7216C |
DACR is not disabled
int sceKernelAtomicAdd32AndGet64InRangeForKernel(unsigned long long *val, int add_val, int limit);
sceKernelAtomicAdd32AndGet64InHiLoRangeForKernel
Version | NID |
---|---|
3.60 | 0xD37AABE5 |
DACR is not disabled
int sceKernelAtomicAdd32AndGet64InHiLoRangeForKernel(unsigned long long *val, int add_val, int limit);
sceKernelAtomicGet32AndSet64ForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x4553FBDE |
DACR is not disabled
int sceKernelAtomicGet32AndSet64ForKernel(unsigned long long *result, int src);
sceKernelAtomicGet32AndSet64_2ForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x7FB4E7AC |
Exact same code as SceCpuForKernel_4553FBDE.
DACR is not disabled
int sceKernelAtomicGet32AndSet64_2ForKernel(unsigned long long *result, int src);
sceKernelAtomicDecIfLowPositive32ForKernel
Version | NID |
---|---|
3.60 | 0x8510FA52 |
DACR is not disabled
int sceKernelAtomicDecIfLowPositive32ForKernel(unsigned int *addr);
sceKernelAtomicIncrementHighwaterCounterForKernel
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.610.011 | 0x5F64E5ED |
3.630.011-3.740.011 | 0x9DA58A9E |
This is a guessed name. Temp name was sceKernelCpuAtomicHiLoAlgorithmForKernel.
Atomically increments a highwater counter.
Highwater counters are 32-bit values holding a current
count in the low 16 bits, and a highwater
count in the high 16 bits.
This routine increments the current
count, and the highwater
count if the new current
value is higher than highwater
.
DACR is not disabled.
Returns the value of the counter after the increment.
SceUInt32 sceKernelAtomicIncrementHighwaterCounterForKernel(SceUInt32 *pCounter);
sceKernelAtomicAddAndGetPositive32InRangeForKernel
Version | NID |
---|---|
3.100.081-3.610.011 | 0x98E91C1C |
3.630.011-3.740.011 | 0x8F40D0FD |
This is a guessed name.
DACR is not disabled
If val is negative, returns 2 and does not override val.
int sceKernelAtomicAddAndGetPositive32InRangeForKernel(int* val, int add_val, int limit);
SceCpuForKernel_6C7E7B57
Version | NID |
---|---|
0.931-3.60 | 0x6C7E7B57 |
Set TTBR lower value (0x4A).
int SceCpuForKernel_6C7E7B57(uintptr_t ttbr);
SceCpuForKernel_AED8F8D7
Version | NID |
---|---|
0.931 | 0xAED8F8D7 |
3.60 | not present |
Initialize TTBR.
int SceCpuForKernel_AED8F8D7(const void *ttbr);
sceKernelGetVmaccessRangeForKernel
Version | NID |
---|---|
0.931.010-3.610.011 | 0x9A3281C0 |
3.630.011-3.740.011 | 0xC32687D0 |
Returns the start and end address of the Virtual Memory access range. Functions such as sceKernelCopyFromUserForDriver (i.e. kernel<->usermode transfer routines) are located in this range. All functions in the Virtual Memory access range run in ARM mode not in Thumb mode.
See the SceExcpmgr page for more information about how the values returned by this function are used.
Note that the Virtual Memory access range excludes the endpoint. *pRangeEnd
is not considered part of the range however *pRangeStart
is.
// 0.931.010 void sceKernelGetVmaccessRangeForKernel(SceUIntPtr *pRangeStart, SceUIntPtr *pRangeEnd); // 0.940-0.990 void sceKernelGetVmaccessRangeForKernel(SceUIntPtr *pOldModelRangeStart, SceUIntPtr *pOldModelRangeEnd, SceUIntPtr *pNewModelRangeStart, SceUIntPtr *pNewModelRangeEnd) // 3.600.011-3.740.011 void sceKernelGetVmaccessRangeForKernel(SceUIntPtr *pRangeStart, SceUIntPtr *pRangeEnd);
SceCpuForKernel_9CB82EB0
Version | NID |
---|---|
3.60 | 0x9CB82EB0 |
return;
int SceCpuForKernel_9CB82EB0(void);
SceCpuForDriver
SceCpuForDriver_9A9D9C94
Version | NID |
---|---|
0.990.000-0.996.090 | 0x9A9D9C94 |
1.03-3.740.011 | not present |
SceCpuForDriver_A2E3E4EB
Version | NID |
---|---|
0.990.000-0.996.090 | 0xA2E3E4EB |
1.03-3.740.011 | not present |
sceKernelRoundupDCacheLine3ForDriver
Version | NID |
---|---|
0.931.010-1.060.031 | 0xF0849812 |
1.50-3.740.011 | not present |
int sceKernelRoundupDCacheLine3ForDriver(int a1);
sceKernelAbortForDriver
Version | NID |
---|---|
0.931.010-1.060.031 | 0x6DCA6903 |
1.50-3.740.011 | not present |
void sceKernelAbortForDriver(void);
sceKernelCpuIdForDriver
Version | NID |
---|---|
0.990-3.60 | 0x5E4D5DE1 |
Returns the CPU ID of the current core.
int sceKernelCpuIdForDriver(void);
sceKernelAtomicAddAndGet8ForDriver
Version | NID |
---|---|
3.60 | 0x1E850481 |
unsigned char sceKernelAtomicAddAndGet8ForDriver (unsigned char *addr, unsigned char val);
sceKernelAtomicAddAndGet16ForDriver
Version | NID |
---|---|
3.60 | 0x59F74E94 |
unsigned short sceKernelAtomicAddAndGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicAddAndGet32ForDriver
Version | NID |
---|---|
0.990-3.60 | 0x5F6A8743 |
Adds val
to *addr
atomically, and returns the result.
unsigned int sceKernelAtomicAddAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicAddAndGet64ForDriver
Version | NID |
---|---|
3.60 | 0x4E459A03 |
unsigned long long sceKernelAtomicAddAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicAddUnless8ForDriver
Version | NID |
---|---|
3.60 | 0x5CC62CEC |
int sceKernelAtomicAddUnless8ForDriver(unsigned char *addr, unsigned char val, unsigned char cmp);
sceKernelAtomicAddUnless16ForDriver
Version | NID |
---|---|
3.60 | 0x0F84AFE9 |
int sceKernelAtomicAddUnless16ForDriver(unsigned short *addr, unsigned short val, unsigned short cmp);
sceKernelAtomicAddUnless32ForDriver
Version | NID |
---|---|
3.60 | 0x1F157DC3 |
int sceKernelAtomicAddUnless32ForDriver(unsigned int *addr, unsigned int val, unsigned int cmp);
sceKernelAtomicAddUnless64ForDriver
Version | NID |
---|---|
3.60 | 0x06CCFA4B |
int sceKernelAtomicAddUnless64ForDriver(unsigned long long *addr, int unused, unsigned long long val, unsigned long long cmp);
sceKernelAtomicAndAndGet8ForDriver
Version | NID |
---|---|
3.60 | 0x32B62B1A |
unsigned char sceKernelAtomicAndAndGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicAndAndGet16ForDriver
Version | NID |
---|---|
3.60 | 0xB281D52A |
unsigned short sceKernelAtomicAndAndGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicAndAndGet32ForDriver
Version | NID |
---|---|
3.60 | 0xDF899E4B |
unsigned int sceKernelAtomicAndAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicAndAndGet64ForDriver
Version | NID |
---|---|
3.60 | 0xD18E7B54 |
unsigned long long sceKernelAtomicAndAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicClearAndGet8ForDriver
Version | NID |
---|---|
3.60 | 0x8E538AB5 |
unsigned char sceKernelAtomicClearAndGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicClearAndGet16ForDriver
Version | NID |
---|---|
3.60 | 0x6B050D7C |
unsigned short sceKernelAtomicClearAndGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicClearAndGet32ForDriver
Version | NID |
---|---|
3.60 | 0x78C1F148 |
unsigned int sceKernelAtomicClearAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicClearAndGet64ForDriver
Version | NID |
---|---|
3.60 | 0x2149CD4C |
unsigned long long sceKernelAtomicClearAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicClearMask8ForDriver
Version | NID |
---|---|
3.60 | 0x1B3336B0 |
void sceKernelAtomicClearMask8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicClearMask16ForDriver
Version | NID |
---|---|
3.60 | 0x1BE58599 |
void sceKernelAtomicClearMask16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicClearMask32ForDriver
Version | NID |
---|---|
3.60 | 0x4AE1BCC0 |
void sceKernelAtomicClearMask32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicClearMask64ForDriver
Version | NID |
---|---|
3.60 | 0x55760309 |
void sceKernelAtomicClearMask64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicCompareAndSet8ForDriver
Version | NID |
---|---|
3.60 | 0x3627F4E0 |
unsigned char sceKernelAtomicCompareAndSet8ForDriver(unsigned char *addr, unsigned char cmp, unsigned char val);
sceKernelAtomicCompareAndSet16ForDriver
Version | NID |
---|---|
3.60 | 0x6F63F56D |
unsigned short sceKernelAtomicCompareAndSet16ForDriver(unsigned short *addr, unsigned short cmp, unsigned short val);
sceKernelAtomicCompareAndSet32ForDriver
Version | NID |
---|---|
3.60 | 0xCDA96E81 |
unsigned int sceKernelAtomicCompareAndSet32ForDriver(unsigned int *addr, unsigned int cmp, unsigned int val);
sceKernelAtomicCompareAndSet64ForDriver
Version | NID |
---|---|
3.60 | 0x4B527009 |
unsigned long long sceKernelAtomicCompareAndSet64ForDriver(unsigned long long *addr, int unused, unsigned long long cmp, unsigned long long val);
sceKernelAtomicDecIfPositive8ForDriver
Version | NID |
---|---|
3.60 | 0x45153D4E |
unsigned char sceKernelAtomicDecIfPositive8ForDriver(unsigned char *addr);
sceKernelAtomicDecIfPositive16ForDriver
Version | NID |
---|---|
3.60 | 0x9A693F5B |
unsigned short sceKernelAtomicDecIfPositive16ForDriver(unsigned short *addr);
sceKernelAtomicDecIfPositive32ForDriver
Version | NID |
---|---|
3.60 | 0x2A71B03C |
This is a guessed name. Official name might be sceKernelAddressSpaceReleaseForDriver.
unsigned int sceKernelAtomicDecIfPositive32ForDriver(unsigned int* addr);
sceKernelAtomicDecIfPositive64ForDriver
Version | NID |
---|---|
3.60 | 0x267D0B33 |
unsigned long long sceKernelAtomicDecIfPositive64ForDriver(unsigned long long *addr);
sceKernelAtomicGetAndAdd8ForDriver
Version | NID |
---|---|
3.60 | 0xFCDCD4DE |
unsigned char sceKernelAtomicGetAndAdd8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicGetAndAdd16ForDriver
Version | NID |
---|---|
3.60 | 0x225DF91A |
unsigned short sceKernelAtomicGetAndAdd16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicGetAndAdd32ForDriver
Version | NID |
---|---|
3.60 | 0x341B6E81 |
unsigned int sceKernelAtomicGetAndAdd32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicGetAndAdd64ForDriver
Version | NID |
---|---|
3.60 | 0x043FD446 |
unsigned long long sceKernelAtomicGetAndAdd64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicGetAndAnd8ForDriver
Version | NID |
---|---|
3.60 | 0xD8E675C0 |
unsigned char sceKernelAtomicGetAndAnd8ForDriver(unsigned char *a1, unsigned char a2);
sceKernelAtomicGetAndAnd16ForDriver
Version | NID |
---|---|
3.60 | 0x4A820BC5 |
unsigned short sceKernelAtomicGetAndAnd16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicGetAndAnd32ForDriver
Version | NID |
---|---|
3.60 | 0x10EB35EB |
unsigned int sceKernelAtomicGetAndAnd32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicGetAndAnd64ForDriver
Version | NID |
---|---|
3.60 | 0x18A17E07 |
unsigned long long sceKernelAtomicGetAndAnd64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicGetAndClear8ForDriver
Version | NID |
---|---|
3.60 | 0x382D1466 |
unsigned char sceKernelAtomicGetAndClear8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicGetAndClear16ForDriver
Version | NID |
---|---|
3.60 | 0x8E9C086D |
unsigned short sceKernelAtomicGetAndClear16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicGetAndClear32ForDriver
Version | NID |
---|---|
3.60 | 0xE36F3A46 |
unsigned int sceKernelAtomicGetAndClear32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicGetAndClear64ForDriver
Version | NID |
---|---|
3.60 | 0x88BA6002 |
unsigned long long sceKernelAtomicGetAndClear64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicGetAndOr8ForDriver
Version | NID |
---|---|
3.60 | 0xBDF6F8E4 |
unsigned char sceKernelAtomicGetAndOr8ForDriver(unsigned char *var, unsigned char value);
sceKernelAtomicGetAndOr16ForDriver
Version | NID |
---|---|
3.60 | 0x004F09D1 |
unsigned short sceKernelAtomicGetAndOr16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicGetAndOr32ForDriver
Version | NID |
---|---|
3.60 | 0x2A40BB93 |
unsigned int sceKernelAtomicGetAndOr32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicGetAndOr64ForDriver
Version | NID |
---|---|
3.60 | 0xCB73D6D5 |
unsigned long long sceKernelAtomicGetAndOr64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicGetAndSet8ForDriver
Version | NID |
---|---|
3.60 | 0x29599FC8 |
unsigned char sceKernelAtomicGetAndSet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicGetAndSet16ForDriver
Version | NID |
---|---|
3.60 | 0x085532C8 |
unsigned short sceKernelAtomicGetAndSet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicGetAndSet32ForDriver
Version | NID |
---|---|
3.60 | 0x0EE04C03 |
unsigned int sceKernelAtomicGetAndSet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicGetAndSet64ForDriver
Version | NID |
---|---|
3.60 | 0xD2DEE625 |
unsigned long long sceKernelAtomicGetAndSet64ForDriver(unsigned long long *addr, int unused, unsigned int lo_val, unsigned int hi_val);
sceKernelAtomicGetAndSub8ForDriver
Version | NID |
---|---|
3.60 | 0x7B43D0D7 |
unsigned char sceKernelAtomicGetAndSub8ForDriver (unsigned char *addr, unsigned char val);
sceKernelAtomicGetAndSub16ForDriver
Version | NID |
---|---|
3.60 | 0x3EE9B5B8 |
unsigned short sceKernelAtomicGetAndSub16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicGetAndSub32ForDriver
Version | NID |
---|---|
3.60 | 0xF891CF2A |
unsigned int sceKernelAtomicGetAndSub32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicGetAndSub64ForDriver
Version | NID |
---|---|
3.60 | 0xA7585370 |
unsigned long long sceKernelAtomicGetAndSub64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicGetAndXor8ForDriver
Version | NID |
---|---|
3.60 | 0xBAF47F7B |
unsigned char sceKernelAtomicGetAndXor8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicGetAndXor16ForDriver
Version | NID |
---|---|
3.60 | 0x711801E6 |
unsigned short sceKernelAtomicGetAndXor16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicGetAndXor32ForDriver
Version | NID |
---|---|
3.60 | 0x77E34309 |
unsigned int sceKernelAtomicGetAndXor32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicGetAndXor64ForDriver
Version | NID |
---|---|
3.60 | 0xE212ECAD |
unsigned long long sceKernelAtomicGetAndXor64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicOrAndGet8ForDriver
Version | NID |
---|---|
3.60 | 0x5D515F1B |
unsigned char sceKernelAtomicOrAndGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicOrAndGet16ForDriver
Version | NID |
---|---|
3.60 | 0xADD39B84 |
unsigned short sceKernelAtomicOrAndGet16ForDriver (unsigned short *addr, unsigned short val);
sceKernelAtomicOrAndGet32ForDriver
Version | NID |
---|---|
3.60 | 0xBC248C30 |
unsigned int sceKernelAtomicOrAndGet32ForDriver (unsigned int *addr, unsigned int val);
sceKernelAtomicOrAndGet64ForDriver
Version | NID |
---|---|
3.60 | 0x3E218AF7 |
unsigned long long sceKernelAtomicOrAndGet64ForDriver(unsigned long long *addr, int unused, long long val);
sceKernelAtomicSet8ForDriver
Version | NID |
---|---|
3.60 | 0x0836537E |
void sceKernelAtomicSet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicSet16ForDriver
Version | NID |
---|---|
3.60 | 0x532CA3E8 |
void sceKernelAtomicSet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicSet32ForDriver
Version | NID |
---|---|
3.60 | 0x3168BC57 |
void sceKernelAtomicSet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicSet64ForDriver
Version | NID |
---|---|
3.60 | 0xC381CE8C |
void sceKernelAtomicSet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicSetIfGreaterGet8ForDriver
Version | NID |
---|---|
3.60 | 0xC3868071 |
unsigned char sceKernelAtomicSetIfGreaterGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicSetIfGreaterGet16ForDriver
Version | NID |
---|---|
3.60 | 0x875B094D |
unsigned short sceKernelAtomicSetIfGreaterGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicSetIfGreaterGet32ForDriver
Version | NID |
---|---|
3.60 | 0x26F71995 |
unsigned int sceKernelAtomicSetIfGreaterGet32ForDriver(unsigned int *a1, unsigned int val);
sceKernelAtomicSubAndGet8ForDriver
Version | NID |
---|---|
3.60 | 0xEB085370 |
unsigned char sceKernelAtomicSubAndGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelAtomicSubAndGet16ForDriver
Version | NID |
---|---|
3.60 | 0x515682C9 |
unsigned short sceKernelAtomicSubAndGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelAtomicSubAndGet32ForDriver
Version | NID |
---|---|
3.60 | 0xA4884C4E |
unsigned int sceKernelAtomicSubAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicSubAndGet64ForDriver
Version | NID |
---|---|
3.60 | 0xB5F8919C |
unsigned long long sceKernelAtomicSubAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelAtomicXorAndGet8ForDriver
Version | NID |
---|---|
3.60 | 0x03887992 |
unsigned char sceKernelAtomicXorAndGet8ForDriver (unsigned char *a1, unsigned char a2);
sceKernelAtomicXorAndGet16ForDriver
Version | NID |
---|---|
3.60 | 0x646003D6 |
unsigned short sceKernelAtomicXorAndGet16ForDriver (unsigned short *addr, unsigned short val);
sceKernelAtomicXorAndGet32ForDriver
Version | NID |
---|---|
3.60 | 0x4244BE65 |
unsigned int sceKernelAtomicXorAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelAtomicXorAndGet64ForDriver
Version | NID |
---|---|
3.60 | 0x692C51B3 |
unsigned long long sceKernelAtomicXorAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelDcacheInvalidateRangeForDriver
Version | NID |
---|---|
0.931-3.60 | 0x02796361 |
Temp name was sceKernelDcacheInvalidateRange_1ForDriver, sceKernelCpuDcacheAndL2InvalidateMVACRange_1ForDriver, sceKernelCpuDcacheAndL2InvalidateRangeForDriver.
int sceKernelDcacheInvalidateRangeForDriver(const void *start, SceSize size);
sceKernelDcacheInvalidateRangeForL2WBWAForDriver
Version | NID |
---|---|
0.990 | 0x614C6698 |
3.60 | not present |
Temp name was sceKernelDcacheInvalidateRange_0x10ForDriver, sceKernelCpuDcacheAndL2InvalidateMVACRange_10ForDriver.
int sceKernelDcacheInvalidateRangeForL2WBWAForDriver(const void *start, SceSize size);
sceKernelDcacheInvalidateRangeForL1WBWAForDriver
Version | NID |
---|---|
0.990-3.60 | 0x8B4C26DF |
Temp name was sceKernelDcacheInvalidateRange_0x20ForDriver, sceKernelCpuDcacheInvalidateRangeForDriver, sceKernelCpuDcacheAndL2InvalidateMVACRange_20ForDriver.
int sceKernelDcacheInvalidateRangeForL1WBWAForDriver(const void *start, SceSize size);
sceKernelDcacheCleanInvalidateRangeForDriver
Version | NID |
---|---|
0.931-3.60 | 0x364E68A4 |
Temp name was sceKernelDcacheCleanInvalidateRange_1ForDriver, sceKernelCpuDcacheAndL2CleanInvalidateMVACRange_1ForDriver, sceKernelCpuDcacheAndL2WritebackInvalidateRangeForDriver, sceKernelDcacheCleanInvalidateRange_0x10ForDriver.
Also have another name "sceKernelDcacheCleanInvalidateRangeForL2WBWAForDriver" in 0.990.
int sceKernelDcacheCleanInvalidateRangeForDriver(const void *start, SceSize size);
sceKernelDcacheCleanInvalidateRangeForL1WBWAForDriver
Version | NID |
---|---|
0.990-3.60 | 0xE551F99B |
Temp name was sceKernelDcacheCleanInvalidateRange_0x20ForDriver, sceKernelCpuDcacheAndL2CleanInvalidateMVACRange_20ForDriver.
int sceKernelDcacheCleanInvalidateRangeForL1WBWAForDriver(const void *start, SceSize);
sceKernelDcacheCleanRangeForDriver
Version | NID |
---|---|
0.931.010-3.740.011 | 0x103872A5 |
Temp name was sceKernelDcacheCleanRange_1ForDriver, sceKernelCpuDcacheAndL2WritebackRangeForDriver, sceKernelCpuDcacheAndL2CleanMVACRange_1ForDriver.
int sceKernelDcacheCleanRangeForDriver(const void *start, SceSize size);
sceKernelDcacheCleanRangeForL2WBWAForDriver
Version | NID |
---|---|
0.990.000-3.350.011 | 0x2A5344B7 |
3.500.011-3.740.011 | not present |
Temp name was sceKernelDcacheCleanRange_0x10ForDriver.
int sceKernelDcacheCleanRangeForL2WBWAForDriver(const void *start, SceSize size);
sceKernelDcacheCleanRangeForL1WBWAForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x9CB9F0CE |
Temp name was sceKernelCpuDcacheWritebackRangeForDriver, flush_dcache, sceKernelDcacheCleanRange_0x20ForDriver, sceKernelCpuDcacheAndL2CleanMVACRange_20ForDriver.
int sceKernelDcacheCleanRangeForL1WBWAForDriver(const void *start, SceSize size);
SceCpuForDriver_E813EBB2
Version | NID |
---|---|
0.990.000-3.740.011 | 0xE813EBB2 |
Cleans L2 memory? A name could be sceKernelWaitL2CacheReg.
#define SceL2CacheReg 0x1A002000 __dsb(); *(int *)(SceL2CacheReg + 0x730) = 0; while ( *(int *)(SceL2CacheReg + 0x730) & 1 ) ; __dmb();
int SceCpuForDriver_E813EBB2(void);
sceKernelIsUncacheAddressInTmpFsGameForDriver
Version | NID |
---|---|
3.60 | 0x337CBDF3 |
Temp name was sceKernelCpuIsVaddrMappedForDriver.
uint32_t vaddr_memory_type = sceKernelMMUGetMemoryTypeForKernel(vaddr); if (vaddr_memory_type != 8) { if (vaddr_memory_type <= 8) { if (vaddr_memory_type != 2) return 0; } else if (vaddr_memory_type != 0x40 && vaddr_memory_type != 0x80) return 0; } return 1;
SceBool sceKernelIsUncacheAddressInTmpFsGameForDriver(void *address);
sceKernelCpuSuspendIntrForDriver
Version | NID |
---|---|
1.60-3.60 | 0x821FC0EE |
Temp name was sceKernelCpuDisableInterruptsForDriver.
Disables IRQ (FIQ are not disabled, but they're routed to Secure state anyways...) and returns previous interrupt bit status (either 0 or 0x80).
//Return CPSR.I and disable IRQ. SceKernelIntrStatus sceKernelCpuSuspendIntrForDriver(void);
sceKernelCpuResumeIntrForDriver
Version | NID |
---|---|
1.60-3.60 | 0xF5BAD43B |
Temp name was sceKernelCpuEnableInterruptsForDriver.
Restore previous IRQ state. Pass the return value of the previous call to sceKernelCpuSuspendIntrForDriver.
//Enable IRQ if prev_state & 0x80. SceKernelIntrStatus sceKernelCpuResumeIntrForDriver(SceKernelIntrStatus prev_state);
Spinlock functions
The following functions implement a simple mutal exclusion mechanism using atomic operation (LDREX/STREX). Spinlocks are owned by a single thread or CPU at a time. Unlike other lock/sync objects of the kernel, spinlocks can be used under any context. Use spinlocks if the data to protect may be accessed from an IRQ or exception handler.
There are two version of the Spinlock functions: normal functions do not change the CPU state, while the SuspendIntr
functions ensure the CPU cannot be interrupted while the lock is held.
The same type of function must be used to lock and unlock a spinlock: for example, calling sceKernelSpinlockLowLockCpuResumeIntr
followed by sceKernelSpinlockLowUnlock
is an invalid usage of this API.
Spinlocks can take two values: 0
means the spinlock is unlocked, and 1
means the spinlock is locked.
//Unofficial names typedef int SceKernelSpinlock; typedef int SceKernelRWSpinlock; typedef int SceKernelIntrStatus; //Sample usage: void function(Object* object) { sceKernelSpinlockLowLock(&object->lock); /* ... work on object ... */ sceKernelSpinlockUnlock(&object->lock); } void trylock_function(Object* object) { int res = sceKernelSpinlockLowTrylock(&object->lock); if (res >= 0) { /* ... work on object ... */ } } void uninterruptible_function(Object* object) { SceKernelIntrStatus status = sceKernelSpinlockLowLockCpuSuspendIntr(&object->lock); /* ... work on object ... */ /* interrupts are disabled here */ sceKernelSpinlockUnlock(&object->lock, status); } void uninterruptible_trylock_function(Object* object) { SceKernelIntrStatus status = sceKernelSpinlockLowTrylockCpuSuspendIntr(&object->lock); if (status >= 0) { /* ... work on object ... */ /* interrupts are disabled here */ sceKernelSpinlockLowUnlockCpuResumeIntr(&object->lock, status); } }
sceKernelSpinlockLowLockForDriver
Version | NID |
---|---|
1.60-3.60 | 0xBF82DEB2 |
Temp name was sceKernelCpuLockStoreLRForDriver.
Acquires a spinlock.
void sceKernelSpinlockLowLockForDriver(SceKernelSpinlock *pLock);
sceKernelSpinlockLowTrylockForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x5AC9D394 |
This is a guessed name. Temp name was sceKernelCpuTryLockStoreLRForDriver, sceKernelSpinlockLowTryLockForDriver.
Attempts to acquire a spinlock.
/** * @param pLock Pointer to the spinlock * @retval SCE_OK if the spinlock is acquired * @retval <0 if the spinlock could not be acquired */ int sceKernelSpinlockLowTrylockForDriver(SceKernelSpinlock *pLock);
sceKernelSpinlockLowUnlockForDriver
Version | NID |
---|---|
1.60-3.60 | 0xD6ED0C46 |
Temp name was sceKernelCpuUnlockStoreLRForDriver.
Unlocks a spinlock previously acquired with either sceKernelSpinlockLowLockForDriver or sceKernelSpinlockLowTrylockForDriver.
void sceKernelSpinlockLowUnlockForDriver(SceKernelSpinlock *pLock);
sceKernelSpinlockLowLockCpuSuspendIntrForDriver
Version | NID |
---|---|
0.990-3.60 | 0xD32ACE9E |
Temp name was sceKernelCpuSuspendIntrForDriver, sceKernelCpuLockSuspendIntrStoreLRForDriver.
Acquires a spinlock and suspend interrupts if necessary.
/** * @param pLock Pointer to the spinlock * @return An opaque value describing the interrupt state */ SceKernelIntrStatus sceKernelSpinlockLowLockCpuSuspendIntrForDriver(SceKernelSpinlock *pLock);
sceKernelSpinlockLowTrylockCpuSuspendIntrForDriver
Version | NID |
---|---|
3.60 | 0x27C0B340 |
Temp name was sceKernelCpuTryLockSuspendIntrStoreLRForDriver.
Attempts to acquire a spinlock. If successfully acquired, suspends interrupts if necessary.
/** * @param pLock Pointer to the spinlock * @retval >=0 if the spinlock is acquired - opaque value describing the interrupt state * @retval <0 if the spinlock could not be acquired */ SceKernelIntrStatus sceKernelSpinlockLowTrylockCpuSuspendIntrForDriver(SceKernelSpinlock *pLock);
sceKernelSpinlockLowUnlockCpuResumeIntrForDriver
Version | NID |
---|---|
0.990-3.60 | 0x7BB9D5DF |
Temp name was sceKernelCpuUnlockResumeIntrStoreLRForDriver, sceKernelCpuResumeIntrForDriver.
Unlocks a spinlock previously acquired with either sceKernelSpinlockLowLockCpuSuspendIntrForDriver or sceKernelSpinlockLowTrylockCpuSuspendIntrForDriver and resumes interrupts if necessary.
If interrupts were disabled before acquiring the spinlock, they will remain disabled after this call.
void sceKernelSpinlockLowUnlockCpuResumeIntrForDriver(SceKernelSpinlock *pLock, SceKernelIntrStatus prev_state);
RW Spinlock functions
The following functions implement RW spinlocks. This variant of the spinlock allows multiple threads/CPUs to access data at the same time as long as only reads are performed. When acquired for writing, a single thread at a time can access the data and is thus free to modify it. Like regular spinlocks, the RW spinlocks can be used under any context. Use RW spinlocks if the data to protect may be accessed from an IRQ or exception handler.
Like for regular spinlocks, all RWSpinlock functions are available in a normal and SuspendIntr
version. Additionally, every function exists in Read
and Write
variants, depending on whether the caller wants to read or write to the object protected by the lock.
Like for regular spinlocks, the same type of function must be used to lock and unlock a RW spinlock.
Calling sceKernelRWSpinlockLowReadLock
followed by sceKernelRWSpinlockLowWriteUnlock
is an invalid usage of this API. Calling sceKernelRWSpinlockLowReadLockCpuSuspendIntr
followed by sceKernelRWSpinlockLowReadUnlockCpu
is also an invalid usage of this API.
RW Spinlocks can take three kind of values: 0
means the spinlock is unlocked, -0x80000000
means the spinlock is write-locked, and a positive value x
means that x
readers have read-locked the spinlock.
sceKernelRWSpinlockLowReadLockForDriver
Version | NID |
---|---|
3.60 | 0xCAC9AE80 |
This is a guessed name. Temp name was sceKernelCpuSpinLockStoreLRForDriver.
Acquires a RW spinlock for reading data. Modifying the data protected by the spinlock is not allowed.
void sceKernelRWSpinlockLowReadLockForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowTryReadLockForDriver
Version | NID |
---|---|
3.60 | 0x093925BD |
This is a guessed name. Temp name was sceKernelCpuTrySpinLockStoreLRForDriver.
Attempts to acquire a RW spinlock for reading data.
Even if the spinlock is acquired, modifying the data protected by the spinlock is not allowed.
/** * @param pLock Pointer to the spinlock * @retval SCE_OK if the spinlock is acquired * @retval <0 if the spinlock could not be acquired */ int sceKernelRWSpinlockLowTryReadLockForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowReadUnlockForDriver
Version | NID |
---|---|
3.60 | 0xF5FD5676 |
Temp name was sceKernelCpuSpinUnlockStoreLRForDriver.
Unlocks a RW spinlock previously acquired with either sceKernelRWSpinlockLowReadLockForDriver or sceKernelRWSpinlockLowTryReadLockForDriver.
void sceKernelRWSpinlockLowReadUnlockForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowWriteLockForDriver
Version | NID |
---|---|
3.60 | 0x3F42B434 |
This is a guessed name. Temp name was sceKernelCpuLockStoreFlagForDriver.
Acquires a RW spinlock for writing data.
void sceKernelRWSpinlockLowWriteLockForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowTryWriteLockForDriver
Version | NID |
---|---|
3.60 | 0x4F7790B4 |
This is a guessed name. Temp name was sceKernelCpuTryLockStoreFlagForDriver.
Attempts to acquire a RW spinlock for writing data.
/** * @param pLock Pointer to the spinlock * @retval SCE_OK if the spinlock is acquired * @retval <0 if the spinlock could not be acquired */ int sceKernelRWSpinlockLowTryWriteLockForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowWriteUnlockForDriver
Version | NID |
---|---|
3.60 | 0xCB8ABDF0 |
Temp name was sceKernelCpuUnlockStoreFlagForDriver.
Unlocks a RW spinlock previously acquired with either sceKernelRWSpinlockLowWriteLockForDriver or sceKernelRWSpinlockLowTryWriteLockForDriver.
void sceKernelRWSpinlockLowWriteUnlockForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowReadLockCpuSuspendIntr
Version | NID |
---|---|
0.990.000-3.740.011 | 0xEC53D007 |
This is a guessed name. Temp name was sceKernelCpuSpinLockSuspendIntrStoreLRForDriver, sceKernelCpuSpinLockIrqSaveForDriver.
Acquires a RW spinlock for reading data and suspends interrupts if necessary.
/** * @param pLock Pointer to the spinlock * @return An opaque value describing the interrupt state */ SceKernelIntrStatus sceKernelRWSpinlockLowReadLockCpuSuspendIntrForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowTryReadLockCpuSuspendIntrForDriver
Version | NID |
---|---|
3.60 | 0xF02467D1 |
This is a guessed name. Temp name was sceKernelCpuTrySpinLockSuspendIntrStoreLRForDriver.
Attempts to acquire a RW spinlock for reading data. If successfully acquired, suspends interrupts if necessary.
/** * @param pLock Pointer to the spinlock * @retval >=0 if the spinlock is acquired - opaque value describing the interrupt state * @retval <0 if the spinlock could not be acquired */ SceKernelIntrStatus sceKernelRWSpinlockLowTryReadLockCpuSuspendIntrForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowReadUnlockCpuResumeIntrForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x740A0750 |
Temp name was sceKernelCpuSpinUnlockResumeIntrStoreLRForDriver, sceKernelCpuSpinLockIrqRestoreForDriver.
Unlocks a RW spinlock previously acquired with either sceKernelRWSpinlockLowReadLockCpuSuspendIntrForDriver or sceKernelRWSpinlockLowTryReadLockCpuSuspendIntrForDriver, and resumes interrupts if necessary.
If interrupts were disabled before acquiring the spinlock, they will remain disabled after this call.
void sceKernelRWSpinlockLowReadUnlockCpuResumeIntrForDriver(SceKernelRWSpinlock *pRWLock, SceKernelIntrStatus prev_state);
sceKernelRWSpinlockLowWriteLockCpuSuspendIntrForDriver
Version | NID |
---|---|
0.990-3.60 | 0x4C38CE4D |
This is a guessed name. Temp name was sceKernelCpuLockSuspendIntrStoreFlagForDriver.
Acquires a RW spinlock for writing data and suspends interrupts if necessary.
/** * @param pLock Pointer to the spinlock * @return An opaque value describing the interrupt state */ SceKernelIntrStatus sceKernelRWSpinlockLowWriteLockCpuSuspendIntrForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowTryWriteLockCpuSuspendIntrForDriver
Version | NID |
---|---|
3.60 | 0xDE6482C6 |
This is a guessed name. Temp name was sceKernelCpuTryLockSuspendIntrStoreFlagForDriver.
Attempts to acquire a RW spinlock for writing data. If successfully acquired, suspends interrupts if necessary.
/** * @param pLock Pointer to the spinlock * @retval >=0 if the spinlock is acquired - opaque value describing the interrupt state * @retval <0 if the spinlock could not be acquired */ SceKernelIntrStatus sceKernelRWSpinlockLowTryWriteLockCpuSuspendIntrForDriver(SceKernelRWSpinlock *pRWLock);
sceKernelRWSpinlockLowWriteUnlockCpuResumeIntrDriver
Version | NID |
---|---|
0.990-3.60 | 0x9EC91017 |
Temp name was sceKernelCpuUnlockResumeIntrStoreFlagForDriver.
Unlocks a RW spinlock previously acquired with either sceKernelRWSpinlockLowWriteLockCpuSuspendIntrForDriver or sceKernelRWSpinlockLowTryWriteLockCpuSuspendIntrForDriver, and resumes interrupts if necessary.
If interrupts were disabled before acquiring the spinlock, they will remain disabled after this call.
void sceKernelRWSpinlockLowWriteUnlockCpuResumeIntrDriver(SceKernelRWSpinlock *pRWLock, SceKernelIntrStatus prev_state);
SceSysclibForKernel
This library was removed on FW 1.80.
__prnt
Version | NID |
---|---|
0.931-1.50 | 0xE38E7605 |
1.80-3.60 | not present. Moved to ForDriver. |
This is a guessed name. from PSP.
SceSysclibForKernel_F7E34376
Version | NID |
---|---|
1.50 | 0xF7E34376 |
SceSysclibForKernel_FA746181
Version | NID |
---|---|
0.990-1.50 | 0xFA746181 |
return a1 * (- 0x6e19295b) - 0x6e19295b;
In SceSysmem, it is used internally to modify a global variable, like a multiplication hash function would do.
int SceSysclibForKernel_FA746181(int a1);
SceSysclibForDriver
The C standard library for use in kernel only. Usermode has access to SceLibKernel, which confusingly is usermode only.
Includes standard string functions (no insecure variants like strcpy
).
memset2
Version | NID |
---|---|
0.931-1.69 | 0x502B000D |
3.60 | not present |
sortof_vsnprintf
Version | NID |
---|---|
0.931-0.990 | 0x589BAF6B |
3.60 | not present |
This is a guessed name.
sortof_vsnprintf_2
Version | NID |
---|---|
0.931-0.990 | 0x658EA38E |
3.60 | not present |
This is a guessed name.
SceSysclibForDriver_33388DBC
Version | NID |
---|---|
0.931-0.990 | 0x33388DBC |
3.60 | not present |
Calculates xor of a1 and a2, then does some calculation with a3.
SceSysclibForDriver_72429909
Version | NID |
---|---|
0.931-0.990 | 0x72429909 |
3.60 | not present |
SceSysclibForDriver_32373DF7
Version | NID |
---|---|
0.931-0.990 | 0x32373DF7 |
3.60 | not present |
Helper for strtol in base 10.
int SceSysclibForDriver_32373DF7(char *__nptr, long *plResult);
__aeabi_idiv
Version | NID |
---|---|
3.60 | 0x2518CD9E |
__aeabi_idivmod
Version | NID |
---|---|
3.60 | 0xAC86B4BA |
__aeabi_lcmp
Version | NID |
---|---|
3.60 | 0x709077A1 |
__aeabi_lmul
Version | NID |
---|---|
3.60 | 0xFEE5E751 |
__aeabi_uidiv
Version | NID |
---|---|
0.990-3.60 | 0xA9FF1205 |
__aeabi_uidivmod
Version | NID |
---|---|
0.990-3.60 | 0xA46CB7DE |
__aeabi_ldivmod
Version | NID |
---|---|
3.60 | 0x7554AB04 |
__aeabi_uldivmod
Version | NID |
---|---|
0.931-3.60 | 0x9D148CDE |
Returns the 64-bit quotient of the division of dividend by divisor.
Used for example to convert SceRtc ticks to a simpler format (divide by time unit in ms) or to compute the number of storage device blocks in SceSdstor (divide by block size).
// ex: __aeabi_uldivmod(tick[0] + 0xd44000, (tick[1] - 0xdcbfff) + (uint)(0xff2bbfff < tick[0]), 1000000, 0); SceUInt64 __aeabi_uldivmod(SceUInt32 dividend_low, SceUInt32 dividend_hi, SceUInt32 divisor_low, SceUInt32 divisor_hi);
__aeabi_ulcmp
Version | NID |
---|---|
0.931-3.60 | 0xFE900DE8 |
__aeabi_llsr
Version | NID |
---|---|
0.931-3.60 | 0xE46C47E6 |
__aeabi_llsl
Version | NID |
---|---|
0.931-3.60 | 0x72D31F9D |
__aeabi_lasr
Version | NID |
---|---|
0.931-3.60 | 0x1D89F6C0 |
Temp name was rshift.
__memcpy_chk
Version | NID |
---|---|
3.60 | 0x8A0B0815 |
__memmove_chk
Version | NID |
---|---|
3.60 | 0x35DBB110 |
__memset_chk
Version | NID |
---|---|
3.60 | 0x1A30BB28 |
__stack_chk_fail
Version | NID |
---|---|
1.50-3.60 | 0xB997493D |
__stack_chk_guard
Version | NID |
---|---|
3.60 | 0x99EEBD1F |
This is a variable.
__strlcat_chk
Version | NID |
---|---|
3.60 | 0x224BE33F |
__strlcpy_chk
Version | NID |
---|---|
3.60 | 0xCF86EA38 |
__strncat_chk
Version | NID |
---|---|
3.60 | 0x33EE298B |
__strncpy_chk
Version | NID |
---|---|
3.60 | 0x96268C53 |
__snprintf_chk
Version | NID |
---|---|
3.60 | 0x7DBE7007 |
__vsnprintf_chk
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0xCBF64DF6 |
__prnt
Version | NID |
---|---|
0.931 | not present. Present in ForKernel. |
3.60 | 0xE38E7605 |
This is a guessed name. from PSP.
void __prnt(void (* cb)(void *argp, int ch), void *argp, const char *fmt, va_list list);
Supported formats:
Format | Description |
---|---|
\x20 | maybe space fill |
# | unknown |
* | unknown |
- | Left align |
+ | unknown |
. | unknown |
0 | Padding number and Enter zero padding |
1~9 | Padding number |
D | unknown (maybe with long?) |
L | unknown (maybe with long?) |
O | unknown (maybe with long?) |
U | unknown (maybe with long?) |
X | print hex number as uppercase |
c | print char |
d | print decimal number |
h | unknown |
l | long |
o | unknown |
p | print pointer as lowercase |
s | print strings |
u | unsigned number |
x | print hex number as lowercase |
vsnprintf
Version | NID |
---|---|
0.931-3.60 | 0x3DDBE2E1 |
int vsnprintf(char *s, size_t n, const char *fmt, va_list arg);
get_ctype_table
Version | NID |
---|---|
0.931-0.990 | 0x0614B013 |
3.60 | not present |
look_ctype_table
Version | NID |
---|---|
3.60 | 0xCDF7F155 |
typedef enum SceCTypeFlag { SCE_CTYPE_NONE = 0, SCE_CTYPE_UPPERCASE = 1, SCE_CTYPE_LOWERCASE = 2, SCE_CTYPE_NUMBER = 4, SCE_CTYPE_CONTROL = 8, SCE_CTYPE_SYMBOL = 0x10, SCE_CTYPE_INVISIBLE = 0x20, SCE_CTYPE_HEX_CASE = 0x40 } SceCTypeFlag; char look_ctype_table(char ch);
memchr
Version | NID |
---|---|
3.60 | 0x60DAEA30 |
timingsafe_memcmp
Version | NID |
---|---|
3.60 | 0xB5A4D745 |
timing constant memcmp
memcmp
Version | NID |
---|---|
0.931-3.60 | 0xF939E83D |
memcpy
Version | NID |
---|---|
0.931-3.60 | 0x40C88316 |
memmove
Version | NID |
---|---|
1.50-3.60 | 0x6CC9C1A1 |
On FW 1.69, this seems to be implemented incorrectly.
memset
Version | NID |
---|---|
0.931-3.60 | 0x0AB9BF5C |
snprintf
Version | NID |
---|---|
1.69-3.60 | 0xAE7A8981 |
strchr
Version | NID |
---|---|
1.50-3.60 | 0x38463759 |
strcmp
Version | NID |
---|---|
1.69-3.60 | 0x0B33BC43 |
strlcat
Version | NID |
---|---|
3.60 | 0x12504E09 |
strlcpy
Version | NID |
---|---|
3.60 | 0x7FB4EBEC |
strlen
Version | NID |
---|---|
0.931-3.60 | 0xCFC6A9AC |
strncat
Version | NID |
---|---|
1.69-3.60 | 0xA1D1C32C |
char *strncat(char *s1, const char *s2, size_t n);
strncmp
Version | NID |
---|---|
1.60-3.60 | 0x12CEE649 |
int strncmp(const char *s0, const char *s1, int n);
strncpy
Version | NID |
---|---|
0.931-3.60 | 0x6D286146 |
strncpy_s
Version | NID |
---|---|
0.931 | not present |
0.990-3.60 | 0xFE39AEAC |
strnlen
Version | NID |
---|---|
1.69-3.60 | 0xCD4BD884 |
strrchr
Version | NID |
---|---|
1.69-3.60 | 0x7F0E0835 |
strstr
Version | NID |
---|---|
1.69-3.60 | 0x1304A69D |
strtol
Version | NID |
---|---|
0.931-3.60 | 0xAB77C5AA |
strtoll
Version | NID |
---|---|
3.60 | 0x87AAAFA2 |
strtoul
Version | NID |
---|---|
3.60 | 0x4E5042DA |
tolower
Version | NID |
---|---|
3.60 | 0x0021DAF9 |
char tolower(char ch);
toupper
Version | NID |
---|---|
3.60 | 0xA685DCB1 |
char toupper(char ch);
__strcpy_chk
Version | NID |
---|---|
0.931.010-0.990 | not present |
0.996.090-3.740.011 | 0x545DA5FD |
Copy a string, with buffer overflow checking.
char * __strcpy_chk(char * dest, const char * src, size_t destlen);
__strcat_chk
Version | NID |
---|---|
0.931.010-0.990 | not present |
0.996.090-3.740.011 | 0xDE4666F0 |
Concatenate two strings, with buffer overflow checking.
char *__strcat_chk(char *dest, const char *src, SceSize destlen);
SceSysrootForKernel
sceKernelSysrootSWBkptGetOriginalOpcodeForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x9CFF80F9 |
This is a guessed name.
See #sceKernelSysrootSWBkptGetOriginalOpcodeForDriver.
sceKernelSysrootSetGetPrxDebugFlagFuncForKernel
Version | NID |
---|---|
0.940-2.060.011 | 0xE635DFCC |
2.100.081-3.740.011 | not present |
This is a guessed name.
Registers the function called by #sceKernelSysrootGetPrxDebugFlagForKernel which is also the fallback function called by #sceKernelSysrootGetCurrentAddressSpaceCBForKernel.
This function has been removed since System Software 2.100.081 because its feature was moved to #SceSysrootForKernel_26458702.
int sceKernelSysrootSetGetPrxDebugFlagFuncForKernel(void *func);
3999F917
sceKernelSysrootGetPrxDebugFlagForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x73522F65 |
This is a guessed name.
Calls the function registered by #sceKernelSysrootSetGetPrxDebugFlagFuncForKernel on System Software version < 2.100.081 and by #sceKernelSysrootRegisterDbgpHandlerForKernel on System Software version >= 2.100.081.
int sceKernelSysrootGetPrxDebugFlagForKernel(SceUID pid, SceUInt32 *pFlag);
SceSysrootForKernel_5E7ECC37
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-2.060.011 | 0x5E7ECC37 |
2.100.081-3.740.011 | not present |
Registers the function called by #SceSysrootForKernel_5C86E49B.
This function has been removed since System Software version 2.100.081 because its feature is now provided by #sceKernelSysrootRegisterDbgpHandlerForKernel.
int SceSysrootForKernel_5E7ECC37(void *func);
SceSysrootForKernel_5C86E49B
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.740.011 | 0x5C86E49B |
Calls the handler stored in SceSysrootDbgpHandler at offset 0x10 and registered by #SceSysrootForKernel_5E7ECC37 or #sceKernelSysrootRegisterDbgpHandlerForKernel.
sceKernelSysrootSetProcessDebugSuspendFuncForKernel
Version | NID |
---|---|
0.990.000-3.010.031 | 0x4337841F |
3.10-3.740.011 | 0x4337841F |
This is a guessed name.
Registers the function called by #sceKernelSysrootProcessDebugSuspendForKernel.
This function has been removed since System Software version 3.10 because its feature is already provided by #SceSysrootForKernel_D29BCA77.
int sceKernelSysrootSetProcessDebugSuspendFuncForKernel(void *func);
sceKernelSysrootProcessDebugSuspendForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x1247A825 |
This is a guessed name. Official name might be as well sceKernelProcessDebugSuspendForKernel.
Calls the function registered by either #sceKernelSysrootSetProcessDebugSuspendFuncForKernel or #SceSysrootForKernel_D29BCA77.
int sceKernelSysrootProcessDebugSuspendForKernel(SceUID pid, int status);
SceSysrootForKernel_150DBA2B
Version | NID |
---|---|
0.990.000-3.360.011 | 0x150DBA2B |
3.500.011-3.740.011 | not present |
SceSysrootForKernel_273EAE53
Version | NID |
---|---|
0.990.000-3.360.011 | 0x273EAE53 |
3.500.011-3.740.011 | not present |
sceKernelSysrootIsKernelProcessForKernel
Version | NID |
---|---|
0.990.000-3.360.011 | 0xE0FC42C3 |
3.500.011-3.740.011 | not present |
This is a guessed name.
SceBool sceKernelSysrootIsKernelProcessForKernel(void);
sceKernelSysrootRegisterKPLSForKernel
Version | NID |
---|---|
0.990.000-1.70 | 0x23BEAF6B |
1.800.071-3.740.011 | not present |
SceSysrootForKernel_571E5B79
Version | NID |
---|---|
0.990.000-3.740.011 | 0x571E5B79 |
See #SceSysrootForDriver_571E5B79.
sceKernelSysrootRegisterDbgpHandlerForKernel
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0x3999F917 |
Registers a debug process handler.
int sceKernelSysrootRegisterDbgpHandlerForKernel(SceSysrootDbgpHandler *handler);
sceKernelSysrootSetGetIntrMMUContextFuncForKernel
Version | NID |
---|---|
0.931.010-3.740.011 | 0x611F17A4 |
This is a guessed name.
Registers the function called by #sceKernelSysrootGetIntrMMUContextForKernel.
int sceKernelSysrootSetGetIntrMMUContextFuncForKernel(void *func);
sceKernelSysrootGetIntrMMUContextForKernel
Version | NID |
---|---|
0.931.010-3.740.011 | 0x118657C6 |
This is a guessed name.
Calls the function registered by #sceKernelSysrootSetGetIntrMMUContextFuncForKernel.
Return value is officially named pIntrMMUContext
. "Intr" likely stands for "interrupt" or for "internal".
Used in SceExcpmgr.
SceKernelMMUContext* sceKernelSysrootGetIntrMMUContextForKernel(void);
SceSysrootForKernel_081F2C20
Version | NID |
---|---|
0.931-0.990 | not present |
1.60-1.69 | 0x081F2C20 |
3.60 | not present |
Registers sceKernelGetProcessId_2 from SceKernelThreadMgr.
int SceSysrootForKernel_081F2C20(void *func);
SceSysrootForKernel_C5EAF5F7
Version | NID |
---|---|
0.990-3.60 | 0xC5EAF5F7 |
Registers the function called by #SceSysrootForKernel_47724459.
int SceSysrootForKernel_C5EAF5F7(void *func);
SceSysrootForKernel_47724459
Version | NID |
---|---|
0.990-3.60 | 0x47724459 |
Calls the function registered by #SceSysrootForKernel_C5EAF5F7.
SceSysrootForKernel_8747D415
Version | NID |
---|---|
0.990-3.60 | 0x8747D415 |
Registers the function used by #SceSysrootForKernel_B27B7530.
int SceSysrootForKernel_8747D415(void *func);
SceSysrootForKernel_B27B7530
Version | NID |
---|---|
0.990-3.60 | 0xB27B7530 |
Calls the function registered by #SceSysrootForKernel_8747D415.
Used by SceKernelBusError.
SceSysrootForKernel_82FC6405
Version | NID |
---|---|
0.990-3.60 | 0x82FC6405 |
Registers the function used by #SceSysrootForKernel_CD4B84F7.
Used by SceKernelBusError.
int SceSysrootForKernel_82FC6405(void *func);
SceSysrootForKernel_CD4B84F7
Version | NID |
---|---|
0.990-3.60 | 0xCD4B84F7 |
Calls the function registered by #SceSysrootForKernel_82FC6405.
Used by SceKernelBusError.
SceSysrootForKernel_733C243E
Version | NID |
---|---|
0.990-3.60 | 0x733C243E |
Registers many Sysroot SceProcessmgr callbacks.
int SceSysrootForKernel_733C243E(const SceSysrootForKernel_733C243E_struct *pParam);
SceSysrootForKernel_7334F1E8
Version | NID |
---|---|
3.60 | 0x7334F1E8 |
Calls SceProcessmgr#SceProcessmgrForKernel_C77C2085 function registered by #SceSysrootForKernel_733C243E.
int SceSysrootForKernel_7334F1E8(SceUID pid);
SceSysrootForKernel_D29BCA77
Version | NID |
---|---|
0.990-3.740.011 | 0xD29BCA77 |
Registers many Sysroot SceProcessmgr callbacks.
int SceSysrootForKernel_D29BCA77(const SceSysrootForKernel_D29BCA77_struct *pParam);
SceSysrootForKernel_DD7821AA
Version | NID |
---|---|
0.990-3.60 | 0xDD7821AA |
Registers the function called by #SceSysrootForKernel_340575CB.
int SceSysrootForKernel_DD7821AA(void *func);
SceSysrootForKernel_340575CB
Version | NID |
---|---|
0.990-3.60 | 0x340575CB |
Return some PID.
SceUID SceSysrootForKernel_340575CB(void);
sceKernelSysrootSetCheckRemapCodeForUserFuncForKernel
Version | NID |
---|---|
0.990-3.60 | 0xBE1EF51C |
Registers the function called by #sceKernelSysrootCheckRemapCodeForUserForKernel.
int sceKernelSysrootSetCheckRemapCodeForUserFuncForKernel(void *func);
sceKernelSysrootCheckRemapCodeForUserForKernel
Version | NID |
---|---|
0.990-3.60 | 0xF8769E86 |
sceKernelSysrootAllocCurrentProcessHeapForKernel
Version | NID |
---|---|
0.990-3.60 | 0x2F75C1DC |
void *sceKernelSysrootAllocCurrentProcessHeapForKernel(SceSize size);
sceKernelSysrootCorelockUnlockForKernel
Version | NID |
---|---|
0.931.010-3.740.011 | 0xAE55B7CC |
Calls #SceCpuForKernel_A5C9DBBA.
void sceKernelSysrootCorelockUnlockForKernel(void);
SceSysrootForKernel_21F5790B
Version | NID |
---|---|
0.931 | not present |
3.60 | 0x21F5790B |
Registers a function related to kernel panic.
int SceSysrootForKernel_21F5790B(void *func);
SceSysrootForKernel_0DF574A9
Version | NID |
---|---|
0.931 | not present |
3.60 | 0x0DF574A9 |
Calls the function related to kernel panic registered by #SceSysrootForKernel_21F5790B.
int SceSysrootForKernel_0DF574A9(void);
SceSysrootForKernel_2D6B2A79
Version | NID |
---|---|
0.990-3.60 | 0x2D6B2A79 |
Registers a function related to kernel panic, called by #SceSysrootForKernel_CC7A0E63.
SceSysrootForKernel_CC7A0E63
Version | NID |
---|---|
0.990-3.60 | 0xCC7A0E63 |
Calls a function related to kernel panic, registered by #SceSysrootForKernel_2D6B2A79.
// type: 1: kernel_assertion_or_panic, 3: kernel_exception // size: must be <= 0x1000 // pBuf: address of the buffer got using SceDebugForKernel_BEF921A2 int SceSysrootForKernel_CC7A0E63(int type, SceSize size, const char *pBuf);
SceSysrootForKernel_1D84C4D4
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0x1D84C4D4 |
Get module name, fingerprint and base from address.
int SceSysrootForKernel_1D84C4D4(SceUID pid, uintptr_t address, SceUInt32 *pDbgFingerprint, SceUInt32 *pModuleBase, char *module_name);
SceSysrootForKernel_5B5EBFB1
Version | NID |
---|---|
0.990.000-3.740.011 | 0x5B5EBFB1 |
Registers pointer to SceLT5 used by #SceSysrootForKernel_E20F6FC8.
int SceSysrootForKernel_5B5EBFB1(uint a1);
SceSysrootForKernel_41636522
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.740.011 | 0x41636522 |
Returns current SceLT5 value pointed by pointer registered using #SceSysrootForKernel_E20F6FC8. Long/low (64bit) time in microseconds. It is about "awake" uptime from system boot.
uint64_t SceSysrootForKernel_41636522(void);
SceSysrootForKernel_E20F6FC8
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.740.011 | 0xE20F6FC8 |
Same as #SceSysrootForKernel_41636522 but "asynchronous".
Used by SceDebug Kernel Exceptions handlers.
uint64_t SceSysrootForKernel_E20F6FC8(void);
SceSysrootForKernel_1D8DB3A5
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.740.011 | 0x1D8DB3A5 |
Same as #SceSysrootForKernel_41636522 but "asynchronous".
Returns 0 on success, 0x80020006 if pTime is a NULL pointer.
int SceSysrootForKernel_1D8DB3A5(SceUInt64 *pTime);
sceKernelSysrootCorelockLockForKernel
Version | NID |
---|---|
0.931.010-3.740.011 | 0x8E4B61F1 |
Calls #SceCpuForKernel_9D72DD1B.
int sceKernelSysrootCorelockLockForKernel(SceUInt32 core);
SceSysrootForKernel_06182D59
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.740.011 | 0x06182D59 |
Reimplementation:
int SceSysrootForKernel_06182D59(int idx) { return *(uint32_t *)(pSysroot + 0x20) + (idx << 0x5); }
int SceSysrootForKernel_06182D59(int idx);
SceSysrootForKernel_7385CADE
Version | NID |
---|---|
0.931.010-0.990.000 | not present |
1.000.071-3.740.011 | 0x7385CADE |
Get current syscall's PID.
// Returns KERNEL_PID if the function has not been set SceUID SceSysrootForKernel_7385CADE(void);
SceSysrootForKernel_D441DC34
Version | NID |
---|---|
0.931.010-0.990.000 | not present |
1.000.071-3.740.011 | 0xD441DC34 |
Calls a callback registered by #SceSysrootForKernel_26458702, related to syscall frame printing on kernel panic.
sceKernelSysrootGetSysrootClassItemsizeForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0xEEB867C0 |
This is a guessed name. Derived from get_SceKernelSysrootClass_itemsize.
On System Software version 0.990, returns hardcoded value 0x470.
On System Software version 3.200.010, returns hardcoded value 0x440.
On System Software version 3.600.011, returns hardcoded value 0x41C.
SceSize sceKernelSysrootGetSysrootClassItemsizeForKernel(void);
sceKernelGetSysrootClassObjectForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x085C2BCB |
This is a guessed name. Derived from get_SceKernelSysrootClass_object.
SceKernelObject *sceKernelGetSysrootClassObjectForKernel(void);
sceKernelSysrootGetLibraryDBForKernel
Version | NID |
---|---|
0.990.000-2.060.011 | 0xCD70C9D7 |
2.100.081-3.740.011 | not present |
Equivalent to sceKernelGetProcessLibdbForKernel(0x10005) in 3.60
// size is 0x34-bytes on FW 2.00 void *sceKernelSysrootGetLibraryDBForKernel(void *pSysroot);
sceKernelSysrootSetLibraryDBForKernel
Version | NID |
---|---|
0.990.000-2.060.011 | 0xCB58A0F4 |
2.100.081-3.740.011 | not present |
Maybe sets a pointer to the library stub structure. See Modules.
// size is 0x34-bytes on FW 2.00 int sceKernelSysrootSetLibraryDBForKernel(void *pSysroot, void *pLibDb);
sceKernelSysrootGetProcessLibraryDBForKernel
Version | NID |
---|---|
0.990.000-2.060.011 | 0xF1037820 |
2.100.081-3.740.011 | not present |
Equivalent to sceKernelGetProcessLibdbForKernel(pid) in System Software version 3.600.011.
The return value of this function is an integer on error, but returns a pointer to LibraryDB on success.
// size is 0x34-bytes on FW 2.00 int sceKernelSysrootGetProcessLibraryDBForKernel(SceUID pid);
sceKernelSysrootAllocForKernel
Version | NID |
---|---|
0.931.010-3.360.011 | 0xB0149E69 |
3.500.011-3.740.011 | Not present |
Allocates memory from the "Sysroot heap". The Sysroot heap is located after SceSysroot
structure and consumes the rest of the page. Allocations from this "heap" are permanent and cannot be returned - there is no sceKernelSysrootFreeForKernel
.
Usage of this function is not recommended because of the lack of a "free" function. Use SceSysmem#sceKernelAllocForKernel instead.
void *sceKernelSysrootAllocForKernel(SceSize size);
sceKernelSysrootSetStatusForKernel
Version | NID |
---|---|
0.990-3.740.011 | 0xA84676E3 |
status | description |
---|---|
3 | Global malloc heap initialization completed. |
4 | Start initialization for load the module |
0x10 | Initialization to load the module is complete |
0x100 | First process create |
0x1000 | Kernel boot completed. |
int sceKernelSysrootSetStatusForKernel(SceUInt32 status);
sceKernelSysrootGetProcessCBExitDeleteThreadForKernel
Version | NID |
---|---|
0.990-3.60 | 0xBBFD2E3C |
sceKernelSysrootGetCurrentProcessCBForKernel
Version | NID |
---|---|
0.990-3.60 | 0x9991B1AF |
sceKernelSysrootGetCurrentThreadAttrForKernel
Version | NID |
---|---|
0.990-3.60 | 0x73601453 |
int sceKernelSysrootGetCurrentThreadAttrForKernel(SceUint32 *pThrAttr);
sceKernelSysrootGetCurrentTimeForKernel
Version | NID |
---|---|
0.990 | 0x4FCFA359 |
SceRtcTick *sceKernelSysrootGetCurrentTimeForKernel(void);
sceKernelSysrootGetSystemTimeForKernel
Version | NID |
---|---|
0.990-1.692.000 | 0xE0D41319 |
3.60 | not present |
int sceKernelSysrootGetSystemTimeForKernel(SceRtcTick *pTick)
sceKernelSysrootGetSystemTimeLowForKernel
Version | NID |
---|---|
0.990-1.692.000 | 0x2464329D |
3.60 | not present |
int sceKernelSysrootGetSystemTimeLowForKernel(void);
sceKernelSysrootAssertSysrootForKernel
Version | NID |
---|---|
0.990-1.692.000 | 0x1B7F150F |
3.60 | not present |
Check sysroot->magic (offset 0xC must be 0xBA97F5A1) and sysroot->magic2 (offset 0x20C must be 0xA008B0C3).
int sceKernelSysrootAssertSysrootForKernel(void *sysroot);
sceKernelSysrootSetVbaseResetVectorForKernel
Version | NID |
---|---|
0.990-3.740.011 | 0x0F2F2B4E |
sceKernelSysrootThreadMgrStartAfterProcessForKernel
Version | NID |
---|---|
0.990-3.740.011 | 0x0EB5D7CD |
sceKernelSysrootGetCurrentProcessForKernel
Version | NID |
---|---|
0.931-0.996.090 | 0x5B7570C5 |
Return the current process id.
SceUID sceKernelSysrootGetCurrentProcessForKernel(void);
sceKernelSysrootTrapThreadAfterSyscallForKernel
Version | NID |
---|---|
0.990-3.740.011 | 0x9139E22B |
Calls a callback registered by #SceSysrootForKernel_26458702.
Prints syscall_critical_usage.
sceKernelSysrootReturnFromExcpToThreadForKernel
Version | NID |
---|---|
0.931-3.740.011 | 0xDADFF828 |
Used in SceExcpmgr.
int sceKernelSysrootReturnFromExcpToThreadForKernel(void);
sceKernelSysrootBacktraceForKernel
Version | NID |
---|---|
0.931-3.740.011 | 0xCC893F37 |
See also SceKernelModulemgr#SceBacktraceForDriver.
int sceKernelSysrootBacktraceForKernel(SceUID threadId, SceKernelCallFrame *pCallFrameBuffer, SceSize numBytesBuffer, SceUInt32 *pNumReturn, SceInt32 mode);
sceKernelSysrootPrintBacktraceForKernel
Version | NID |
---|---|
0.931-3.740.011 | 0x491CE8DF |
See also SceKernelModulemgr#SceBacktraceForDriver.
int sceKernelSysrootPrintBacktraceForKernel(SceUID processId, const SceKernelCallFrame *pCallFrame, SceUInt32 numFrames);
sceKernelSysrootRegisterBacktraceForKernel
Version | NID |
---|---|
0.940-3.010.031 | 0x1C307A31 |
3.60 | not present |
int sceKernelSysrootRegisterBacktraceForKernel(int (__cdecl *func)());
Version | NID |
---|---|
0.990-3.740.011 | 0xC8C8C321 |
Version | NID |
---|---|
0.990-3.740.011 | 0xFBB91741 |
sceKernelSysrootGetUIDEntryHeapForKernel
Version | NID |
---|---|
0.990-3.740.011 | 0x88DE85EF |
Temp name was sceKernelSysrootGetPUIDEntryHeapForKernel.
Gets the UID Entry Heap of the process.
Kernel process's UID entry heap is the GUIDEntryHeap. All other process' UID entry heaps are PUID heaps.
int sceKernelSysrootGetUIDEntryHeapForKernel(SceUID pid, void **entryHeap);
sceKernelSysrootGetStatusForKernel
Version | NID |
---|---|
0.990-3.740.011 | 0x5C426B19 |
int sceKernelSysrootGetStatusForKernel(void);
sceKernelSysrootIofilemgrStartForKernel
Version | NID |
---|---|
0.990-3.60 | 0xF6A6D205 |
SceSysrootForKernel_F9FB9A2A
Version | NID |
---|---|
0.990.000-2.060.011 | 0xF9FB9A2A |
2.100.081-3.740.011 | not present |
Registers the function called by #sceKernelSysrootGetCurrentAddressSpaceCBForKernel.
This function has been removed since System Software 2.100.081 because its feature was moved to #SceSysrootForKernel_D29BCA77.
int SceSysrootForKernel_F9FB9A2A(void *func);
sceKernelSysrootGetCurrentAddressSpaceCBForKernel
Version | NID |
---|---|
0.940-3.740.011 | 0x63EBB05B |
Gets the current Address Space's control block via TPIDRPRW.
This function calls a callback registered by #SceSysrootForKernel_F9FB9A2A on System Software version < 2.10 and by #SceSysrootForKernel_D29BCA77 on System Software version >= 2.10, if it was registered, else a fallback callback. The fallback callback is registered by #SceSysrootForKernel_E635DFCC on System Software version < 2.10 and by #SceSysrootForKernel_26458702 on System Software version >= 2.10.
SceUIDAddressSpaceObject *sceKernelSysrootGetCurrentAddressSpaceCBForKernel(void);
SceSysrootForKernel_BF82931F
Version | NID |
---|---|
1.500.151-3.740.011 | 0xBF82931F |
Calls the function registered by #SceSysrootForDriver_2BE874EF.
No usage seen on CEX OS. Maybe used in DEX/TOOL OS.
int SceSysrootForKernel_BF82931F(int maybe_app_id, void *pOut);
SceSysrootForKernel_6D111FA7
Version | NID |
---|---|
1.500.151-3.740.011 | 0x6D111FA7 |
Calls the function registered by #SceSysrootForDriver_3B19B06B.
Used only in SceCoredump.
int SceSysrootForKernel_6D111FA7(int maybe_app_id, void *pOut);
SceSysrootForKernel_2A03DFA1
Version | NID |
---|---|
3.60 | 0x2A03DFA1 |
Calls the function registered by #SceSysrootForDriver_70AD47A9.
Used only in SceCoredump.
// pOut: A buffer of at least 0xF8 bytes int SceSysrootForKernel_2A03DFA1(void *pOut);
sceKernelSysrootAppMgrSpawnProcessForKernel
Version | NID |
---|---|
0.990-3.60 | 0x3ACACD22 |
sceKernelSysrootGetCachedSecureModuleInfoForKernel
Version | NID |
---|---|
3.60 | 0xF10AB792 |
Temp name was sceKernelSysrootGetSmSelfInfoForKernel.
Index | SM SELF location |
---|---|
0 | os0:sm/gcauthmgr_sm.self |
1 | os0:sm/rmauth_sm.self |
2 | os0:sm/encdec_w_portability_sm.self |
int sceKernelSysrootGetCachedSecureModuleForKernel(SceCachedSecureModule id, SceCachedSecureModuleInfo *pInfo);
sceKernelSysrootGetProcessSelfAuthInfoForKernel
Version | NID |
---|---|
0.931-3.60 | 0x4F0A4066 |
Temp name was sceSysrootGetSelfAuthInfoForKernel.
int sceKernelSysrootGetProcessSelfAuthInfoForKernel(SceUID pid, SceSelfAuthInfo *pSelfAuthInfo);
sceKernelSysrootGetProcessTitleIdForKernel
Version | NID |
---|---|
3.60 | 0xEC3124A3 |
Temp name was sceSysrootGetProcessTitleIdForPidForKernel.
int sceKernelSysrootGetProcessTitleIdForKernel(SceUID pid, char *title_id, SceSize len);
sceKernelSysrootSetGetFunctionNameByNIDFuncForKernel
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.740.011 | 0xB39CD708 |
Registers the function called by #sceKernelSysrootGetFunctionNameByNIDForKernel.
int sceKernelSysrootSetGetFunctionNameByNIDFuncForKernel(void *func);
sceKernelSysrootGetFunctionNameByNIDForKernel
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.740.011 | 0x0B79E220 |
Mirror of SceSysLibTrace#sceNidsymtblGetFunctionNameByNIDForDriver.
int sceKernelSysrootGetFunctionNameByNIDForKernel(SceNID funcnid, const char **name);
SceSysrootForKernel_26458702
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0x26458702 |
Registers some callbacks for example the fallback callback called by #sceKernelSysrootGetCurrentAddressSpaceCBForKernel.
SceSysrootForKernel_B171CC2D
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0xB171CC2D |
Register some ModuleMgr handlers.
Used by SceKernelModulemgr.
int SceSysrootForKernel_B171CC2D(SceSysrootModulemgrHandlers *pHandlers);
sceKernelSysrootGetProcessSyscallInfoForKernel
Version | NID |
---|---|
3.60 | 0xFF9F80FF |
int sceKernelSysrootGetProcessSyscallInfoForKernel(SceUID pid, const void *PC, SceSyscallInfo *pInfo);
sceKernelSysrootGetVbaseResetVectorForKernel
Version | NID |
---|---|
0.990-3.60 | 0xCC85905B |
Returns the exception vectors base address. The address of the exception vectors for the CPU i
is: sceKernelSysrootGetVbaseResetVectorForKernel() + 0x40 * i
.
void *sceKernelSysrootGetVbaseResetVectorForKernel(void);
sceKernelSysrootSetLicMgrGetLicenseStatusFuncForKernel
Version | NID |
---|---|
3.60 | 0x71DB83A2 |
Registers SceSblPostSsMgr#sceSblLicMgrGetLicenseStatusForDriver.
int sceKernelSysrootSetLicMgrGetLicenseStatusFuncForKernel(int (__cdecl *sceSblLicMgrGetLicenseStatusForDriver)());
sceKernelSysrootLicMgrGetLicenseStatusForKernel
Version | NID |
---|---|
3.60 | 0x377895EB |
Called by sceSblAuthMgrAuthHeaderForKernel before Cmep request.
int sceKernelSysrootLicMgrGetLicenseStatusForKernel(void);
sceKernelSysrootGetSysrootForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x3E455842 |
Temp name was sceKernelGetSysbaseForKernel.
Returns pointer to SceUIDSysrootObject in SceSysmem.
SceUIDSysrootObject *sceKernelSysrootGetSysrootForKernel(void);
sceKernelSysrootGetKblParamForKernel
Version | NID |
---|---|
0.931-3.740.011 | 0x9DB56D1F |
Temp name was sceKernelGetSysrootBufferForKernel, sceSysrootGetSysrootBufferForKernel.
Returns pointer to KBL Param.
SceKblParam *sceKernelSysrootGetKblParamForKernel(void);
sceKernelSysrootGetSoCRevisionForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0xD3872270 |
return pSysroot->soc_revision;
int sceKernelSysrootGetSoCRevisionForKernel(void);
sceKernelSysrootGetPervasiveUnkDwordForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0xFFD6E24D |
This is a guessed name.
Returns value initially read from physical address 0xE3100004 (ScePervasiveMisc + 0x4).
return pSysroot->pervasive_unk_dword;
int sceKernelSysrootGetPervasiveUnkDwordForKernel(void);
sceKernelSysrootGetKermitRevisionForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x403B509E |
return pSysroot->kermit_revision;
Used by SceKernelBusError, SceSysStateMgr.
// Return value is 0x1FFFF-masked, at least on recent System Software versions. SceUInt32 sceKernelSysrootGetKermitRevisionForKernel(void);
sceKernelSysrootGetErnieSleepFactorForKernel
Version | NID |
---|---|
0.996.090-3.740.011 | 0xAB3CC7D0 |
This is a guessed name.
return kbl_param->sleep_factor;
int sceKernelSysrootGetErnieSleepFactorForKernel(void);
sceKernelSysrootGetErnieWakeupFactorForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x2F97041A |
This is the official name. Temp name was sceSysrootGetWakeupFactorForKernel.
return kbl_param->wakeup_factor;
int sceKernelSysrootGetErnieWakeupFactorForKernel(void);
sceKernelSysrootGetSessionIdForKernel
Version | NID |
---|---|
0.931.010-1.81 | not present |
2.000.081-3.740.011 | 0x84783B71 |
Writes kbl_param->session_id to buffer.
pSessionId buffer size is 0x10 bytes.
int sceKernelSysrootGetSessionIdForKernel(char *pSessionId);
sceKernelSysrootIsExternalBootModeForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x89D19090 |
return *(int *)(kbl_param->boot_type_indicator_1) & 1;
int sceKernelSysrootIsExternalBootModeForKernel(void);
sceKernelSysrootIsSomeBootModeForKernel
Version | NID |
---|---|
0.990-0.996.090 | not present |
1.000.071-3.740.011 | 0x7B7F8171 |
This is a guessed name. A possible name is sceKernelIsAllowSdCardFromMgmt.
Used by SceSdif, SceExfatfs.
SceExfatfs will mount sd0: instead of gro0:/grw0: when this function returns SCE_TRUE.
return (*(int *)(kbl_param->boot_type_indicator_1) >> 19) & 1;
Returns true if boot_type_indicator_1 has flag 0x80000 ?sd mode? - (Mgmt bit 1)
int sceKernelSysrootIsSomeBootModeForKernel(void);
sceKernelSysrootIsExternalBootMode2ForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x7918D44E |
This is a guessed name. Temp name was sceSysrootIsSomeBootMode2ForKernel. A possible name is sceKernelIsAllowFwCheckSkip.
return kbl_param->boot_type_indicator_1[2] & 1;
Return true if boot_type_indicator_1 has flag 0x10000 but it seems to be never set in external (release) second_loader. It allows to bypass current fw version check for module loading.
int sceKernelSysrootIsExternalBootMode2ForKernel(void);
sceKernelSysrootIsUartModeForKernel
Version | NID |
---|---|
0.931.010-3.740.011 | 0xAE7A8F1D |
This is a guessed name. Temp name was sceSysrootIsSomeModeForKernel.
Returns true if (kbl_param->boot_flags[1] != 0xFF).
Used to check if UART must be initialized or not.
int sceKernelSysrootIsUartModeForKernel(void);
sceKernelSysrootIsSafeModeForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x834439A7 |
int sceKernelSysrootIsSafeModeForKernel(void);
sceKernelSysrootIsUpdateModeForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0xB0E1FC67 |
int sceKernelSysrootIsUpdateModeForKernel(void);
sceKernelSysrootIsBsodRebootForKernel
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0x4373AC96 |
return ((pKblParam->wakeup_factor) & 0x7Fu) == 0x17;
int sceKernelSysrootIsBsodRebootForKernel(void);
sceKernelSysrootIsUsbEnumWakeupForKernel
Version | NID |
---|---|
0.996.090-3.740.011 | 0x79C9AE10 |
if ( *(int *)(kbl_param->unk_C0) & 0x90000 ) return 1; else return (*(int *)(kbl_param->wakeup_factor) & 0x7Fu) == 0xF;
int sceKernelSysrootIsUsbEnumWakeupForKernel(void);
sceKernelSysrootIsUnknownRebootForKernel
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0xE4EA1960 |
return (*(int *)(kbl_param->wakeup_factor) & 0x7Fu) <= 1;
int sceKernelSysrootIsUnknownRebootForKernel(void);
sceKernelSysrootIsManufacturingModeForKernel
Version | NID |
---|---|
0.940-3.740.011 | 0x55392965 |
This is a guessed name. Temp name was sceSysrootUseExternalStorageForKernel.
When returns true it allows loading sd0:psp2config.skprx.
Returns true when Manufacturing Mode flag is set:
return (*(int *)(kbl_param->boot_type_indicator_1) >> 2) & 1;
int sceKernelSysrootIsManufacturingModeForKernel(void);
sceKernelSysrootUseInternalStorageForKernel
Version | NID |
---|---|
3.60 | 0x50FE3B4D |
Returns true when use internal storage flag is not set:
return *(char *)(kbl_param->boot_flags[5]) & 1 ^ 1;
int sceKernelSysrootUseInternalStorageForKernel(void);
sceKernelSysrootGetThreadAccessLevelForKernel
Version | NID |
---|---|
3.60 | 0x20009397 |
Calls int (__cdecl *GetThreadAccessLevel)(); // 0x344 on 3.60
int sceKernelSysrootGetThreadAccessLevelForKernel(void);
sceKernelSysrootAllocRemoteProcessHeapForKernel
Version | NID |
---|---|
0.990-3.60 | 0xD351EBC8 |
Temp name was sceKernelAllocHeapMemoryForKernel.
Same as sceKernelAllocHeapMemoryWithOptForDriver
but does set pid
to 0x1000B.
Checks that pid is 0x10013 or 0x10005 (kernel).
void* sceKernelSysrootAllocRemoteProcessHeapForKernel(SceUID pid, SceSize size, SceKernelHeapMemoryOpt *pOpt);
sceKernelSysrootGetModulePrivateForKernel
Version | NID |
---|---|
0.990-3.60 | 0x37EC12BB |
data : 3: system memory (0xDC-bytes), 7: some process data (?-bytes), 9: kbl module cb (0xAC-bytes)
void *sceKernelSysrootGetModulePrivateForKernel(int idx);
sceKernelSysrootSetModulePrivateForKernel
Version | NID |
---|---|
0.990.000-3.740.011 | 0x7A7E7C0C |
void sceKernelSysrootSetModulePrivateForKernel(int idx, void *data);
sceKernelSysrootSetSysrootForKernel
Version | NID |
---|---|
0.931.010-3.740.011 | 0x36916C30 |
void sceKernelSysrootSetSysrootForKernel(SceUID sysroot_uid);
sceKernelSysrootProcessmgrStart2ForKernel
Version | NID |
---|---|
0.931.011-3.740.011 | 0x62E8F511 |
sceKernelSysrootDbgpSuspendProcessAndWaitResumeForKernel
Version | NID |
---|---|
0.940-3.740.011 | 0x256B2394 |
sceKernelSysrootDbgpSuspendProcessAndWaitResumeForKernel(SceUID pid, SceUID modid, SceUInt32 stopReason, SceUInt64 time);
sceKernelSysrootSetIsUserModeThreadFuncForKernel
Version | NID |
---|---|
0.931.010-2.060.011 | 0x5BD911A8 |
2.100.081-3.740.011 | not present |
This is a guessed name.
This function has been removed since System Software version 2.100.081 because its feature is now provided by #sceKernelSysrootRegisterDbgpHandlerForKernel.
int sceKernelSysrootSetIsUserModeThreadFuncForKernel(void *func);
sceKernelSysrootIsUserModeThreadForKernel
Version | NID |
---|---|
0.931.011-3.740.011 | 0x7FC7A163 |
sceKernelSysrootGetSecureStatusForKernel
Version | NID |
---|---|
0.940 | 0x0A63CA5E |
3.60 | not present |
return *(uint *)some_buf->field_0x28 & 1;
int sceKernelSysrootGetSecureStatusForKernel(void);
sceKernelSysrootIsSecureStateForKernel
Version | NID |
---|---|
0.940 | 0x3193DAB2 |
3.60 | not present |
return (*(uint *)some_buf->field_0x28 ^ 1) & 1;
SceBool sceKernelSysrootIsSecureStateForKernel(void);
sceKernelSysrootIsColdBootForKernel
Version | NID |
---|---|
0.940-3.60 | 0xD7198963 |
return (*(uint *)some_buf->field_0x28 & 10; // FW 3.60 in IDA PRO
return ((*(uint *)some_buf->field_0x28 ^ 0x10) << 0x1b) >> 0x1f; // FW 0.940 in Ghidra
int sceKernelSysrootIsColdBootForKernel(void);
SceSysrootForDriver
SceSysrootForDriver_4B8C305A
Version | NID |
---|---|
?3.60? | 0x4B8C305A |
Variable of 12 bytes holding the AutoClockDown idle context.
Used by SceLowio for the AutoClockDown idle loop.
See also: SceSysmem#sceKernelSysrootDisableAutoClockDownForDriver, SceSysmem#sceKernelSysrootEnableAutoClockDownForDriver.
num_active_cores
is usually initialized to 0x4. However, if the console is in product mode (as per KBL_Param#Boot_type_indicator_1), then the initialization value is 0x14 instead, which disables the AutoClockDown.
struct low_power_idle_context { /* backup of ScePervasiveBaseClk registers */ uint32_t arm_baseclk_config[2]; /* counter used to clock down ARM when all cores are idle */ uint32_t num_active_cores; // default: 4, AutoClockDown disabled: 0x14 };
SceSysrootForDriver_6219CC14
Version | NID |
---|---|
3.60-3.65 | 0x6219CC14 |
Used in SceUlobjMgr#SceUlobjMgrForDriver_332F2E58.
int SceSysrootForDriver_6219CC14(int a1, int a2, int a3, int a4, int a5);
SceSysrootForDriver_F804F761
Version | NID |
---|---|
0.931.010-3.18 | not present |
3.300.041-3.740.011 | 0xF804F761 |
Official name might be sceKernelSysrootHasSDCardSupportForDriver.
This function always returns SCE_FALSE
on some release System Software versions, for example 3.500.000 and 3.600.011.
Used in SceSdstor and SceVshBridge#vshSdGetCardInfo.
If this function returns SCE_TRUE
, then SceSdif#get_sd_context_part_validate_sd(1)
is called.
SceBool SceSysrootForDriver_F804F761(void);
sceKernelSysrootSetVipRpcDebugFuncForDriver
Version | NID |
---|---|
3.60 | 0xA6A0A038 |
This is a guessed name.
void sceKernelSysrootSetVipRpcDebugFuncForDriver(SceKernelSysrootVipRpcDebugFunc func);
sceKernelSysrootClearVipRpcDebugFuncForDriver
Version | NID |
---|---|
3.60 | 0x0ECD711E |
This is a guessed name.
void sceKernelSysrootClearVipRpcDebugFuncForDriver();
sceKernelSysrootGetVipRpcDebugFuncForDriver
Version | NID |
---|---|
3.60 | 0x483EF108 |
This is a guessed name.
SceKernelSysrootVipRpcDebugFunc sceKernelSysrootGetVipRpcDebugFuncForDriver();
sceKernelSysrootSetVeneziaRpcDebugFuncForDriver
Version | NID |
---|---|
3.60 | 0x47F19DD3 |
This is a guessed name.
void sceKernelSysrootSetVeneziaRpcDebugFuncForDriver(SceKernelSysrootVeneziaRpcDebugFunc func);
sceKernelSysrootClearVeneziaRpcDebugFuncForDriver
Version | NID |
---|---|
3.60 | 0x5B106EB3 |
This is a guessed name.
void sceKernelSysrootClearVeneziaRpcDebugFuncForDriver();
sceKernelSysrootGetVeneziaRpcDebugFuncForDriver
Version | NID |
---|---|
3.60 | 0x49843C16 |
This is a guessed name.
SceKernelSysrootVeneziaRpcDebugFunc sceKernelSysrootGetVeneziaRpcDebugFuncForDriver();
sceKernelApiDeclareErrorMsgForDriver
Version | NID |
---|---|
3.65 | 0x8CD02748 |
sceKernelApiDeclareTypeRawForDriver
Version | NID |
---|---|
3.65 | 0x8A760856 |
sceKernelApiDeclareTypeInt32ForDriver
Version | NID |
---|---|
3.65 | 0xD86BD6DC |
sceKernelApiDeclareTypeUInt32ForDriver
Version | NID |
---|---|
3.65 | 0x6E0BC27C |
sceKernelApiDeclareTypeInt64ForDriver
Version | NID |
---|---|
3.65 | 0x08B8F1D0 |
sceKernelApiDeclareTypeUInt64ForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60-3.65 | 0x2A5DBD38 |
Sets a value to 3.
void sceKernelApiDeclareTypeUInt64ForDriver(void);
sceKernelSysrootGetTimebaseClockFrequencyForDriver
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.500.071-3.740.011 | 0xBFD8F2A2 |
Calls a function registered by #SceSysrootForDriver_C94C76FA.
Used by SceGpuEs4, only on DevKit.
SceUInt32 sceKernelSysrootGetTimebaseClockFrequencyForDriver(void);
SceSysrootForDriver_C94C76FA
Version | NID |
---|---|
0.931.010-3.360.011 | not present |
3.500.011-3.740.011 | 0xC94C76FA |
Registers some Sysroot functions related to clock frequency.
int SceSysrootForDriver_C94C76FA(SceSysrootForDriver_C94C76FA_struct *pParam);
SceSysrootForDriver_2BE874EF
Version | NID |
---|---|
1.500.151-3.740.011 | 0x2BE874EF |
Registers the function called by #SceSysrootForKernel_BF82931F.
Used only in SceAppMgr.
int SceSysrootForDriver_2BE874EF(void *func);
SceSysrootForDriver_3B19B06B
Version | NID |
---|---|
1.500.151-3.740.011 | 0x3B19B06B |
Registers the function called by #SceSysrootForKernel_6D111FA7.
Used only in SceAppMgr.
int SceSysrootForDriver_3B19B06B(void *func);
SceSysrootForDriver_70AD47A9
Version | NID |
---|---|
1.500.151-3.740.011 | 0x70AD47A9 |
Registers the function called by #SceSysrootForKernel_2A03DFA1.
Used only in SceAppMgr.
int SceSysrootForDriver_70AD47A9(void *func);
SceSysrootForDriver_AA770EF7
Version | NID |
---|---|
0.931.010-3.360.011 | not present |
3.500.011-3.740.011 | 0xAA770EF7 |
Registers the function called by #SceSysrootForDriver_591BB490.
The function is registered from SceTty2uart only if DIP Switch 211 is set.
int SceSysrootForDriver_AA770EF7(void *func);
SceSysrootForDriver_591BB490
Version | NID |
---|---|
0.931.010-3.360.011 | not present |
3.500.011-3.740.011 | 0x591BB490 |
Calls the function registered by #SceSysrootForDriver_AA770EF7.
Gets tty2uart information into a 0x1000-sized buffer, similarly to #sceKernelGetTtyInfoForDriver. Returns some size, maybe size of the written tty2uart buffer.
Used only in SceCoredump.
// size: usually 0x1000 int SceSysrootForDriver_591BB490(int magic_or_size, void *pBuf, SceSize size);
SceSysrootForDriver_C5EAF5F7
Version | NID |
---|---|
0.990.000-3.740.011 | 0xC5EAF5F7 |
Registers the function called by #SceSysrootForDriver_47724459.
int SceSysrootForDriver_C5EAF5F7(void *func);
SceSysrootForDriver_47724459
Version | NID |
---|---|
0.990.000-3.740.011 | 0x47724459 |
Calls the function registered by #SceSysrootForDriver_C5EAF5F7.
SceSysrootForDriver_D4457D4F
Version | NID |
---|---|
0.931.010 | not present |
0.990.000-3.740.011 | 0xD4457D4F |
Registers the function called by #SceSysrootForDriver_40F28DC6.
int SceSysrootForDriver_D4457D4F(void *func);
SceSysrootForDriver_40F28DC6
Version | NID |
---|---|
0.990-3.740.011 | 0x40F28DC6 |
Calls the function registered by #SceSysrootForDriver_D4457D4F.
sceKernelSysrootGetCompiledSdkVersionByPidForDriver
Version | NID |
---|---|
0.931.010-1.692.000 | not present |
1.800.071-3.740.011 | 0xCAE820B2 |
Temp name was sceKernelGetProcessHeapIDForDriver.
Calls a callback registered by #SceSysrootForKernel_D29BCA77.
Used in SceKernelModulemgr functions that load modules, for example SceKernelModulemgr#sceKernelStartModuleForPidForKernel.
int sceKernelSysrootGetCompiledSdkVersionByPidForDriver(SceUID pid, SceUInt32 *puiSdkVer);
SceSysrootForDriver_8747D415
Version | NID |
---|---|
0.990-3.60 | 0x8747D415 |
Used by SceDeci4pSDfMgr.
Registers the function called by #SceSysrootForDriver_B27B7530.
int SceSysrootForDriver_8747D415(void *func);
SceSysrootForDriver_B27B7530
Version | NID |
---|---|
0.990-3.60 | 0xB27B7530 |
Calls the function registered by #SceSysrootForDriver_8747D415.
sceKernelSysrootSetGetBuserrorDataFuncForDriver
Version | NID |
---|---|
0.990-3.60 | 0x82FC6405 |
This is a guessed name.
Registers the function called by #sceKernelSysrootGetBuserrorDataForDriver.
int sceKernelSysrootSetGetBuserrorDataFuncForDriver(void *func);
sceKernelSysrootGetBuserrorDataForDriver
Version | NID |
---|---|
0.990-3.60 | 0xCD4B84F7 |
This is a guessed name.
Calls the function registered by #sceKernelSysrootSetGetBuserrorDataFuncForDriver.
SceSysrootForDriver_FF2DD7AB
Version | NID |
---|---|
3.60 | 0xFF2DD7AB |
Registers something.
typedef struct SceSysrootForDriver_FF2DD7AB_struct { // size is 0x1C on FW 3.60 SceSize size; // Size of this structure char unk_4[0x18]; } SceSysrootForDriver_FF2DD7AB_struct; int SceSysrootForDriver_FF2DD7AB(SceSysrootForDriver_FF2DD7AB_struct *pData);
SceSysrootForDriver_3AE319DA
Version | NID |
---|---|
3.60 | 0x3AE319DA |
Used by SceSyscon.
Get something registered by #SceSysrootForDriver_FF2DD7AB.
int SceSysrootForDriver_3AE319DA(void);
sceKernelSysrootGetHardwareFlagsForDriver
Version | NID |
---|---|
3.60 | 0x46E72428 |
This is a guessed name. Temp name was sceSysrootIsAuCodecIcConexantForDriver.
Writes kbl_param->hardware_flags to buffer.
pFlags buffer size is 0x10 bytes.
int sceKernelSysrootGetHardwareFlagsForDriver(void *pFlags);
sceKernelSysrootGetHardwareInfoForDriver
Version | NID |
---|---|
3.60 | 0x930B1342 |
return kbl_param->hardware_info;
int sceKernelSysrootGetHardwareInfoForDriver(void);
sceKernelSysrootSetSDfCtlSetBootParameterFuncForDriver
Version | NID |
---|---|
3.60 | 0xE541959B |
int sceKernelSysrootSetSDfCtlSetBootParameterFuncForDriver(void *func);
sceKernelSysrootClearSDfCtlSetBootParameterFuncForDriver
Version | NID |
---|---|
3.60 | 0x9421B223 |
int sceKernelSysrootClearSDfCtlSetBootParameterFuncForDriver(void);
sceKernelSysrootSDfCtlSetBootParameterForDriver
Version | NID |
---|---|
3.60 | 0x7AAC4EE7 |
// bootparam max size is 0x80 bytes int sceKernelSysrootSDfCtlSetBootParameterForDriver(const char *bootparam);
sceKernelSysrootSetUtMgrGetTrilithiumBufferFuncForDriver
Version | NID |
---|---|
3.60 | 0x35875119 |
Registers the function called by #sceKernelSysrootUtMgrGetTrilithiumBufferForDriver.
int sceKernelSysrootSetUtMgrGetTrilithiumBufferFuncForDriver(void *func);
sceKernelSysrootUtMgrGetTrilithiumBufferForDriver
Version | NID |
---|---|
0.931.010-3.01 | not present |
3.180.011-3.740.011 | 0xD75D4F37 |
Used in SceSblAuthMgr#sceSblAuthMgrAuthHeaderForKernel to overwrite fSELF authinfo.
Returns 0 on success, 0x800f1a02 on error.
int sceKernelSysrootUtMgrGetTrilithiumBufferForDriver(SceUtokenDecrypted *buffer);
sceKernelSysrootSetSceSblPostSsMgrForDriver_A12C9950FuncForDriver
Version | NID |
---|---|
0.931.010-1.06 | not present |
1.500.151-3.740.011 | 0xA12C9950 |
Registers the function called by #sceKernelSysrootSceSblPostSsMgrForDriver_56D85EB0ForDriver.
The function is SceSblPostSsMgr#SceSblPostSsMgrForDriver_D8A2D465.
int sceKernelSysrootSetSceSblPostSsMgrForDriver_A12C9950FuncForDriver(void *func);
sceKernelSysrootSceSblPostSsMgrForDriver_56D85EB0ForDriver
Version | NID |
---|---|
3.60 | 0x56D85EB0 |
Used by SceSblACMgr.
Calls the function registered by #sceKernelSysrootSetSceSblPostSsMgrForDriver_56D85EB0FuncForDriver.
The function is SceSblPostSsMgr#SceSblPostSsMgrForDriver_D8A2D465.
sceKernelSysrootSetSblUtMgrHasUNK1FlagFuncForDriver
Version | NID |
---|---|
0.931.010-0.996 | not present |
1.000.071-3.740.011 | 0xE25D2FD5 |
Registers the functions called by #sceKernelSysrootSblUtMgrHasUNK1FlagForDriver.
int sceKernelSysrootSetSblUtMgrHasUNK1FlagFuncForDriver(void *func);
sceKernelSysrootSblUtMgrHasUNK1FlagForDriver
Version | NID |
---|---|
0.931.010-0.996 | not present |
1.000.071-3.740.011 | 0x26AA237C |
Calls the function registered by #sceKernelSysrootSetSblUtMgrHasUNK1FlagFuncForDriver.
int sceKernelSysrootSblUtMgrHasUNK1FlagForDriver(void);
sceKernelSysrootSetSblUtMgrHasUNK2FlagFuncForDriver
Version | NID |
---|---|
3.60 | 0xE2E88E3E |
Registers the function called by #sceKernelSysrootSblUtMgrHasUNK2FlagForDriver.
int sceKernelSysrootsceSetSblUtMgrHasUNK2FlagFuncForDriver(void *func);
sceKernelSysrootSblUtMgrHasUNK2FlagForDriver
Version | NID |
---|---|
3.60 | 0xE2515A08 |
Calls the function registered by #sceKernelSysrootSetSblUtMgrHasUNK2FlagFuncForDriver.
Used by SceSblACMgr#sceSblACMgrHasSystemDataFilePlayReadyFlagForDriver.
int sceKernelSysrootSblUtMgrHasUNK2FlagForDriver(void);
sceKernelSysrootSetUtMgrHasNpTestFlagFuncForDriver
Version | NID |
---|---|
0.931-3.18 | not present |
3.300.041-3.740.011 | 0xEE5D6CE9 |
int sceKernelSysrootSetUtMgrHasNpTestFlagFuncForDriver(void *func);
sceKernelSysrootUtMgrHasNpTestFlagForDriver
Version | NID |
---|---|
0.931-3.18 | not present |
3.300.041-3.740.011 | 0xA43599E9 |
int sceKernelSysrootUtMgrHasNpTestFlagForDriver(void);
SceSysrootForDriver_2D6B2A79
Version | NID |
---|---|
0.990-3.60 | 0x2D6B2A79 |
Registers a function related to kernel panic, called by #SceSysrootForDriver_CC7A0E63 or #SceSysrootForKernel_CC7A0E63.
SceSysrootForDriver_CC7A0E63
Version | NID |
---|---|
0.990-3.60 | 0xCC7A0E63 |
Calls a function related to kernel panic, registered by #SceSysrootForDriver_2D6B2A79 or #SceSysrootForKernel_2D6B2A79.
// type: 1: kernel_assertion_or_panic, 3: kernel_exception // size: must be <= 0x1000 // pBuf: address of the buffer got using SceDebugForKernel_BEF921A2 int SceSysrootForDriver_CC7A0E63(int type, SceSize size, const char *pBuf);
sceKernelSysrootDisableAutoClockDownForDriver
Version | NID |
---|---|
0.931 | not present |
3.60 | 0xEE934615 |
Derived from SceVshBridge#vshKernelDisableAutoClockDown.
Atomically adds 0x10 to SceSysrootForDriver_4B8C305A.num_active_cores
.
The correct return type may be void
instead (currently, return value is the incremented num_active_cores
).
int sceKernelSysrootDisableAutoClockDownForDriver(void);
sceKernelSysrootEnableAutoClockDownForDriver
Version | NID |
---|---|
0.931 | not present |
3.60 | 0xEEF091A7 |
Derived from SceVshBridge#vshKernelEnableAutoClockDown.
Atomically substracts 0x10 from SceSysrootForDriver_4B8C305A.num_active_cores
.
The correct return type may be void
instead (currently, return value is the decremented num_active_cores
).
Used by SceCompat, ScePower, SceKernelDmacMgr, SceSblAuthMgr, SceSblSmschedProxy, SceSblSsSmComm.
int sceKernelSysrootEnableAutoClockDownForDriver(void);
SceSysrootForDriver_6050A467
Version | NID |
---|---|
3.60 | 0x6050A467 |
Debug related. Returns an error when called because there is no handler set for retail.
int SceSysrootForDriver_6050A467(SceUID pid);
SceSysrootForDriver_F4340469
Version | NID |
---|---|
3.60 | 0xF4340469 |
Coredump related. Called during process load. Something is same as in #SceSysrootForDriver_6050A467.
int SceSysrootForDriver_F4340469(int something, SceUID pid, ...);
sceKernelSysrootRegisterCoredumpTriggerForDriver
Version | NID |
---|---|
0.990-3.60 | 0xDD473B05 |
int sceKernelSysrootRegisterCoredumpTriggerForDriver(void *func);
sceKernelSysrootCoredumpTriggerForDriver
Version | NID |
---|---|
0.990-3.60 | 0xCD8CD242 |
Used by SceDeci4pDbgp.
int sceKernelSysrootCoredumpTriggerForDriver(int a1, int a2, int a3, SceCoredumpForDriver_A7D214A7_Opt *pOpt);
sceKernelSysrootRegisterCoredumpCancelForDriver
Version | NID |
---|---|
0.990-3.60 | 0x400B9793 |
int sceKernelSysrootRegisterCoredumpCancelForDriver(void *func);
sceKernelSysrootCoredumpCancelForDriver
Version | NID |
---|---|
0.990-3.60 | 0x80FBC69D |
int sceKernelSysrootCoredumpCancelForDriver(int a1);
sceKernelSysrootSetProcessHandlerForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x0F07C3FC |
Registers some handlers.
int sceKernelSysrootSetProcessHandlerForDriver(SceSysrootProcessHandler *pHandler);
sceKernelSysrootClearProcessHandlerForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x5A7FFDC1 |
void sceKernelSysrootClearProcessHandlerForDriver(void);
SceSysrootForDriver_421EFC96
Version | NID |
---|---|
0.931-1.692 | not present |
1.800.071-3.740.011 | 0x421EFC96 |
Calls SceSysrootProcessHandler's on_process_created.
Used only by SceAppMgr and called on process creation.
Hooked to make it return 0 (success) for example in:
int SceSysrootForDriver_421EFC96(int maybe_pid, int maybe_modid, int a3);
sceKernelSysrootSWBkptGetOriginalOpcodeForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x9CFF80F9 |
This is a guessed name.
int sceKernelSysrootSWBkptGetOriginalOpcodeForDriver(SceUID pid, void *address, SceUInt32 *opcode);
SceSysrootForDriver_571E5B79
Version | NID |
---|---|
0.990.000-3.740.011 | 0x571E5B79 |
Calls SceSysrootProcessHandler's unk_4.
SceSysrootForDriver_51F9C118
Version | NID |
---|---|
3.60-3.65 | 0x51F9C118 |
Calls SceSysrootProcessHandler's unk_18.
Used in SceProcessmgr#SceProcessmgrForKernel_8729DE79.
// a3: second argument of SceProcessmgrForKernel_8729DE79 int SceSysrootForDriver_51F9C118(SceUID pid, SceUID modid, int a3, void* maybe_process_info, SceUInt64 time);
SceSysrootForDriver_582616EC
Version | NID |
---|---|
3.60-3.65 | 0x582616EC |
Calls SceSysrootProcessHandler's unk_24.
Used in SceProcessmgr#SceProcessmgrForKernel_8729DE79.
// a3: second argument of SceProcessmgrForKernel_8729DE79 int SceSysrootForDriver_582616EC(SceUID pid, SceUID modid, int a3);
sceKernelSysrootDbgpSuspendProcessAndWaitResumeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x256B2394 |
sceKernelSysrootGetShellPidForDriver
Version | NID |
---|---|
0.990-3.60 | 0x05093E7B |
SceUID sceKernelSysrootGetShellPidForDriver(void);
sceKernelSysrootAppMgrSpawnProcessForDriver
Version | NID |
---|---|
0.990-3.60 | 0x3ACACD22 |
sceKernelSysrootInformUpdateStartedForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9A486846 |
int sceKernelSysrootInformUpdateStartedForDriver(int number1, int number2, const char *str, SceSize len);
sceKernelSysrootInformUpdateOngoingForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9EC02A41 |
int sceKernelSysrootInformUpdateOngoingForDriver(int number1, int number2);
sceKernelSysrootInformUpdateFinishedForDriver
Version | NID |
---|---|
0.990-3.60 | 0x217B2871 |
int sceKernelSysrootInformUpdateFinishedForDriver(int number, const char *str, SceSize len);
sceKernelSysrootSetSwInfoIntForDriver
Version | NID |
---|---|
0.990-3.60 | 0x631141E2 |
int sceKernelSysrootSetSwInfoIntForDriver(char *str, SceSize len, SceUInt32 number);
sceKernelSysrootSetSwInfoStrForDriver
Version | NID |
---|---|
0.990-3.60 | 0x17DD213C |
int sceKernelSysrootSetSwInfoStrForDriver(char *str1, SceSize len1, char *str2, SceSize len2);
sceKernelSysrootSetSwInfoBinForDriver
Version | NID |
---|---|
0.990-3.60 | 0x9E96D990 |
int sceKernelSysrootSetSwInfoBinForDriver(char *str1, SceSize size1, char *str2, SceSize size2);
sceKernelSysrootSetGetSystemSwVersionFuncForDriver
Version | NID |
---|---|
3.60 | 0x3276086B |
Temp name was sceKernelSysrootSetSystemSwVersionForDriver.
Used by SceSblUpdateMgr.
void sceKernelSysrootSetGetSystemSwVersionFuncForDriver(void *func);
sceKernelSysrootGetSystemSwVersionForDriver
Version | NID |
---|---|
3.60-3.65 | 0x67AAB627 |
Returns System Software version as int from SceSysmem memory. For exemple: 0x0365000 on 3.65.
int sceKernelSysrootGetSystemSwVersionForDriver(void);
sceKernelSysrootIsSafeModeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x834439A7 |
int sceKernelSysrootIsSafeModeForDriver(void);
sceKernelSysrootIsUpdateModeForDriver
Version | NID |
---|---|
3.60 | 0xB0E1FC67 |
int sceKernelSysrootIsUpdateModeForDriver(void);
sceKernelSysrootGetModelInfoForDriver
Version | NID |
---|---|
0.931 | not present |
3.60 | 0x4D98B15B |
This is a guessed name, based on "sysroot->model_info".
Returns sysroot->model_info.
Used only in SceProcessmgr initializeBudget() on module start. According to model_info, ScePhyMemPartShell is allocated with different parameters.
SceUInt32 sceKernelSysrootGetModelInfoForDriver(void);
SceSysrootForDriver_ED688AEE
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0xED688AEE |
Registers the callback called by #SceSysrootForDriver_F404026C.
SceSysrootForDriver_ED688AEE(void* cb);
SceSysrootForDriver_F404026C
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0xF404026C |
Calls the callback registered by #SceSysrootForDriver_ED688AEE.
sceKernelSysrootCheckModelCapabilityForDriver
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0x8AA268D6 |
This is an official name. Name derived from #sceKernelSysrootCheckModelCapability.
Each model capability corresponds to a bit in a Sysroot field derived from Syscon Hardware Info and Hardware Info 2.
Model capabilities:
- 0: unknown
- 1: Multi-controllers support
- 2: unknown
- 4: unknown
- 5: unknown
- 6: unknown
- 7: unknown, ?OLED display?
- 8: unknown, ?LCD display?
- 9: unknown, set on almost all models
- 10: unknown
- 11: SD card support
- 12: unknown
- 13: unknown
Case | Model | Model capabilities (raw) | Model capabilities (bits set) |
---|---|---|---|
ErnieHwInfo & 0xFF0000 <= 0x410000 / Unknown Model | 0x10100 | 0x604 | 2, 9, 10 |
ErnieHwInfo & 0xFF0000 == 0x510000 | 0x20100 | 0x1232 | 1, 4, 5, 9, 12 |
ErnieHwInfo & 0xFF0000 == 0x600000 | 0x10150 | 0x604 | 2, 9, 10 |
ErnieHwInfo & 0xFF0000 == 0x700000 | 0x20100 | 0x1232 | 1, 4, 5, 9, 12 |
ErnieHwInfo & 0xFF0000 == 0x720000 | 0x20110 | 0x232 | 1, 4, 5, 9 |
ErnieHwInfo & 0xFF0000 == 0x800000 | 0x10200 | 0x604 | 2, 9, 10 |
ErnieHwInfo & 0xFF0000 == 0x820000 | 0x10220 | 0x604 | 2, 9, 10 |
PDEL-10xx in PS TV Emulation mode | 0x20101 | 0x252 | 1, 4, 6, 9 |
(ErnieHwInfo2 & 0x9 == 0) && PSTV or PSTVEmu | - | 0x80 | 7 |
ErnieHwInfo2 & 0x9 != 0 | - | 0x100 | 8 |
(Model == 0x20110) && (ErnieHwInfo2 & 0x100 != 0) | - | 0x1000 | 12 |
(Model == 0x20110) && (ErnieHwInfo2 & 0x100 == 0) | - | & ~0x1000 | UNSET 12 |
ErnieHwInfo2 & 0x200 != 0 | - | 0x2000 | 13 |
Used in SceCtrl, SceSdstor, SceUsbEtherRtl and SceVshBridge.
int sceKernelSysrootCheckModelCapabilityForDriver(int capability);
sceKernelSysrootGetSyscallFrameForDriver
Version | NID |
---|---|
3.60-3.65 | 0x44EA3197 |
SceSyscallFrame *sceKernelSysrootGetSyscallFrameForDriver(void);
sceKernelSysrootRegisterInitCallbackForDriver
Version | NID |
---|---|
0.990-3.60 | 0x778D0966 |
// idx: 0-8 // idx 8: func = ScePower/SceMsif functions int sceKernelSysrootRegisterInitCallbackForDriver(const void *func, SceUInt32 idx, SceUInt32 arg, SceUInt32 *ret);
sceKernelSysrootInvokeInitCallbackForDriver
Version | NID |
---|---|
0.990-3.60 | 0x93CD44CD |
// idx: 0-8, 5: disable NSKBL, more...? int sceKernelSysrootInvokeInitCallbackForDriver(int idx);
sceKernelSysrootInvokeInitCallbackExForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
0.990-3.60 | 0x7C2C10E2 |
This is a guessed name.
// idx: 0-8, 5: disable NSKBL, more...? // unk: argument passed to the init callback int sceKernelSysrootInvokeInitCallbackExForDriver(int idx, int unk);
SceKernelUtilsForDriver
sceAesDecrypt1ForDriver
Version | NID |
---|---|
0.990-3.60 | 0xD8678061 |
Perform normal AES decrypt.
int sceAesDecrypt1ForDriver(void *ctx, const void *src, void *dst);
sceAesDecrypt2ForDriver
Version | NID |
---|---|
3.60 | 0xE39CD272 |
Perform AES decrypt using encryption round key.
int sceAesDecrypt2ForDriver(void *ctx, const void *src, void *dst);
sceAesEncrypt1ForDriver
Version | NID |
---|---|
0.990-3.60 | 0xC2A61770 |
Perform AES encrypt. There are two functions that are the same on 1.69.
int sceAesEncrypt1ForDriver(void *ctx, const void *src, void *dst);
sceAesEncrypt2ForDriver
Version | NID |
---|---|
1.69-3.60 | 0x302947B6 |
Perform AES encrypt. Similar to sceAesEncrypt1ForDriver.
int sceAesEncrypt2ForDriver(void *ctx, const void *src, void *dst);
sceAesInit1ForDriver
Version | NID |
---|---|
1.69-3.60 | 0xF12B6451 |
This sets up the AES engine. ctx
is a 0x3C0 byte buffer (on FW 1.69). blocksize
and keysize
values are in bits. 128/196/256 are supported values.
last arg to subroutine is 0
int sceAesInit1ForDriver(void *ctx, int blocksize, int keysize, const void *key);
sceAesInit2ForDriver
Version | NID |
---|---|
3.60 | 0xEDA97D6D |
last arg to subroutine is 1
int sceAesInit2ForDriver(void *ctx, int blocksize, int keysize, const void *key);
sceAesInit3ForDriver
Version | NID |
---|---|
3.60 | 0x72408E29 |
last arg to subroutine is 2
int sceAesInit3ForDriver(void *ctx, int blocksize, int keysize, const void *key);
SceKernelUtilsForDriver_C76A7685
Version | NID |
---|---|
3.60 | 0xC76A7685 |
Looks like it relates to AES InvMixColumns.
SceKernelUtilsForDriver_60ED6EA9
Version | NID |
---|---|
3.60 | 0x60ED6EA9 |
Equivalent to AES getSBox32Value
sceDeflateDecompressForDriver
Version | NID |
---|---|
3.60 | 0x8AF1FAD4 |
sceDeflateDecompressPartialForDriver
Version | NID |
---|---|
3.60 | 0x3D74CCDF |
sceGzipDecompressForDriver
Version | NID |
---|---|
3.60 | 0x367EE3DF |
sceGzipGetCommentForDriver
Version | NID |
---|---|
3.60 | 0xCD3AE08F |
sceGzipGetCompressedDataForDriver
Version | NID |
---|---|
3.60 | 0x63619124 |
sceGzipGetInfoForDriver
Version | NID |
---|---|
3.60 | 0xFFC6A10F |
sceGzipGetNameForDriver
Version | NID |
---|---|
3.60 | 0xF901FD3E |
sceGzipIsValidForDriver
Version | NID |
---|---|
3.60 | 0xD8FAEFD4 |
sceHmacSha1DigestForDriver
Version | NID |
---|---|
3.60 | 0x29A28957 |
int sceHmacSha1DigestForDriver(const void *key, int key_len, const void *data, int data_len, void *digest);
sceHmacSha224DigestForDriver
Version | NID |
---|---|
3.60 | 0x7F2A7B99 |
int sceHmacSha224DigestForDriver(const void *key, int key_len, const void *data, int data_len, void *digest);
sceHmacSha256DigestForDriver
Version | NID |
---|---|
3.60 | 0x83EFA1CC |
int sceHmacSha256DigestForDriver(const void *key, int key_len, const void *data, int data_len, void *digest);
sceMt19937GlobalInitForDriver
Version | NID |
---|---|
3.60 | 0xD428CC2A |
cp_timestamp_2 is gotten from SceKblParam.
int sceMt19937GlobalInitForDriver(uint32_t cp_timestamp_2);
sceMt19937GlobalUIntInRangeForDriver
Version | NID |
---|---|
0.990-3.60 | 0x875B2A1C |
Temp name was sceMt19937GlobalUninitForDriver.
// Both the address and size must be aligned on four bytes. int sceMt19937GlobalUIntInRangeForDriver(void *pBase, SceSize length);
sceMt19937InitForDriver
Version | NID |
---|---|
3.60 | 0x4C9A5730 |
sceMt19937UIntForDriver
Version | NID |
---|---|
3.60 | 0x92AEDFBC |
sceSfmt19937FillArray32ForDriver
Version | NID |
---|---|
3.60 | 0x2B30548B |
sceSfmt19937FillArray64ForDriver
Version | NID |
---|---|
3.60 | 0x49B41540 |
sceSfmt19937GenRand32ForDriver
Version | NID |
---|---|
3.60 | 0xBBE4701A |
sceSfmt19937GenRand64ForDriver
Version | NID |
---|---|
3.60 | 0x45DEAAD6 |
sceSfmt19937InitByArrayForDriver
Version | NID |
---|---|
3.60 | 0x33AE1203 |
sceSfmt19937InitGenRandForDriver
Version | NID |
---|---|
3.60 | 0xAB48C3CA |
sceSha1BlockInitForDriver
Version | NID |
---|---|
3.60 | 0xE4390FFA |
int sceSha1BlockInitForDriver(void* ctx);
sceSha1BlockResultForDriver
Version | NID |
---|---|
3.60 | 0x48F24106 |
int sceSha1BlockResultForDriver(void* ctx, void *digest);
sceSha1BlockUpdateForDriver
Version | NID |
---|---|
3.60 | 0x478A6F3C |
int sceSha1BlockUpdateForDriver(void* ctx, const void *data, int size);
sceSha1DigestForDriver
Version | NID |
---|---|
3.60 | 0x87DC7F2F |
int sceSha1DigestForDriver(const void *data, int size, void *digest);
sceSha224BlockInitForDriver
Version | NID |
---|---|
3.60 | 0xC762EA6D |
int sceSha224BlockInitForDriver(void* ctx);
sceSha224BlockResultForDriver
Version | NID |
---|---|
3.60 | 0xFBF2A442 |
int sceSha224BlockResultForDriver(void* ctx, void *digest);
sceSha224BlockUpdateForDriver
Version | NID |
---|---|
3.60 | 0x7556E611 |
int sceSha224BlockUpdateForDriver(void* ctx, const void *data, int size);
sceSha224DigestForDriver
Version | NID |
---|---|
3.60 | 0x9EA9D4DC |
int sceSha224DigestForDriver(const void *data, int size, void *digest);
sceSha256BlockInitForDriver
Version | NID |
---|---|
3.60 | 0xD909FA2C |
int sceSha256BlockInitForDriver(void* ctx);
sceSha256BlockResultForDriver
Version | NID |
---|---|
3.60 | 0x4899CD4B |
int sceSha256BlockResultForDriver(void* ctx, void *digest);
sceSha256BlockUpdateForDriver
Version | NID |
---|---|
3.60 | 0x236A9097 |
int sceSha256BlockUpdateForDriver(void* ctx, const void *data, int size);
sceSha256DigestForDriver
Version | NID |
---|---|
0.931-3.60 | 0xA773A6A8 |
int sceSha256DigestForDriver(const void *data, SceSize size, void *digest);
sceZlibDecompressForDriver
Version | NID |
---|---|
3.60 | 0x900148DB |
sceZlibGetCompressedDataForDriver
Version | NID |
---|---|
3.60 | 0x01EB6C45 |
sceZlibGetInfoForDriver
Version | NID |
---|---|
3.60 | 0x5B9BCD75 |
sceXorshift128ForDriver
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x335AF34D |
Similar implementation as xorshift128.
int sceXorshift128ForDriver(SceUInt32 *state);
SceKernelUtilsForDriver_B55C69B7
Version | NID |
---|---|
3.60 | 0xB55C69B7 |
If buffer is full of zeroes, then each of the four dwords of buffer are set to 1. Always success and always return 0.
Used in SceProcessmgr.
int SceKernelUtilsForDriver_B55C69B7(SceUInt32 *buffer);
SceZlibForDriver
This library was moved to SceSblPostSsMgr#SceZlibForDriver on FW 1.800.071.
zlib compression library.
zlibVersion
Version | NID |
---|---|
3.200.010 | 0x517BC5F7 |
const char *zlibVersion(void);
inflateInit
Version | NID |
---|---|
3.200.010 | 0x81D0667B |
This function have alias.
int inflateInit(SceZlibStream *strm, const char *version, int stream_size);
SceZlibForDriver_723495A5
Version | NID |
---|---|
0.940-3.60 | 0x723495A5 |
int SceZlibForDriver_723495A5(SceZlibStream *strm, const char *version, int stream_size);
inflateInit2_
Version | NID |
---|---|
3.200.010 | 0x0BDDF66A |
This function have alias.
int inflateInit2_(SceZlibStream *strm, int windowBits, const char *version, int stream_size);
SceZlibForDriver_21A03034
Version | NID |
---|---|
3.200.010 | 0x21A03034 |
int SceZlibForDriver_21A03034(SceZlibStream *strm, int windowBits, const char *version, int stream_size);
inflateInit_2
Version | NID |
---|---|
3.200.010 | 0x44DA19D2 |
This function have alias.
int inflateInit_2(SceZlibStream *strm, const char *version, int stream_size);
SceZlibForDriver_B03E109B
Version | NID |
---|---|
3.200.010 | 0xB03E109B |
int SceZlibForDriver_B03E109B(SceZlibStream *strm, const char *version, int stream_size);
inflateInit2_2
Version | NID |
---|---|
3.200.010 | 0xA1E7E8B3 |
This function have alias.
int inflateInit2_2(SceZlibStream *strm, int a2, const char *version, int stream_size);
SceZlibForDriver_AC2F8437
Version | NID |
---|---|
3.200.010 | 0xAC2F8437 |
int SceZlibForDriver_AC2F8437(SceZlibStream *strm, int a2, const char *version, int stream_size);
inflate
Version | NID |
---|---|
3.200.010 | 0xD4A85178 |
This function have alias.
int inflate(SceZlibStream *strm, int flush);
SceZlibForDriver_E4F34A68
Version | NID |
---|---|
1.60-3.60 | 0xE4F34A68 |
inflateSetDictionary
Version | NID |
---|---|
1.60-3.60 | 0x7B16DBD6 |
This function have alias.
int inflateSetDictionary(SceZlibStream *strm, const void *dictionary, int dictLength);
SceZlibForDriver_00561385
Version | NID |
---|---|
3.200.010 | 0x00561385 |
int SceZlibForDriver_00561385(SceZlibStream *strm, const void *dictionary, int dictLength);
inflateEnd
Version | NID |
---|---|
3.200.010 | 0x9030BAE4 |
This function have alias.
int inflateEnd(SceZlibStream *strm);
SceZlibForDriver_134E91EA
Version | NID |
---|---|
3.200.010 | 0x134E91EA |
int SceZlibForDriver_134E91EA(SceZlibStream *strm);
inflateCopy
Version | NID |
---|---|
3.200.010 | 0x4C27A382 |
This function have alias.
int inflateCopy(SceZlibStream *dst, SceZlibStream *src);
SceZlibForDriver_89B30588
Version | NID |
---|---|
3.200.010 | 0x89B30588 |
int SceZlibForDriver_89B30588(SceZlibStream *dst, SceZlibStream *src);
inflateSyncPoint
Version | NID |
---|---|
3.200.010 | 0x4CB63BCD |
This function have alias.
int inflateSyncPoint(SceZlibStream *strm);
SceZlibForDriver_834CC4A2
Version | NID |
---|---|
3.200.010 | 0x834CC4A2 |
int SceZlibForDriver_834CC4A2(SceZlibStream *strm);
deflate
Version | NID |
---|---|
1.60-3.60 | 0xE859D60F |
This function have alias.
int deflate(SceZlibStream *strm, int flush);
SceZlibForDriver_5B718E55
Version | NID |
---|---|
3.200.010-3.60 | 0x5B718E55 |
Used by SceCoredump.
int SceZlibForDriver_5B718E55(SceZlibStream *strm, int flush);
deflateReset
Version | NID |
---|---|
1.60-3.60 | 0x68CFEA45 |
This function have alias.
This function could be deflateResetKeep.
int deflateReset(SceZlibStream *strm);
SceZlibForDriver_211D25F5
Version | NID |
---|---|
3.200.010 | 0x211D25F5 |
int SceZlibForDriver_211D25F5(SceZlibStream *strm);
crc32
Version | NID |
---|---|
1.60-3.60 | 0xE0CE06C0 |
This function have alias.
unsigned long crc32(unsigned long crc, const unsigned char *buf, z_size_t len);
SceZlibForDriver_3370B9AD
Version | NID |
---|---|
3.200.010 | 0x3370B9AD |
unsigned long SceZlibForDriver_3370B9AD(unsigned long crc, const unsigned char *buf, z_size_t len);
adler32
Version | NID |
---|---|
1.60-3.60 | 0x98619620 |
This function have alias.
SceZlibForDriver_7E823337
Version | NID |
---|---|
3.200.010 | 0x7E823337 |
deflateInit2_2
Version | NID |
---|---|
3.60 | 0x20A122F8 |
May be an initialization function.
Used by SceCoredump.
This function have alias.
int deflateInit2_2(SceZlibStream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);
SceZlibForDriver_BE5CE88A
Version | NID |
---|---|
3.200.010 | 0xBE5CE88A |
int SceZlibForDriver_BE5CE88A(SceZlibStream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);
deflateEnd
Version | NID |
---|---|
3.60 | 0x5492B3F2 |
Used by SceCoredump.
This function have alias.
int deflateEnd(SceZlibStream *strm);
SceZlibForDriver_A5D70E95
Version | NID |
---|---|
3.200.010 | 0xA5D70E95 |
int SceZlibForDriver_A5D70E95(SceZlibStream *strm);
deflateInit_
Version | NID |
---|---|
3.60 | 0x25F28DA7 |
This function have alias.
int deflateInit_(SceZlibStream *strm, int level, const char *version, int stream_size);
SceZlibForDriver_520CAA7F
Version | NID |
---|---|
3.200.010 | 0x520CAA7F |
int SceZlibForDriver_520CAA7F(SceZlibStream *strm, int level, const char *version, int stream_size);
SceZlibForDriver_05F712FE
Version | NID |
---|---|
3.200.010 | 0x05F712FE |
This function have alias.
SceZlibForDriver_67A085C4
Version | NID |
---|---|
3.200.010 | 0x67A085C4 |
SceZlibForDriver_0FA805A3
Version | NID |
---|---|
3.200.010 | 0x0FA805A3 |
This function have alias.
int SceZlibForDriver_0FA805A3(SceZlibStream *strm, int a2, SceUInt16 a3);
SceZlibForDriver_1C344E27
Version | NID |
---|---|
3.200.010 | 0x1C344E27 |
int SceZlibForDriver_1C344E27(SceZlibStream *strm, int a2, SceUInt16 a3);
deflateCopy
Version | NID |
---|---|
3.200.010 | 0x1E135CC1 |
This function have alias.
int deflateCopy(SceZlibStream *dst, SceZlibStream *src);
SceZlibForDriver_3252D28C
Version | NID |
---|---|
3.200.010 | 0x3252D28C |
int SceZlibForDriver_3252D28C(SceZlibStream *dst, SceZlibStream *src);
SceZlibForDriver_35E0108C
Version | NID |
---|---|
3.200.010 | 0x35E0108C |
This function have alias.
int SceZlibForDriver_35E0108C(SceZlibStream *strm);
SceZlibForDriver_E2DF5A8B
Version | NID |
---|---|
3.200.010 | 0xE2DF5A8B |
int SceZlibForDriver_E2DF5A8B(SceZlibStream *strm);
zError
Version | NID |
---|---|
3.200.010 | 0x3B4466F4 |
This function have alias.
const char *zError(int err);
SceZlibForDriver_3F33F55F
Version | NID |
---|---|
3.200.010 | 0x3F33F55F |
const char *SceZlibForDriver_3F33F55F(int err);
inflateReset
Version | NID |
---|---|
3.200.010 | 0x408311E8 |
This function have alias.
int inflateReset(SceZlibStream *strm);
SceZlibForDriver_EEC6D267
Version | NID |
---|---|
3.200.010 | 0xEEC6D267 |
int SceZlibForDriver_EEC6D267(SceZlibStream *strm);
SceZlibForDriver_4EE6C080
Version | NID |
---|---|
3.200.010 | 0x4EE6C080 |
This function have alias.
SceZlibForDriver_93168F72
Version | NID |
---|---|
3.200.010 | 0x93168F72 |
SceZlibForDriver_5377643A
Version | NID |
---|---|
3.200.010 | 0x5377643A |
This function have alias.
SceZlibForDriver_7C40CC39
Version | NID |
---|---|
3.200.010 | 0x7C40CC39 |
deflateInit_2
Version | NID |
---|---|
3.200.010 | 0x5A0078D6 |
This function have alias.
int deflateInit_2(SceZlibStream *strm, int level, const char *version, int stream_size);
SceZlibForDriver_AD23EEBB
Version | NID |
---|---|
3.200.010 | 0xAD23EEBB |
int SceZlibForDriver_AD23EEBB(SceZlibStream *strm, int level, const char *version, int stream_size);
SceZlibForDriver_6ED5B677
Version | NID |
---|---|
3.200.010 | 0x6ED5B677 |
This function have alias.
SceZlibForDriver_7993ADAB
Version | NID |
---|---|
3.200.010 | 0x7993ADAB |
SceZlibForDriver_7048F14C
Version | NID |
---|---|
3.200.010 | 0x7048F14C |
This function have alias.
SceZlibForDriver_E323828B
Version | NID |
---|---|
3.200.010 | 0xE323828B |
SceZlibForDriver_82167CD9
Version | NID |
---|---|
3.200.010 | 0x82167CD9 |
This function have alias.
SceZlibForDriver_E94663DD
Version | NID |
---|---|
3.200.010 | 0xE94663DD |
SceZlibForDriver_86FF6C8B
Version | NID |
---|---|
3.200.010 | 0x86FF6C8B |
This function have alias.
SceZlibForDriver_904AA7AE
Version | NID |
---|---|
3.200.010 | 0x904AA7AE |
SceZlibForDriver_89A13883
Version | NID |
---|---|
3.200.010 | 0x89A13883 |
This function have alias.
SceZlibForDriver_D9BDC778
Version | NID |
---|---|
3.200.010 | 0xD9BDC778 |
SceZlibForDriver_938F34FA
Version | NID |
---|---|
3.200.010 | 0x938F34FA |
This function have alias.
SceZlibForDriver_BC022D38
Version | NID |
---|---|
3.200.010 | 0xBC022D38 |
deflateInit2_
Version | NID |
---|---|
3.200.010 | 0xE6EB524C |
This function have alias.
int deflateInit2_(SceZlibStream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);
SceZlibForDriver_F2D8FC1A
Version | NID |
---|---|
3.200.010 | 0xF2D8FC1A |
int SceZlibForDriver_F2D8FC1A(SceZlibStream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size);
SceKernelSuspendForDriver
Used to register handlers for handling suspend/resume related events.
sceKernelLockSuspendForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x4DF40893 |
This is a guessed name.
Called in SceProcessmgr#sceKernelStartProcessForKernel and SceProcessmgr#sceKernelStartProcessExtForKernel just before starting a process.
Called just before NVS write.
int sceKernelLockSuspendForDriver(SceUInt32 a1);
sceKernelUnlockSuspendForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x2BB92967 |
This is a guessed name.
Called in SceProcessmgr#sceKernelStartProcessForKernel and SceProcessmgr#sceKernelStartProcessExtForKernel just after starting a process.
Called just after NVS write.
int sceKernelUnlockSuspendForDriver(SceUInt32 a1);
sceKernelLockSuspendProcForDriver
Version | NID |
---|---|
0.931-3.740.011 | 0x254525F8 |
This is a guessed name.
Temp name was sceKernelPowerLockForDriver.
Used in SceProcessmgr#sceKernelPowerLock.
int sceKernelPowerLockForDriver(SceUInt32 a1);
sceKernelUnlockSuspendProcForDriver
Version | NID |
---|---|
0.931-3.740.011 | 0x230495ED |
This is a guessed name.
Temp name was sceKernelPowerUnlockForDriver.
Used in SceProcessmgr#sceKernelPowerUnlock.
int sceKernelPowerUnlockForDriver(SceUInt32 a1);
SceKernelSuspendForDriver_FE2118BD
Version | NID |
---|---|
0.990.000-3.740.011 | 0xFE2118BD |
sceKernelPowerSetIdleCallbackForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0xE677B343 |
This is guessed name.
SceKernelSuspendForDriver_B4B13615
Version | NID |
---|---|
0.990.000-3.740.011 | 0xB4B13615 |
SceKernelSuspendForDriver_AEA9440D
Version | NID |
---|---|
0.990.000-3.740.011 | 0xAEA9440D |
SceKernelSuspendForDriver_81D9E41C
Version | NID |
---|---|
0.990.000-3.740.011 | 0x81D9E41C |
SceKernelSuspendForDriver_6A503956
Version | NID |
---|---|
0.990.000-3.740.011 | 0x6A503956 |
SceKernelSuspendForDriver_250ACD90
Version | NID |
---|---|
0.990.000-3.740.011 | 0x250ACD90 |
int SceKernelSuspendForDriver_250ACD90(const SceKernelSuspendPowerCallback *pPowerCallback);
SceKernelSuspendForDriver_0A6CA124
Version | NID |
---|---|
0.990.000-3.740.011 | 0x0A6CA124 |
SceKernelSuspendForDriver_0106C0F0
Version | NID |
---|---|
0.990.000-3.740.011 | 0x0106C0F0 |
sceKernelRegisterSysEventHandlerForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0x04C05D10 |
Temp name was sceKernelSuspendRegisterCallbackForDriver.
Registers a function for handling suspend/resume. resume
is 0 if we are currently suspending and 1 if we are currently resuming. opt
is passed from the registration. Registration adds an entry to a linked list and returns the block id for the new entry.
Returns the suspend_handler_id.
typedef int (* SceKernelSysEventHandler)(int resume, int event, void *param, void *argp); SceUID sceKernelRegisterSysEventHandlerForDriver(const char *name, SceKernelSysEventHandler handler, void *argp);
SceKernelSuspendForDriver_CE7A2207
Version | NID |
---|---|
0.990.000-3.740.011 | 0xCE7A2207 |
Registers a handler for a suspend event.
// idx: ex: 0x15 // args: can be 0 SceUID SceKernelSuspendForDriver_CE7A2207(SceUInt idx, void *handler, void *args);
SceKernelSuspendForDriver_105C5752
Version | NID |
---|---|
0.990.000-3.740.011 | 0x105C5752 |
Registers a handler for a resume event.
// idx: ex: 0x15 // args: can be 0 SceUID SceKernelSuspendForDriver_105C5752(SceUInt idx, void *handler, void *args);
SceKernelSuspendForDriver_D4958E6F
Version | NID |
---|---|
0.990.000-3.740.011 | 0xD4958E6F |
Dispatch handler registered by #SceKernelSuspendForDriver_CE7A2207.
SceUID SceKernelSuspendForDriver_D4958E6F(void *args);
sceKernelUnregisterSysEventHandlerForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0xDD61D621 |
Call with the id returned from suspend_register_handler
to remove the entry from the linked list and free the memory.
int sceKernelUnregisterSysEventHandlerForDriver(SceUID id);
sceKernelSysEventDispatchForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0xD4622EA8 |
This function goes through the linked list and calls each handler. If ppFailed
is set, then the first handler that returns a negative value stops the call chain and returns the block id of the handler that broke the chain. Otherwise, this function invokes each handler and returns 0.
typedef struct _SceKernelSysEventDispatchSuspendParam { SceSize size; SceUInt32 unk_0x04; SceUInt32 unk_0x08; SceUInt32 unk_0x0C; void *pSuspendContextBuffer; SceUInt32 unk_0x14; } SceKernelSysEventDispatchSuspendParam; typedef struct _SceKernelSysEventDispatchResumeParam { SceSize size; SceUInt32 unk_0x04; } SceKernelSysEventDispatchResumeParam; int sceKernelSysEventDispatchForDriver(SceUInt32 resume, SceUInt32 eventid, void *param, void **ppFailed);
sceKernelPowerTickForDriver
Version | NID |
---|---|
0.990.000-3.740.011 | 0xE0489831 |
Cancel specified idle timers to prevent entering in power save processing.
Returns 0 on success.
typedef enum SceKernelPowerTickType { /** Cancel all timers */ SCE_KERNEL_POWER_TICK_DEFAULT = 0, /** Cancel automatic suspension timer */ SCE_KERNEL_POWER_TICK_DISABLE_AUTO_SUSPEND = 1, /** Cancel OLED-off timer */ SCE_KERNEL_POWER_TICK_DISABLE_OLED_OFF = 4, /** Cancel OLED dimming timer */ SCE_KERNEL_POWER_TICK_DISABLE_OLED_DIMMING = 6 } SceKernelPowerTickType; int sceKernelPowerTickForDriver(int type);
SceKernelSuspendForDriver_1FA2F8F1
Version | NID |
---|---|
1.000.071-3.740.011 | 0x1FA2F8F1 |
Calls a power handler.
int SceKernelSuspendForDriver_1FA2F8F1(int a1, int a2);
SceKernelSuspendForDriver_F2B07167
Version | NID |
---|---|
2.100.081-3.740.011 | 0xF2B07167 |
Registers a global variable used by #sceKernelPowerTickForDriver.
int SceKernelSuspendForDriver_F2B07167(int a1);
SceKernelSuspendForDriver_B5C58EE8
Version | NID |
---|---|
2.100.081-3.740.011 | 0xB5C58EE8 |
Registers a global variable used by #sceKernelSysEventDispatchForDriver.
int SceKernelSuspendForDriver_B5C58EE8(int a1);
SceKernelSuspendForDriver_D6124071
Version | NID |
---|---|
2.100.081-3.740.011 | 0xD6124071 |
Registers a global variable used by #sceKernelSysEventDispatchForDriver.
int SceKernelSuspendForDriver_D6124071(int a1);
SceKernelSuspendForDriver_0DE3CC02
Version | NID |
---|---|
2.100.081-3.740.011 | 0x0DE3CC02 |
Registers a global variable used by #SceKernelSuspendForDriver_2BB92967.
int SceKernelSuspendForDriver_0DE3CC02(int a1);
SceKernelSuspendForDriver_4E5A3A23
Version | NID |
---|---|
2.100.081-3.740.011 | 0x4E5A3A23 |
Registers a global variable used by #SceKernelSuspendForDriver_4DF40893.
int SceKernelSuspendForDriver_4E5A3A23(int a1);
SceKernelSuspendForDriver_C00826AC
Version | NID |
---|---|
2.100.081-3.740.011 | 0xC00826AC |
Registers a global variable used by #SceKernelSuspendForDriver_4DF40893.
int SceKernelSuspendForDriver_C00826AC(int a1);
SceKernelSuspendForDriver_8B3F02B8
Version | NID |
---|---|
2.100.081-3.740.011 | 0x8B3F02B8 |
Registers a global variable used by #SceKernelSuspendForDriver_1FA2F8F1.
int SceKernelSuspendForDriver_8B3F02B8(int a1);
SceQafMgrForDriver
Provides many device permission checks including running app privilege checks, debugging enabled checks, and so on.
SceQafMgrForDriver_41E04800
Version | NID |
---|---|
0.931 | 0x4F20A014 |
3.60 | not present |
SceQafMgrForDriver_082A4FC2
Version | NID |
---|---|
0.931-3.60 | 0x082A4FC2 |
Temp name was sceSblQafMgrIsAllowHost0AccessForDriver. A potential name could be sceSblQafMgrIsAllowRemoteLoadForDriver.
Used by sceSblFwLoaderLockForDriver, SceKernelModulemgr, SceSysStateMgr and SceSblPostSsMgr.
Used by sceSblSpsfoMgrOpenForDriver.
When this flag is set, it allows for example to load some files from host0:, for example SPSFO and psp2config.skprx.
// (*(uint8_t *)(qaf + 0xE) & 1) int SceQafMgrForDriver_082A4FC2(void);
sceSblQafMgrIsAllowGameDebugForDriver
Version | NID |
---|---|
0.931-3.60 | 0x694D1096 |
This is a guessed name.
Only used by SceSblACMgr.
Might be something like sceSblQafMgrIsAllowUserAppDebug.
// (*(uint8_t *)(qaf + 0xB) & 4) int sceSblQafMgrIsAllowGameDebugForDriver(void);
SceQafMgrForDriver_0E588747
Version | NID |
---|---|
0.931-3.60 | 0x0E588747 |
Only used by SceRegistryMgr.
Returns true if the PSVita is an "Internal system".
// (*(uint8_t *)(qaf + 0xF) & 1) int SceQafMgrForDriver_0E588747(void);
SceSblQafMgrForDriver_4BC1883F
Version | NID |
---|---|
0.931-3.60 | 0x4BC1883F |
Like a sceSblQafMgrIsAllowPSPEmuDevelopmentForDriver.
// (*(uint8_t *)(qaf + 0x6) & 2) int SceSblQafMgrForDriver_4BC1883F(void);
sceSblQafMgrIsAllowSystemAppDebugForDriver
Version | NID |
---|---|
0.931-3.60 | 0xCAD47130 |
Used by SceDeci4pDtracep and SceSblACMgr.
If it returns false, syscalls debug trace printf is disabled.
// (*(uint8_t *)(qaf + 0xD) & 2) int sceSblQafMgrIsAllowSystemAppDebugForDriver(void);
sceSblQafMgrIsAllowKernelDebugForDriver
Version | NID |
---|---|
0.931-3.60 | 0x382C71E8 |
Used by SceKernelModulemgr, SceExcpmgr, SceCrashDump, SceHdmi, SceKernelBlueScreenOfDeath.
// (*(uint8_t *)(qaf + 0xD) & 1) int sceSblQafMgrIsAllowKernelDebugForDriver(void);
sceSblQafMgrIsAllowQAUpdateForDriver
Version | NID |
---|---|
0.931-3.60 | 0x3CB55F98 |
Only used by SceSblUpdateMgr.
// (*(uint8_t *)(qaf + 0xF) & 1) int sceSblQafMgrIsAllowQAUpdateForDriver(void);
sceSblQafMgrIsAllowForceUpdateForDriver
Version | NID |
---|---|
0.931-3.60 | 0x8C423C18 |
Only used by SceSblUpdateMgr.
// (*(uint8_t *)(qaf + 0xF) & 2) int sceSblQafMgrIsAllowForceUpdateForDriver(void);
SceQafMgrForDriver_52B4E164
Version | NID |
---|---|
0.931-3.60 | 0x52B4E164 |
Only used by SceWlanBt and SceEnumWakeUp.
// (*(uint8_t *)(qaf + 0xD) & 1) int SceQafMgrForDriver_52B4E164(void);
SceQafMgrForDriver_883E9465
Version | NID |
---|---|
0.931-3.60 | 0x883E9465 |
Temp name was sceSblQafMgrIsAllowDecryptedBootConfigLoadForDriver.
Used by SceSysStateMgr only.
Allows loading psp2config.skprx as plaintext format.
// (*(uint8_t *)(qaf + 0xE) & 1) int SceQafMgrForDriver_883E9465(void);
SceQafMgrForDriver_B9770A13
Version | NID |
---|---|
0.931-3.60 | 0xB9770A13 |
Needed to be enabled to work with DIPSW 251 (Enable "dummytty0:"). Needed by SceSysStateMgr to allow loading host0:psp2config.rpath
.
Used by SceKernelModulemgr and SceSysmodule.
// (*(uint8_t *)(qaf + 0xD) & 2) int SceQafMgrForDriver_B9770A13(void);
sceSblQafMgrIsAllowRemotePlayDebugForDriver
Version | NID |
---|---|
0.931-3.60 | 0xBFD5E463 |
// (*(uint8_t *)(qaf + 0xC) & 2) int sceSblQafMgrIsAllowRemotePlayDebugForDriver(void);
SceQafMgrForDriver_E573F124
Version | NID |
---|---|
0.931-3.60 | 0xE573F124 |
// (*(uint8_t *)(qaf + 0x0) & 0x10) int SceQafMgrForDriver_E573F124(void);
sceSblQafMgrIsAllowMarlinTestForDriver
Version | NID |
---|---|
1.03-3.60 | 0x10283EB8 |
// (*(uint8_t *)(qaf + 0xD) & 2) int sceSblQafMgrIsAllowMarlinTestForDriver(void);
sceSblQafMgrIsAllowNearTestForDriver
Version | NID |
---|---|
1.03-3.60 | 0x9644171D |
// (*(uint8_t *)(qaf + 0x6) & 2) int sceSblQafMgrIsAllowNearTestForDriver(void);
SceQafMgrForDriver_AE033133
Version | NID |
---|---|
3.60 | 0xAE033133 |
Only used by SceNpDrm.
// (*(uint8_t *)(qaf + 0x0) & 0x10) int SceQafMgrForDriver_AE033133(void);
SceQafMgrForDriver_DEC6DF4E
Version | NID |
---|---|
3.60 | 0xDEC6DF4E |
Only used by SceNpDrm.
// (*(uint8_t *)(qaf + 0xF) & 1) int SceQafMgrForDriver_DEC6DF4E(void);
sceSblQafMgrIsAllowPSPEmuShowQAInfoForDriver
Version | NID |
---|---|
3.60 | 0xB7B195B2 |
// (*(uint8_t *)(qaf + 0xF) & 1) int sceSblQafMgrIsAllowPSPEmuShowQAInfoForDriver(void);
sceSblQafMgrIsAllowLoadMagicGateForDriver
Version | NID |
---|---|
3.60 | 0x36E5312E |
// (*(uint8_t *)(qaf + 0xB) & 0x10) int sceSblQafMgrIsAllowLoadMagicGateForDriver(void);
sceSblQafMgrIsAllowDtcpIpResetForDriver
Version | NID |
---|---|
3.60 | 0xE8B8F31F |
// (*(uint8_t *)(qaf + 0x6) & 2) int sceSblQafMgrIsAllowDtcpIpResetForDriver(void);
sceSblQafMgrIsAllowControlIduAutoUpdateForDriver
Version | NID |
---|---|
3.60 | 0xF8BFEE48 |
// (*(uint8_t *)(qaf + 0x6) & 2) int sceSblQafMgrIsAllowControlIduAutoUpdateForDriver(void);
sceSblQafMgrIsAllowKeepCoreFileForDriver
Version | NID |
---|---|
3.60 | 0xC1EA75C8 |
// (*(uint8_t *)(qaf + 0xF) & 1) int sceSblQafMgrIsAllowKeepCoreFileForDriver(void);
SceQafMgrForDriver_70A67A4B
Version | NID |
---|---|
3.60 | 0x70A67A4B |
// (*(uint8_t *)(qaf + 0xF) & 1) int SceQafMgrForDriver_70A67A4B(void);
SceQafMgrForDriver_41E04800
Version | NID |
---|---|
3.60 | 0x41E04800 |
Only used by SceAppMgr.
// (*(uint8_t *)(qaf + 0xB) & 4) int SceQafMgrForDriver_41E04800(void);
SceQafMgrForDriver_7B14DC45
Version | NID |
---|---|
3.60 | 0x7B14DC45 |
Only used by SceAppMgr.
// (*(uint8_t *)(qaf + 0xD) & 2) int SceQafMgrForDriver_7B14DC45(void);
ScePmMgrForDriver
scePmMgrGetProductModeForDriver
Version | NID |
---|---|
0.931-3.60 | 0x2AC815A2 |
Returns 0 on success, 0x800f0a29 on failure.
Gets kbl_param using sceKernelSysrootGetKblParamForKernel.
result = ((int *)(kbl_param->boot_type_indicator_1) >> 2) & 1; // manufacturing mode flag
int scePmMgrGetProductModeForDriver(char* result);
scePmMgrIsExternalBootModeForDriver
Version | NID |
---|---|
3.60 | 0xBD1F193B |
Gets kbl_param using sceKernelSysrootGetKblParamForKernel.
return (int *)(kbl_param->boot_type_indicator_1) & 1; // external boot mode flag
int scePmMgrIsExternalBootModeForDriver(void);
SceSblAIMgrForDriver
sceSblAIMgrGetSMIForDriver
Version | NID |
---|---|
3.60 | 0x47D9CF13 |
SMI means Service / Manufacturing Information.
SMI is read from SceKblParam->min_fw_version.
int sceSblAIMgrGetSMIForDriver(SceUInt32 *pSMI);
sceSblAIMgrGetProductCodeForDriver
Version | NID |
---|---|
3.60 | 0x14345161 |
Temp name was sceSblAIMgrGetTargetIdForDriver.
Product Code = Target Id
int sceSblAIMgrGetProductCodeForDriver(void);
sceSblAIMgrGetProductSubCodeForDriver
Version | NID |
---|---|
3.60 | 0xB33CEC8F |
Product Sub Code = model revision
int sceSblAIMgrGetProductSubCodeForDriver(void);
sceSblAIMgrIsTestForDriver
Version | NID |
---|---|
3.60 | 0x3B638885 |
TEST = Internal Test Unit
Returns true if PsCode Product Code == 0x100.
int sceSblAIMgrIsTestForDriver(void);
sceSblAIMgrIsToolForDriver
Version | NID |
---|---|
3.60 | 0x274663A0 |
TOOL = DevKit
Returns true if PsCode Product Code == 0x101.
int sceSblAIMgrIsToolForDriver(void);
sceSblAIMgrIsDEXForDriver
Version | NID |
---|---|
3.60 | 0xF4B98F66 |
Returns true if PsCode Product Code == 0x102.
int sceSblAIMgrIsDEXForDriver(void);
sceSblAIMgrIsCEXForDriver
Version | NID |
---|---|
3.60 | 0xD78B04A2 |
Returns true if PsCode Product Code 0x103-0x111 AND sceSblAIMgrIsSpecialCEXForDriver returns false.
int sceSblAIMgrIsCEXForDriver(void);
sceSblAIMgrIsVITAForDriver
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0x4273B97B |
Returns sceSblAIMgrIsGenuineVITAForDriver. If the console is a PS TV, it returns false.
int sceSblAIMgrIsVITAForDriver(void);
sceSblAIMgrIsDolceForDriver
Version | NID |
---|---|
0.931.010-2.060.011 | not present |
2.100.081-3.740.011 | 0x71608CA3 |
Returns sceSblAIMgrIsGenuineDolceForDriver if returns true else returns sceKernelCheckDipswForDriver(0x98).
int sceSblAIMgrIsDolceForDriver(void);
sceSblAIMgrIsGenuineVITAForDriver
Version | NID |
---|---|
3.60 | 0x963CA644 |
Returns true if:
- PsCode Product Code <= 0x111 AND sceSblAIMgrIsGenuineDolceForDriver returns false
- sceSblAIMgrIsSpecialCEXForDriver returns true AND HardwareInfo != 0x700000 != 0x720000 != 0x510000
int sceSblAIMgrIsGenuineVITAForDriver(void);
sceSblAIMgrIsGenuineDolceForDriver
Version | NID |
---|---|
3.60 | 0xC6E83F34 |
int sceSblAIMgrIsGenuineDolceForDriver(void);
sceSblAIMgrIsDiagForDriver
Version | NID |
---|---|
3.60 | 0x6D5A3FC9 |
Temp name was sceSblAIMgrIsSpecialCEXForDriver, sceSblAIMgrIsCEXJpFatForDriver.
Returns true if PsCode Product Code == 0x103 (Japan), PsCode Product Sub Code == 0x10 (FAT chassis) and PsCode Factory Code == 0x24 (SCE labs).
int sceSblAIMgrIsDiagForDriver(void);
sceSblAIMgrIsToolDVT1ForDriver
Version | NID |
---|---|
0.931-3.60 | 0xBB9D146B |
Returns true if PsCode Product Code == 0x101 and PsCode Product Sub Code == 3.
int sceSblAIMgrIsToolDVT1ForDriver(void);
sceSblAIMgrIsToolRev4ForDriver
Version | NID |
---|---|
3.60 | 0x37A79140 |
Returns true if PsCode Product Code == 0x101 and PsCode Product Sub Code == 4.
int sceSblAIMgrIsToolRev4ForDriver(void);
sceSblAIMgrIsToolDVT2ForDriver
Version | NID |
---|---|
3.60 | 0xE5E47FF7 |
Returns true if PsCode Product Code == 0x101 and PsCode Product Sub Code == 5.
int sceSblAIMgrIsToolDVT2ForDriver(void);
sceSblAIMgrIsCEXPrototypeRev2ForDriver
Version | NID |
---|---|
3.60 | 0xFF5784B9 |
Returns true if PsCode Product Code == 0x103 and PsCode Product Sub Code == 2.
int sceSblAIMgrIsCEXPrototypeRev2ForDriver(void);
sceSblAIMgrIsCEXPrototypeRev7ForDriver
Version | NID |
---|---|
3.60 | 0x05F79D4A |
Returns true if PsCode Product Code == 0x103 and PsCode Product Sub Code == 7.
int sceSblAIMgrIsCEXPrototypeRev7ForDriver(void);
SceProcEventForDriver
sceKernelUnregisterProcEventHandlerForDriver
Version | NID |
---|---|
3.60 | 0x3DED57CC |
Temp name was sceProcEventDeleteUidForDriver.
Wrapper to sceGUIDCloseForDriver.
int sceKernelUnregisterProcEventHandlerForDriver(int uid);
sceKernelRegisterProcEventHandlerForDriver
Version | NID |
---|---|
0.990-3.60 | 0x2A43912D |
Temp name was sceProcEventCreateEventForDriver.
Uses sceKernelCreateEventForDriver.
Returns uid.
typedef struct SceProcEventInvokeParam1 { SceSize size; // SceProcEventInvokeParam1 struct size : 0x10 int unk_0x04; int unk_0x08; int unk_0x0C; } SceProcEventInvokeParam1; typedef struct SceProcEventInvokeParam2 { SceSize size; // SceProcEventInvokeParam2 struct size : 0x14 SceUID pid; int unk_0x08; int unk_0x0C; int unk_0x10; } SceProcEventInvokeParam2; typedef struct SceProcEventHandler { SceSize size; // SceProcEventHandler struct size : 0x1C int (* create)(SceUID pid, SceProcEventInvokeParam2 *pParam, void *pCommon); int (* exit)(SceUID pid, SceProcEventInvokeParam1 *pParam, void *pCommon); // current process exit int (* kill)(SceUID pid, SceProcEventInvokeParam1 *pParam, void *pCommon); // by SceShell int (* suspend)(SceUID pid, int phase, SceProcEventInvokeParam1 *pParam, void *pCommon); int (* resume)(SceUID pid, int phase, SceProcEventInvokeParam1 *pParam, void *pCommon); int (* event_notify)(int evtype, int phase, SceProcEventInvokeParam2 *pParam, void *pCommon); //for arbitrary event types } SceProcEventHandler; /*** * Registers a process event handler * * @param[in] name - Name of the event handler * @param[in] pHandler - Pointer to the handler structure * @param[in] pCommon - Arbitrary data passed to handlers * * @return Positive on success, < 0 on error. * @note Event handler pointers in pHandler may be NULL. */ SceUID sceKernelRegisterProcEventHandlerForDriver(const char *name, SceProcEventHandler *pHandler, void *pCommon);
sceKernelInvokeProcEventHandlerForDriver
Version | NID |
---|---|
3.60 | 0x414CC813 |
Walks the list of registered process event handlers and invokes the ones related to the signaled event.
//Event type constants (for evtype parameter) #define CREATE_EVENT 1 //<! Call create() handlers #define EXIT_EVENT 2 //<! Call exit() handlers #define KILL_EVENT 3 //<! Call kill() handlers #define SUSPEND_EVENT 4 //<! Call suspend() handlers #define RESUME_EVENT 5 //<! Call resume() handlers //All other values result in event_notify() handlers being called /*** * Invoke process event handlers * * @param[in] process - PID of the process for which event happened * @param[in] evtype - Event type * @param[in] phase - Unknown * @param[in] pParam - Pointer to handler parameter * @param[out] pFailer - Pointer to a variable that receives UID of a failing handler. May be NULL. * @param[in] stop - GUID of a handler that should stop execution * * @return Positive number on success, < 0 on error. * Corresponds to the last executed handler's return value (or SCE_OK if none were executed). * * @note process, pFailer and stop are unofficial argument names * * Invocation is performed by walking the list in order (from first to last registered handler): * - If the GUID of the handler matches the "stop" parameter, the handle is NOT executed and the function returns. * This can be used to ensure only process event handlers registered before a specific one are executed. * - If the handler has no function pointer corresponding to the evtype, execution continues with the next handler. * - If the handler has a function pointer corresponding to the evtype, the function is called with the appropriate * arguments. If the return value is positive, execution continues with the next handler. If the return value is * negative, the handler has failed, the GUID of the failing handler is saved in *pFailer if non-NULL and the function * returns directly. */ int sceKernelInvokeProcEventHandlerForDriver(ScePID pid, int evtype, int phase, void* pParam, SceUID *pFailer, SceUID stop);
SceDebugLed
sceKernelGetGPI
Version | NID |
---|---|
3.60 | 0x14F582CF |
int sceKernelGetGPI(void);
sceKernelSetGPO
Version | NID |
---|---|
3.60 | 0x78E702D3 |
/** * @brief Output to LED * * This sets the content displayed on the DevKit LED. * @param[in] uiBitd Bit pattern. only low-order 8 bits are valid. */ int sceKernelSetGPO(SceUInt32 uiBits);
call_cb74
Version | NID |
---|---|
3.60 | 0x2B6EABAD |
void call_cb74(int a1, int a2, int a3, int a4);
call_cb78
Version | NID |
---|---|
3.60 | 0x0E6B9890 |
void call_cb78(int a1, int a2, int a3, int a4);
SceDebugLedForDriver
GPI stands for General Purpose Input, and GPO stands for General Purpose Output.
sceKernelGetGPIForDriver
Version | NID |
---|---|
3.60 | 0x14F582CF |
Only SceDebugLedForDriver function used by SceCoredump.
int sceKernelGetGPIForDriver(void);
sceKernelSetGPIForDriver
Version | NID |
---|---|
3.60 | 0x51C5325A |
int sceKernelSetGPIForDriver(int value);
sceKernelGetGPOForDriver
Version | NID |
---|---|
3.60 | 0x3BB289F7 |
int sceKernelGetGPOForDriver(void);
sceKernelSetGPOForDriver
Version | NID |
---|---|
3.60 | 0x78E702D3 |
int sceKernelSetGPOForDriver(SceUInt32 uiBits);
sceKernelSetGPOMaskForDriver
Version | NID |
---|---|
3.60 | 0x098473B0 |
sceKernelSetGPOMaskForDriver(int a1, int a2);
call_cb74
Version | NID |
---|---|
3.60 | 0x2B6EABAD |
void call_cb74(int a1, int a2, int a3, int a4);
set_cb74
Version | NID |
---|---|
3.60 | 0x24173819 |
int set_cb74(void *cb);
call_cb78
Version | NID |
---|---|
3.60 | 0x0E6B9890 |
void call_cb78(int a1, int a2, int a3, int a4);
set_cb78
Version | NID |
---|---|
3.60 | 0xF62154E7 |
int set_cb78(void *cb);
SceDebugForKernel
sceKernelDebugModuleStart2ForKernel
Version | NID |
---|---|
0.931-3.60 | 0xF624CE22 |
int sceKernelDebugModuleStart2ForKernel(void);
sceKernelRegisterKprintfHandlerForKernel
Version | NID |
---|---|
0.931-3.60 | 0x10067B7B |
Temp name was sceDebugSetHandlersForKernel.
int sceKernelRegisterKprintfHandlerForKernel(int (* handler)(int unk, const char *format, va_list args), void *argp);
sceKernelGetDebugPutcharHandlerForKernel
Version | NID |
---|---|
3.60 | 0xE783518C |
This is guessed name.
Temp name was sceDebugGetPutcharHandlerForKernel, sceKernelGetDebugPutcharForKernel.
Returns pointer to current debug putchar handler.
void *sceKernelGetDebugPutcharHandlerForKernel(void);
sceKernelRegisterDebugPutcharHandlerForKernel
Version | NID |
---|---|
3.60 | 0xE6115A72 |
Temp name was sceDebugRegisterPutcharHandlerForKernel, sceKernelRegisterDebugPutcharForKernel.
Set debug print char handler.
int sceKernelRegisterDebugPutcharHandlerForKernel(int (* handler)(void *args, char c), void *args);
sceKernelDebugPutcharForKernel
Version | NID |
---|---|
0.931-3.60 | 0x82D2EDCE |
Temp name was sceDebugPutcharForKernel.
Print character to uart.
Return 1.
int sceKernelDebugPutcharForKernel(char c);
sceKernelTtyPutcharForKernel
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x254A4997 |
This is a guessed name.
Prints a character to the 0x1000-byte buffer returned by SceSysmem#sceKernelGetTtyInfoForDriver.
On success, returns printed size (always 1).
int sceKernelTtyPutcharForKernel(char c);
sceKernelStoppedForKernel
Version | NID |
---|---|
0.931-0.990 | 0xF1F0C365 |
3.60 | not present |
int sceKernelStoppedForKernel(const char *pFile, const char *pFunc, int line);
panic_on_kernel_exception
Version | NID |
---|---|
0.931 | not present |
3.60 | 0x082B8D6A |
3.65 | 0xCCABDD98 |
Prints information about a Kernel Exception, ?and certainly calls SceCoredump?, then calls SceSysrootForKernel_0DF574A9 in an infinite loop.
This function doesn't return.
See SceExcpmgr#sceKernelRegisterExceptionHandlerForKernel for the meaning of excpcode.
// excp_name can be: // UNDEF - Undefined instruction // PABT - Prefetch Abort // DABT - Data Abort // NEST - Nested? Same excpcode as UNDEF void panic_on_kernel_exception(SceKernelDebugInfo *dbginfo, SceExcpmgrExceptionContext *excp_ctx, int excpcode, const char *excp_name);
register_unk_handler
Version | NID |
---|---|
0.931 | not present |
3.60 | 0x66D82EC8 |
used by SceDeci4pSDbgp.
handler definition:
handler(int some_level, void *unk, const void *buf);
int register_unk_handler(void *handler);
sceKernelEnableCrashDumpForKernel
Version | NID |
---|---|
0.931.010-1.81 | not present |
2.000.081-3.610.011 | 0xF857CDD6 |
3.630.011-3.740.011 | 0xA465A31A |
This is a guessed name. Temp name was sceDebugDisableInfoDumpForKernel, sceKernelEnableInfoDumpForKernel.
Returns previous crash dump state.
int sceKernelEnableCrashDumpForKernel(SceBool enable);
register_log_buffer
Version | NID |
---|---|
0.931 | 0x4703ECC4 |
3.60 | not present |
int register_log_buffer(const void *log_buffer_addr, SceSize log_buffer_size);
start_logging
Version | NID |
---|---|
0.931 | 0x4C377B11 |
3.60 | not present |
Returns 1 if logging has been started successfully, -1 else.
int start_logging(int state);
stop_logging
Version | NID |
---|---|
0.931 | 0x604F56AE |
3.60 | not present |
If state is not zero, stops logging and return 1, else does nothing and return 0.
Returns 1 if logging has been stopped, 0 else.
int stop_logging(void);
refresh_logs
Version | NID |
---|---|
0.931 | 0x04A3046D |
3.60 | not present |
int refresh_logs(void);
_sceKernelPrintDebugLogForKernel
Version | NID |
---|---|
0.931 | 0xEFDE973B |
3.60 | not present |
If a2 is not zero, the current log buffer address is updated, else it is unchanged.
maxNum is guessed to be either the number of entries or the index of the chosen entry. Entry size is 0x40 bytes.
Uses sceKernelPrintfLevelForDriver to print.
int _sceKernelPrintDebugLogForKernel(int a1, int a2, int maxNum);
sceKernelPrintDebugLogForKernel
Version | NID |
---|---|
0.931 | 0xBD5D0BB0 |
3.60 | not present |
Calls _sceKernelPrintDebugLogForKernel with maxNum = (log_buf_end - log_buf_start) / 0x40.
int sceKernelPrintDebugLogForKernel(int a1, int a2);
print_with_log_buffer
Version | NID |
---|---|
0.931 | 0x904FF72D |
3.60 | not present |
int print_with_log_buffer(const char *string, SceSize maxlen);
sceKernelPrintfCore0ForKernel
Version | NID |
---|---|
0.931 | 0x2D7380FE |
3.60 | not present |
Same as sceKernelPrintfForDriver but only prints if CPU ID is 0.
int sceKernelPrintfCore0ForKernel(const char *fmt, ...);
sceKernelPrintfLevelCore0ForKernel
Version | NID |
---|---|
0.931 | 0x14241F51 |
3.60 | not present |
Same as sceKernelPrintfLevelForDriver but only prints if CPU ID is 0.
int sceKernelPrintfLevelCore0ForKernel(int level, const char *fmt, ...);
sceKernelSetDebugLevelForKernel
Version | NID |
---|---|
0.931-3.60 | 0xBE2C05A2 |
Temp name was sceKernelSetMinimumLogLevelForKernel.
SceUInt32 sceKernelSetDebugLevelForKernel(SceUInt32 dbgLevel);
sceKernelGetDebugLevelForKernel
Version | NID |
---|---|
0.931 | 0xDA6B6770 |
3.60 | not present |
Temp name was sceKernelGetMinimumLogLevelForKernel.
Returns the dbgLevel set by sceKernelSetDebugLevelForKernel.
SceUInt32 sceKernelGetDebugLevelForKernel(void);
sceKernelSetAssertLevelForKernel
Version | NID |
---|---|
0.931-3.60 | 0xCE9060F1 |
Temp name was sceKernelSetMinimumAssertionLevelForKernel.
Overrides in memory g_assertLevel set by DIP switches 201 and 202.
Returns the previous assert level.
SceInt32 sceKernelSetAssertLevelForKernel(SceUInt32 assertLevel);
sceKernelGetAssertLevelForKernel
Version | NID |
---|---|
0.931 | 0x374B7868 |
0.990-3.60 | not present. Present in #SceDebugForDriver. |
Temp name was sceKernelGetMinimumAssertionLevelForKernel.
Returns g_assertLevel from memory.
SceInt32 sceKernelGetAssertLevelForKernel(void);
SceDebugForKernel_BEF921A2
Version | NID |
---|---|
0.931 | not present |
3.60-3.61 | 0xBEF921A2 |
3.63 | 0x5D6F0CFC |
// buf size is 0x1000 bytes // buf_400 size is 0x400 bytes SceSSize SceDebugForKernel_BEF921A2(void *dst, int cpuId, SceUInt64 time, SceKernelDebugInfo *dbginfo, const void *excp_info_buf_0x400, int excpcode);
add_entry
Version | NID |
---|---|
0.931-0.990 | 0x1208240D |
3.60 | not present |
// ex: add_entry(0xA1, in_lr, 3, name); in SceSysmem // ex: add_entry(0xAB, in_lr, 1, uid); in SceSysmem // ex: add_entry(0xBB, in_lr, 0, param_4); in SceProcessmgr int add_entry(SceSize maxlen, int a2, int a3, void *log_buffer_start);
add_entry2
Version | NID |
---|---|
0.931 | 0x061A4657 |
3.60 | not present |
int add_entry2(int a1, const char *msg, void *log_buffer_start, int a4);
sceDebugRegisterBacktraceInternalForKernel
Version | NID |
---|---|
0.931-3.610.011 | 0xEFF9962B |
3.630.011-3.740.011 | 0x91E7D24F |
This is a guessed name.
Registers a callback for SceKernelModulemgr#sceKernelBacktraceInternalForDriver.
If callback runs successfully (returns >= 0), value of pNumReturn is used as third argument of PrintBacktrace, else PrintBacktrace is not called at all.
int sceDebugRegisterBacktraceInternalForKernel(int (* callback)(SceUID threadId, SceKernelCallFrame *pCallFrameBuffer, SceSize numBytesBuffer, SceUInt32 *pNumReturn, SceInt32 mode));
sceDebugRegisterPrintBacktraceForKernel
Version | NID |
---|---|
0.931-3.60 | 0xB5943011 |
This is a guessed name.
Registers a callback for SceKernelModulemgr#sceKernelPrintBacktraceForDriver.
int sceDebugRegisterPrintBacktraceForKernel(int (* callback)(SceUID processId, const SceKernelCallFrame *pCallFrame, SceUInt32 numFrames));
sceKernelPrintSyscallFrameForKernel
Version | NID |
---|---|
3.60 | 0x25E31E18 |
3.65 | 0xBCC8D0B2 |
// if pSyscallFrame is NULL, it will use the current syscall frame // pResult is a pointer to a 0x10 bytes buffer and may be NULL void sceKernelPrintSyscallFrameForKernel(SceUID pid, SceSyscallFrame *pSyscallFrame, SceUInt32 *pResult);
SceDebugForKernel_F1F861CF
Version | NID |
---|---|
2.00-3.60 | 0xF1F861CF |
Registers a callback that is called when a crash occur.
Used by SceKernelBlueScreenOfDeath.
int SceDebugForKernel_F1F861CF(void *cb);
SceDebugForKernel_1526DD83
Version | NID |
---|---|
3.20 | 0x1526DD83 |
Register sceEventLogPutForDriver internal callback.
SceDebugForDriver
If AllowKernelDebug QA flag is not set, calls to functions with non-zero SceKernelDebugLevel are ignored.
sceKernelPrintfForDriver
Version | NID |
---|---|
0.931-3.60 | 0x391B74B7 |
Temp name was sceDebugPrintfForDriver.
int sceKernelPrintfForDriver(const char *fmt, ...);
sceKernelVprintfForDriver
Version | NID |
---|---|
0.931-3.60 | 0x411C0733 |
int sceKernelVprintfForDriver(const char *fmt, va_list arg);
sceKernelPrintfLevelForDriver
Version | NID |
---|---|
0.931-3.60 | 0x1A3F2AA4 |
int sceKernelPrintfLevelForDriver(SceUInt32 level, const char *fmt, ...);
sceKernelVprintfLevelForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x611A158B |
int sceKernelVprintfLevelForDriver(SceUInt32 level, const char *fmt, va_list arg);
sceKernelPrintfLevelWithInfoForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0xD9703808 |
This is a guessed name.
Temp name was sceKernelPrintfLevelWithCtxForDriver.
int sceKernelPrintfLevelWithInfoForDriver(SceUInt32 level, int flags, const SceKernelDebugInfo *dbginfo, const char *fmt, ...);
sceKernelPrintfWithInfoForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x02B04343 |
This is a guessed name.
Temp name was sceDebugPrintf2ForDriver, sceKernelVprintfLevelWithCtxForDriver.
int sceKernelPrintfWithInfoForDriver(SceUInt32 flags, const SceKernelDebugInfo *dbginfo, const char *fmt, ...);
sceKernelAssertForDriver
Version | NID |
---|---|
0.931-3.60 | 0x35A35322 |
Temp name was sceDebugPrintKernelAssertionForDriver.
Condition 0 can trigger "kernel stopped".
// 0.931-0.990: // addr is maybe not an argument but the stack pointer got within the function int sceKernelAssertForDriver(SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr); // 3.60: int sceKernelAssertForDriver(SceBool condition, const SceKernelDebugInfo *dbginfo, const void *addr);
sceKernelAssertLevelForDriver
Version | NID |
---|---|
0.931-3.60 | 0xFD753E7A |
// 0.931-0.990: int sceKernelAssertLevelForDriver(int level, SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr); // 3.60: int sceKernelAssertLevelForDriver(int level, SceBool condition, const SceKernelDebugInfo *dbginfo, const void *addr);
sceKernelPrintfAssertLevelForDriver
Version | NID |
---|---|
0.931 | not present |
0.990-3.60 | 0x821A2D59 |
This is a guessed name.
Temp name was sceDebugPrintfKernelAssertionForDriver, sceKernelVprintfAssertLevelForDriver.
// 0.990: int sceKernelPrintfAssertLevelForDriver(SceUInt32 level, SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr, const char *fmt, va_list arg); // 3.50-3.60: int sceKernelPrintfAssertLevelForDriver(SceUInt32 level, SceBool condition, const SceKernelDebugInfo *dbginfo, const void *lr, const char *fmt, ...);
sceKernelGetAssertLevelForDriver
Version | NID |
---|---|
0.931 | not present. Present in #SceDebugForKernel. |
0.990-3.60 | 0x374B7868 |
Temp name was sceKernelGetMinimumAssertionLevelForDriver.
Returns g_assertLevel from memory.
SceInt32 sceKernelGetAssertLevelForDriver(void);
sceKernelPanicForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x391B5B74 |
Temp name was sceDebugPrintKernelPanicForDriver.
int sceKernelPanicForDriver(const SceKernelDebugInfo *dbginfo, const void *addr);
sceKernelPrintfPanicForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x00CCE39C |
void sceKernelPrintfPanicForDriver(const SceKernelDebugInfo *dbginfo, const void *addr, const char *fmt, ...);
sceKernelGetDebugTailLogForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x62466B0A |
Temp name was sceKernelGetTtyInfoForDriver.
Gets tty tail log.
// max bufSize is 0x1000 int sceKernelGetDebugTailLogForDriver(void *pBuf, SceSize bufSize);
_sceEventLogPutForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x95B38C6C |
Derived from SceVshBridge#_vshEventLogPut.
Calls SceSysmem#sceEventLogPutForDriver with KERNEL PID and SceSysmem#SceSysrootForKernel_D441DC34 return value as second argument.
// id: 10001 (SceProcessmgr), 20001 (SceWlanBt) // index: 1, 2, 3, 4, 5 (SceProcessmgr), 1, 2, 3, 4 (SceWlanBt) // a3: 0 (SceProcessmgr, SceWlanBt) // bufSize: 0x1C (SceProcessmgr), 4 (SceWlanBt) // max bufSize is 0x80 int _sceEventLogPutForDriver(int id, int index, int a3, void *pBuf, SceSize bufSize);
sceEventLogPutForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x912CF2BA |
This is a guessed name.
// max bufSize is 0x80 int sceEventLogPutForDriver(SceUInt32 pid, int a2, int id, int index, int a5, void *pBuf, SceSize bufSize);
sceKernelGetEventLogForDriver
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0xCC5365D3 |
Temp name was sceEventLogGetInfoForDriver.
Copy by blocks of 0x30 bytes (or maybe 0xC0 bytes).
// max bufSize is 0xC00 (0x40 blocks of size 0x30) int sceKernelGetEventLogForDriver(SceKernelDebugEventLog *pBuf, SceSize bufSize, SceSize *pReadBlocks);
SceSysmemForTZS
sceKernelProcModeVAtoPAForTZS
Version | NID |
---|---|
0.931 | 0x119B9547 |
0.990-3.73 | not present |
int sceKernelProcModeVAtoPAForTZS(SceUID pid, uint32_t mode, void *pVA, void **pPA);
sceKernelAllocPartitionStackMemBlockForTZS
Version | NID |
---|---|
0.931 | 0x69022B7F |
0.990-3.73 | not present |
sceKernelGetPhyPageResetForTZS
Version | NID |
---|---|
0.940-1.80 | 0x3FEF6B39 |
3.60-3.73 | not present |
sceKernelDeleteHeapForTZS
Version | NID |
---|---|
0.931-3.60 | 0x624454BC |
sceKernelCreateHeapForTZS
Version | NID |
---|---|
0.931-3.60 | 0x56A16D84 |
sceKernelAllocHeapMemoryWithOptionForTZS
Version | NID |
---|---|
0.931-3.60 | 0xEA712806 |
sceKernelAllocHeapMemoryForTZS
Version | NID |
---|---|
0.931-3.60 | 0x473871D8 |
sceKernelFreeHeapMemoryForTZS
Version | NID |
---|---|
0.931-3.60 | 0x42FB5B12 |
sceKernelAllocUncacheHeapMemoryForTZS
Version | NID |
---|---|
0.940-3.60 | 0x29DE887D |
sceKernelAllocUncacheHeapMemoryWithOptionForTZS
Version | NID |
---|---|
0.931-3.60 | 0x6A3FBAF0 |
sceKernelFreeUncacheHeapMemoryForTZS
Version | NID |
---|---|
0.931-3.60 | 0x2F18E288 |
sceKernelNameHeapDeleteForTZS
Version | NID |
---|---|
0.990-3.60 | 0xF459D09D |
sceKernelNameHeapInsertForTZS
Version | NID |
---|---|
0.990-3.60 | 0x42AD34AB |
sceKernelSetSuspendIntrFuncForTZS
Version | NID |
---|---|
0.940-1.80 | 0xB4306D21 |
3.60-3.73 | not present |
sceKernelSetResumeIntrFuncForTZS
Version | NID |
---|---|
0.940-1.80 | 0x418111B0 |
3.60-3.73 | not present |
sceKernelAddressSpaceUnmapForTZS
Version | NID |
---|---|
0.940-3.60 | 0x31273DC7 |
sceKernelGetMemBlockBaseForTZS
Version | NID |
---|---|
0.931-3.60 | 0xE1DEDFF4 |
/** * @brief Get mapped base address of memory block. * * Get base address of memory block. * @param[in] uid block id * @param[out] ppBase base address of memory block * @retval SCE_OK success * @retval <SCE_OK Error */ int sceKernelGetMemBlockBaseForTZS(SceUID uid, void **ppBase);
sceKernelFreeMemBlockForTZS
Version | NID |
---|---|
0.940-3.60 | 0x658EACE3 |
sceKernelAllocMemBlockForTZS
Version | NID |
---|---|
0.940-3.60 | 0x402EB970 |
SceUID sceKernelAllocMemBlockForTZS(const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOptKernel *pOpt);
sceKernelAllocPartitionMemBlockForTZS
Version | NID |
---|---|
0.940-3.60 | 0x0028E26C |
Temp name was sceKernelAllocMemBlockForPidForTZS.
SceUID sceKernelAllocPartitionMemBlockForTZS(SceUID pid, const char *name, SceKernelMemBlockType type, SceSize vsize, const struct SceKernelAllocMemBlockOptKernel *pOpt);
sceKernelVAtoPAForTZS
Version | NID |
---|---|
0.931-3.60 | 0x1DEADF6C |
This will write the physical address for a virtual address pVA
to memory pointed to by ppPA
.
Returns <0 on error, values >=0 indicate success.
int sceKernelVAtoPAForTZS(void *pVA, void **ppPA);
sceKernelVARangeToPAVectorForTZS
Version | NID |
---|---|
0.931-3.60 | 0x9D43E416 |
sceKernelCreateAddressSpaceForTZS
Version | NID |
---|---|
0.931 | 0x21906368 |
0.990-3.73 | not present |
SceSysmemForTZS_038EAEEE
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x038EAEEE |
SceDipswForTZS
sceKernelCheckDipswForTZS
Version | NID |
---|---|
0.940-3.60 | 0xA98FC2FD |
SceUartForTZS
sceUartWriteForTZS
Version | NID |
---|---|
0.990-3.60 | 0x3AFD5E71 |
SceDebugForTZS
sceKernelDebugModuleStart2ForTZS
Version | NID |
---|---|
0.931 | 0x32E3D4B9 |
int sceKernelDebugModuleStart2ForTZS(void);
sceKernelRegisterKprintfHandlerForTZS
Version | NID |
---|---|
0.931 | 0x0AD558D5 |
int sceKernelRegisterKprintfHandlerForTZS(int (*kprintf)(const char *fmt, ...), const void *args);
sceKernelDebugPutcharForTZS
Version | NID |
---|---|
0.931 | 0xD36F27BA |
Print character.
int sceKernelDebugPutcharForTZS(char c);
sceKernelStoppedForTZS
Version | NID |
---|---|
0.931-0.990 | 0xCB502FD1 |
1.80 | not present |
int sceKernelStoppedForTZS(const char *maybe_pFile, const char *maybe_pFunc, int maybe_line);
sceKernelAssertForTZS
Version | NID |
---|---|
0.931-3.60 | 0x2F9B8AA8 |
// 0.931-0.990: int sceKernelAssertForTZS(SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr); // 3.60: int sceKernelAssertForTZS(SceBool condition, const SceKernelDebugInfo *dbginfo, const void *addr);
sceKernelAssertLevelForTZS
Version | NID |
---|---|
3.60 | 0x618F89E6 |
// 3.60: int sceKernelAssertLevelForTZS(int level, SceBool condition, const SceKernelDebugInfo *dbginfo, const void *addr);
sceKernelGetAssertLevelForTZS
Version | NID |
---|---|
3.60 | 0xF851BA4F |
Returns g_assertLevel from memory.
SceInt32 sceKernelGetAssertLevelForTZS(void);
_sceKernelPrintDebugLogForTZS
Version | NID |
---|---|
0.931 | 0x4FF6536C |
int _sceKernelPrintDebugLogForTZS(int a1, int a2, int maxNum);
sceKernelPrintDebugLogForTZS
Version | NID |
---|---|
0.931 | 0x85BF33E1 |
int sceKernelPrintDebugLogForTZS(int a1, int a2);
print_with_log_buffer
Version | NID |
---|---|
0.931 | 0x1FD92289 |
int print_with_log_buffer(const char *msg, SceSize maxlen);
sceKernelPrintfForTZS
Version | NID |
---|---|
0.931-1.80 | 0x1655E0E3 |
int sceKernelPrintfForTZS(const char *fmt, ...);
sceKernelPrintfLevelForTZS
Version | NID |
---|---|
0.931-1.80 | 0xC70CBB58 |
int sceKernelPrintfLevelForTZS(int level, const char *fmt, ...);
sceKernelPrintfCore0ForTZS
Version | NID |
---|---|
0.931 | 0x08F8AD70 |
Same as sceKernelPrintfForTZS but only prints if CPU ID is 0.
int sceKernelPrintfCore0ForTZS(const char *fmt, ...);
sceKernelPrintfLevelCore0ForTZS
Version | NID |
---|---|
0.931-1.80 | 0xD4E6A0C0 |
Same as sceKernelPrintfLevelForTZS but only prints if CPU ID is 0.
int sceKernelPrintfLevelCore0ForTZS(int level, const char *fmt, ...);
sceKernelSetMinimumLogLevelForTZS
Version | NID |
---|---|
0.931 | 0x898E417E |
/** * @brief Specifies the minimum severity level for the output of logging information. * * Specifies the minimum severity level for the output of logging information. The default level is SCE_DBG_LOG_LEVEL_TRACE. * * @param minimumLogLevel The minimum severity at which debugging messages should be output. * @retval SCE_OK The operation was completed successfully. * @retval Negative value Error code */ int sceKernelSetMinimumLogLevelForTZS(SceInt32 minimumLogLevel);
register_log_buffer
Version | NID |
---|---|
0.931 | 0xF2A87E96 |
int register_log_buffer(const void *log_buffer_addr, SceSize log_buffer_size);
start_logging
Version | NID |
---|---|
0.931 | 0x1FF65E15 |
int start_logging(int state);
stop_logging
Version | NID |
---|---|
0.931 | 0x5A35E3E0 |
If state is not zero, stops logging and return 1, else does nothing and return 0.
Returns 1 if logging has been stopped, 0 else.
int stop_logging(void);
refresh_logs
Version | NID |
---|---|
0.931 | 0x91B41C34 |
int refresh_logs(void);
add_entry
Version | NID |
---|---|
0.931 | 0x95E1A80B |
int add_entry(int a1, int a2, int a3, void *log_buffer_start);
add_entry2
Version | NID |
---|---|
0.931 | 0x538319EB |
int add_entry2(int a1, const char *msg, void *log_buffer_start, int a4);
register_unk_cb
Version | NID |
---|---|
0.931 | 0x3598118B |
The callback has this definition:
// unk: 2 or 3 int unk_cb(SceUID pid, void *buf, SceSize size, int *pOut, int unk);
If unk_cb runs successfully (return >= 0), pOut is used as third argument of unk_cb2, else unk_cb2 is not called at all.
int register_unk_cb(void *some_cb);
register_unk_cb2
Version | NID |
---|---|
0.931 | 0xE844FC5A |
0.990-3.60 | not present |
The callback has this definition:
int unk_cb2(SceUID pid, void *buf, int unk);
int register_unk_cb2(void *some_cb);
sceKernelPanicForTZS
Version | NID |
---|---|
0.931 | not present |
1.80-3.60 | 0x563B623D |
SceDebugForTZS_0D799DAE
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0x0D799DAE |
int SceDebugForTZS_0D799DAE(SceUInt32 msg_type, void *msg_ctx, const char *fmt, va_list arg);
SceDebugForTZS_D26EB4BB
Version | NID |
---|---|
0.931-0.990 | not present |
3.60 | 0xD26EB4BB |
int SceDebugForTZS_D26EB4BB(SceBool condition, SceUInt32 msg_type, void *msg_ctx, const char *fmt, ...);
SceCpuForTZS
- 0.931: 0xACA39932: unknown, save context that will be restored with 0xCA74C9A2
- 0.931: 0xCA74C9A2: unknown, restore context saved with 0xACA39932
- 0.931: 0xE0B34336: unknown, same as SceCpuForKernel_9D72DD1B
- 0.931-0.990: 0x40DEC1B6: sceKernelWaitForEvent
- 0.931-0.990: 0xF42F079B: sceKernelSendEvent
- 0.940: 0x1266F962: sceKernelAbort
- 0.931-0.940: 0x98BF47D3: sceKernelGetVmaccessRange
- 0.931: 0x49AD8B60: sceKernelSetFIQModeStack
- 0.931: 0xC2A428F3: sceKernelSetMonModeStack
- 0.931: 0xD9013440: sceKernelSetIRQModeStack
- 0.931: 0xDF17E4A3: sceKernelSetUndModeStack
- 0.931: 0xF832C341: sceKernelSetAbtModeStack
- 0.931: 0xFB1D3114: sceKernelSetSvcModeStack
- 0.931: 0xF6CE21EA: sceKernelPrintCpuMode
- 3.60: 0x31E78A4B: unknown
- 3.60: 0x4FED4BCE: unknown
- 3.60: 0x7548CBCF: unknown
- 3.60: 0xD4E7413D: unknown
1.80:
NID 0: 0x0A15B41C: sceKernelL1DcacheCleanInvalidateAll NID 1: 0x17A88E69: sceKernelL1DcacheCleanRange NID 2: 0x190D96D5: sceKernelDcacheCleanRange NID 3: 0x2A0A3DC6 NID 4: 0x2B6403F8: on FW 3.60, does nothing and returns -1. sceKernelCpuWaitL2Cache NID 5: 0x2FE24445: sceKernelCpuAtomicSet32 NID 6: 0x308D7ABE: sceKernelCpuDcacheInvalidateMVACRange NID 7: 0x324727D1: sceKernelGetCpsr NID 8: 0x39FCFCC2: sceKernelDomainTextMemcpy NID 9: 0x44C423D3: sceKernelCpuId NID 10: 0x49B11FF8 NID 11: 0x71FD9AB5: sceKernelSpinlockLowLock NID 12: 0x72CA4F7A: sceKernelGetSpsr NID 13: 0x75D87321: sceKernelCpuAtomicOrAndGet32 NID 14: 0x7A5373EB: sceKernelDcacheCleanInvalidateRange NID 15: 0x7CCE9480: sceKernelDcacheCleanInvalidateAll NID 16: 0x864E3DED NID 17: 0x9E4C0D0D: on FW 3.60, does nothing and returns -1 NID 18: 0xA5965CBF: sceKernelL1IcacheInvalidateEntireAllCore NID 19: 0xACF209F3: sceKernelSpinlockLowTrylockCpuSuspendIntr NID 20: 0xB421FAFD: sceKernelL1IcacheInvalidateRange NID 21: 0xB8F00FBE: sceKernelSpinlockLowUnlockCpuResumeIntr NID 22: 0xC4137AED: sceKernelPleFlushRequest NID 23: 0xCD98416C: sceKernelSpinlockLowUnlock NID 24: 0xCDD46655: sceKernelDcacheInvalidateRange NID 25: 0xD67A4356: sceKernelSpinlockLowLockCpuSuspendIntr NID 26: 0xEFD6F289: sceKernelCpuAtomicCompareAndSet8
SceSysclibForTZS
__stack_chk_fail
Version | NID |
---|---|
1.80-3.60 | 0xE5457B97 |
__stack_chk_guard
Version | NID |
---|---|
3.60 | 0xBA505B15 |
This is a variable.
strncpy
Version | NID |
---|---|
0.940-3.60 | 0x361850BB |
memcpy
Version | NID |
---|---|
0.931-3.60 | 0xBE3AF2EE |
memset
Version | NID |
---|---|
0.931-3.60 | 0x956DB750 |
SceSysrootForTZS
sceKernelSysrootBacktraceForTZS
Version | NID |
---|---|
0.931 | 0xF26A5E68 |
sceKernelSysrootPrintBacktraceForTZS
Version | NID |
---|---|
0.931 | 0x463EA380 |
sceKernelSysrootShowCallerInfoForTZS
Version | NID |
---|---|
0.931 | 0x2F3D9414 |
sceKernelSysrootGetModulePrivateForTZS
Version | NID |
---|---|
0.931-1.80 | 0xC9DD8EB3 |
sceKernelSysrootSetModulePrivateForTZS
Version | NID |
---|---|
0.931-1.80 | 0xEA572BD9 |
Version | NID |
---|---|
0.940-1.80 | 0x45EEB2E0 |
sceKernelSysrootGetKermitRevisionForTZS
Version | NID |
---|---|
0.940-1.80 | 0xDB3DAB76 |
Version | NID |
---|---|
0.931-3.60 | 0x1C96096F |
sceKernelSysrootCorelockLockForTZS
Version | NID |
---|---|
0.931-1.80 | 0xD653194A |
sceKernelSysrootGetVbaseMonitorVectorForTZS
Version | NID |
---|---|
0.931-1.80 | 0xD4E6D8E8 |
sceKernelSysrootGetKernelMMUContextForTZS
Version | NID |
---|---|
0.931-1.80 | 0xA8B7DAF9 |
sceKernelSysrootCorelockUnlockForTZS
Version | NID |
---|---|
0.931-1.80 | 0x2F5FD9A8 |
sceKernelSysrootGetVbaseResetVectorForTZS
Version | NID |
---|---|
0.931-1.80 | 0x2460ADFA |
sceKernelIsColdBootForTZS
Version | NID |
---|---|
0.940-1.80 | 0x0567B4B9 |
sceKernelIsSecureStateForTZS
Version | NID |
---|---|
0.940 | 0xEFA54B46 |
3.60 | not present |
sceKernelSysrootGetErnieWakeupFactorForTZS
Version | NID |
---|---|
0.940-1.80 | 0x8E871C6D |
sceKernelSysrootGetKblParamForTZS
Version | NID |
---|---|
0.931-1.80 | 0x29C1049E |
Returns pointer to KBL Param buffer.
void *sceKernelSysrootGetKblParamForTZS(void);
sceKernelSysrootAllocForTZS
Version | NID |
---|---|
0.940-1.80 | 0x1A9E1D28 |
void *sceKernelSysrootAllocForTZS(uint32_t size);
sceKernelSysrootGetModelInfoForTZS
Version | NID |
---|---|
3.60 | 0xD6FBF445 |
This is guessed name.
sceSysrootGetSessionIdForTZS
Version | NID |
---|---|
3.60 | 0xCC36643A |
This is guessed name.
sceKernelSysrootGetSleepFactorForTZS
Version | NID |
---|---|
3.60 | 0x7DA87A7F |
This is guessed name.
sceKernelSysrootGetCoredumpEncryptionKeyForTZS
Version | NID |
---|---|
3.60 | 0x32546BDB |
This is guessed name.
SceQafMgrForTZS
sceSblQafManagerIsAllowKernelDebugForTZS
Version | NID |
---|---|
0.990-1.80 | 0x54D22D74 |
return *(char *)(sceKernelSysrootGetKblParamForTZS() + 0x2D) & 1;
ScePmMgrForTZS
sceSblPmMgrGetProductModeForTZS
Version | NID |
---|---|
0.990-3.60 | 0xCF554E69 |
SceSblAIMgrForTZS
sceSblAIMgrIsCEXForTZS
Version | NID |
---|---|
0.990-3.60 | 0x536B38F4 |