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
Types
typedef struct SceKernelVARange SceKernelVARange;
typedef struct SceKernelBootArgs SceKernelBootArgs;
typedef struct SceSysrootProcessHandler SceSysrootProcessHandler;
typedef struct SceSysrootModulemgrHandlers SceSysrootModulemgrHandlers;
typedef struct SceSysrootForKernel_D29BCA77_struct SceSysrootForKernel_D29BCA77_struct;
typedef struct SceSysrootForKernel_733C243E_struct SceSysrootForKernel_733C243E_struct;
typedef SceUInt32 SceCachedSecureModule;
#define SCE_CACHED_SECURE_MODULE_GCAUTHMGR 0 // os0:sm/gcauthmgr_sm.self
#define SCE_CACHED_SECURE_MODULE_RMAUTH 1 // os0:sm/rmauth_sm.self
#define SCE_CACHED_SECURE_MODULE_ENDEC_W_PORTABILITY 2 // os0:sm/encdec_w_portability_sm.self
typedef struct SceCachedSecureModuleInfo { // size is 0xC
SceSize size; // Size of this structure
void *pSelfData; // Virtual address of the SM
SceSize selfSize; // Size of the SM
} SceCachedSecureModuleInfo;
#define SCE_SYSROOT_INIT_CALLBACK_MAX_FUNC (9)
#define SCE_SYSROOT_INIT_CALLBACK_MAX_SLOT (8)
typedef struct SceUIDSysrootObject { // size is 0x41C on FW 3.60-3.65
void *object;
SceClass *sce_class;
SceSize size; // Size of this structure
SceUInt32 magic1;
int cpu_intr;
SceSize boot_alloc_memory_size; // 0x400
void *boot_alloc_memory; // used by boot time malloc
int unk_0x1C; // 0x4
void *unk_0x20; // size is 0x80-bytes
SceUInt32 boot_flags; // 0x10 for coldboot, 0x1 for secure state
SceUInt32 status;
SceCorelockContext corelock_context;
// start ModulePrivate
int unk_0x34; // ex:0
int unk_0x38; // ex:0
void *unk_0x3C; // size is 4 byte
void *unk_0x40; // Related to SceHeap. Size is 0xDC byte.
SceExcpmgrData *ExcpmgrData; // Same as value returned by sceKernelGetExcpDataForKernel
void *unk_0x48; // ?SceKernelIntrMgr data VA?
void *unk_0x4C;
void *unk_0x50;
int unk_0x54; // ex:0
void *unk_0x58;
int unk_0x5C; // ex:0
int unk_0x60; // ex:0
int unk_0x64; // ex:0
int unk_0x68; // Used by Tzs SceSblSmsched
// end ModulePrivate
SceKblParam *kbl_param;
SceKernelBootArgs *boot_args;
SceUInt32 soc_revision;
SceUInt32 pervasive_unk_dword; // read from physical address 0xE3100004 (ScePervasiveMisc + 0x4). ex: 0
SceUInt32 kermit_revision;
SceUInt32 model_info;
SceUInt32 model_capability;
void *longtime5base;
int cpu_intr_for_init_callback;
SceUInt32 init_callback_registable_base_number;
struct {
int (* callback)(int a1, void *args);
void *args;
} init_callback_slot[SCE_SYSROOT_INIT_CALLBACK_MAX_FUNC][SCE_SYSROOT_INIT_CALLBACK_MAX_SLOT];
int (* sceKernelSysrootThreadMgrStartAfterProcess)(void);
int (* sceKernelSysrootIofilemgrStart)(void);
void *unk_0x2DC;
void *unk_0x2E0;
char *sysroot_names[9];
SceUID this_object_uid;
void *unk_0x30C; // size is 0x2C-bytes, maybe guid entry heap object
void *unk_0x310;
void *unk_0x314;
void *VBAR;
void *MVBAR;
void *unk_0x320;
void **unk_func_0x324; // SceSblACMgr
#if SCE_SDK_VERSION >= 0x3630000
int (* sceKernelSysrootAppMgrFunction1)(int a1, int a2, int a3, int a4, int a5, int a6); // SceAppMgr + 0x2795, SceAppMgrForDriver_324DD34E
SceUID (* sceKernelSysrootGetShellPid)(void);
// offset: 0x330
#endif
SceUID (* sceKernelSysrootGetThreadId)(void);
int (* sceKernelSysrootThreadFunction3)(void); // Temp name, SceKernelThreadMgr + 0xC79, SceThreadmgrForDriver_91382762
SceUID (* sceKernelSysrootGetProcessId)(void);
int (* sceKernelSysrootThreadFunction4)(void); // Temp name, SceKernelThreadMgr + 0x8D1
int (* sceKernelSysrootThreadFunction5)(void); // Temp name, SceKernelThreadMgr + 0x8ED
#if SCE_SDK_VERSION >= 0x3630000
// offset: 0x344
SceSysrootModulemgrHandlers *modulemgr_handlers;
#endif
int (* sceKernelSysrootThreadFunction6)(void); // Temp name, SceKernelThreadMgr + 0x90D
void (* sceKernelSysrootThreadFunction7)(void); // Temp name, SceKernelThreadMgr + 0xE69
int (* sceKernelSysrootThreadFunction8)(void); // Temp name, SceKernelThreadMgr + 0x8BD, SceThreadmgrForDriver_332E127C
int (* sceKernelSysrootThreadFunction9)(int a1, int a2, int a3); // Temp name, SceKernelThreadMgr + 0x2541
int (* sceKernelSysrootThreadFunction10)(int a1); // Temp name, SceKernelThreadMgr + 0xC99, SceThreadmgrForDriver_AB977C72
#if SCE_SDK_VERSION < 0x3630000
// offset: 0x350
SceSysrootModulemgrHandlers *modulemgr_handlers;
#endif
int unk_0x354; // ex:0xFFFFFFFF
SceSysrootForKernel_D29BCA77_struct *processmgr_callbacks_1;
SceSysrootForDriver_733C243E_struct *processmgr_callbacks_2;
#if SCE_SDK_VERSION < 0x3630000
void *unk_func_0x360; // SceDeci4pSDfMgr
int (* sceKernelSysrootGetBusError)(void *dst, SceSize len);
int (* sceKernelSysrootAppMgrFunction1)(int a1, int a2, int a3, int a4, int a5, int a6); // SceAppMgr + 0x2795, SceAppMgrForDriver_324DD34E
SceUID (* sceKernelSysrootGetShellPid)(void);
#endif
#if SCE_SDK_VERSION >= 0x3630000
// offset: 0x368
int (* sceKernelSysrootGetLicenseStatusForDriver)(void); // SceSblPostSsMgr + 0x9001, sceSblLicMgrGetLicenseStatusForDriver
int (* unk_func_0x384)(void); // SceSblPostSsMgr + 0xB005, SceSblPostSsMgrForDriver_22599675, get flag
int (* unk_func_0x388)(void); // SceSblPostSsMgr + 0xB011, SceSblPostSsMgrForDriver_9B49C249, get flag
void *unk_func_0x360; // SceDeci4pSDfMgr
int (* sceKernelSysrootGetBusError)(void *dst, SceSize len);
// offset: 0x37C
#endif
void *unk_func_0x370; // SceCoredump + 0x7109, SceCoredumpForDriver_A7D214A7
void *unk_func_0x374; // SceCoredump + 0x74F9, SceCoredumpForDriver_340856F7
void *unk_func_0x378; // SceCoredump + 0x132ED, SceCoredumpForDriver_EF20949F
int unk_0x37C; // ex:0
#if SCE_SDK_VERSION < 0x3630000
// offset: 0x380
int (* sceKernelSysrootGetLicenseStatusForDriver)(void); // SceSblPostSsMgr + 0x9001, sceSblLicMgrGetLicenseStatusForDriver
int (* unk_func_0x384)(void); // SceSblPostSsMgr + 0xB005, SceSblPostSsMgrForDriver_22599675, get flag
int (* unk_func_0x388)(void); // SceSblPostSsMgr + 0xB011, SceSblPostSsMgrForDriver_9B49C249, get flag
#endif
void *unk_func_0x38C; // SceSblPostSsMgr + 0xB4ED, SceSblPostSsMgrForDriver_D8A2D465
int (* sceKernelSysrootGetTrilithiumBufferForDriver)(void); // SceSblPostSsMgr + 0xB111, sceSblUtMgrGetTrilithiumBufferForDriver
int (* sceKernelSysrootHasNpTestFlag)(void);
void *unk_func_0x398; // SceSblUpdateMgr + 0x8B01
int (* sceKernelSysrootLedSetMode)(int led, int mode, void *led_configuration);
SceKernelVARange *cached_sm_info_ranges; // See SceCachedSecureModuleInfo
int (* sceKernelSysrootGetFunctionNameByNIDForKernel)(SceNID funcnid, const char **name); // sceNidsymtblGetFunctionNameByNIDForDriver
void *SceSysrootForKernel_47724459_func; // SceDeci4pSDfMgr or SceDeci4pDfMgr, set by SceSysrootForDriver_C5EAF5F7
void *unk_0x3AC; // SceDeci4pSDfMgr
void *unk_struct_0x3B0; // SceDeci4pDfMgr
void *unk_0x3B4; // SceDeci4pTsmp
void *unk_0x3B8; // SceDeci4pTsmp
void *unk_0x3BC; // SceDeci4pTsmp
void *unk_0x3C0; // SceDeci4pTsmp
SceSysrootProcessHandler *process_handler; // maybe for SceDeci4p
SceSysrootDbgpHandler *dbgp_handler; // maybe for SceDeci4p
void *unk_func_0x3CC; // SceNetPs + 0x3E51, SceNetPsForDriver_83A12CCC
void *unk_func_0x3D0; // SceNetPs + 0x3F4D, SceNetPsForDriver_C000CA8F
void *unk_func_0x3D4; // SceDeci4pTmcp
void *unk_func_0x3D8; // SceDeci4pSDbgp
void *unk_func_0x3DC; // SceNetPs + 0x3E51, SceNetPsForDriver_83A12CCC
void *unk_func_0x3E0; // SceNetPs + 0x3F4D, SceNetPsForDriver_C000CA8F
int (* sceKernelSysrootAppMgrFunction3)(int a1, int a2); // SceAppMgr + 0x9F49
int (* sceKernelSysrootAppMgrFunction4)(int a1, int a2); // SceAppMgr + 0x9EED
int (* sceKernelSysrootAppMgrFunction5)(int a1); // SceAppMgr + 0x9D31
void *unk_func_0x3F0; // ScePfsMgr + 0x1, ScePfsMgrForKernel_4C148288
void *unk_struct_0x3F4; // SceBt
void *unk_struct_0x3F8; // SceHid
void *unk_struct_0x3FC; // SceDeci4pSDbgp
void *unk_data_0x400; // SceDeci4pSDbgp
void *unk_func_0x404; // SceDeci4pSDfCtl
void *unk_func_0x408; // SceDeci4pSDfCtl
void *unk_func_0x40C; // ScePamgr
void *unk_func_0x410; // ScePamgr
void *unk_func_0x414; // ScePamgr
SceUInt32 magic2;
} SceUIDSysrootObject;
typedef SceUIDSysrootObject SceSysroot;
typedef struct SceSysrootForKernel_D29BCA77_struct_0940 { // size is 0x48 on FWs 0.940-0.945
SceSize size; // Size of this structure
void *get_dword_from_offset_0x184;
void *get_dword_from_offset_0x188;
void *get_dword_from_offset_0x18C;
void *sceKernelAllocCurrentProcessHeap;
void *sceKernelFreeCurrentProcessHeap;
void *sceKernelAllocRemoteProcessHeap;
void *sceKernelFreeRemoteProcessHeap;
void *sceKernelGetProcessLibdb;
void *sceKernelSetProcessLibdb;
void *ProcessmgrModuleStart2;
void *sceKernelRegisterKPLS;
void *sceKernelGetRemoteKPLS;
void *sceKernelGetCurrentKPLS;
void *sceKernelInhibitProcEvent;
void *sceKernelPermitProcEvent;
void *sceKernelInsertProcessThreadList;
void *sceKernelDeleteProcessThreadList;
} SceSysrootForKernel_D29BCA77_struct_0940;
typedef struct SceSysrootForKernel_D29BCA77_struct_0990 { // size is 0x44 on FWs 0.990-0.995
SceSize size; // Size of this structure
void *get_dword_from_offset_0x184;
void *get_dword_from_offset_0x188;
void *get_dword_from_offset_0x18C;
void *sceKernelAllocCurrentProcessHeap;
void *sceKernelFreeCurrentProcessHeap;
void *sceKernelAllocRemoteProcessHeap;
void *sceKernelFreeRemoteProcessHeap;
void *sceKernelGetProcessLibdb;
void *sceKernelSetProcessLibdb;
void *ProcessmgrModuleStart2;
void *sceKernelRegisterKPLS;
void *sceKernelGetRemoteKPLS;
void *sceKernelGetCurrentKPLS;
void *sceKernelInhibitProcEvent;
void *sceKernelPermitProcEvent;
void *sceKernelGetProcessHeapID;
} SceSysrootForKernel_D29BCA77_struct_0990;
// Size of SceSysrootForKernel_D29BCA77_struct for FWs 0.996.070-0.996.090 is 0x58
// Size of SceSysrootForKernel_D29BCA77_struct for FWs 1.000.071-1.500.151 (maybe higher) is 0x5C
typedef struct SceSysrootForKernel_D29BCA77_struct_3600 { // size is 0x44 on FWs 3.60-3.65,
SceSize size; // Size of this structure
//a1 might be process object (needs to be checked)
SceInt32 (*get_dword_from_offset_0x1E4)(void* a1);
SceInt32 (*get_dword_from_offset_0x1E8)(void* a1);
SceInt32 (*get_dword_from_offset_0x1EC)(void* a1);
//Allocations are made from current process' "Unique" heap
//Fails if TPIDRPRW is NULL
void *(*sceKernelAllocCurrentProcessHeap)(SceSize size, SceKernelHeapMemoryOpt* pOpt);
SceInt32 (*sceKernelFreeCurrentProcessHeap)(void* ptr);
//Allocations are made from specified process' "Unique" heap
//KERNEL_PID (0x10005), DummyProcessGame (0x10013) and DummyProcessSystem (0x10015) are accepted as PIDs
void *(*sceKernelAllocRemoteProcessHeap)(ScePID process, SceSize size, SceKernelHeapMemoryOpt* pOpt);
SceInt32 (*sceKernelFreeRemoteProcessHeap)(ScePID process, void* ptr);
SceInt32 (*ProcessmgrModuleStart2)();
//Equivalent to sceKernelWaitSema(processObject->EventLock_sema, 1, NULL);
SceInt32 (*sceKernelInhibitProcEvent)(ScePID process);
//Equivalent to sceKernelSignalSema(processObject->EventLock_sema, 1);
SceInt32 *(sceKernelPermitProcEvent)(ScePID process);
//info_type = 0 -> returns processObject->unk0x424
//info_type = 1 -> returns processObject->MaxFHCount
//other values -> return 0
SceInt32 (*query_some_process_info)(ScePID process, SceUInt32 info_type);
SceInt32 (*sceKernelRegisterKPLS)(char* name, SceSize size);
//Fails if TPIDRPRW is NULL
void *(*sceKernelGetCurrentKPLS)(SceUInt32 key);
SceInt32 (*sceKernelGetRemoteKPLS)(ScePID process, SceUInt32 key, ScePVoid* pKPLS, SceBool create);
SceInt32 (*sceKernelProcessDebugSuspend)(ScePID process, int status);
//Retreived from process object's SceLoadProcessParam
SceInt32 (*sceKernelGetCompiledSdkVersionByPid)(ScePID process, SceUInt32* pSdkVersion);
} SceSysrootForKernel_D29BCA77_struct;
typedef struct SceSysrootForKernel_733C243E_struct_old { // size is 0x28 on FW 0.990
SceSize size; // Size of this structure
SceUID (* sceKernelGetCurrentProcessId)(void);
int (* sceKernelGetEntryHeap)(SceUID pid, int *pHeap);
int (* SceProcessmgrForKernel_C77C2085)(SceUID pid);
int (* sceKernelPIDtoAddressSpaceCB)(SceUID pid, void **pASCb);
int (* FUN_81000000)(int* dst, int *src);
int (* sceKernelGetProcessType)(SceUID pid);
int (* sceKernelGetProcessSelfAuthInfo)(SceUID pid, SceSelfAuthInfo *self_auth_info);
int (* sceKernelSetProcessSelfAuthInfo)(SceUID pid, SceSelfAuthInfo *self_auth_info);
int (* sceKernelGetProcessAccessLevel)(SceUID pid);
} SceSysrootForKernel_733C243E_struct_old;
typedef struct SceSysrootForKernel_733C243E_struct { // size is 0x20 on FWs 3.60-3.65
SceSize size; // Size of this structure
SceInt32 (* funcGetProcessEntryHeapObject)(SceUID pid, void **entry_heap_obj);
SceUID (* get_process_address_space_UID)(SceUID pid);
SceInt32 (* funcGetProcessAddressSpaceCB)(SceUID pid, void **address_space_obj);
SceInt32 (* sceKernelGetProcessSelfAuthInfo)(SceUID pid, SceSelfAuthInfo *self_auth_info);
SceInt32 (* sceKernelGetProcessTitleId)(SceUID pid, char *title_id, SceSize len); // Copies processObject->list_entry->process_name to title_id - maybe this should be GetProcessName?
SceInt32 (* sceKernelIncProcessResource)(SceUInt32 type); // Type must be < 0x3
SceInt32 (* sceKernelDecProcessResource)(SceUInt32 type); //^
} SceSysrootForKernel_733C243E_struct;
typedef struct SceSysrootProcessHandler { // size is 0x28 on FW 3.60
SceSize size; // Size of this structure
void (* unk_4)(SceUID pid, SceUID modid, int flags, uint64_t time); //!< process start shared modules
void (* exit)(SceUID pid, int flags, uint64_t time);
void (* kill)(SceUID pid); //!< by SceShell
void (* unk_10)(SceUID pid, SceUID modid, uint64_t time);
void (* unk_14)(SceUID pid, SceUID modid, uint64_t time);
void (* unk_18)(SceUID pid, SceUID modid, uint64_t time);
int (* on_process_created)(int a1, int a2, int a3); //!< called when process is created
void (* unk_20)(SceUID pid, SceUID modid, uint64_t time);
void (* unk_24)(SceUID pid, SceUID modid, int flags, uint64_t time);
} SceSysrootProcessHandler;
typedef struct SceSysrootModulemgrHandlers { // size is 0x18 on FW 3.60
SceSize size; // Size of this structure
int (* sceKernelGetProcessSyscallInfo)(SceUID pid, const void *module_addr, void *pInfo); // SceKernelModulemgr + 0x20D0 on FW 3.60
int (* handler_2)(SceUID pid, const void *module_addr); // SceKernelModulemgr + 0x1F44 on FW 3.60
void *sceKernelGetModuleInfoMinByAddr;
void *sceKernelBacktraceInternal;
void *sceKernelPrintBacktrace;
} SceSysrootModulemgrHandlers;
// ScePamgrCallbacks
typedef struct SceSysrootForDriver_C94C76FA_struct { // size is 0x10 on FW 3.60
SceSize size; // Size of this structure
int (__cdecl *unk_func_4)();
int (__cdecl *unk_func_8)();
int (__cdecl *unk_func_C)();
} SceSysrootForDriver_C94C76FA_struct;
typedef struct SceKernelFreeMemorySizeInfo {
SceSize size;
SceSize sizeMain;
SceSize sizeCdram;
SceSize sizePhycont;
} SceKernelFreeMemorySizeInfo;
//Constructor/destructor of a class item
//For classes inheriting another class, the constructors are called from the parent to the child
//while the destructors are called in reverse order (same as C++ cstr/dstr)
typedef int (*SceClassCallback)(void *item);
//What is this?
typedef struct SceClass_0990 { // size is 0x10 on FW 0.990
SceSize size; // Size of this structure
struct SceClass *next;
struct SceClass *root; // to confirm
struct SceClass *prev; // to confirm
} SceClass_0990;
// How is this structure wrong? So where is the valid SceClass for FW 3.60? See below
typedef struct SceClass_wrong { // size is 0x2C on FW 3.60
struct SceClass *next; // 0x00
struct SceClass *root; // 0x04
struct SceClass *prev; // 0x08
const char *name; // 0x0C
struct SceClass *uid_class; // 0x10
unsigned int attr; // 0x14
unsigned short item_size; // 0x18
unsigned short unk_1A; // 0x1A
SceClassCallback constructor; // 0x1C
SceClassCallback destructor; // 0x20
const unsigned int magic; // 0x24 - 0xABCE9DA5
SceClassCallback allocMethod; // 0x28
} SceClass_wrong;
typedef struct SceClass { //size is 0x28 on FW 0.990, 0x2C on FW 3.60
struct SceClass *next; //0x00 - pUserdata of SceKernelObject, pointer to next class in DLink list
struct SceClass *pClass; //0x04 - pClass of SceKernelObject, always points to SceUIDClass class
struct SceClass *prev; //0x08 - Pointer to previous class in DLink list
const char* name; //0x0C - Pointer to class' name
struct SceClass *parent; //0x10 - Pointer to parent class
SceUInt32 attr; //0x14 - Usage unknown (bottom 8 bits = some counter?)
SceUInt16 itemSize; //0x18 - Size of items of this class
SceUInt16 itemAllocationSize; //0x1A - Size of allocations used for items of this class (rounded up itemSize)
#if (/* firmware 3.60 */)
SceUInt32 unk0x1C; //0x1C
#endif
SceClassCallback constructor; //0x1C / 0x20 - called after item is allocated
SceClassCallback destructor; //0x20 / 0x24 - called before item is freed
SceUInt32 magic; //0x24 / 0x28 - magic value 0xABCD9DA5
//NOTE: additional data can be stored here for use by the class
} SceClass;
// Aka SceObjectBase in vitasdk
typedef struct SceKernelObject {
void *pObject;
SceClass *pClass;
uintptr_t data[];
} SceKernelObject;
// Here is a wrong structure for SceKernelObject, but this could be a SceUIDXxxClass structure
typedef struct SceKernelObject_wrong { // size is at least 0x24
void *pObject; // 0x0
SceClass pClass; // 0x4
uint32_t type; // 0x8
uint16_t lcount; // 0xC
uint16_t ucount; // 0xE
uint16_t ccount; // 0x10
uint32_t unk_12; // 0x12 - 0x54c3
uint16_t unk_16; // 0x16
uint32_t uid; // 0x18
char unk_1C[4]; // 0x1C
const char *name; // 0x20
uint32_t indexRaw; // 0x24
} SceKernelObject_wrong;
/** @name Memory types that can be specified with sceKernelAllocMemBlock
*/
/*@{*/
/**
* @brief User readable / writable LPDDR2 memory
*
* This type secures a readable / writable memory block in user space.
*/
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RW 0x0c20d060U
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA SCE_KERNEL_MEMBLOCK_TYPE_USER_RW
/**
* @brief User readable / writable LPDDR2 non-cache memory
*
* A type to secure a memory block on LPDDR2 that is readable
* and writable in user space and does not use cache.
*/
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW 0x0c208060U
/**
* @brief An alias for SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW.
*/
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW
/**
* @brief An alias for SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW.
*/
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE
/**
* @brief User readable and writable LPDDR2 physical continuous memory
*
* A type that can read and write in user space and secure
* memory blocks from the physical continuous memory area.
*/
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_RW 0x0c80d060U
/**
* @brief User-readable and non-cacheable physical continuous memory
*
* A type for on-cacheable read / write in user space and to secure
* memory blocks from the physical continuous memory area.
*/
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_RW 0x0d808060U
/**
* @brief User-readable and non-cacheable CDRAM memory
*
* A type that can be read and written in user space and secures
* memory blocks on CDRAM.
*/
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW 0x09408060U
/**
* @brief An alias for SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW.
*/
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RWDATA SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW
/*@}*/
/**
* @brief A type representing a memory type
*
* A type that represents the type of memory block secured by sceKernelAllocMemBlock.
*/
typedef int SceKernelMemoryType;
/**
* @brief Memory block information structure
*
* A structure for obtaining information about memory blocks. Size is 0x14 bytes on FW 0.990.
*/
typedef struct SceKernelMemBlockInfo0990 {
SceSize size; /**< Size of the structure itself */
void *mappedBase; /**< Map base address */
SceSize mappedSize; /**< Mapped size */
SceKernelMemoryType memoryType; /**< Memory type */
SceUInt32 access; /**< Access right */
} SceKernelMemBlockInfo0990;
/**
* @brief Memory block information structure
*
* A structure for obtaining information about memory blocks. Size is 0x18 bytes on FWs 0.996+.
*/
typedef struct SceKernelMemBlockInfo {
SceSize size; /**< Size of the structure itself */
void *mappedBase; /**< Map base address */
SceSize mappedSize; /**< Mapped size */
SceKernelMemoryType memoryType; /**< Memory type */
SceUInt32 access; /**< Access right */
SceKernelMemBlockType type; /**< Memory block type */
} SceKernelMemBlockInfo;
typedef struct SceKernelMemBlockInfoExDetails {
SceKernelMemBlockType type;
SceUID memblk_uid;
const char *name;
void *mappedBase;
SceSize mappedSize;
SceSize memblock_some_size_or_alignment;
int extraLow;
int extraHigh;
int unk20;
SceUID unk24; // ex: 0x10045, maybe some pid
SceKernelObject *SceUIDPhyMemPartClass_obj;
} SceKernelMemBlockInfoExDetails;
typedef struct SceKernelMemBlockInfoEx { // size is 0xAC on FW 0.990, 0xB8 on FW 3.60
SceSize size; // Size of this structure
SceKernelMemBlockInfoExDetails details;
SceSize unk30; // paddr num
SceSize unk34; // paddr size num?
void *paddr_list[0x10];
SceSize size_list[0x10];
} SceKernelMemBlockInfoEx;
typedef struct SceKernelMemBlockInfoSimple { // size is 0x24 on FW 0.990
SceSize size; // Size of this structure
SceKernelMemBlockType type;
SceUID uid;
char *name; // "SceNULL" by default
char unk_0x10[0x14];
} SceKernelMemBlockInfoSimple;
/*----- memory access permission -----*/
/**
* @brief readable memory
*/
#define SCE_KERNEL_MEMORY_ACCESS_R 0x04U
/**
* @brief writable memory
*/
#define SCE_KERNEL_MEMORY_ACCESS_W 0x02U
/**
* @brief executable memory (kernel only)
*/
#define SCE_KERNEL_MEMORY_ACCESS_X 0x01U
/*----- memory type -----*/
/**
* @brief uncache normal memory
*/
#define SCE_KERNEL_MEMORY_TYPE_NORMAL_NC 0x80
/**
* @brief cache normal memory
*/
#define SCE_KERNEL_MEMORY_TYPE_NORMAL 0xD0
/**
* Optional parameter of sceKernelAllocMemBlock for FWs <=0.940.
*/
typedef struct SceKernelAllocMemBlockOpt0940 { // size is 0x14 on FW 0.940-0.990
SceSize size; /**< Size of this structure */
SceUInt32 attr; /**< Attributes field */
SceSize alignment; /**< Specify alignment.
SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_ALIGNMENT must be set for the attr member. */
SceUID uidBaseBlock; /**< Base memory block UID */
const char *strBaseBlockName; /**< Base memory block UID name */
} SceKernelAllocMemBlockOpt0940;
/**
* Option parameter of sceKernelAllocMemBlock
*/
typedef struct SceKernelAllocMemBlockOpt { // size is 0x14/0x38/0x3C/0x40 on FW 3.60
/**
* Size of this structure
*/
SceSize size;
/**
* Attributes field
*/
SceUInt32 attr;
/**
* Specify alignment.
* SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_ALIGNMENT must be set for the attr member.
*/
SceSize alignment;
/**
* reserved
*/
SceUInt32 uidBaseBlock;
/**
* reserved2
*/
const char *strBaseBlockName;
#if 0
/**
* mapped base address [out]
*/
void *mappedBase;
/**
* mapped size [out]
*/
SceSize mappedSize;
/**
* memory type [out]
*/
SceKernelMemoryType memoryType;
SceUInt32 access;
#endif
} SceKernelAllocMemBlockOpt;
/**
* Option parameter of kernel sceKernelAllocMemBlock on old FWs (as seen on FWs 0.900-0.990)
*/
typedef struct SceKernelAllocMemBlockOptKernel_old { // size is 0x28 on 0.900, 0x2C on 0.910, 0x30 on 0.931-0.990, 0x34 on ?.??
SceSize size; // Size of this structure
SceUInt32 unk_4;
SceUInt32 attr;
void *vbase;
void *pbase; // Physical address to use as base
SceSize alignment;
SceUInt32 extraLow;
SceUInt32 extraHigh;
void *base;
SceUID pid;
SceKernelPAVector *pPAV;
SceSize roundupUnitSize;
SceUInt32 unk_30;
} SceKernelAllocMemBlockOptKernel_old;
/**
* Option parameter of kernel sceKernelAllocMemBlock on recent FWs (as seen on FW 3.60)
*/
typedef struct SceKernelAllocMemBlockOptKernel { // size is 0x58 on FW 3.60
SceSize size; // Size of this structure
SceUInt32 unk_4; // Never used?
SceUInt32 attr;
void *vbase; // Virtual address memblock should be mapped at
void *pbase; // Physical address to use as base
SceSize alignment;
SceSize extraLow; // Size of extra area starting from memblock vbase
SceSize extraHigh; // Size of extra area starting "after" memblock - extra area is ?not mapped?
SceUID baseMemBlock; // UID of memblock this one is based on
SceUID pid;
SceKernelPAVector *pPAV;
SceSize roundupUnitSize; // Used to roundup memblock vsize
SceUInt8 domain;
SceUInt32 unk_34; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
SceUInt32 unk_38; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
SceUInt32 unk_3C; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
SceUInt32 unk_40; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
SceUInt32 unk_44; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
SceUInt32 unk_48; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
SceUInt32 unk_4C; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
SceUInt32 unk_50; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
SceUInt32 unk_54; // Related to SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20
} SceKernelAllocMemBlockOptKernel;
/**
* Attributes to enable some SceKernelAllocMemBlockOpt members.
*/
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_VBASE 0x00000001
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_PBASE 0x00000002
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_ALIGNMENT 0x00000004
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_EXTRA_LOW 0x00000008
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_EXTRA_HIGH 0x00000010
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x20 0x00000020
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_BASE 0x00000040
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_PID 0x00000080
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_BASENAME 0x00000200 // Only available for sceKernelAllocMemBlockForUser - kernel callers must use HAS_BASE instead
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_PPAV 0x00001000 // Official name may be HAS_PVECTOR
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_ROUNDUP 0x00002000
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_0x4000 0x00004000 // Some options when registering SceKernelBlock with guid
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_HAS_DOMAIN 0x00010000
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_NOPHYPAGE 0x00020000
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_DONT_MAP 0x00040000 // Do not map the memory block in the virtual address space (unofficial name)
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_PHYCONT 0x00200000 // Memory area is physically continuous.
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_UNK 0x00400000
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_SHARE_VBASE 0x00800000 // Memblock shares vbase with base block - requires HAS_BASE
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_SHARE_PHYPAGE 0x01000000 // Memblock shares physical pages with base block - requires HAS_BASE
#define SCE_KERNEL_ALLOC_MEMBLOCK_ATTR_ALLOW_PARTIAL_OP 0x04000000 // Allow partial operation. ?What does that mean?
/**
* UID is created by sceKernelOpen***()
*/
#define SCE_UID_ATTR_OPEN_FLAG 0x00080000U
typedef struct SceKernelHeapInfo { // size is 0xCC on FW 0.990
SceSize size; // Size of this structure
char unk_4[0xC8];
} SceKernelHeapInfo;
typedef struct SceKernelHeapObject { // size is 0x40 on FW 0.990
SceSize size; // Size of this structure
uint32_t unk_4; // 0x4
uint32_t unk_8; // 0x8
uint32_t unk_C; // 0xC
uint32_t unk_10; // 0x10
uint32_t unk_14; // 0x14
uint32_t unk_18; // 0x18
uint32_t unk_1C; // 0x1C
uint32_t unk_20; // 0x20
uint32_t unk_24; // 0x24
uint32_t unk_28; // 0x28
uint32_t unk_2C; // 0x2C
uint32_t unk_30; // 0x30
uint32_t magic; // 0x34 - 0xD2BBDEC3
uint32_t unk_38; // 0x38
uint32_t unk_3C; // 0x3C
uint32_t unk_40; // 0x40
} SceKernelHeapObject;
typedef struct SceKernelFixedHeap { // size is 0x40 on FW 0.990
SceSize size; // Size of this structure
SceClass pClass; // 0x4
uint32_t unk_8; // 0x8
uint32_t unk_C; // 0xC
uint32_t unk_10; // 0x10
uint32_t unk_14; // 0x14
uint32_t pageSize; // 0x18 - min 0x1000 on FW 0.990
uint16_t itemSize; // 0x1C
uint16_t unk_1E; // 0x1E
uint32_t unk_20; // 0x20
uint32_t unk_24; // 0x24
uint32_t magic; // 0x28 - 0xFD9B28A6
uint16_t sizeInWords; // 0x2C
uint16_t index; // 0x2E
SceKernelHeapObject *heapObject; // 0x30
uint32_t unk_34; // 0x34
uint32_t unk_38; // 0x38
uint16_t unk_3C; // 0x3C
} SceKernelFixedHeap;
typedef struct SceKernelFixedHeapInfo { // size is 0x14 on FW 0.990
SceSize size; // Size of this structure
uint32_t unk_4; // = (uint32_t)*(uint16_t *)(pObject + 0x1C)
uint32_t unk_8; // = *(uint32_t *)(pObject + 0x18) + (uint32_t)*(uint16_t *)(pObject + 0x2E)
uint32_t unk_C; // = (uint32_t)*(uint16_t *)(pObject + 0x1E)
uint32_t unk_10; // = (uint32_t)*(uint16_t *)(pObject + 0x20)
} SceKernelFixedHeapInfo;
typedef struct SceKernelHeapMemoryOpt { // size is 0x14 on FW 0.990-3.60
SceSize size; // Size of this structure
uint32_t unk_4; // ex: 0
SceSize alignment; // ex: 0x10, 0x40
uint32_t unk_C; // ex: 0, 0x20
uint32_t unk_10; // ex: 0
} SceKernelHeapMemoryOpt;
typedef struct SceKernelHeapCreateOpt { // size is 0x14 on FW 0.931-0.990, 0x1C on FW 3.60
SceSize size;
union { //<! Union for compatibility
SceUInt32 attr;
SceUInt32 uselock; //<! Do not use uselock as it will be deprecated. ex: 1, 0x100
};
SceUInt32 field_8; // ex: 0x8000
SceUInt32 field_C;
SceUInt32 block_type; // wrongly called memtype in vitasdk
SceUInt32 field_14;
SceUInt32 field_18;
} SceKernelHeapCreateOpt;
typedef struct SceKernelMMUL1Info { // size is 0xC in 0.990 - holds information about a single L1PT entry
SceUIntVAddr vbase; // Start of the virtual address range mapped by L1PT entry
SceUIntPAddr pbase; // Start of the physical address held in L1PT - paddr mapped for Section, paddr of L2PT for Page Table entry
SceUInt32 entryType; // 0 = Invalid (fault on access), 1 = Section/Supersection, 2 = Page Table
} SceKernelMMUL1Info;
typedef struct SceAddressSpace { // size is at least 0xEC
char unk[0x14];
SceKernelMMUContext *context;
char unk[0xC4];
void *funcAlloc;
char unk2[0x8];
uint32_t magic; // always 0x4d95AEEC
} SceAddressSpace;
typedef struct SceKernelAddressSpaceCallback {
SceUInt32 index;
void *(* funcMalloc)(SceUInt32 index, SceSize length);
void (* funcFree)(SceUInt32 index, void *ptr);
// maybe more
} SceKernelAddressSpaceCallback;
typedef struct SceKernelAddressSpace { // size is 0x10 bytes on FW 0.940-3.60
SceSize size; // Size of this structure
int flag;
SceKernelAddressSpaceCallback *data_0x08; // info dst buff ptr, need AddrSpace.flag = 2;
void *TTBR1; // info dst buff ptr, need AddrSpace.flag |= 4;
} SceKernelAddressSpace;
typedef struct SceKernelVARange {
uint32_t addr;
SceSize size;
} SceKernelVARange;
typedef struct SceKernelPARange {
uint32_t addr;
SceSize size;
} SceKernelPARange;
typedef struct SceKernelPAVector { // size is 0x14 on FW 0.990
SceSize size; // Size of this structure
uint32_t pRanges_size; // Ex: 8
uint32_t nDataInVector; // Must be <= 8
uint32_t count;
SceKernelPARange *pRanges;
} SceKernelPAVector;
#define SCE_KERNEL_PROCESS_ID_SELF 0 // Current running process ID is always 0.
typedef struct SceKernelPhyMemPart { // size is at least 0x9C on FWs 0.931-3.60
uint32_t field_0x0;
uint32_t field_0x4;
uint32_t some_counter; // always positive
uint32_t field_0xc;
char *name;
int type; // 0x10000 for Lpddr2Main, 0x30000 for Cdram
int mutex;
SceUIntPAddr pbase;
SceSize totalSize;
int field_0x24;
void *pRoot;
uint32_t field_0x2c;
uint32_t field_0x30;
uint32_t field_0x34;
uint32_t field_0x38;
int status;
int pindex40; //1
int field_0x44;
int pindex48; //2
int field_0x4c;
int pindex50; //3
int field_0x54;
int pindex58; //4
int field_0x5c;
int pindex60; //5
int field_0x64;
int pindex68; //6
int field_0x6c;
int pindex70; //7
int field_0x74;
int pindex78; //8
int field_0x7c;
int pindex80; //9
SceSize psize2;
int min;
int pindex8C; //10
int field_0x90;
SceUInt32 nClient;
SceSize freeSize;
} SceKernelPhyMemPart;
typedef struct ScePhyMemPartInfoCore { // size is 0x10 on FWs 0.990-3.60
SceUIntPAddr pbase; // same as SceKernelPhyMemPart field 0x1C
SceSize totalSize;
SceSize freeSize;
SceUInt32 unk_C; // maybe some counter
} ScePhyMemPartInfoCore;
typedef struct SceKernelPhyMemLow { // size is 0x1C on 0.990
SceUInt32 mutex; // For use with sceKernelCpuLockSuspendIntrStoreLR
SceUIntPAddr pbase; // Base address of range managed by this instance
SceSize psize; // Size of range managed by this instance
SceSize granularity; // Minimum size that can be allocated from this instance (i.e. every allocation must be aligned to this)
SceUInt32 unk10; // Maybe backing memory type? Seen values: 0x20 (CDRAM)
SceSize bitmapSize; // Size of the bitmap array (in elements)
SceUInt32* bitmap; // Bitmap used to store which elements managed by this instance are in use - each bit represents a granularity-sized element. Status of element n can be found by looking at (bitmap[n / 32] >> (n % 32)): 0 means free, 1 means occupied
} SceKernelPhyMemLow;
typedef struct ScePhyMemLowInfo { // size is 0x1C on 0.990
SceSize size; // Size of this structure
SceUIntPAddr pbase;
SceSize psize;
SceSize granularity;
SceUInt32 unk10; // unk14 from PhyMemLow
SceSize bmArraySize; // Size of the array pointed to by bitmap, IN ELEMENTS. Nothing is written here. Pass 0 if bitmap is NULL.
SceUInt32* bitmap; // Optional - array that receives a copy of the PhyMemLow bitmap
} ScePhyMemLowInfo;
//for 0.990
#define SCE_KERNEL_PHYMEMLOW_TYPE_LPDDR2MAIN 0x10001
#define SCE_KERNEL_PHYMEMLOW_TYPE_UNK 0x10002
#define SCE_KERNEL_PHYMEMLOW_TYPE_CDRAM 0x20001
typedef struct kernel_message_ctx { // size is 0x18 on FW 3.60
SceUInt32 fileHash; //First 4 bytes of SHA1(__FILE__) - e.g. 0x123EC4E8 = "processmgr.c"
SceUInt32 lineHash; //First 4 bytes of SHA1("%s:%d" % (__FILE__, __LINE__)) - e.g. 0x7D3F4B00 = "boot.c:1868"
SceUInt32 funcHash; //First 4 bytes of SHA1(__FUNC__) - e.g. 0x197C5ED2 = "LedModuleStart"
const char *pFile; //Pointer to file name - can be NULL.
int line; //Line in file - ignored if pFile is NULL.
const char *pFunc; //Pointer to function name - ignored if pFile is NULL.
} kernel_message_ctx;
/**
* An enumeration to represent the various logging levels which can be output by sceDbgLoggingHandler().
*/
typedef enum SceDbgLogLevel {
SCE_DBG_LOG_LEVEL_TRACE = 0, /* An extremely verbose logging level, mostly useful for internal developers. */
SCE_DBG_LOG_LEVEL_DEBUG, /* A diagnostic logging level. */
SCE_DBG_LOG_LEVEL_INFO, /* An informational logging level. */
SCE_DBG_LOG_LEVEL_WARNING, /* A logging level that gives warnings of situations detrimental to proper execution. */
SCE_DBG_LOG_LEVEL_ERROR, /* A logging level that will report erroneous conditions in execution. */
SCE_DBG_NUM_LOG_LEVELS /* The number of logging levels available. */
} SceDbgLogLevel;
/*
Target Manager (Communication Processor) Logging levels.
These levels can be set using psp2ctrl set-logging-level <level>.
LOG_LEVEL_NONE (0)
LOG_LEVEL_ERROR (1)
LOG_LEVEL_WARNING (2)
LOG_LEVEL_SERVICE (3)
LOG_LEVEL_INFO (4)
LOG_LEVEL_INTERNAL (5)
LOG_LEVEL_MAX (6)
*/
typedef struct SceSyscallInfo { // size is 0x3C on FW 3.60
SceSize size; // Size of this structure
SceUInt32 moduleFingerprint;
SceUInt32 maybeModuleAttr;
char moduleName[0x20];
char *libName;
SceUInt32 maybeLibAttr;
SceUInt32 libVer;
SceUInt32 libNid;
} SceSyscallInfo;
typedef struct SceSyscallFrame { // size is at least 0x5C on FW 3.60
SceUInt32 r0; // 0x00
SceUInt32 r1; // 0x04
SceUInt32 r2; // 0x08
SceUInt32 r3; // 0x0C
SceUInt32 r4; // 0x10
SceUInt32 r5; // 0x14
SceUInt32 r6; // 0x18
SceUInt32 r7; // 0x1C
SceUInt32 r8; // 0x20
SceUInt32 r9; // 0x24
SceUInt32 r10; // 0x28
SceUInt32 r11; // 0x2C
SceUInt32 r12; // 0x30
SceUInt32 unk_34; // 0x34
void *entry; // 0x38
SceUInt32 unk_3C; // 0x3C
SceUInt32 resultType; // 0x40, 0-3
int unk_44[3]; // 0x44
SceUInt32 SP; // 0x50
SceUInt32 LR; // 0x54
SceUInt32 PC; // 0x58
} SceSyscallFrame;
// process
typedef struct SceKernelDebugEventLog1 { // size is 0x1C
int data_0x40;
SceUID pid;
int budget_type;
int data_0x4C; // 0xA
char titleid[0xC];
} __attribute__((packed)) SceKernelDebugEventLog1;
// Related to network
typedef struct SceKernelDebugEventLog2 { // size is 0x4
int data_0x40; // 0 or 0x80412118?
} __attribute__((packed)) SceKernelDebugEventLog2;
// Related to network
typedef struct SceKernelDebugEventLog3 { // size is 0x54
int data_0x40; // 0?
char ip1[0x10];
char ip2[0x10];
char ip3[0x10];
char ip4[0x10];
char ip5[0x10];
} __attribute__((packed)) SceKernelDebugEventLog3;
typedef struct SceKernelDebugEventLog {
SceSize size;
int data_0x04; // 0xA, titleid size?
char titleid[0xC];
int flags;
SceUID ppid;
SceUID data_0x1C; // thid?
int rsvd[4];
SceUInt64 time;
int data_0x38;
SceSize item_size;
union {
SceKernelDebugEventLog1 type1;
SceKernelDebugEventLog2 type2;
SceKernelDebugEventLog3 type3;
};
} __attribute__((packed)) SceKernelDebugEventLog;
typedef SceVoid(*SceKernelSysrootVeneziaRpcDebugFunc)(SceUInt32 debugCode, SceUInt32 argNum, ...);
typedef SceVoid(*SceKernelSysrootVipRpcDebugFunc)(SceUInt32 debugCode, SceUInt32 argNum, ...);
// This is a guessed name
typedef SceUInt32 SceKernelMemoryRefPerm;
#define SCE_KERNEL_MEMORY_REF_PERM_0x10 0x10
#define SCE_KERNEL_MEMORY_REF_PERM_0x20 0x20
typedef struct SceKernelModulePrivate9 { // size is 0xAC-bytes on 3.60
SceClass SceUIDModuleClass;
SceClass SceUIDLibraryClass;
SceClass SceUIDLibStubClass;
SceKernelProcessModuleInfo ProcModuleInfo;
SceUID ScePsp2BootConfig_modid;
} SceKernelModulePrivate9;
GetPhyMemPartIndex
uint GetPhyMemPartIndex(uint param_1) {
uint cpuId;
if (param_1 == 0xea0d050) goto LAB_81009494;
if (param_1 < 0xea0d051) {
if (param_1 == 0x620d004) {
return 6;
}
if (param_1 < 0x620d005) {
if (param_1 != 0x3b0d060) {
if (param_1 < 0x3b0d061) {
if (param_1 != 0x3a0d060) {
if (param_1 < 0x3a0d061) {
if (param_1 == 0x3a0d040) goto LAB_81009494;
if (param_1 == 0x3a0d050) {
return 10;
}
}
else {
if (param_1 == 0x3b0d040) goto LAB_81009494;
if (param_1 == 0x3b0d050) {
return 0xb;
}
}
goto LAB_81009402;
}
}
else {
if (param_1 != 0x3f0d060) {
if (param_1 < 0x3f0d061) {
if ((param_1 == 0x3f0d040) || (param_1 == 0x3f0d050)) goto LAB_81009494;
}
else {
if (param_1 == 0x6208004) {
return 6;
}
if (param_1 == 0x6208006) {
return 6;
}
}
goto LAB_81009402;
}
}
}
LAB_81009494:
return (param_1 << 8) >> 0x1c;
}
if (param_1 == 0xc208060) {
return 0xb;
}
if (param_1 < 0xc208061) {
if (param_1 == 0x9408060) {
return 0xc;
}
if (param_1 < 0x9408061) {
if (param_1 == 0x620d006) {
return 6;
}
if (param_1 == 0x9404060) {
return 0xc;
}
}
else {
if (param_1 == 0xb100860) {
return 1;
}
if (param_1 == 0xc200860) {
return 0xb;
}
}
}
else {
if (param_1 == 0xea08040) goto LAB_81009494;
if (param_1 < 0xea08041) {
if (param_1 == 0xc20d050) {
return 0xb;
}
if (param_1 == 0xc20d060) {
return 0xb;
}
}
else {
if (param_1 == 0xea08060) goto LAB_81009494;
if (param_1 == 0xea0d040) {
return 10;
}
}
}
}
else {
if (param_1 == 0x20108004) {
return 1;
}
if (param_1 < 0x20108005) {
if (param_1 == 0x1020d006) {
return 6;
}
if (param_1 < 0x1020d007) {
if (param_1 == 0x10208004) {
return 6;
}
if (param_1 < 0x10208005) {
if (param_1 == 0xea0d060) goto LAB_81009494;
if (param_1 == 0x10200806) {
return 6;
}
}
else {
if (param_1 == 0x10208006) {
return 6;
}
if (param_1 == 0x1020d004) {
return 6;
}
}
}
else {
if (param_1 == 0x20100206) {
return 1;
}
if (param_1 < 0x20100207) {
if (param_1 == 0x1050d006) {
return 5;
}
if (param_1 == 0x20100204) {
return 1;
}
}
else {
if (param_1 == 0x20100804) {
return 1;
}
if (param_1 == 0x20100806) {
return 1;
}
}
}
}
else {
if (param_1 == 0x60208006) {
return 6;
}
if (param_1 < 0x60208007) {
if (param_1 == 0x40404006) {
return 0xc;
}
if (param_1 < 0x40404007) {
if (param_1 == 0x20108006) {
return 1;
}
if (param_1 == 0x2010d006) {
return 1;
}
}
else {
if (param_1 == 0x40408006) {
return 0xc;
}
if (param_1 == 0x60208004) {
return 6;
}
}
}
else {
if (param_1 == 0x6050d006) goto LAB_81009494;
if (param_1 < 0x6050d007) {
if (param_1 == 0x6020d004) {
return 6;
}
if (param_1 == 0x6020d006) {
return 6;
}
}
else {
if (0x70f0d003 < param_1) {
if (param_1 < 0x70f0d007) goto LAB_81009494;
if (param_1 == 0xa0408006) {
return 0xc;
}
}
}
}
}
}
LAB_81009402:
cpuId = sceKernelCpuIdForDriver();
sceKernelPrintfLevelForDriver
(1,
"%d:address_space.c:%s:Warning:Using SCE_KERNEL_PHYMEMPART_LPDDR2MAIN_KERNEL_INDEX for0x%08x\n"
, cpuId, "GetPhyMemPartIndex", param_1);
return 6;
}
Memory Block Type
The type
parameter indicates what kind of memory to allocate. Here is a mapping of type
flags to ARM MMU flags. Higher bits are used for other options including where to allocate from. Not all flag values are valid, there is a table of valid types in the kernel. You cannot, for example, allocate RWX memory.
All memtype list for 3.60
// For usermode
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_L1WBWA_RW (0x09404060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_R (0x09408040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW (0x09408060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_UNK_0C200860_RW (0x0C200860)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_R (0x0C20D040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_RW (0x0C20D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_NC_RW (0x0C208060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_GAME_RW (0x0C50D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_RW (0x0C80D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_RW (0x0D808060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_CDIALIG_RW (0x0CA0D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_CDIALIG_NC_RW (0x0CA08060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_TOOL_RW (0x0CF0D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_TOOL_NC_RW (0x0CF08060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_R (0x0E20D040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RW (0x0E20D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_NC_R (0x0E208040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_NC_RW (0x0E208060)
// For kernel
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_MAIN_R (0x0320D040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_MAIN_RX (0x0320D050)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_MAIN_RW (0x0320D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_SHARED_R (0x0390D040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_SHARED_RX (0x0390D050)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_SHARED_RW (0x0390D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_CDIALOG_R (0x03A0D040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_CDIALOG_RX (0x03A0D050)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_CDIALOG_RW (0x03A0D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_TOOL_R (0x03F0D040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_TOOL_RX (0x03F0D050)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_TOOL_RW (0x03F0D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_TOOL_R (0x08F0D040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_TOOL_RX (0x08F0D050)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_TOOL_RW (0x08F0D060)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_TOOL_UNK_RW (0x08F0D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_RX (0x0C20D050)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_R (0x0C80D040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_R (0x0D808040)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_TOOL_RX (0x0CF0D050)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RX (0x0E20D050)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_UNK_0720D006_RW (0x0720D006) /* SCE_KERNEL_ERROR_ILLEGAL_PARTITION_INDEX */
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_UNK_0B100240_R (0x0B100240)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_UNK_0B100260_RW (0x0B100260)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_UNK_0B100840_R (0x0B100840)
#define SCE_KERNEL_MEMBLOCK_TYPE_USER_UNK_0B100860_RW (0x0B100860)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_SO_RW (0x10200206)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_DEVICE_RW (0x10200806)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_L1WBWA_RW (0x10204006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_NC_R (0x10208004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_NC_RW (0x10208006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_R (0x1020D004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_RX (0x1020D005)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_RW (0x1020D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_R (0x1080D004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_RW (0x1080D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_NC_R (0x30808004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_NC_RW (0x30808006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_GAME_RW (0x1050D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_CDIALOG_R (0x10A0D004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_CDIALOG_RW (0x10A0D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_UMAIN_NC_RW (0x10C08006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_UMAIN_RW (0x10C0D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_R (0x10F0D004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_RX (0x10F0D005)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_RW (0x10F0D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_NC_R (0x10F08004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_NC_RW (0x10F08006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_FS_GAME_R (0x1220D004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_FS_GAME_RW (0x1220D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_FS_GAME_NC_R (0x13208004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_FS_GAME_NC_RW (0x13208006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_SO_R (0x20100204)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_SO_RW (0x20100206)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_R (0x20100804)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_RW (0x20100806)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_NC_R (0x20108004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_NC_RW (0x20108006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_CDRAM_L1WBWA_RW (0x40404006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_CDRAM_RW (0x40408006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_NC_R (0x60208004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_NC_RW (0x60208006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_R (0x6020D004)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_RW (0x6020D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_GAME_RW (0x6050D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_KMP_GAME_RW (0xC050D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_KMP_TOOL_RW (0xC0F0D006)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_UNK_11208006_NC_RW (0x11208006) // from ScePhyMemPartKD to SceKernelRootUncacheGpuGame
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_UNK_60208014_NC_R (0x60208014)
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_UNK_60208016_NC_RW (0x60208016)
Note
The only commonly available memtypes are those that are publicly available.
sceKernelAllocMemblockInternal uses a list to translate it into an internal memtype.
So we can't create memtype with any bits and use that's.
memtype bit value
Mask |
Value |
Description
|
0xF000000 |
N/A |
Partition index.
|
0xF00000 |
N/A |
Src ScePhyMemPart.
|
0x10000 |
0x10000 |
Global. nG bit NOT set
|
0xFF00 |
0x800 |
B bit set. Sharable device memory.
|
0xFF00 |
0x2000 |
TEX[2] and TEX[0] bit set. Outer cache Write-back, Write-Allocate. Inner cache non-cachable.
|
0xFF00 |
0x4000 |
TEX[2] and B bit set. Outer cache non-cachable. Inner cache Write-back, Write-Allocate
|
0xFF00 |
0x8000 |
TEX[0] bit set. S bit unset. Outer and inner non-cachable. Not sharable.
|
0xFF00 |
0xD000 |
TEX[0] bit set. C,B bits set. Outer and inner Write-back, Write-Allocate.
|
0xFF |
0x4 |
AP[2:0] = 5 , XN=1 . Privileged RO, User NA.
|
0xFF |
0x5 |
AP[2:0] = 5 . Privileged RX, User NA.
|
0xFF |
0x6 |
AP[2:0] = 1 , XN=1 . Privileged RW, User NA.
|
0xFF |
0x7 |
AP[2:0] = 1 . Privileged RWX, User NA. (Never used, 3.60 0x80024B01)
|
0xFF |
0x50 |
AP[2:0] = 7 . Privileged RX, User RX.
|
0xFF |
0x60 |
AP[2:0] = 3 , XN=1 . Privileged RW, User RW.
|
0xFF |
0x40 |
AP[2:0] = 7 , XN=1 . Privileged RO, User RO.
|
This is based internal memtypes.
Mask |
Value |
Name
|
0x0F000000 |
0x00000000 |
root
|
0x0F000000 |
0x01000000 |
SceKernelRootUncacheGpuGame
|
0x0F000000 |
0x02000000 |
SceKernelTmpFsGame
|
0x0F000000 |
0x03000000 |
SceKernelTmpFsGame
|
0x0F000000 |
0x04000000 |
SceKernelTool
|
0x0F000000 |
0x05000000 |
SceKernelRootUncache?
|
0x0F000000 |
0x06000000 |
Unknown
|
0x0F000000 |
0x07000000 |
SCE_KERNEL_ERROR_ILLEGAL_PARTITION_INDEX
|
0x0F000000 |
0x08000000 |
SceKernelUserTool
|
0x0F000000 |
0x09000000 |
SceKernelUserCdram
|
0x0F000000 |
0x0A000000 |
SceKernelUserShared
|
0x0F000000 |
0x0B000000 |
SceKernelUserIO
|
0x0F000000 |
0x0C000000 |
SceKernelUserMain
|
0x0F000000 |
0x0D000000 |
SceKernelUserUncache
|
0x0F000000 |
0x0E000000 |
SceKernelUserCDialog
|
0x0F000000 |
0x0F000000 |
SceKernelUserCDialogNC
|
Available memory types
See also : Memory budget
Mask value Description
0x000000FF | memory access.
0x0000000F for kernel
0x000000F0 for user
0 1 1 0
- R W X
0x00000F00 | unknown
0x00000100 for unknown
0x00000200 for SO
0x00000400 for unknown
0x00000800 for DEVICE
0x0000F000 | cache
0x00002000 for No internal cache only
0x00004000 for No external cache only
0x00008000 for NORMAL_NC (uncache)
0x0000D000 for NORMAL (cache)
0x00F00000 | memory partition select
0x00100000 for IO
0x00200000 for NORMAL (kernel:KD, user:GAME)
0x00300000 for maybe unused
0x00400000 for CDRAM
0x00500000 for GAME
0x00800000 for PHYCONT
0x00900000 for SHARED (usermode only)
0x00A00000 for CDIALOG
0x00C00000 for ???
0x00F00000 for TOOL
0xFF000000 | memory VA select
0x05000000 for user CDRAM2
0x06000000 for user KTMP
0x09000000 for user CDRAM
0x0C000000 for user normal?
0x0D000000 for user MAIN PHYCONT
0x0E000000 for user CDIALOG
0x10000000 for kernel ROOT
0x20000000 for kernel IO
0x30000000 for kernel PHYCONT
0x40000000 for kernel CDRAM
0x50000000 for kernel CDRAM2
0x60000000 for kernel TMP
0xA0000000 for kernel GPU
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM2_RW 0x05408060
SCE_KERNEL_MEMBLOCK_TYPE_USER_KTMP***** 0x0620D006
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW_UNCACHE_EXTERNAL 0x09404060
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RO_UNCACHE 0x09408040
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW_UNCACHE 0x09408060
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW 0x09408060
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RWDATA 0x09408060
SCE_KERNEL_MEMBLOCK_TYPE_USER_DEVICE_RW 0x0C200860
SCE_KERNEL_MEMBLOCK_TYPE_USER_NC_RW 0x0C208060
SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE 0x0C208060
SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA_UNCACHE 0x0C208060
SCE_KERNEL_MEMBLOCK_TYPE_USER_RO 0x0C20D040
SCE_KERNEL_MEMBLOCK_TYPE_USER_TEXT 0x0C20D050
SCE_KERNEL_MEMBLOCK_TYPE_USER_RW 0x0C20D060
SCE_KERNEL_MEMBLOCK_TYPE_USER_RWDATA 0x0C20D060
SCE_KERNEL_MEMBLOCK_TYPE_USER_GAME_RW 0x0C50D060
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_RW 0x0C80D060
SCE_KERNEL_MEMBLOCK_TYPE_USER_UNKNOWN_RW_UNCACHE 0x0CA08060
SCE_KERNEL_MEMBLOCK_TYPE_USER_UNKNOWN_RW 0x0CA0D060
SCE_KERNEL_MEMBLOCK_TYPE_USER_UNKNOWN2_RW 0x0CF0D060
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_RW 0x0D808060
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RO_UNCACHE 0x0E208040
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RX_UNCACHE 0x0E208050
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RW_UNCACHE 0x0E208060
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RO 0x0E20D040
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RW 0x0E20D060
kernel memory types:
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_DEVICE_RW 0x10200806
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_SO_RW 0x10200206
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_R_UNCACHE 0x10208004
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_UNCACHE 0x10208006
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_R 0x1020D004
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RX 0x1020D005
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW 0x1020D006
/* alloc from ScePhyMemPartGame */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_GAME 0x1050D006
/* alloc from ScePhyMemPartPhyCont */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_PHYCONT 0x1080D006
/* alloc from ScePhyMemPartGameCDialog */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_CDIALOG 0x10A0D006
/* Seems alloc from remaining area */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RW_10C0D006 0x10C0D006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_SO_RO 0x20100204
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_SO_RW 0x20100206
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_RO 0x20100804
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_RW 0x20100806
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_NC_RO 0x20108004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_NC_RW 0x20108006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_PHYCONT_RW_UNCACHE 0x30808006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_CDRAM_RW_UNK 0x40404006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_CDRAM_RW 0x40408006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_CDRAM2_RW 0x50408006
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_NC_R 0x60208004
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_NC_RW 0x60208006
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_R 0x6020D004
/* alloc from ScePhyMemPartKD */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_RW 0x6020D006
/* alloc from ScePhyMemPartGame */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_GAME_RW 0x6050D006
code memory types:
SCE_KERNEL_MEMBLOCK_CODE_MEMORY_TYPE_L2WBWA: 0x2000
SCE_KERNEL_MEMBLOCK_CODE_MEMORY_TYPE_L1WBWA: 0x4000
SCE_KERNEL_MEMBLOCK_CODE_MEMORY_TYPE_NORMAL_NC: 0x8000
from 0.990
/* need check */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_CDRAM_L1WBWA_RW
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_SO_RW 0x10200206
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_DEVICE_RW 0x10200806
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_NC_R 0x10208004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_NC_RW 0x10208006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_R 0x1020D004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_RX 0x1020D005
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_RW 0x1020D006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_BOOT_IMAGE 0x1020D007
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_GAME_RW 0x1050D006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_SO_R 0x20100204
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_DEVICE_R 0x20100804
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_DEVICE_RW 0x20100806
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_NC_R 0x20108004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_NC_R 0x30808004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_NC_RW 0x30808006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_R 0x3080D004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_RW 0x3080D006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_UMAIN_RW
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_CDIALOG_R 0x10A0D004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_CDIALOG_RW 0x10A0D006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_NC_RW 0x10F08004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_NC_R 0x10F08006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_R 0x10F0D004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_RX 0x10F0D005
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_RW 0x10F0D006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_NC_R 0x60208004
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_NC_RW 0x60208006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_R 0x6020D006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_GAME_RW 0x6050D006
/* need check */
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_KMP_TOOL_RW 0x60F0D006
#define SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_GPU_CDRAM_RW 0xA0408006
Types to reverse
from 0.990:
CDIALOG:
SCE_KERNEL_MEMBLOCK_TYPE_CDIALOG_NC_R
FREE:
SCE_KERNEL_MEMBLOCK_TYPE_FREE
KERNEL:
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_CDRAM_L1WBWA_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_DEVICE_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_DEVICE_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_NC_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_IO_SO_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_KMP_TOOL_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_CDIALOG_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_CDIALOG_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_DEVICE_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_GAME_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_NC_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_NC_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_PHYCONT_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_RX
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_SO_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_ROOT_UMAIN_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_GAME_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_NC_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TMP_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_NC_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_R
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_RW
SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_TOOL_RX
USER:
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDIALOG_RX
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_NC_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_IO_DEVICE_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_IO_SO_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_KTMP_NC_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_KTMP_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_KTMP_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_KTMP_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_DEVICE_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_GAME_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_RX
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_TOOL_NC_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_TOOL_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_TOOL_RX
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_CDIALOG_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_CDIALOG_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_CDIALOG_RX
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_MAIN_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_MAIN_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_MAIN_RX
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_SHARED_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_SHARED_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_SHARED_RX
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_TOOL_R
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_TOOL_RW
SCE_KERNEL_MEMBLOCK_TYPE_USER_SHARED_TOOL_RX
SceSysmemForKernel
sceKernelStrnlenFromUserForKernel
Version |
NID
|
0.931 |
0x9BC3DEAC
|
3.60 |
not present
|
SceSize sceKernelStrnlenFromUserForKernel(const char *s, SceSize maxlen);
sceKernelPhysicalMemWriteForKernel
Version |
NID
|
0.931-0.990 |
0x4B86A751
|
3.60 |
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-0.990 |
0xF96E3AE2
|
3.60 |
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);
sceKernelCopyToUserTextDomainForKernel
Version |
NID
|
3.60 |
0x67BAD5B4
|
3.65 |
0x5EF1DAAF
|
This is a guessed name. Temp names were 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 |
Not present
|
3.60-3.61 |
0xA6F95838
|
3.63 |
0x499A9FFF
|
This is a guessed name. Temp names were 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 **class);
sceUIDObjectSetClassForKernel
Version |
NID
|
0.931-0.990 |
0x226DE851
|
3.60 |
not present
|
int sceUIDObjectSetClassForKernel(SceKernelObject *pObject, SceClass *pClass);
sceGUIDtoClassForKernel
Version |
NID
|
0.990-3.61 |
0x66636970
|
3.63 |
0x368F1C36
|
SceClass *sceGUIDtoClassForKernel(SceUID uid);
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.61 |
0xC105604E
|
3.63 |
0xE4193EB6
|
SceClass *sceKernelGetUIDDLinkClassForKernel(void);
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-3.60 |
0xEC7D36EF
|
3.65 |
0x52137FA3
|
Copy uid to vector by referring to all objects created by cls.
/*
* num - max copy number
*/
int sceGUIDGetUIDVectorByClassForKernel(SceClass *cls, int vis_level, SceUID *vector, SceSize num, SceSize *ret_num);
sceGUIDGetUIDVectorWeakByClassForKernel
Version |
NID
|
3.60-3.61 |
0x59F577E8
|
3.63 |
0xE9957329
|
int sceGUIDGetUIDVectorWeakByClassForKernel(int a1, int a2, int a3, int a4, void *pUIDVectorWeak);
sceUIDGetUIDVectorByClassForKernel
Version |
NID
|
0.931-0.990 |
0xA2F03233
|
3.60 |
not present
|
It is simply a wrapper for #sceGUIDGetUIDVectorByClassForKernel.
sceUIDGetProcUIDVectorByClassForKernel
Version |
NID
|
0.990 |
0x51C08396
|
3.60 |
not present
|
scePUIDGetUIDVectorByClassForKernel
Version |
NID
|
3.60-3.61 |
0xB16D5136
|
3.63 |
0x08C05493
|
Similar to #sceGUIDGetUIDVectorByClassForKernel. Maybe replacement for #sceUIDGetProcUIDVectorByClassForKernel.
int scePUIDGetUIDVectorByClassForKernel(SceUID pid, int a2, int a3, int a4, int a5, SceSize *ret_num);
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, SceKernelAddressSpace *pAS);
sceKernelDeleteAddressSpaceForKernel
Version |
NID
|
0.931-3.60 |
0xF2D7FE3A
|
3.65 |
0x4A2E421D
|
int sceKernelDeleteAddressSpaceForKernel(SceUID guid);
SceSysmemForKernel_7BD56D6D
Version |
NID
|
0.990-1.50 |
not present
|
3.60 |
0x7BD56D6D
|
3.65 |
0xCEBC4963
|
Official name might be sceKernelSetAddressSpaceNameForKernel.
Used by SceProcessmgr.
int SceSysmemForKernel_7BD56D6D(SceUID guid, const char *name);
sceKernelAddressSpaceSetPhyMemPartForKernel
Version |
NID
|
0.931-3.60 |
0x67955EE9
|
3.65 |
0x7DF07D60
|
int sceKernelAddressSpaceSetPhyMemPartForKernel(SceUID guid, int a2, SceKernelPhyMemPart *pPhyMemPart);
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
|
int sceKernelAddressSpaceUnmapForKernel(SceUID uid, int unk, void *vbase, SceSize size);
3.60:
int sceKernelAddressSpaceUnmapForKernel(SceUID uid, int flags, int unk, uint32_t paddr, SceSize size);
Example: in SceSysStateMgr:
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF7, 0x51000000, 0x1000000);
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0xE0000000, 0x8000000);
sceKernelAddressSpaceUnmapForKernel(0x10007, 0xF0, 0x1A000000, 0x100000);
3.60
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 uid, 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-3.60 |
0xFBEF93AA
|
This is not exist in ForKernel
This is a guessed name. Temp name was sceKernelGetAddressSpaceMMUContextForKernel.
SceInt32 sceKernelGetAddressSpaceMMUContextForKernel(SceUID address_space, void *context);
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 uid, 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 uid, 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 uid, 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, uint32_t mode, void *pVA, void **pPA);
sceKernelAddressSpaceVARangeToPAVectorForKernel
Version |
NID
|
0.990-3.61 |
0xF7250E6C
|
3.63 |
0xA541E0CF
|
int sceKernelAddressSpaceVARangeToPAVectorForKernel(SceUID uid, const SceKernelVARange *vRange, SceKernelPAVector *pPAV);
sceKernelGrowPhyMemPartForKernel
Version |
NID
|
0.990-3.61 |
0x6B3F4102
|
3.63 |
0x5B434019
|
Calls sceKernelGrowPhyMemPartWithFlagsForKernel with flags = 0.
int sceKernelGrowPhyMemPartForKernel(SceKernelPhyMemPart *pPhyMemPart, SceSize psize);
sceKernelGrowPhyMemPartWithFlagsForKernel
Version |
NID
|
0.990 |
not present
|
3.60-3.61 |
0x775AA5E3
|
3.63 |
0x36FDA794
|
Grows physical memory partition with flags.
int sceKernelGrowPhyMemPartWithFlagsForKernel(SceKernelPhyMemPart *pPhyMemPart, int flags, SceSize psize);
sceKernelGetGrownPhyMemPartSizeForKernel
Version |
NID
|
0.990 |
not present
|
3.60 |
0x4D809B47
|
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);
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(int param_1, int param_2, void *pCountInBuffer);
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 id, 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);
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);
sceUIDCreateEntryHeapForKernel
Version |
NID
|
0.990-3.60 |
0x19CAEF35
|
3.65 |
0x89BEF058
|
int sceUIDCreateEntryHeapForKernel(void);
sceUIDDeleteEntryHeapForKernel
Version |
NID
|
0.990-3.60 |
0xF0C3FCFC
|
3.65 |
0xF6D09BD9
|
int sceUIDDeleteEntryHeapForKernel(SceUID uid);
sceUIDEntryHeapCloseAllPUIDForKernel
Version |
NID
|
0.931-3.60 |
0xFAF96C1F
|
3.65 |
0x133024A5
|
int sceUIDEntryHeapCloseAllPUIDForKernel(SceUID uid);
sceUIDEntryHeapGetInfoForKernel
Version |
NID
|
0.990 |
not present
|
3.60-3.61 |
0x686AA15C
|
3.63 |
0xCCD47B97
|
int scePUIDGetEntryHeapNameForDriver(SceUID pid, SceUID uid, char **pName);
sceGUIDGetEntryForKernel
Version |
NID
|
3.60-3.61 |
0x45F2A59C
|
3.63 |
0xFF464A49
|
int sceGUIDGetEntryForKernel(SceUID guid, SceGUIDEntry **ppEntry);
sceGUIDGetEntryInfoAllForKernel
Version |
NID
|
0.990-3.61 |
0x2A79C51C
|
3.63 |
0x3BF0DE65
|
int sceGUIDGetEntryInfoAllForKernel(SceUID uid, void *vectors, uint32_t nVector, void *out);
sceGUIDGetEntryInfoClassForKernel
Version |
NID
|
0.990-3.61 |
0xE90CFD62
|
3.63 |
0x71E934DB
|
int sceGUIDGetEntryInfoClassForKernel(SceUID uid, int a2, void *vectors, int nVector, void *pInfoClass);
scePUIDGetEntryInfoAllForKernel
Version |
NID
|
3.60-3.61 |
0x2770A7D7
|
3.63 |
0x3C3005EE
|
int scePUIDGetEntryInfoAllForKernel(int a1, int a2, int a3, int a4, int a5, void *pInfoAll);
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);
SceSysmemForKernel_54E85275
Version |
NID
|
0.990-1.50 |
not present
|
3.60-3.61 |
0x54E85275
|
3.63 |
0x73E03A38
|
Uses result from SceSysmem#sceKernelGetPhyPartToolForKernel.
// pPhyPartTool comes from sceKernelGetPhyPartToolForKernel
// pOut points to a structure of size 0xB0 bytes
int SceSysmemForKernel_54E85275(void *pPhyPartTool, void *pOut);
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);
SceSysmemForKernel_EEB85560
Version |
NID
|
3.60 |
0xEEB85560
|
3.65 |
0x9B7E673F
|
Used by SceProcessmgr#sceKernelResetGameBudgetForKernel.
Called with same argument as #sceKernelSetPhyPartGameForKernel.
int SceSysmemForKernel_EEB85560(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);
sceGUIDFindByObjectForKernel
Version |
NID
|
0.990-3.61 |
0x95ABFDC3
|
3.63 |
0xEC90AA11
|
int sceGUIDFindByObjectForKernel(uint32_t uid_or_flags_or_object);
sceKernelAllocKernelHeapForKernel
Version |
NID
|
0.931-0.990 |
0x432EADA6
|
3.60 |
not present
|
int sceKernelAllocKernelHeapForKernel(SceSize size);
sceGUIDNameForKernel
Version |
NID
|
0.990 |
0x250EE289
|
3.60 |
not present
|
char *sceGUIDNameForKernel(SceUID uid);
sceGUIDRegisterForKernel
Version |
NID
|
0.990-3.61 |
0xAF42AAD5
|
3.63 |
0x6DB44A42
|
int sceGUIDRegisterForKernel(SceClass *pClass, const char *name, SceKernelObject *pObject);
sceGUIDUnregisterForKernel
Version |
NID
|
0.931-0.990 |
0xE79BBCF2
|
3.60 |
not present
|
int sceGUIDUnregisterForKernel(SceUID uid);
sceUIDRegisterForKernel
Version |
NID
|
0.931-0.990 |
0x59162CD7
|
3.60 |
not present
|
Calls #sceGUIDRegisterForKernel.
int sceUIDRegisterForKernel(SceClass *pClass, const char *name, SceKernelObject *pObject);
SceSysmemForKernel_48D87E17
Version |
NID
|
0.990-3.61 |
0x48D87E17
|
3.63 |
0x1380E144
|
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);
sceKernelGetSimpleMemBlockBaseForKernel
Version |
NID
|
0.990-3.60 |
0x0A8D14EC
|
int sceKernelGetSimpleMemBlockBaseForKernel(SceKernelSimpleMemBlock *smb, void **base);
sceKernelGetMemBlockInfoSimpleForKernel
Version |
NID
|
0.990-3.60 |
0x2364A170
|
int sceKernelGetMemBlockInfoSimpleForKernel(SceUID uid, SceKernelMemBlockInfoSimple *pInfo);
sceKernelGetMemBlockTypeForKernel
Version |
NID
|
3.60 |
0x289BE3EC
|
/***
* 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);
sceKernelFreeSimpleMemBlockForKernel
Version |
NID
|
0.990-3.60 |
0xA1FFA2C9
|
sceKernelAllocPartitionMemBlockForKernel
Version |
NID
|
0.931-3.60 |
0x5FFE4B79
|
3.65 |
0x6DB45017
|
Temp name was sceKernelAllocSystemCallTableForKernel.
SceUID sceKernelAllocPartitionMemBlockForKernel(SceUID part, const char *name, SceKernelMemBlockType type, SceSize size, const struct SceKernelAllocMemBlockOptKernel *pOpt);
Version |
NID
|
0.990-3.60 |
0xEB350679
|
void *sceKernelGetPhyPageResetForKernel(void);
sceKernelFreePhyPageForKernel
Version |
NID
|
0.990-3.61 |
0x00BC5B4A
|
3.63 |
0x193A9D2F
|
int sceKernelFreePhyPageForKernel(uint32_t a1, int pPage, uint32_t a3, uint32_t a4);
sceKernelNameHeapInsertForKernel
Version |
NID
|
0.990-3.60 |
0x08AB3DAE
|
int sceKernelNameHeapInsertForKernel(char *name, uint32_t flags, uint32_t *out);
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.60 |
0x53E1FFDE
|
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);
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);
scePUIDGetAttrForKernel
Version |
NID
|
3.60 |
0x86E83C0D
|
int scePUIDGetAttrForKernel(SceUID pid, SceUID uid, void *pAttr);
scePUIDReleaseObjectForKernel
Version |
NID
|
0.990-3.60 |
0x3FCA782B
|
int scePUIDReleaseObjectForKernel(SceUID pid, SceUID uid);
scePUIDGetInfoForKernel
Version |
NID
|
0.990 |
not present
|
3.60 |
0x12ED88AE
|
// pInfo size is 0x14 bytes
int scePUIDGetInfoForKernel(SceUID pid, SceUID uid, void *pInfo);
sceGUIDGetVisibilityLevelForKernel
Version |
NID
|
3.60 |
0xC69666C3
|
sceGUIDSetVisibilityLevelForKernel
Version |
NID
|
3.60 |
0xCB8D03C0
|
Sets visibilityLevel into guid's GUIDEntry.
int sceGUIDSetVisibilityLevelForKernel(SceUID guid, int visibilityLevel);
sceGUIDFindByNameForKernel
Version |
NID
|
3.60 |
0xCEBA8031
|
sceGUIDFindByNameAllForKernel
Version |
NID
|
3.60 |
0x4B5C85AC
|
sceGUIDGetPIDForKernel
Version |
NID
|
3.60 |
0xCF5A2311
|
Returns Process ID for guid.
SceUID sceGUIDGetPIDForKernel(SceUID guid);
sceGUIDSetPIDForKernel
Version |
NID
|
3.60 |
0x812E7A53
|
Sets Process ID for guid.
int sceGUIDSetPIDForKernel(SceUID guid, SceUID pid);
sceGUIDSetCNOAForKernel
Version |
NID
|
3.60 |
0x8D6AF468
|
sceGUIDSetForKernel
Version |
NID
|
0.931-3.60 |
0xD7B323EB
|
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);
sceUIDReferObjectWithLevelForKernel
Version |
NID
|
0.990 |
0xF79B52B2
|
3.60 |
not present
|
int sceUIDReferObjectWithLevelForKernel(SceUID uid, SceUInt32 level, SceKernelObject **ppEntry);
sceGUIDReferForKernel
Version |
NID
|
3.60 |
0xB3E2AA7A
|
int sceGUIDReferForKernel(SceUID pid, int guid);
sceKernelNameHeapGetInfoForKernel
Version |
NID
|
0.990 |
not present
|
3.60 |
0xE443253B
|
sceKernelGetFixedHeapInfoByPointerForKernel
Version |
NID
|
0.990-3.61 |
0x219E90FD
|
3.63 |
0xA24D2C8D
|
// pObject is of size 0x30
// pObject first 4 bytes are structure size
int sceKernelGetFixedHeapInfoByPointerForKernel(void *pObject, SceKernelFixedHeapInfo *pInfo);
sceKernelGetHeapInfoAllChunkForKernel
Version |
NID
|
0.931-0.990 |
0xAC4C0EB1
|
3.60 |
not present
|
int sceKernelGetHeapInfoAllChunkForKernel(SceUID uid, SceKernelHeapInfo *pInfo);
sceKernelGetHeapInfoByPointerForKernel
Version |
NID
|
0.931-0.990 |
not present
|
3.60 |
0x68451777
|
int sceKernelGetHeapInfoByPointerForKernel(void *pObject, SceKernelHeapInfo *pInfo);
sceKernelGetHeapInfoForKernel
Version |
NID
|
0.931-3.60 |
0x91733EF4
|
// 0.931-0.990:
int sceKernelGetHeapInfoForKernel(SceUID uid, SceKernelHeapInfo *pInfo);
// 3.60:
int sceKernelGetHeapInfoForKernel(SceUID uid, SceUInt32 level, SceKernelHeapInfo *pInfo);
sceKernelAllocForKernel
Version |
NID
|
0.990-3.60 |
0xC0A4D2F3
|
3.65 |
0x85571907
|
void *sceKernelAllocForKernel(SceSize len);
sceKernelAllocWithOptForKernel
Version |
NID
|
3.60 |
0xA2CD1697
|
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
|
void sceKernelFreeForKernel(void *ptr);
SceSysmemForKernel_C38D61FC
Version |
NID
|
0.990 |
0xC38D61FC
|
Calls #SceSysmemForDriver_89A44858.
sceUIDGetObjectForKernel
Version |
NID
|
0.931-0.990 |
0xC4893914
|
Calls #sceGUIDGetObjectForDriver.
int sceUIDGetObjectForKernel(SceUID uid, SceKernelObject **ppEntry);
scePUIDReferObjectForKernel
Version |
NID
|
0.990-3.60 |
0x620E00E7
|
int scePUIDReferObjectForKernel(SceUID pid, SceUID puid, SceObject **ppObject);
SceSysmemForKernel_7C797940
Version |
NID
|
0.931-0.990 |
0x7C797940
|
Calls #SceSysmemForKernel_620E00E7 or #sceGUIDReferObjectForDriver.
sceUIDtoObjectForKernel
Version |
NID
|
0.990-3.60 |
0xED221825
|
3.65 |
0xFA6C098C
|
Calls SceSysmem#sceGUIDGetObjectForDriver.
SceKernelObject *sceUIDtoObjectForKernel(SceUID uid);
sceGUIDOpenByGUIDForKernel
Version |
NID
|
0.990-3.60 |
0xCF53EEE4
|
SceSysmemForKernel_9C7B62AB
Version |
NID
|
0.990-3.60 |
0x9C7B62AB
|
// name max length is 31 characters
int SceSysmemForKernel_9C7B62AB(const char *name, SceUInt32 flag);
SceSysmemForKernel_942D15FC
Version |
NID
|
3.60 |
0x942D15FC
|
Used to get GUID by name.
int SceSysmemForKernel_942D15FC(const char *name, SceSize namelen, int unk_guid_global_value);
SceSysmemForKernel_C8672A3D
Version |
NID
|
3.60 |
0xC8672A3D
|
int SceSysmemForKernel_C8672A3D(int unk);
sceKernelInitProcessMemoryForKernel
Version |
NID
|
3.60 |
0xE7938BFB
|
This is guessed name.
Used by SceProcessmgr
int sceKernelInitProcessMemoryForKernel(void);
SceSysmemForKernel_01DE3AB7
Version |
NID
|
3.60 |
0x01DE3AB7
|
SceSysmemForKernel_07FEBBCA
Version |
NID
|
3.60-3.61 |
0x07FEBBCA
|
3.63 |
0xDCEF10B2
|
SceSysmemForKernel_080BA2F3
Version |
NID
|
3.60 |
0x080BA2F3
|
SceSysmemForKernel_114E6476
Version |
NID
|
3.60-3.61 |
0x114E6476
|
3.63 |
0x5FD15C6E
|
SceSysmemForKernel_FAD03241
Version |
NID
|
3.60 |
0xFAD03241
|
SceSysmemForKernel_FC74A355
Version |
NID
|
3.60 |
0xFC74A355
|
SceSysmemForKernel_FDC0EA11
Version |
NID
|
3.60 |
0xFDC0EA11
|
SceSysmemForKernel_FEF54604
Version |
NID
|
3.60 |
0xFEF54604
|
SceSysmemForKernel_F1433852
Version |
NID
|
3.60 |
0xF1433852
|
SceSysmemForKernel_ECF9435A
Version |
NID
|
3.60 |
0xECF9435A
|
SceSysmemForKernel_ECC68E7B
Version |
NID
|
3.60 |
0xECC68E7B
|
SceSysmemForKernel_EC1293D2
Version |
NID
|
3.60 |
0xEC1293D2
|
SceSysmemForKernel_E68A9F1B
Version |
NID
|
3.60 |
0xE68A9F1B
|
SceSysmemForKernel_E65EA709
Version |
NID
|
3.60 |
0xE65EA709
|
SceSysmemForKernel_D514BB56
Version |
NID
|
3.60 |
0xD514BB56
|
SceSysmemForKernel_D449547B
Version |
NID
|
3.60 |
0xD449547B
|
SceSysmemForKernel_131CEF52
Version |
NID
|
3.60 |
0x131CEF52
|
SceSysmemForKernel_17F1AA22
Version |
NID
|
3.60 |
0x17F1AA22
|
SceSysmemForKernel_1E11F41D
Version |
NID
|
3.60 |
0x1E11F41D
|
SceSysmemForKernel_210DB518
Version |
NID
|
3.60 |
0x210DB518
|
SceSysmemForKernel_21285F40
Version |
NID
|
3.60 |
0x21285F40
|
SceSysmemForKernel_22708F14
Version |
NID
|
3.60 |
0x22708F14
|
SceSysmemForKernel_22A26637
Version |
NID
|
3.60 |
0x22A26637
|
SceSysmemForKernel_22F79E82
Version |
NID
|
3.60 |
0x22F79E82
|
SceSysmemForKernel_2658EE0A
Version |
NID
|
3.60 |
0x2658EE0A
|
SceSysmemForKernel_CD985AEB
Version |
NID
|
3.60 |
0xCD985AEB
|
SceSysmemForKernel_CA91B9D5
Version |
NID
|
3.60 |
0xCA91B9D5
|
SceSysmemForKernel_C6F04370
Version |
NID
|
3.60-3.61 |
0xC6F04370
|
3.63 |
0x02DAD732
|
SceSysmemForKernel_C38B4D52
Version |
NID
|
3.60-3.61 |
0xC38B4D52
|
3.63 |
0x2E5CC243
|
SceSysmemForKernel_C2F7D8A4
Version |
NID
|
3.60-3.61 |
0xC2F7D8A4
|
3.63 |
0x797C858B
|
SceSysmemForKernel_C0BF149E
Version |
NID
|
3.60 |
0xC0BF149E
|
SceSysmemForKernel_BF04FC83
Version |
NID
|
3.60 |
0xBF04FC83
|
SceSysmemForKernel_BF0294E4
Version |
NID
|
3.60 |
0xBF0294E4
|
SceSysmemForKernel_BC2E2B2B
Version |
NID
|
3.60 |
0xBC2E2B2B
|
SceSysmemForKernel_B8D769C6
Version |
NID
|
3.60 |
0xB8D769C6
|
SceSysmemForKernel_B543A23C
Version |
NID
|
3.60 |
0xB543A23C
|
SceSysmemForKernel_B339A865
Version |
NID
|
3.60 |
0xB339A865
|
SceSysmemForKernel_AF180A3F
Version |
NID
|
3.60 |
0xAF180A3F
|
SceSysmemForKernel_AD5A83E3
Version |
NID
|
3.60 |
0xAD5A83E3
|
SceSysmemForKernel_A88F6D88
Version |
NID
|
3.60 |
0xA88F6D88
|
SceSysmemForKernel_A504BA60
Version |
NID
|
3.60 |
0xA504BA60
|
SceSysmemForKernel_9C53F457
Version |
NID
|
3.60 |
0x9C53F457
|
SceSysmemForKernel_98E6905B
Version |
NID
|
3.60 |
0x98E6905B
|
SceSysmemForKernel_9894B9E1
Version |
NID
|
3.60 |
0x9894B9E1
|
SceSysmemForKernel_8FB73A29
Version |
NID
|
3.60-3.61 |
0x8FB73A29
|
3.63 |
0x17F12DCE
|
SceSysmemForKernel_8C8E2DD1
Version |
NID
|
3.60-3.61 |
0x8C8E2DD1
|
3.63 |
0xD4511A52
|
SceSysmemForKernel_8B07BB52
Version |
NID
|
3.60-3.61 |
0x8B07BB52
|
3.63 |
0x16A54BFE
|
SceSysmemForKernel_876A7F44
Version |
NID
|
3.60-3.61 |
0x876A7F44
|
3.63 |
0xF3DB2D71
|
SceSysmemForKernel_7FDF483A
Version |
NID
|
3.60 |
0x7FDF483A
|
SceSysmemForKernel_7FD757FE
Version |
NID
|
3.60 |
0x7FD757FE
|
SceSysmemForKernel_7DC46969
Version |
NID
|
3.60 |
0x7DC46969
|
SceSysmemForKernel_7D92B2D3
Version |
NID
|
3.60 |
0x7D92B2D3
|
SceSysmemForKernel_7BE4D3D1
Version |
NID
|
3.60 |
0x7BE4D3D1
|
SceSysmemForKernel_789CD5BF
Version |
NID
|
3.60 |
0x789CD5BF
|
SceSysmemForKernel_72E7BFAC
Version |
NID
|
3.60 |
0x72E7BFAC
|
SceSysmemForKernel_71869119
Version |
NID
|
3.60 |
0x71869119
|
SceSysmemForKernel_6BB6AF94
Version |
NID
|
3.60-3.61 |
0x6BB6AF94
|
3.63 |
0x03A2CAF0
|
SceSysmemForKernel_68CB9266
Version |
NID
|
3.60 |
0x68CB9266
|
SceSysmemForKernel_6427560F
Version |
NID
|
3.60 |
0x6427560F
|
SceSysmemForKernel_64133268
Version |
NID
|
3.60 |
0x64133268
|
SceSysmemForKernel_61C2AA52
Version |
NID
|
3.60 |
0x61C2AA52
|
SceSysmemForKernel_60735311
Version |
NID
|
3.60 |
0x60735311
|
SceSysmemForKernel_5C257482
Version |
NID
|
3.60-3.61 |
0x5C257482
|
3.63 |
0x8F0B5536
|
SceSysmemForKernel_571660AA
Version |
NID
|
3.60-3.61 |
0x571660AA
|
3.63 |
0x93344755
|
SceSysmemForKernel_5409397F
Version |
NID
|
3.60 |
0x5409397F
|
SceSysmemForKernel_53A2E272
Version |
NID
|
3.60 |
0x53A2E272
|
SceSysmemForKernel_4FA4A624
Version |
NID
|
3.60-3.61 |
0x4FA4A624
|
3.63 |
0x890D9160
|
SceSysmemForKernel_48750A5A
Version |
NID
|
3.60-3.61 |
0x48750A5A
|
3.63 |
0x7F7D5C4A
|
SceSysmemForKernel_46A5CB84
Version |
NID
|
3.60-3.61 |
0x46A5CB84
|
3.63 |
0xC3F9607E
|
SceSysmemForKernel_4492421F
Version |
NID
|
3.60-3.61 |
0x4492421F
|
3.63 |
0xC3EF4055
|
SceSysmemForKernel_43E81C4B
Version |
NID
|
3.60-3.61 |
0x43E81C4B
|
3.63 |
0x50980298
|
SceSysmemForKernel_43DFCE89
Version |
NID
|
3.60-3.61 |
0x43DFCE89
|
3.63 |
0xBD625136
|
SceSysmemForKernel_3F74E45C
Version |
NID
|
3.60-3.61 |
0x3F74E45C
|
3.63 |
0x47C55DCC
|
SceSysmemForKernel_3EC2345B
Version |
NID
|
3.60-3.61 |
0x3EC2345B
|
3.63 |
0x811C452B
|
SceSysmemForKernel_3B75CBED
Version |
NID
|
3.60-3.61 |
0x3B75CBED
|
3.63 |
0x857408DA
|
SceSysmemForKernel_36830F46
Version |
NID
|
3.60-3.61 |
0x36830F46
|
3.63 |
0x9D8F3BE8
|
SceSysmemForKernel_3203AE64
Version |
NID
|
3.60-3.61 |
0x3203AE64
|
3.63 |
0x66489B4B
|
SceSysmemForKernel_2EE50533
Version |
NID
|
3.60-3.61 |
0x2EE50533
|
3.63 |
0x82059651
|
SceSysmemForKernel_2791F109
Version |
NID
|
3.60-3.61 |
0x2791F109
|
3.63 |
0x5C0FC6BE
|
SceSysmemForDriver
scePUIDGetEntryHeapNameForDriver
Version |
NID
|
0.990-3.60 |
0x09896EB7
|
Real name might be scePUIDGetEntryHeapNameForDriver. Temp name was sceKernelGetNameForPidByUidForDriver.
sceUIDGetDefaultClassForDriver
Version |
NID
|
0.931-0.990 |
0xFE28F5EB
|
3.60 |
not present
|
SceClass *sceUIDGetDefaultClassForDriver(void);
sceUIDtoClassForDriver
Version |
NID
|
0.990 |
0x65B9B393
|
3.60 |
not present
|
Calls sceGUIDtoClassForKernel.
SceClass *sceUIDtoClassForDriver(SceUID uid);
scePUIDGetClassForDriver
Version |
NID
|
0.990-3.60 |
0xE9728A12
|
Temp name was sceKernelGetClassForPidForUidForDriver.
int scePUIDGetClassForDriver(SceUID pid, SceUID uid, SceClass **ppClass);
sceGUIDGetClassForDriver
Version |
NID
|
0.990-3.60 |
0xC74B0152
|
Temp name was sceKernelGetClassForUidForDriver.
int sceGUIDGetClassForDriver(SceUID uid, SceClass **ppClass);
sceUIDClassInitForDriver
Version |
NID
|
0.931-0.990 |
0xE6D75E99
|
3.60 |
not present
|
int sceUIDClassInitForDriver(SceClass *pClass, const char *name, uint32_t uid_class, SceSize item_size, void *constructor, void *destructor);
scePUIDOpenByNameWithExactClassForDriver
Version |
NID
|
0.990 |
0xB800123C
|
3.60 |
not present
|
This is a guessed name. Previous name was add_heap
.
Equivalent to scePUIDOpenByNameWithClass, but the object's class must match exactly the provided pClass
.
SceUID scePUIDOpenByNameWithExactClassForDriver(ScePID process, const char *name, const SceClass *pClass);
sceKernelIsSubclassForDriver
Version |
NID
|
0.990 |
0x6484D03E
|
3.60 |
not present
|
SceBool sceKernelIsSubclassForDriver(SceClass *parentClass, SceClass *class);
sceGUIDNameForDriver
Version |
NID
|
0.990 |
0xB2BB6216
|
3.60 |
not present
|
char *sceGUIDNameForDriver(SceUID id);
sceKernelGetMemBlockAllocSizeForDriver
Version |
NID
|
0.990 |
0x63E5754B
|
3.60 |
not present
|
int sceKernelGetMemBlockAllocSizeForDriver(SceUID id, SceSize *size);
sceUIDGetClassInfoAllForDriver
Version |
NID
|
0.990 |
0x3EF32C6C
|
3.60 |
not present
|
int sceUIDGetClassInfoAllForDriver(SceClassInfo_0990 *vector, uint32_t maxNumClass, uint32_t *pNumClassInBuf);
sceUIDCloseForDriver
Version |
NID
|
0.990 |
0x32C5F628
|
3.60 |
not present
|
if (a2 & 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 |
not present
|
Calls sceGUIDCloseForDriver.
int SceSysmemForDriver_F09A7D09(SceUID uid);
switch_ttb_for_pid
Version |
NID
|
1.69 |
0x6F2ACDAE
|
1.80 |
Removed
|
Changes the TTBR to point to the tables for a given PID.
int switch_ttb_for_pid(SceUID pid);
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);
sceKernelAllocHeapMemoryFromGlobalHeapForDriver
Version |
NID
|
3.60 |
0x7750CEA7
|
Calls sceKernelAllocHeapMemoryForDriver with uid = -1 (global heap uid
).
void* sceKernelAllocHeapMemoryFromGlobalHeapForDriver(SceSize size);
sceKernelAllocHeapMemoryFromGlobalHeapWithOptForDriver
Version |
NID
|
0.990-3.60 |
0x0B4ED16A
|
Calls sceKernelAllocHeapMemoryWithOptionForDriver with uid = -1 (global heap uid
).
void* sceKernelAllocHeapMemoryFromGlobalHeapWithOptForDriver(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);
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);
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 authorize null pOpt.
SceUID sceKernelAllocMemBlockForDebuggerForDriver(const char *name, SceKernelMemBlockType type, SceSize vsize, SceKernelAllocMemBlockOptKernel *pOpt);
sceKernelCreateClassForDriver
Version |
NID
|
3.60 |
0x61317102
|
int sceKernelCreateClassForDriver(SceClass *cls, const char *name, const SceClass *group, SceSize item_size, SceClassCallback create, SceClassCallback destroy);
sceKernelCreateHeapForDriver
Version |
NID
|
0.931-3.60 |
0x9328E0E8
|
The heap pool is thread safe.
// pOpt can be NULL
SceUID sceKernelCreateHeapForDriver(const char *name, SceSize size, SceKernelHeapCreateOpt *pOpt);
sceUIDKernelCreateForDriver
Version |
NID
|
0.990 |
0x7FC849B1
|
3.60 |
not present
|
Calls sceGUIDKernelCreateForKernel.
Create a UID with default attribute (0x30000).
int sceUIDKernelCreateForDriver(SceClass *pClass, const char *name, SceKernelObject **ppEntry);
sceUIDKernelCreate2ForDriver
Version |
NID
|
0.990 |
not present
|
3.60 |
0x56A13E90
|
Temp name was sceKernelCreateUidObj2ForDriver.
Create a UID with default attribute (0x30000).
SceUID sceUIDKernelCreate2ForDriver(SceClass *pClass, const char *name, SceKernelObject **ppEntry);
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);
scePUIDOpenByGUIDForDriver
Version |
NID
|
0.931-3.60 |
0xBF209859
|
Temp name was sceKernelCreateUserUidForDriver.
SceUID scePUIDOpenByGUIDForDriver(SceUID pid, SceUID uid);
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 process, const char *name, SceClass *pClass);
sceKernelDeleteHeapForDriver
Version |
NID
|
0.940-3.60 |
0xD6437637
|
int sceKernelDeleteHeapForDriver(SceUID uid);
sceGUIDCloseForDriver
Version |
NID
|
0.990-3.60 |
0x047D32F2
|
Temp name was sceKernelDeleteUidForDriver.
int sceGUIDCloseForDriver(SceUID uid);
scePUIDCloseForDriver
Version |
NID
|
0.990-3.60 |
0x84A4AF5E
|
Temp name was sceKernelDeleteUserUidForDriver.
int scePUIDCloseForDriver(SceUInt32 flag_or_addr_or_pid, SceUID uid);
sceKernelGetMemBlockMemtypeByAddrForDriver
Version |
NID
|
0.990-3.60 |
0xF3BBE2E1
|
Temp name was sceKernelFindMemBlockByAddrForDefaultSizeForDriver.
SceKernelMemoryType sceKernelGetMemBlockMemtypeByAddrForDriver(const void *addr);
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);
sceKernelFirstDifferentBlock32UserForDriver
Version |
NID
|
3.60 |
0xBDA6E42B
|
int sceKernelFirstDifferentBlock32UserForDriver(unsigned int *ptr, int value, int byte_size);
sceKernelCountFillValueFromUserProcForDriver
Version |
NID
|
1.69-3.60 |
0x8334454F
|
Temp name was sceKernelFirstDifferentBlock32UserForPidForDriver.
Looks for an integer in userspace.
int sceKernelCountFillValueFromUserProcForDriver(SceUID pid, unsigned int *ptr, int value, int byte_size);
sceKernelFirstDifferentBlock64UserForDriver
Version |
NID
|
3.60 |
0xBB3B02C2
|
int sceKernelFirstDifferentBlock64UserForDriver(unsigned long long *ptr, int unused, unsigned long long value, int byte_size);
sceKernelCountFillValue64FromUserProcForDriver
Version |
NID
|
3.60 |
0xE83855FD
|
Temp name was sceKernelFirstDifferentBlock64UserForPidForDriver.
int sceKernelCountFillValue64FromUserProcForDriver(SceUID pid, unsigned long long *ptr, unsigned long long value, int byte_size);
sceKernelFreeHeapMemoryForDriver
Version |
NID
|
0.990-3.60 |
0x3EBCE343
|
Temp name was sceKernelMemPoolFreeForDriver.
int sceKernelFreeHeapMemoryForDriver(SceUID uid, void *ptr);
sceKernelFreeHeapMemoryFromGlobalHeapForDriver
Version |
NID
|
3.60 |
0xFB817A59
|
int sceKernelFreeHeapMemoryFromGlobalHeapForDriver(void *ptr);
sceKernelFreeMemBlockForDriver
Version |
NID
|
0.931-3.65 |
0x009E1C61
|
int sceKernelFreeMemBlockForDriver(SceUID uid);
sceKernelGetMemBlockPARangeForDriver
Version |
NID
|
0.990-3.60 |
0x98C15666
|
Previous 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.60 |
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);
sceGUIDGetNameForDriver
Version |
NID
|
3.60 |
0xA78755EB
|
This is a guessed name, but near. Temp name was sceKernelGetNameForUidForDriver.
int sceGUIDGetNameForDriver(SceUID guid, char **pName);
sceGUIDGetName2ForDriver
Version |
NID
|
3.60 |
0xE655852F
|
This is a guessed name, but near. Temp name was sceKernelGetNameForUid2ForDriver.
const char* sceGUIDGetName2ForDriver(SceUID guid);
sceUIDtoObjectWrapperForDriver
Version |
NID
|
0.990 |
0xAB7AC3D1
|
This is a guessed name.
Calls #sceUIDtoObjectForKernel.
SceKernelObject *sceUIDtoObjectWrapperForDriver(SceUID uid);
sceGUIDGetObjectForDriver
Version |
NID
|
0.990-3.60 |
0x0FC24464
|
Temp name was sceKernelGUIDGetObjectForDriver.
int sceGUIDGetObjectForDriver(SceUID uid, SceKernelObject **ppEntry);
scePUIDGetObjectForDriver
Version |
NID
|
0.990-3.60 |
0xFE6D7FAE
|
Temp name was sceKernelGetObjectForPidForUidForDriver.
int scePUIDGetObjectForDriver(SceUID pid, 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 uid, SceClass *pClass, SceKernelObject **ppEntry);
sceKernelVAtoPAForDriver
Version |
NID
|
0.990-3.60 |
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(void *pVA, void **pPA);
sceKernelVAtoPABySWForDriver
Version |
NID
|
0.990-3.60 |
0x65419BD3
|
Temp name was sceKernelGetPaddrWithSectionTypeCheckForDriver, sceKernelAddressSpaceVAtoPABySWForDriver.
int sceKernelVAtoPABySWForDriver(void *pVA, void **pPA);
sceKernelProcVAtoPAForDriver
Version |
NID
|
0.990 |
0xC51934BD
|
int sceKernelProcVAtoPAForDriver(SceUID pid, void *pVA, void **pPA);
sceKernelProcModeVAtoPAForDriver
Version |
NID
|
0.990-3.60 |
0x61A67D32
|
Temp name was sceKernelGetPaddrForPidForDriver.
int sceKernelProcModeVAtoPAForDriver(SceUID pid, SceUInt32 mode, void *pVA, void **pPA);
sceKernelVARangeToPAVectorForDriver
Version |
NID
|
0.931-3.60 |
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
|
3.60 |
0x08A8A7E8
|
This is a guessed name. Temp name was sceKernelGetPaddrListForLargePageForDriver.
int sceKernelVARangeToPAVectorBySWForDriver(const SceKernelVARange *vRange, SceKernelPAVector *pPAV);
sceKernelVARangeToPAVectorByHWForDriver
Version |
NID
|
3.60 |
0x16844CE6
|
Temp name was sceKernelGetPaddrListForSmallPageForDriver.
int sceKernelVARangeToPAVectorByHWForDriver(const SceKernelVARange *vRange, SceKernelPAVector *pPAV);
sceKernelVARangeToPARangeForDriver
Version |
NID
|
0.940-3.60 |
0xAE36C775
|
Temp name was sceKernelGetPaddrPairForDriver.
int sceKernelVARangeToPARangeForDriver(const SceKernelVARange *vRange, SceKernelPARange *pRange);
sceKernelVARangeToPARangeBySWForDriver
Version |
NID
|
3.60 |
0x32257A24
|
This is a guessed name. Temp name was sceKernelGetPaddrPairForLargePageForDriver.
int sceKernelVARangeToPARangeBySWForDriver(SceKernelVARange *vRange, SceKernelPARange *pRange);
sceKernelVARangeToPARangeByHWForDriver
Version |
NID
|
3.60 |
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
|
3.60 |
0xF4AD89D8
|
Temp name was sceKernelProcIsPAWithinSameSection, sceKernelIsPaddrWithinSameSectionForUidForDriver.
int sceKernelIsEqualAccessibleRangeProcBySWForDriver(SceUID pid, int permission_type, void *pVA, SceSize len);
sceKernelGetDebugPADramRangeForDriver
Version |
NID
|
3.60 |
0xC9928F5E
|
This is a guessed name. Temp name was sceKernelGetUnknownValidPhysAddressSpaceForDriver.
int sceKernelGetDebugPADramRangeForDriver(SceUIntptr *address, SceSize *length);
sceKernelIsVAWithinDebugPADramRangeForDriver
Version |
NID
|
3.60 |
0xA7C0D1FC
|
This is a guessed and bad name. Temp name was sceKernelIsPaddrWithinUnknownValidPhysAddressSpaceForDriver.
int sceKernelIsVAWithinDebugPADramRangeForDriver(const void *pVA);
sceKernelGetPidContextForDriver
Version |
NID
|
3.60 |
0x2ECF7944
|
This is a guessed name.
typedef struct SceKernelProcessContext {
SceUInt32 TTBR1;
SceUInt32 DACR;
SceUInt32 CONTEXTIDR;
} SceKernelProcessContext;
int sceKernelGetPidContextForDriver(SceUID pid, SceKernelProcessContext **ppCtx);
sceKernelGetUIDClassForDriver
Version |
NID
|
3.60 |
0x85336A1C
|
This is a guessed and bad name.
SceClass *sceKernelGetUIDClassForDriver(void);
scePUIDtoGUIDWithClassForDriver
Version |
NID
|
0.990 |
not present
|
3.60 |
0x184172B1
|
Temp name was sceKernelKernelUidForUserUidForClassForDriver.
SceUID scePUIDtoGUIDWithClassForDriver(SceUID pid, SceUID uid, SceClass *pClass);
scePUIDtoGUIDForDriver
Version |
NID
|
0.990-3.60 |
0x45D22597
|
Temp name was sceKernelKernelUidForUserUidForDriver.
Process UID to Global UID.
SceUID scePUIDtoGUIDForDriver(SceUID pid, SceUID uid);
sceKernelPartitionMapMemBlockForDriver
Version |
NID
|
0.990-3.60 |
0x58D21746
|
Temp name was sceKernelMapBlockUserVisibleForDriver.
int sceKernelPartitionMapMemBlockForDriver(SceUID uid);
sceKernelMapBlockUserVisibleWithFlagForDriver
Version |
NID
|
3.60 |
0x04059C4B
|
int sceKernelMapBlockUserVisibleWithFlagForDriver(SceUID uid, int some_flag);
sceKernelUserMapForDriver
Version |
NID
|
0.990-3.60 |
0x278BC201
|
Temp name was sceKernelMapUserBlockDefaultTypeForDriver.
Assigns type 0.
SceUID sceKernelUserMapForDriver(const char *name, int permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, SceUInt32 *kernel_offset);
sceKernelProcUserMapForDriver
Version |
NID
|
3.60 |
0x0091D74D
|
Temp name was sceKernelMapUserBlockForDefaultTypeForPidForDriver. sceKernelProcUserMapForDriver is certainly the real name.
Assigns type 0.
SceUID sceKernelProcUserMapForDriver(SceUID pid, const char *name, int permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, SceUInt32 *kernel_offset);
sceKernelUserMapWithFlagsForDriver
Version |
NID
|
0.990 |
not present
|
1.50-3.60 |
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(int 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, int permission, int type, void *user_buf, int size, void **kernel_page, int *kernel_size, int *kernel_offset);
sceKernelDecRefCountMemBlockForDriver
Version |
NID
|
0.990-3.60 |
0xF50BDC0C
|
Temp name was sceKernelMemBlockDecRefCounterAndReleaseUidForDriver.
int sceKernelDecRefCountMemBlockDriver(SceUID uid);
sceKernelMemBlockGetInfoExForDriver
Version |
NID
|
3.60 |
0x24A99FFF
|
int sceKernelMemBlockGetInfoExForDriver(SceUID uid, SceKernelMemBlockInfoEx *info);
sceKernelGetMemBlockInfoForDriver
Version |
NID
|
0.990-3.60 |
0xA73CFFEF
|
Temp name was sceKernelMemBlockGetInfoExForVisibilityLevelForDriver.
int sceKernelGetMemBlockInfoForDriver(SceUID uid, uint32_t level, SceKernelMemBlockInfoEx *pInfo);
sceKernelMemBlockGetSomeSizeForDriver
Version |
NID
|
3.60 |
0x78337B62
|
int sceKernelMemBlockGetSomeSizeForDriver(SceUID uid, int *some_size);
sceKernelIncRefCountMemBlockForDriver
Version |
NID
|
0.990-3.60 |
0xEAF3849B
|
Temp name was sceKernelMemBlockIncRefCounterAndReleaseUidForDriver.
int sceKernelIncRefCountMemBlockForDriver(SceUID uid);
sceKernelUserUnmapForDriver
Version |
NID
|
0.990-3.60 |
0x00575B00
|
Temp name was sceKernelMemBlockReleaseForDriver.
int sceKernelUserUnmapForDriver(SceUID uid);
sceKernelMemBlockType2MemtypeForDriver
Version |
NID
|
0.931-3.60 |
0x20C811FA
|
int sceKernelMemBlockType2MemtypeForDriver(SceKernelMemBlockType type);
sceKernelMemBlockTypeGetPrivilegesForDriver
Version |
NID
|
3.60 |
0x6A0792A3
|
int sceKernelMemBlockTypeGetPrivilegesForDriver(SceKernelMemBlockType type);
sceKernelMemBlockTypeGetUnknownForDriver
Version |
NID
|
0.990-3.60 |
0xCB0F3A33
|
int sceKernelMemBlockTypeGetUnknownForDriver(SceKernelMemBlockType type);
sceKernelUnlockRangeForDriver
Version |
NID
|
3.60 |
0x75C70DE0
|
Temp name was sceKernelMemRangeReleaseForDriver.
int sceKernelUnlockRangeForDriver(void *addr, SceSize size);
sceKernelUnlockRangeProcForDriver
Version |
NID
|
3.60 |
0xA8525B06
|
This is a guessed name. Temp name was sceKernelMemRangeReleaseForPidForDriver.
int sceKernelUnlockRangeProcForDriver(SceUID pid, void *addr, SceSize size);
sceKernelUnlockRangeWithPermForDriver
Version |
NID
|
3.60 |
0x22CBE925
|
This is a guessed name. Temp name was sceKernelMemRangeReleaseWithPermForDriver.
Decrease references to pages.
int sceKernelUnlockRangeWithPermForDriver(SceKernelMemoryRefPerm perm, 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
|
This is a guessed name. Temp name was sceKernelMemRangeRetainForPidForDriver.
int sceKernelLockRangeProcForDriver(SceUID pid, void *addr, SceSize size);
sceKernelLockRangeWithPermForDriver
Version |
NID
|
3.60 |
0xBC0A1D60
|
This is a guessed name. Temp name was sceKernelMemRangeRetainWithPermForDriver.
Increase references to pages.
int sceKernelLockRangeWithPermForDriver(SceKernelMemoryRefPerm perm, void *addr, SceSize size);
sceKernelCopyToUserProcDomainForDriver
Version |
NID
|
0.931-1.69 |
0x571D2739
|
3.60 |
not present
|
Temp names were 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);
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);
sceKernelReadUserForDriver
Version |
NID
|
0.990 |
0xE08F3967
|
3.60 |
not present
|
int sceKernelReadUserForDriver(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-3.60 |
0x605275F8
|
Temp names were sceKernelMemcpyUserToKernelForPidForDriver, sceKernelProcCopyFromUserForDriver.
Temporarily switches to specified process' address space for a call to sceKernelCopyFromUser.
SceInt32 sceKernelCopyFromUserProcForDriver(SceUID pid, void *dst, void *src, SceSize size);
sceKernelUserCopyForDriver
Version |
NID
|
0.990 |
not present
|
1.50-3.60 |
0x1BD44DD5
|
Temp name was sceKernelMemcpyUserToUserForDriver.
int sceKernelUserCopyForDriver(void *dst, const void *src, SceSize size);
sceKernelProcUserCopyForDriver
Version |
NID
|
0.990 |
not present
|
1.50-3.60 |
0x8E086C33
|
Temp name was sceKernelMemcpyUserToUserForPidForDriver.
int sceKernelProcUserCopyForDriver(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);
sceUIDOpenByNameForDriver
Version |
NID
|
0.931-0.990 |
0x796881D6
|
3.60 |
not present
|
Calls sceGUIDOpenByNameForDriver.
SceUID sceUIDOpenByNameForDriver(const char *name);
sceGUIDOpenByNameForDriver
Version |
NID
|
0.931-3.60 |
0xD76E7452
|
Temp name was sceKernelOpenUidForNameForDriver.
SceUID sceGUIDOpenByNameForDriver(const char *name);
sceKernelRemapMemBlockForDriver
Version |
NID
|
0.931-1.05 |
0x8D332AE1 (in ForKernel?)
|
1.50-3.60 |
not present
|
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);
sceKernelPartialRemapMemBlockForDriver
Version |
NID
|
0.990 |
not present
|
1.50-3.60 |
0xDFE2C8CB
|
Temp name was sceKernelRemapBlockForDriver, sceKernelRemapMemBlockForDriver.
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 sceKernelPartialRemapMemBlockForDriver with type SCE_KERNEL_MEMBLOCK_TYPE_KERNEL_RX
.
int sceKernelPartialRemapMemBlockForDriver(SceUID uid, SceKernelMemBlockType type);
scePUIDSetNameForDriver
Version |
NID
|
0.990-3.60 |
0x12624884
|
Temp name was sceKernelSetNameForPidForUidForDriver.
int scePUIDSetNameForDriver(SceUID pid, SceUID uid, const char *name);
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);
sceKernelSwitchPidContextForDriver
Version |
NID
|
3.60 |
0x2D711589
|
int sceKernelSwitchPidContextForDriver(SceKernelProcessContext *new_context, SceKernelProcessContext *prev_context);
sceGUIDReleaseObjectForDriver
Version |
NID
|
0.990-3.60 |
0x149885C4
|
Temp name was sceKernelUidReleaseForDriver.
int sceGUIDReleaseObjectForDriver(SceUID uid);
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);
some_memblock_operation
Version |
NID
|
3.60 |
0x13805CA8
|
int some_memblock_operation(SceUID uid, int a2, int a3, int a4);
some_memblock_operation
Version |
NID
|
3.60 |
0x16713BE8
|
Same as above but with different flags.
int some_memblock_operation(SceUID uid, int a2, int a3, int a4);
some_memblock_operation
Version |
NID
|
3.60 |
0x16713BE8
|
Same as above but with different flags.
int some_memblock_operation(SceUID uid, int a2, int a3, int a4);
some_memblock_operation
Version |
NID
|
3.60 |
0x4C584B29
|
Same as above but with different flags.
int some_memblock_operation(SceUID uid, int a2, int a3, int a4);
some_memblock_operation
Version |
NID
|
3.60 |
0x6C76AD89
|
Same as above but with different flags.
int some_memblock_operation(SceUID uid, int a2, int a3, int a4);
some_memblock_operation
Version |
NID
|
3.60 |
0x8C43B052
|
Same as above but with different flags.
int some_memblock_operation(SceUID uid, int a2, int a3, int a4);
sceKernelGetMemBlockProcessForDriver
Version |
NID
|
0.990-3.60 |
0x1EFC96EA
|
int sceKernelGetMemBlockProcessForDriver(SceUID uid);
memblock_related_operation
Version |
NID
|
3.60 |
0x64DBE472
|
int memblock_related_operation(SceUID uid, int a2);
memblock_related_operation
Version |
NID
|
3.60 |
0x987EE587
|
struct result_987ee587
{
int unk0;
int unk4;
int unk8;
int unkC;
int unk10;
};
int memblock_related_operation(SceUID uid, result_987ee587 *result);
SceSysmemForDriver_856FA2E3
Version |
NID
|
3.60 |
0x856FA2E3
|
Seems related to heap.
int SceSysmemForDriver_856FA2E3(SceUID uid);
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; // Physical base 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);
sceKernelVerifyHeapForDriver
Version |
NID
|
0.990-3.60 |
0xC50A9C0D
|
int sceKernelVerifyHeapForDriver(SceUID uid, void *ptr);
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
?Returns 0 on success (if is accessible range)?
int sceKernelIsAccessibleRangeProcForDebugger(SceUID pid, SceUInt32 mode, const void *pVA, SceSize size);
sceKernelIsAccessibleRangeForDebugger
?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
|
typedef struct SceKernelSubbudgetInfo { // size is 0xC on FW 3.60
int size; // Size of this structure
int unk_4;
int unk_8;
} SceKernelSubbudgetInfo;
int sceKernelGetSubbudgetInfo(SceBool unk_boolean, 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
|
3.60 |
0x0144FBD9
|
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
|
3.60 |
0xA98FC2FD
|
int sceKernelCheckDipswForDriver(int no);
sceKernelGetDipswInfoForDriver
Version |
NID
|
3.60 |
0xB2AD48BE
|
This is a guessed name (cannot find an evidence).
return *(int *)(dipsw_addr + 4 * info_id);
info_id:
- 0: CP timestamp 1
- 1: CP Version, CP Board ID
- 2: CP timestamp 2
- 3: ASLR Seed
See KBL Param#DIP Switches.
int sceKernelGetDipswInfoForDriver(SceUInt32 info_id);
sceKernelClearDipswForDriver
Version |
NID
|
3.60 |
0xF1F3E9FE
|
void sceKernelClearDipswForDriver(int no);
sceKernelSetDipswForDriver
Version |
NID
|
3.60 |
0x82E45FBF
|
void sceKernelSetDipswForDriver(int no);
SceUartForKernel
sceKernelUartInitForKernel
Version |
NID
|
0.931-3.60 |
0xA9C74212
|
Temp name was sceUartInitForKernel.
It initializes the clock generator registers for the UART port
. See UART Registers. The default baud rate is 115200 for ports 0-5 and 250000 for port 6.
// port: 0-6
int sceKernelUartInitForKernel(SceUInt32 port);
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 port);
sceKernelUartReadForKernel
Version |
NID
|
0.931-3.60 |
0x9BBF1255
|
Temp name was sceUartReadForKernel.
int sceKernelUartReadForKernel(int port);
sceKernelUartWriteForKernel
Version |
NID
|
0.931-3.60 |
0x41973874
|
Temp name was sceUartWriteForKernel.
int sceKernelUartWriteForKernel(int port, char c);
sceKernelUartPutcharForKernel
Version |
NID
|
0.931-0.990 |
0xAF243C6A
|
3.60 |
not present
|
int sceKernelUartPutcharForKernel(char c);
SceCpu
This library provides wrapper for much ARM CP15 co-processor access as well as low level support of spinlocks and other synchronization primitives.
sceKernelCpuId
Version |
NID
|
1.69-3.60 |
0x2704CFEE
|
Return 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
|
3.60 |
not present
|
Temp name was sceKernelCpuSaveContextForKernel.
typedef struct SceKernelMMUContext { // size is 0xC on FW 0.931
uint32_t unk_0;
uint32_t unk_4;
uint32_t unk_8;
} SceKernelMMUContext;
int sceKernelMMUGetContextForKernel(SceKernelMMUContext *context);
sceKernelMMUChangeContextForKernel
Version |
NID
|
0.931 |
0x0A4F0FB9
|
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
|
The CONTEXTIDR, bits [31:0] contain the process ID number.
return (unsigned __int8)__mrc(15, 0, 13, 0, 1); // Read CONTEXTIDR (Context ID Register)
void 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
sceKernelDcacheCleanInvalidateAll
Version |
NID
|
0.931 |
0x85A27F98
|
Flushes PLE then cleans and invalidates L1 Dcache and L2 cache in this order.
void sceKernelDcacheCleanInvalidateAll(void);
sceKernelCpuDcacheInvalidateMVACForKernel
Version |
NID
|
3.60 |
0x470EAE1E
|
void sceKernelCpuDcacheInvalidateMVACForKernel(int mva); // 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);
sceKernelCpuDcacheCleanMVACForKernel
Version |
NID
|
3.60 |
0xF7159B55
|
void sceKernelCpuDcacheCleanMVACForKernel(int mva); // 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)
sceKernelL1DcacheInvalidateRangeForKernel
Version |
NID
|
3.60 |
0xC8E8C9E9
|
This is a guessed name. Temp name was sceKernelCpuDcacheCleanInvalidateMVACForKernel.
void sceKernelL1DcacheInvalidateRangeForKernel(int mva); // 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);
sceKernelL1CacheInvalidateEntireForKernel
Version |
NID
|
3.60 |
0xAEE0B489
|
This is a guessed name. Temp name was sceKernelCpuIcacheInvalidateAllUForKernel.
Invalidates the entire L1 Icache of this core.
void sceKernelL1CacheInvalidateEntireForKernel(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);
sceKernelPleFlushRequest
Version |
NID
|
3.60 |
0xD0D85FF8
|
Temporary name was sceKernelCpuPreloadEngineKill
.
- 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 sceKernelPleFlushRequest(void);
sceKernelDomainTextMemcpyForKernel
Version |
NID
|
0.931-3.60 |
0x8C683DEC
|
3.63-3.65 |
Removed from export
|
Guessed name was sceKernelCpuUnrestrictedMemcpy
.
Unrestricted memcpy by first setting the DACR
register to 0xFFFF0000
and then doing a memcpy.
In old firmware (0.931), DACR
is set to 0xFFFFFFFF
instead and interrupts are disabled for the operation.
int sceKernelDomainTextMemcpyForKernel(void *dest, const void *src, SceSize len);
sceKernelCpuForKernel_9B8173F4
Version |
NID
|
3.60 |
0x9B8173F4
|
Might be get_vaddr_memory_type.
Return value can be:
- 2
- 8
- 0x40
- 0x80
- 0xD0
- 0x80022007 (SCE_KERNEL_ERROR_VA2PA_FAULT)
int sceKernelCpuForKernel_9B8173F4(void *vaddr);
sceKernelCoreSyncAllForKernel
Version |
NID
|
3.60 |
0xA5C9DBBA
|
This is a guessed name. Temp name was sceKernelWaitCore3ForKernel.
typedef struct SceCpuCoreSyncCtx {
int lock;
int16_t core_count;
int16_t last_wait_core; // 0:core3, 1:core0, 2:core1, 3:core2
} SceCpuCoreSyncCtx;
void sceKernelCoreSyncAllForKernel(SceCpuCoreSyncCtx *pCtx);
sceKernelCoreSyncWaitForKernel
Version |
NID
|
0.931-3.60 |
0x9D72DD1B
|
This is a temp name.
#define SCE_CPU_WAIT_CORE_0 1
#define SCE_CPU_WAIT_CORE_1 2
#define SCE_CPU_WAIT_CORE_2 3
#define SCE_CPU_WAIT_CORE_3 0
void sceKernelCoreSyncWaitForKernel(SceCpuCoreSyncCtx *pCtx, int core);
sceKernelInitCpuCoreSyncCtxForKernel
Version |
NID
|
0.931-3.60 |
0x4CD4D921
|
This is a temp name.
void sceKernelInitCpuCoreSyncCtxForKernel(SceCpuCoreSyncCtx *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);
sceCpuUnrestrictedBzeroIntForKernel
Version |
NID
|
3.60 |
0x76EB0DD4
|
DACR off
int sceCpuUnrestrictedBzeroIntForKernel(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);
sceKernelCpuAtomicSubIfGreater64ForKernel
Version |
NID
|
3.60 |
0x37FBFD12
|
DACR is not disabled
int sceKernelCpuAtomicSubIfGreater64ForKernel(unsigned long long *a1, unsigned int a2);
sceKernelCpuAtomicLimit64ForKernel
Version |
NID
|
3.60 |
0x6190A018
|
DACR is not disabled
int sceKernelCpuAtomicLimit64ForKernel(unsigned long long *result, int limit);
sceKernelCpuAtomicAdd32AndGet64InRangeForKernel
Version |
NID
|
3.60 |
0xD8A7216C
|
DACR is not disabled
int sceKernelCpuAtomicAdd32AndGet64InRangeForKernel(unsigned long long *val, int add_val, int limit);
sceKernelCpuAtomicAdd32AndGet64InHiLoRangeForKernel
Version |
NID
|
3.60 |
0xD37AABE5
|
DACR is not disabled
int sceKernelCpuAtomicAdd32AndGet64InHiLoRangeForKernel(unsigned long long *val, int add_val, int limit);
sceKernelCpuAtomicGet32AndSet64ForKernel
Version |
NID
|
0.990 |
not present
|
3.60 |
0x4553FBDE
|
DACR is not disabled
int sceKernelCpuAtomicGet32AndSet64ForKernel(unsigned long long *result, int src);
sceKernelCpuAtomicGet32AndSet64_2ForKernel
Version |
NID
|
0.990 |
not present
|
3.60 |
0x7FB4E7AC
|
Exact same code as SceCpuForKernel_4553FBDE.
DACR is not disabled
int sceKernelCpuAtomicGet32AndSet64_2ForKernel(unsigned long long *result, int src);
sceKernelCpuAtomicDecIfLowPositive32ForKernel
Version |
NID
|
3.60 |
0x8510FA52
|
DACR is not disabled
int sceKernelCpuAtomicDecIfLowPositive32ForKernel(unsigned int *addr);
sceKernelCpuAtomicHiLoAlgorithmForKernel
Version |
NID
|
3.60 |
0x5F64E5ED
|
DACR is not disabled
Returns current value (high + low), and sets it to max_low.
int sceKernelCpuAtomicHiLoAlgorithmForKernel(SceUInt32 *max_low);
sceKernelCpuAtomicAddAndGetPositive32InRangeForKernel
Version |
NID
|
3.60 |
0x98E91C1C
|
DACR is not disabled
If val is negative, returns 2 and does not override val.
int sceKernelCpuAtomicAddAndGetPositive32InRangeForKernel(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);
SceCpuForKernel_9A3281C0
Version |
NID
|
0.990-3.60 |
0x9A3281C0
|
3.65 |
0xC32687D0
|
Gets start and end of a special code area in which the kernel<->user memory copy routines reside.
See SceExcpmgr page for more information about how this is used.
In older firmware, this function also provides the start and end of the "memory access error range" code area (see SceExcpmgrForKernel_C45C0D3D for what this range is for).
//0.990
void SceCpuForKernel_9A3281C0(SceUIntPtr *pMemErrorAreaStart, SceUIntPtr* pMemErrorAreaEnd, SceUIntPtr *pUKCopyAreaStart, SceUIntPtr* pUKCopyAreaEnd)
//3.60+
void SceCpuForKernel_9A3281C0(SceUIntPtr *pUKCopyAreaStart, SceUIntPtr* pUKCopyAreaEnd);
SceCpuForKernel_9CB82EB0
Version |
NID
|
3.60 |
0x9CB82EB0
|
return;
int SceCpuForKernel_9CB82EB0(void);
SceCpuForDriver
sceKernelRoundupDCacheLine3ForDriver
Version |
NID
|
0.931-0.990 |
0xF0849812
|
3.60 |
not present
|
int sceKernelRoundupDCacheLine3ForDriver(int a1);
sceKernelAbortForDriver
Version |
NID
|
0.931-0.990 |
0x6DCA6903
|
3.60 |
not present
|
void sceKernelAbortForDriver(void);
sceKernelCpuIdForDriver
Version |
NID
|
0.990-3.60 |
0x5E4D5DE1
|
Return the CPU ID of the current core.
int sceKernelCpuIdForDriver(void);
sceKernelCpuAtomicAddAndGet8ForDriver
Version |
NID
|
3.60 |
0x1E850481
|
unsigned char sceKernelCpuAtomicAddAndGet8ForDriver (unsigned char *addr, unsigned char val);
sceKernelCpuAtomicAddAndGet16ForDriver
Version |
NID
|
3.60 |
0x59F74E94
|
unsigned short sceKernelCpuAtomicAddAndGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicAddAndGet32ForDriver
Version |
NID
|
0.990-3.60 |
0x5F6A8743
|
Adds val
to *addr
atomically, and returns the result.
unsigned int sceKernelCpuAtomicAddAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicAddAndGet64ForDriver
Version |
NID
|
3.60 |
0x4E459A03
|
unsigned long long sceKernelCpuAtomicAddAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicAddUnless8ForDriver
Version |
NID
|
3.60 |
0x5CC62CEC
|
int sceKernelCpuAtomicAddUnless8ForDriver(unsigned char *addr, unsigned char val, unsigned char cmp);
sceKernelCpuAtomicAddUnless16ForDriver
Version |
NID
|
3.60 |
0x0F84AFE9
|
int sceKernelCpuAtomicAddUnless16ForDriver(unsigned short *addr, unsigned short val, unsigned short cmp);
sceKernelCpuAtomicAddUnless32ForDriver
Version |
NID
|
3.60 |
0x1F157DC3
|
int sceKernelCpuAtomicAddUnless32ForDriver(unsigned int *addr, unsigned int val, unsigned int cmp);
sceKernelCpuAtomicAddUnless64ForDriver
Version |
NID
|
3.60 |
0x06CCFA4B
|
int sceKernelCpuAtomicAddUnless64ForDriver(unsigned long long *addr, int unused, unsigned long long val, unsigned long long cmp);
sceKernelCpuAtomicAndAndGet8ForDriver
Version |
NID
|
3.60 |
0x32B62B1A
|
unsigned char sceKernelCpuAtomicAndAndGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicAndAndGet16ForDriver
Version |
NID
|
3.60 |
0xB281D52A
|
unsigned short sceKernelCpuAtomicAndAndGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicAndAndGet32ForDriver
Version |
NID
|
3.60 |
0xDF899E4B
|
unsigned int sceKernelCpuAtomicAndAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicAndAndGet64ForDriver
Version |
NID
|
3.60 |
0xD18E7B54
|
unsigned long long sceKernelCpuAtomicAndAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicClearAndGet8ForDriver
Version |
NID
|
3.60 |
0x8E538AB5
|
unsigned char sceKernelCpuAtomicClearAndGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicClearAndGet16ForDriver
Version |
NID
|
3.60 |
0x6B050D7C
|
unsigned short sceKernelCpuAtomicClearAndGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicClearAndGet32ForDriver
Version |
NID
|
3.60 |
0x78C1F148
|
unsigned int sceKernelCpuAtomicClearAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicClearAndGet64ForDriver
Version |
NID
|
3.60 |
0x2149CD4C
|
unsigned long long sceKernelCpuAtomicClearAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicClearMask8ForDriver
Version |
NID
|
3.60 |
0x1B3336B0
|
void sceKernelCpuAtomicClearMask8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicClearMask16ForDriver
Version |
NID
|
3.60 |
0x1BE58599
|
void sceKernelCpuAtomicClearMask16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicClearMask32ForDriver
Version |
NID
|
3.60 |
0x4AE1BCC0
|
void sceKernelCpuAtomicClearMask32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicClearMask64ForDriver
Version |
NID
|
3.60 |
0x55760309
|
void sceKernelCpuAtomicClearMask64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicCompareAndSet8ForDriver
Version |
NID
|
3.60 |
0x3627F4E0
|
unsigned char sceKernelCpuAtomicCompareAndSet8ForDriver(unsigned char *addr, unsigned char cmp, unsigned char val);
sceKernelCpuAtomicCompareAndSet16ForDriver
Version |
NID
|
3.60 |
0x6F63F56D
|
unsigned short sceKernelCpuAtomicCompareAndSet16ForDriver(unsigned short *addr, unsigned short cmp, unsigned short val);
sceKernelCpuAtomicCompareAndSet32ForDriver
Version |
NID
|
3.60 |
0xCDA96E81
|
unsigned int sceKernelCpuAtomicCompareAndSet32ForDriver(unsigned int *addr, unsigned int cmp, unsigned int val);
sceKernelCpuAtomicCompareAndSet64ForDriver
Version |
NID
|
3.60 |
0x4B527009
|
unsigned long long sceKernelCpuAtomicCompareAndSet64ForDriver(unsigned long long *addr, int unused, unsigned long long cmp, unsigned long long val);
sceKernelCpuAtomicDecIfPositive8ForDriver
Version |
NID
|
3.60 |
0x45153D4E
|
unsigned char sceKernelCpuAtomicDecIfPositive8ForDriver(unsigned char *addr);
sceKernelCpuAtomicDecIfPositive16ForDriver
Version |
NID
|
3.60 |
0x9A693F5B
|
unsigned short sceKernelCpuAtomicDecIfPositive16ForDriver(unsigned short *addr);
sceKernelCpuAtomicDecIfPositive32ForDriver
Version |
NID
|
3.60 |
0x2A71B03C
|
unsigned int sceKernelCpuAtomicDecIfPositive32ForDriver(unsigned int *addr);
sceKernelCpuAtomicDecIfPositive64ForDriver
Version |
NID
|
3.60 |
0x267D0B33
|
unsigned long long sceKernelCpuAtomicDecIfPositive64ForDriver(unsigned long long *addr);
sceKernelCpuAtomicGetAndAdd8ForDriver
Version |
NID
|
3.60 |
0xFCDCD4DE
|
unsigned char sceKernelCpuAtomicGetAndAdd8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicGetAndAdd16ForDriver
Version |
NID
|
3.60 |
0x225DF91A
|
unsigned short sceKernelCpuAtomicGetAndAdd16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicGetAndAdd32ForDriver
Version |
NID
|
3.60 |
0x341B6E81
|
unsigned int sceKernelCpuAtomicGetAndAdd32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicGetAndAdd64ForDriver
Version |
NID
|
3.60 |
0x043FD446
|
unsigned long long sceKernelCpuAtomicGetAndAdd64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicGetAndAnd8ForDriver
Version |
NID
|
3.60 |
0xD8E675C0
|
unsigned char sceKernelCpuAtomicGetAndAnd8ForDriver(unsigned char *a1, unsigned char a2);
sceKernelCpuAtomicGetAndAnd16ForDriver
Version |
NID
|
3.60 |
0x4A820BC5
|
unsigned short sceKernelCpuAtomicGetAndAnd16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicGetAndAnd32ForDriver
Version |
NID
|
3.60 |
0x10EB35EB
|
unsigned int sceKernelCpuAtomicGetAndAnd32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicGetAndAnd64ForDriver
Version |
NID
|
3.60 |
0x18A17E07
|
unsigned long long sceKernelCpuAtomicGetAndAnd64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicGetAndClear8ForDriver
Version |
NID
|
3.60 |
0x382D1466
|
unsigned char sceKernelCpuAtomicGetAndClear8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicGetAndClear16ForDriver
Version |
NID
|
3.60 |
0x8E9C086D
|
unsigned short sceKernelCpuAtomicGetAndClear16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicGetAndClear32ForDriver
Version |
NID
|
3.60 |
0xE36F3A46
|
unsigned int sceKernelCpuAtomicGetAndClear32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicGetAndClear64ForDriver
Version |
NID
|
3.60 |
0x88BA6002
|
unsigned long long sceKernelCpuAtomicGetAndClear64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicGetAndOr8ForDriver
Version |
NID
|
3.60 |
0xBDF6F8E4
|
unsigned char sceKernelCpuAtomicGetAndOr8ForDriver(unsigned char *var, unsigned char value);
sceKernelCpuAtomicGetAndOr16ForDriver
Version |
NID
|
3.60 |
0x004F09D1
|
unsigned short sceKernelCpuAtomicGetAndOr16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicGetAndOr32ForDriver
Version |
NID
|
3.60 |
0x2A40BB93
|
unsigned int sceKernelCpuAtomicGetAndOr32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicGetAndOr64ForDriver
Version |
NID
|
3.60 |
0xCB73D6D5
|
unsigned long long sceKernelCpuAtomicGetAndOr64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicGetAndSet8ForDriver
Version |
NID
|
3.60 |
0x29599FC8
|
unsigned char sceKernelCpuAtomicGetAndSet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicGetAndSet16ForDriver
Version |
NID
|
3.60 |
0x085532C8
|
unsigned short sceKernelCpuAtomicGetAndSet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicGetAndSet32ForDriver
Version |
NID
|
3.60 |
0x0EE04C03
|
unsigned int sceKernelCpuAtomicGetAndSet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicGetAndSet64ForDriver
Version |
NID
|
3.60 |
0xD2DEE625
|
unsigned long long sceKernelCpuAtomicGetAndSet64ForDriver(unsigned long long *addr, int unused, unsigned int lo_val, unsigned int hi_val);
sceKernelCpuAtomicGetAndSub8ForDriver
Version |
NID
|
3.60 |
0x7B43D0D7
|
unsigned char sceKernelCpuAtomicGetAndSub8ForDriver (unsigned char *addr, unsigned char val);
sceKernelCpuAtomicGetAndSub16ForDriver
Version |
NID
|
3.60 |
0x3EE9B5B8
|
unsigned short sceKernelCpuAtomicGetAndSub16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicGetAndSub32ForDriver
Version |
NID
|
3.60 |
0xF891CF2A
|
unsigned int sceKernelCpuAtomicGetAndSub32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicGetAndSub64ForDriver
Version |
NID
|
3.60 |
0xA7585370
|
unsigned long long sceKernelCpuAtomicGetAndSub64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicGetAndXor8ForDriver
Version |
NID
|
3.60 |
0xBAF47F7B
|
unsigned char sceKernelCpuAtomicGetAndXor8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicGetAndXor16ForDriver
Version |
NID
|
3.60 |
0x711801E6
|
unsigned short sceKernelCpuAtomicGetAndXor16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicGetAndXor32ForDriver
Version |
NID
|
3.60 |
0x77E34309
|
unsigned int sceKernelCpuAtomicGetAndXor32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicGetAndXor64ForDriver
Version |
NID
|
3.60 |
0xE212ECAD
|
unsigned long long sceKernelCpuAtomicGetAndXor64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicOrAndGet8ForDriver
Version |
NID
|
3.60 |
0x5D515F1B
|
unsigned char sceKernelCpuAtomicOrAndGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicOrAndGet16ForDriver
Version |
NID
|
3.60 |
0xADD39B84
|
unsigned short sceKernelCpuAtomicOrAndGet16ForDriver (unsigned short *addr, unsigned short val);
sceKernelCpuAtomicOrAndGet32ForDriver
Version |
NID
|
3.60 |
0xBC248C30
|
unsigned int sceKernelCpuAtomicOrAndGet32ForDriver (unsigned int *addr, unsigned int val);
sceKernelCpuAtomicOrAndGet64ForDriver
Version |
NID
|
3.60 |
0x3E218AF7
|
unsigned long long sceKernelCpuAtomicOrAndGet64ForDriver(unsigned long long *addr, int unused, long long val);
sceKernelCpuAtomicSet8ForDriver
Version |
NID
|
3.60 |
0x0836537E
|
void sceKernelCpuAtomicSet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicSet16ForDriver
Version |
NID
|
3.60 |
0x532CA3E8
|
void sceKernelCpuAtomicSet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicSet32ForDriver
Version |
NID
|
3.60 |
0x3168BC57
|
void sceKernelCpuAtomicSet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicSet64ForDriver
Version |
NID
|
3.60 |
0xC381CE8C
|
void sceKernelCpuAtomicSet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicSetIfGreaterGet8ForDriver
Version |
NID
|
3.60 |
0xC3868071
|
unsigned char sceKernelCpuAtomicSetIfGreaterGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicSetIfGreaterGet16ForDriver
Version |
NID
|
3.60 |
0x875B094D
|
unsigned short sceKernelCpuAtomicSetIfGreaterGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicSetIfGreaterGet32ForDriver
Version |
NID
|
3.60 |
0x26F71995
|
unsigned int sceKernelCpuAtomicSetIfGreaterGet32ForDriver(unsigned int *a1, unsigned int val);
sceKernelCpuAtomicSubAndGet8ForDriver
Version |
NID
|
3.60 |
0xEB085370
|
unsigned char sceKernelCpuAtomicSubAndGet8ForDriver(unsigned char *addr, unsigned char val);
sceKernelCpuAtomicSubAndGet16ForDriver
Version |
NID
|
3.60 |
0x515682C9
|
unsigned short sceKernelCpuAtomicSubAndGet16ForDriver(unsigned short *addr, unsigned short val);
sceKernelCpuAtomicSubAndGet32ForDriver
Version |
NID
|
3.60 |
0xA4884C4E
|
unsigned int sceKernelCpuAtomicSubAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicSubAndGet64ForDriver
Version |
NID
|
3.60 |
0xB5F8919C
|
unsigned long long sceKernelCpuAtomicSubAndGet64ForDriver(unsigned long long *addr, int unused, unsigned long long val);
sceKernelCpuAtomicXorAndGet8ForDriver
Version |
NID
|
3.60 |
0x03887992
|
unsigned char sceKernelCpuAtomicXorAndGet8ForDriver (unsigned char *a1, unsigned char a2);
sceKernelCpuAtomicXorAndGet16ForDriver
Version |
NID
|
3.60 |
0x646003D6
|
unsigned short sceKernelCpuAtomicXorAndGet16ForDriver (unsigned short *addr, unsigned short val);
sceKernelCpuAtomicXorAndGet32ForDriver
Version |
NID
|
3.60 |
0x4244BE65
|
unsigned int sceKernelCpuAtomicXorAndGet32ForDriver(unsigned int *addr, unsigned int val);
sceKernelCpuAtomicXorAndGet64ForDriver
Version |
NID
|
3.60 |
0x692C51B3
|
unsigned long long sceKernelCpuAtomicXorAndGet64ForDriver(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.
int sceKernelDcacheCleanInvalidateRangeForDriver(const void *start, SceSize size);
sceKernelDcacheCleanInvalidateRangeForL2WBWAForDriver
Version |
NID
|
0.990 |
0x364E68A4
|
3.60 |
not present
|
Temp name was sceKernelDcacheCleanInvalidateRange_0x10ForDriver.
int sceKernelDcacheCleanInvalidateRangeForL2WBWAForDriver(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-3.60 |
0x103872A5
|
Temp name was sceKernelDcacheCleanRange_1ForDriver, sceKernelCpuDcacheAndL2WritebackRangeForDriver, sceKernelCpuDcacheAndL2CleanMVACRange_1ForDriver.
int sceKernelDcacheCleanRangeForDriver(const void *start, SceSize size);
sceKernelDcacheCleanRangeForL2WBWAForDriver
Version |
NID
|
0.990 |
0x2A5344B7
|
3.60 |
not present
|
Temp name was sceKernelDcacheCleanRange_0x10ForDriver.
int sceKernelDcacheCleanRangeForL2WBWAForDriver(const void *start, SceSize size);
sceKernelDcacheCleanRangeForL1WBWAForDriver
Version |
NID
|
0.990-3.68 |
0x9CB9F0CE
|
Temp name was sceKernelCpuDcacheWritebackRangeForDriver, flush_dcache, sceKernelDcacheCleanRange_0x20ForDriver, sceKernelCpuDcacheAndL2CleanMVACRange_20ForDriver.
int sceKernelDcacheCleanRangeForL1WBWAForDriver(const void *start, SceSize size);
SceCpuForDriver_E813EBB2
Version |
NID
|
1.69-3.60 |
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 = SceCpuForKernel_9B8173F4(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;
int sceKernelIsUncacheAddressInTmpFsGameForDriver(void *vaddr);
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
|
3.60 |
0x5AC9D394
|
This is a guessed name. Temp name was sceKernelCpuTryLockStoreLRForDriver.
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
|
This is a guessed name. 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
|
3.60 |
0xEC53D007
|
This is a guessed name. Temp name was sceKernelCpuSpinLockSuspendIntrStoreLRForDriver.
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
|
3.60 |
0x740A0750
|
Temp name was sceKernelCpuSpinUnlockResumeIntrStoreLRForDriver.
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.
__vsnprintf_internal
Version |
NID
|
0.931-1.50 |
0xE38E7605
|
1.80-3.60 |
moved to ForDriver
|
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_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
|
__vsnprintf_internal
Version |
NID
|
0.931 |
not present. Present in ForKernel.
|
3.60 |
0xE38E7605
|
void __vsnprintf_internal(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
|
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
|
strncmp
Version |
NID
|
1.60-3.60 |
0x12CEE649
|
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
|
toupper
Version |
NID
|
3.60 |
0xA685DCB1
|
SceSysrootForKernel
sceKernelSysrootRegisterDbgpHandlerForKernel
Version |
NID
|
3.60 |
0x3999F917
|
int sceKernelSysrootRegisterDbgpHandlerForKernel(SceSysrootDbgpHandler *handler);
SceSysrootForKernel_611F17A4
Version |
NID
|
0.931-3.60 |
0x611F17A4
|
Registers the function called by #SceSysrootForKernel_118657C6.
int SceSysrootForKernel_611F17A4(void *func);
SceSysrootForKernel_118657C6
Version |
NID
|
0.931-3.65 |
0x118657C6
|
Calls the function registered by #SceSysrootForKernel_611F17A4.
Used in SceExcpmgr.
SceKernelProcessContext* SceSysrootForKernel_118657C6(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.60 |
0xD29BCA77
|
Registers many Sysroot SceProcessmgr callbacks.
int SceSysrootForKernel_D29BCA77(const SceSysrootForKernel_D29BCA77_struct *pParam);
SceSysrootForKernel_DD7821AA
Version |
NID
|
0.990-3.60 |
0xDD7821AA
|
Register 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-3.60 |
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 |
not present
|
3.60-3.65 |
0x1D84C4D4
|
Get module name, dbgFingerprint and base from address.
int SceSysrootForKernel_1D84C4D4(SceUID pid, uintptr_t address, SceUInt32 *pDbgFingerprint, SceUInt32 *pModuleBase, char *module_name);
SceSysrootForKernel_5B5EBFB1
Version |
NID
|
3.60 |
0x5B5EBFB1
|
Registers pointer to SceLT5 used by #SceSysrootForKernel_E20F6FC8.
int SceSysrootForKernel_5B5EBFB1(uint a1);
SceSysrootForKernel_41636522
Version |
NID
|
3.60 |
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 |
not present
|
3.60-3.65 |
0xE20F6FC8
|
Same as #SceSysrootForKernel_41636522 but "asynchronous".
Used by SceDebug Kernel Exceptions handlers.
uint64_t SceSysrootForKernel_E20F6FC8(void);
SceSysrootForKernel_1D8DB3A5
Version |
NID
|
3.60 |
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-3.60 |
0x8E4B61F1
|
Calls SceCpuForKernel_9D72DD1B.
int sceKernelSysrootCorelockLockForKernel(SceUInt32 core);
SceSysrootForKernel_06182D59
Version |
NID
|
3.60 |
0x06182D59
|
Reimplementation:
int SceSysrootForKernel_06182D59(int a1) {
return *(uint32_t *)(pSysroot + 0x20) + (a1 << 0x5);
}
int SceSysrootForKernel_06182D59(int a1);
SceSysrootForKernel_7385CADE
Version |
NID
|
0.990 |
not present
|
3.60 |
0x7385CADE
|
Get current syscall PID.
// Returns KERNEL_PID if the function has not been set
SceUID SceSysrootForKernel_7385CADE(void);
SceSysrootForKernel_D441DC34
Version |
NID
|
0.990 |
not present
|
3.60 |
0xD441DC34
|
Executes a function registered by #SceSysrootForKernel_26458702, related to syscall frame printing on kernel panic.
get_SceKernelSysrootClass_itemsize
Version |
NID
|
0.990-3.60 |
0xEEB867C0
|
On FW 0.990 return hardcoded value 0x470.
On FW 3.60 return hardcoded value 0x41C.
SceSize get_SceKernelSysrootClass_itemsize(void);
get_SceKernelSysrootClass_object
Version |
NID
|
0.990-3.60 |
0x085C2BCB
|
SceKernelObject *get_SceKernelSysrootClass_object(void);
sceKernelSysrootGetLibraryDBForKernel
Version |
NID
|
0.990-2.00 |
0xCD70C9D7
|
3.00 |
not present
|
Maybe returns a pointer to the library stub structure. See Modules.
// size is 0x34-bytes on FW 2.00
void *sceKernelSysrootGetLibraryDBForKernel(void);
sceKernelSysrootSetLibraryDBForKernel
Version |
NID
|
0.990 |
0xCB58A0F4
|
sceKernelSysrootAllocForKernel
Version |
NID
|
0.931-0.990 |
0xB0149E69
|
3.60 |
Not present
|
Allocate 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 sceKernelSysrootFree
.
Usage of this function is not recommended. Use SceSysmem#sceKernelAllocForKernel instead.
void *sceKernelSysrootAllocForKernel(SceSize size);
sceKernelSysrootSetStatusForKernel
Version |
NID
|
0.990-3.60 |
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 |
0xE0D41319
|
3.60 |
not present
|
int sceKernelSysrootGetSystemTimeForKernel(SceRtcTick *pTick)
sceKernelSysrootGetSystemTimeLowForKernel
Version |
NID
|
0.990 |
0x2464329D
|
3.60 |
not present
|
int sceKernelSysrootGetSystemTimeLowForKernel(void);
sceKernelSysrootAssertSysrootForKernel
Version |
NID
|
0.990 |
0x1B7F150F
|
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.60 |
0x0F2F2B4E
|
sceKernelSysrootThreadMgrStartAfterProcessForKernel
Version |
NID
|
0.990-3.60 |
0x0EB5D7CD
|
sceKernelSysrootGetCurrentProcessForKernel
Version |
NID
|
0.931-0.990 |
0x5B7570C5
|
Return the current process id.
SceUID sceKernelSysrootGetCurrentProcessForKernel(void);
sceKernelSysrootTrapThreadAfterSyscallForKernel
Version |
NID
|
0.990-3.60 |
0x9139E22B
|
Calls a callback registered by #SceSysrootForKernel_26458702.
Prints syscall_critical_usage.
sceKernelSysrootReturnFromExcpToThreadForKernel
Version |
NID
|
0.931-3.65 |
0xDADFF828
|
Used in SceExcpmgr.
int sceKernelSysrootReturnFromExcpToThreadForKernel(void);
sceKernelSysrootBacktraceForKernel
Version |
NID
|
0.931-3.60 |
0xCC893F37
|
See also SceKernelModulemgr#SceBacktraceForDriver.
int sceKernelSysrootBacktraceForKernel(SceUID threadId, SceKernelCallFrame *pCallFrameBuffer, SceSize numBytesBuffer, SceUInt32 *pNumReturn, SceInt32 mode);
sceKernelSysrootPrintBacktraceForKernel
Version |
NID
|
0.931-3.60 |
0x491CE8DF
|
See also SceKernelModulemgr#SceBacktraceForDriver.
int sceKernelSysrootPrintBacktraceForKernel(SceUID processId, const SceKernelCallFrame *pCallFrame, SceUInt32 numFrames);
sceKernelSysrootRegisterBacktraceForKernel
Version |
NID
|
0.940 |
0x1C307A31
|
3.60 |
not present
|
int sceKernelSysrootRegisterBacktraceForKernel(int (__cdecl *func)());
sceKernelSysrootGetSharedMemoryForKernel
Version |
NID
|
0.990-3.60 |
0xC8C8C321
|
sceKernelSysrootSetSharedMemoryForKernel
Version |
NID
|
0.990-3.60 |
0xFBB91741
|
sceKernelSysrootGetPUIDEntryHeapForKernel
Version |
NID
|
0.990-3.60 |
0x88DE85EF
|
int sceKernelSysrootGetPUIDEntryHeapForKernel(SceUID pid, void **entryHeap);
sceKernelSysrootGetStatusForKernel
Version |
NID
|
0.990-3.60 |
0x5C426B19
|
int sceKernelSysrootGetStatusForKernel(void);
sceKernelSysrootIofilemgrStartForKernel
Version |
NID
|
0.990-3.60 |
0xF6A6D205
|
sceKernelSysrootSetCurrentAddressSpaceCBForKernel
Version |
NID
|
0.940 |
0x63EBB05B
|
3.60 |
not present
|
int sceKernelSysrootSetCurrentAddressSpaceCBForKernel(void *pasCB);
sceKernelSysrootGetCurrentAddressSpaceCBForKernel
Version |
NID
|
0.940-3.60 |
0x63EBB05B
|
Calls the function registered by #SceSysrootForKernel_26458702.
callback *sceKernelSysrootGetCurrentAddressSpaceCBForKernel();
SceSysrootForKernel_BF82931F
Version |
NID
|
3.60 |
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
|
3.60 |
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
|
3.60 |
0xB39CD708
|
int sceKernelSysrootSetGetFunctionNameByNIDFuncForKernel(void *func);
sceKernelSysrootGetFunctionNameByNIDForKernel
Version |
NID
|
3.60 |
0x0B79E220
|
Mirror of SceSysLibTrace#sceNidsymtblGetFunctionNameByNIDForDriver.
int sceKernelSysrootGetFunctionNameByNIDForKernel(SceNID funcnid, const char **name);
SceSysrootForKernel_26458702
Version |
NID
|
0.990 |
not present
|
3.60 |
0x26458702
|
Registers some functions.
SceSysrootForKernel_B171CC2D
Version |
NID
|
0.990 |
not present
|
3.60 |
0xB171CC2D
|
Seems to be used to register some functions.
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
|
3.60-3.65 |
0x3E455842
|
Temp name was sceKernelGetSysbaseForKernel.
SceSysroot *sceKernelSysrootGetSysrootForKernel(void);
sceKernelSysrootGetKblParamForKernel
Version |
NID
|
0.931-3.65 |
0x9DB56D1F
|
Temp name was sceKernelGetSysrootBufferForKernel, sceSysrootGetSysrootBufferForKernel.
Returns pointer to KBL Param.
SceKblParam *sceKernelSysrootGetKblParamForKernel(void);
sceKernelSysrootGetSoCRevisionForKernel
Version |
NID
|
3.60 |
0xD3872270
|
return pSysroot->soc_revision;
int sceKernelSysrootGetSoCRevisionForKernel(void);
sceKernelSysrootGetPervasiveUnkDwordForKernel
Version |
NID
|
3.60 |
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-3.60 |
0x403B509E
|
return pSysroot->kermit_revision;
Used by SceKernelBusError, SceSysStateMgr.
// Only bits set are in 0x1FFFF mask.
// ret & 0x1FF00 = Major Revision? (known values: 0 for KERMIT10_REV_ES4, 1 for KERMIT15_REV_ES1)
// ret & 0x000F0 = Engineering Sample (1 = ES1, 2 = ES2, etc)
// ret & 0x0000F = Minor Revision
SceUInt32 sceKernelSysrootGetKermitRevisionForKernel(void);
sceKernelSysrootGetErnieSleepFactorForKernel
Version |
NID
|
3.60 |
0xAB3CC7D0
|
This is a guessed name.
See KBL Param#Sleep Factor.
return kbl_param->sleep_factor;
int sceKernelSysrootGetErnieSleepFactorForKernel(void);
sceKernelSysrootGetErnieWakeupFactorForKernel
Version |
NID
|
3.60 |
0x2F97041A
|
This is official name. Temp name was sceSysrootGetWakeupFactorForKernel.
See KBL Param#Wakeup Factor.
return kbl_param->wakeup_factor;
int sceKernelSysrootGetErnieWakeupFactorForKernel(void);
sceKernelSysrootGetSessionIdForKernel
Version |
NID
|
3.60 |
0x84783B71
|
Writes kbl_param->session_id to buffer.
pSessionId buffer size is 0x10 bytes.
int sceKernelSysrootGetSessionIdForKernel(char *pSessionId);
sceKernelSysrootIsExternalBootModeForKernel
Version |
NID
|
3.60 |
0x89D19090
|
return *(int *)(kbl_param->boot_type_indicator_1) & 1;
int sceKernelSysrootIsExternalBootModeForKernel(void);
sceKernelSysrootIsSomeBootModeForKernel
Version |
NID
|
3.60 |
0x7B7F8171
|
This is a guessed name. A possible name is sceKernelIsAllowSdCardFromMgmt.
Used by SceSdif, SceExfatfs.
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
|
3.60 |
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-3.60 |
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-3.60 |
0x834439A7
|
int sceKernelSysrootIsSafeModeForKernel(void);
sceKernelSysrootIsUpdateModeForKernel
Version |
NID
|
3.60 |
0xB0E1FC67
|
int sceKernelSysrootIsUpdateModeForKernel(void);
sceKernelSysrootIsBsodRebootForKernel
Version |
NID
|
3.60 |
0x4373AC96
|
return ((pKblParam->wakeup_factor) & 0x7Fu) == 0x17;
int sceKernelSysrootIsBsodRebootForKernel(void);
sceKernelSysrootIsUsbEnumWakeupForKernel
Version |
NID
|
3.60 |
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
|
3.60 |
0xE4EA1960
|
return (*(int *)(kbl_param->wakeup_factor) & 0x7Fu) <= 1;
int sceKernelSysrootIsUnknownRebootForKernel(void);
sceKernelSysrootIsManufacturingModeForKernel
Version |
NID
|
0.940-3.60 |
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-3.65 |
0x7A7E7C0C
|
void sceKernelSysrootSetModulePrivateForKernel(int idx, void *data);
sceKernelSysrootSetSysrootForKernel
Version |
NID
|
0.940-3.60 |
0x36916C30
|
void sceKernelSysrootSetSysrootForKernel(SceUID sysroot_uid);
sceKernelSysrootProcessmgrStart2ForKernel
Version |
NID
|
0.990-3.60 |
0x62E8F511
|
sceKernelSysrootDbgpSuspendProcessAndWaitResumeForKernel
Version |
NID
|
0.990-3.60 |
0x256B2394
|
sceKernelSysrootRegisterIsUserModeThreadForKernel
Version |
NID
|
0.940 |
0x5BD911A8
|
3.60 |
not present
|
int sceKernelSysrootRegisterIsUserModeThreadForKernel(void *func);
sceKernelSysrootIsUserModeThreadForKernel
Version |
NID
|
0.940-3.60 |
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_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
|
3.60 |
0xF804F761
|
Used with GCSD SCE MBR second part.
This function always returns 0 on FW 3.60.
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-0.990 |
not present
|
3.60 |
0xBFD8F2A2
|
Calls the function registered by #SceSysrootForDriver_C94C76FA.
Functions are registered only in DevKit.
Used by SceGpuEs4.
SceUInt32 sceKernelSysrootGetTimebaseClockFrequencyForDriver(void);
SceSysrootForDriver_C94C76FA
Version |
NID
|
0.931-0.990 |
not present
|
3.60 |
0xC94C76FA
|
Registers some Sysroot functions.
int SceSysrootForDriver_C94C76FA(SceSysrootForDriver_C94C76FA_struct *pParam);
SceSysrootForDriver_2BE874EF
Version |
NID
|
3.60 |
0x2BE874EF
|
Registers the function called by #SceSysrootForKernel_BF82931F.
Used only in SceAppMgr.
int SceSysrootForDriver_2BE874EF(void *func);
SceSysrootForDriver_3B19B06B
Version |
NID
|
3.60 |
0x3B19B06B
|
Registers the function called by #SceSysrootForKernel_6D111FA7.
Used only in SceAppMgr.
int SceSysrootForDriver_3B19B06B(void *func);
SceSysrootForDriver_70AD47A9
Version |
NID
|
3.60 |
0x70AD47A9
|
Registers the function called by #SceSysrootForKernel_2A03DFA1.
Used only in SceAppMgr.
int SceSysrootForDriver_70AD47A9(void *func);
SceSysrootForDriver_AA770EF7
Version |
NID
|
0.931 |
not present
|
3.60 |
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 |
not present
|
3.60 |
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-3.60 |
0xC5EAF5F7
|
Registers the function called by #SceSysrootForDriver_47724459.
int SceSysrootForDriver_C5EAF5F7(void *func);
SceSysrootForDriver_47724459
Version |
NID
|
0.990-3.60 |
0x47724459
|
Calls the function registered by #SceSysrootForDriver_C5EAF5F7.
SceSysrootForDriver_F9FB9A2A
Version |
NID
|
0.990 |
0xF9FB9A2A
|
3.60-3.73 |
not present
|
Registers the function called by #SceSysrootForDriver_40F28DC6.
int SceSysrootForDriver_F9FB9A2A(void *func);
SceSysrootForDriver_40F28DC6
Version |
NID
|
0.990 |
0x40F28DC6
|
3.60-3.73 |
not present
|
Calls the function registered by #SceSysrootForDriver_F9FB9A2A.
sceKernelSysrootGetCompiledSdkVersionByPidForDriver
Version |
NID
|
0.931-0.990 |
not present
|
2.00-3.60 |
0xCAE820B2
|
Temp name was sceKernelGetProcessHeapIDForDriver.
Calls the function 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
|
3.60 |
0xD75D4F37
|
int sceKernelSysrootUtMgrGetTrilithiumBufferForDriver(SceUtokenDecrypted *buffer);
sceKernelSysrootSetSceSblPostSsMgrForDriver_A12C9950FuncForDriver
Version |
NID
|
0.990 |
not present
|
3.60 |
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.990 |
not present
|
3.60 |
0xE25D2FD5
|
Registers the functions called by #sceKernelSysrootSblUtMgrHasUNK1FlagForDriver.
int sceKernelSysrootSetSblUtMgrHasUNK1FlagFuncForDriver(void *func);
sceKernelSysrootSblUtMgrHasUNK1FlagForDriver
Version |
NID
|
0.990 |
not present
|
3.60 |
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
|
3.60 |
0xEE5D6CE9
|
int sceKernelSysrootSetUtMgrHasNpTestFlagFuncForDriver(void *func);
sceKernelSysrootUtMgrHasNpTestFlagForDriver
Version |
NID
|
3.60 |
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.
return sceKernelCpuAtomicGetAndAdd32ForDriver(&a_flag_based_on_mgmt_bit0, 0x10);
Adds 0x10 from a SceSysmem global variable and returns it.
int sceKernelSysrootDisableAutoClockDownForDriver(void);
sceKernelSysrootEnableAutoClockDownForDriver
Version |
NID
|
0.931 |
not present
|
3.60 |
0xEEF091A7
|
Derived from SceVshBridge#vshKernelEnableAutoClockDown.
return sceKernelCpuAtomicGetAndAdd32ForDriver(&a_flag_based_on_mgmt_bit0, 0xfffffff0);
Subtracts 0x10 from a SceSysmem global variable and returns it.
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-0.990 |
not present
|
3.60 |
0x421EFC96
|
Calls a function registered by #sceKernelSysrootSetProcessHandler.
Used only by SceAppMgr and called on process creation.
Hooked in:
to make it return 0 (success).
int SceSysrootForDriver_421EFC96(int a1, int a2, 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);
sceKernelSysrootCheckModelCapabilityForDriver
Version |
NID
|
3.60 |
0x8AA268D6
|
1: Support multi-controllers
0xB: Unknown. Related to sdio debug.
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
|
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.80.
zlib compression library.
Firmware |
zlib version
|
1.60-3.60 |
1.2.5
|
init
Version |
NID
|
0.940-3.60 |
0x723495A5
|
inflate
Version |
NID
|
1.60-3.60 |
0xE4F34A68
|
deflate
Version |
NID
|
1.60-3.60 |
0xE859D60F
|
deflateReset
Version |
NID
|
1.60-3.60 |
0x68CFEA45
|
crc32
Version |
NID
|
1.60-3.60 |
0xE0CE06C0
|
adler32
Version |
NID
|
1.60-3.60 |
0x98619620
|
inflateSetDictionary
Version |
NID
|
1.60-3.60 |
0x7B16DBD6
|
SceZlibForDriver_20A122F8
Version |
NID
|
3.60 |
0x20A122F8
|
May be an initialization function.
Used by SceCoredump.
int SceZlibForDriver_20A122F8(void *ctx, int a2, int a3, int a4, int a5, int a6, const char *verstr, int a8);
SceZlibForDriver_5492B3F2
Version |
NID
|
3.60 |
0x5492B3F2
|
Used by SceCoredump.
int SceZlibForDriver_5492B3F2(int arg1);
SceZlibForDriver_5B718E55
Version |
NID
|
3.60 |
0x5B718E55
|
Used by SceCoredump.
int SceZlibForDriver_5B718E55(int arg1, int arg2);
SceKernelSuspendForDriver
Used to register handlers for handling suspend/resume related events.
sceKernelPowerLockForDriver
Version |
NID
|
0.931-3.60 |
0x254525F8
|
This is a guessed name.
Used in SceProcessmgr#sceKernelPowerLock.
int sceKernelPowerLockForDriver(SceKernelPowerTickType type);
sceKernelPowerUnlockForDriver
Version |
NID
|
0.931-3.60 |
0x230495ED
|
This is a guessed name.
Used in SceProcessmgr#sceKernelPowerUnlock.
int sceKernelPowerUnlockForDriver(SceKernelPowerTickType type);
SceKernelSuspendForDriver_4DF40893
Version |
NID
|
0.990-3.60 |
0x4DF40893
|
Locks something.
Called in SceProcessmgr#sceKernelStartProcessForKernel and SceProcessmgr#sceKernelStartProcessExtForKernel just before starting a process.
Called just before NVS write.
// maybe pid: usually 0
int SceKernelSuspendForDriver_4DF40893(int maybe_pid);
SceKernelSuspendForDriver_2BB92967
Version |
NID
|
0.990-3.60 |
0x2BB92967
|
Unlocks something.
Called in SceProcessmgr#sceKernelStartProcessForKernel and SceProcessmgr#sceKernelStartProcessExtForKernel just after starting a process.
Called just after NVS write.
// maybe pid: usually 0
int SceKernelSuspendForDriver_2BB92967(int maybe_pid);
sceKernelRegisterSysEventHandlerForDriver
Version |
NID
|
0.990-3.60 |
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 struct suspend_args1_t {
SceSize size; // 0x18
uint32_t unk1;
uint32_t unk2;
uint32_t unk3;
uint32_t unk4;
uint32_t unk5;
} suspend_args1_t;
typedef int (* SceSysEventHandler)(int resume, int eventid, void *args, void *opt);
SceUID sceKernelRegisterSysEventHandlerForDriver(const char *name, SceSysEventHandler *handler, void *pOpt);
SceKernelSuspendForDriver_CE7A2207
Version |
NID
|
3.60 |
0xCE7A2207
|
Registers a handler.
SceUID SceKernelSuspendForDriver_CE7A2207(SceUInt idx, void *handler, void *args);
SceKernelSuspendForDriver_105C5752
Version |
NID
|
3.60 |
0x105C5752
|
Registers a handler.
SceUID SceKernelSuspendForDriver_105C5752(SceUInt idx, void *handler, void *args);
SceKernelSuspendForDriver_D4958E6F
Version |
NID
|
3.60 |
0xD4958E6F
|
Dispatch handlers registered by #SceKernelSuspendForDriver_CE7A2207.
SceUID SceKernelSuspendForDriver_D4958E6F(void *args);
sceKernelUnregisterSysEventHandlerForDriver
Version |
NID
|
0.990-3.60 |
0xDD61D621
|
int sceKernelUnregisterSysEventHandlerForDriver(SceUID id);
Call with the id returned from suspend_register_handler
to remove the entry from the linked list and free the memory.
sceKernelSysEventDispatchForDriver
Version |
NID
|
0.990-3.60 |
0xD4622EA8
|
int sceKernelSysEventDispatchForDriver(int resume, int eventid, void *args, int stop_on_error);
This will go through the linked list and call each handler. If stop_on_error
is set, then the first handler that returns a negative value will stop the call chain and return the block id of the handler that broke the chain. Otherwise, this function will invoke each handler and return zero.
sceKernelPowerTickForDriver
Version |
NID
|
0.990-3.60 |
0xE0489831
|
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);
Cancel specified idle timers to prevent entering in power save processing.
Returns 0 on success.
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.
Used by sceSblFwLoaderLockForDriver, SceKernelModulemgr, SceSysStateMgr and SceSblPostSsMgr.
Used by sceSblSpsfoMgrOpenForDriver.
When this flag is set, it allows for example to load spsfo from host0:, and host0:psp2config.skprx.
// (*(uint8_t *)(qaf + 0xE) & 1)
int SceQafMgrForDriver_082A4FC2(void);
SceQafMgrForDriver_694D1096
Version |
NID
|
0.931-3.60 |
0x694D1096
|
Only used by SceSblACMgr.
Might be something like sceSblQafMgrIsAllowUserAppDebug.
// (*(uint8_t *)(qaf + 0xB) & 4)
int SceQafMgrForDriver_694D1096(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);
sceSblQafMgrIsAllowGameDebugForDriver
Version |
NID
|
0.931-3.60 |
0x4BC1883F
|
// (*(uint8_t *)(qaf + 0x6) & 2)
int sceSblQafMgrIsAllowGameDebugForDriver(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);
sceQafMgrIsAllowQAUpdateForDriver
Version |
NID
|
0.931-3.60 |
0x3CB55F98
|
Only used by SceSblUpdateMgr.
// (*(uint8_t *)(qaf + 0xF) & 1)
int sceQafMgrIsAllowQAUpdateForDriver(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.
Allows loading raw (unencrypted) psp2config.txt.
// (*(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
|
3.60 |
0x4273B97B
|
Returns sceSblAIMgrIsGenuineVITAForDriver.
int sceSblAIMgrIsVITAForDriver(void);
sceSblAIMgrIsDolceForDriver
Version |
NID
|
3.60 |
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
|
Previous name was sceProcEventDeleteUidForDriver.
Wrapper to sceGUIDCloseForDriver.
int sceKernelUnregisterProcEventHandlerForDriver(int uid);
sceKernelRegisterProcEventHandlerForDriver
Version |
NID
|
0.990-3.60 |
0x2A43912D
|
Previous 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 *a2, int a3);
int (* exit)(SceUID pid, SceProcEventInvokeParam1 *a2, int a3); // current process exit
int (* kill)(SceUID pid, SceProcEventInvokeParam1 *a2, int a3); // by SceShell
int (* stop)(SceUID pid, int event_type, SceProcEventInvokeParam1 *a3, int a4);
int (* start)(SceUID pid, int event_type, SceProcEventInvokeParam1 *a3, int a4);
int (* switch_process)(int event_id, int event_type, SceProcEventInvokeParam2 *a3, int a4); // switch display frame?
} SceProcEventHandler;
a3 - set zero
SceUID sceKernelRegisterProcEventHandlerForDriver(const char *name, SceProcEventHandler *pHandler, int a3);
sceKernelInvokeProcEventHandlerForDriver
Version |
NID
|
3.60 |
0x414CC813
|
Uses suspend/resume LR.
int sceKernelInvokeProcEventHandlerForDriver(int a1, int a2, int a3, int a4, int *a5, int a6);
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 (*kprintf)(const char *fmt, ...), const void *args);
sceKernelGetDebugPutcharForKernel
Version |
NID
|
3.60 |
0xE783518C
|
Temp name was sceDebugGetPutcharHandlerForKernel.
Returns pointer to current debug putchar handler.
void *sceKernelGetDebugPutcharForKernel(void);
sceKernelRegisterDebugPutcharForKernel
Version |
NID
|
3.60 |
0xE6115A72
|
Temp name was sceDebugRegisterPutcharHandlerForKernel.
Set debug print char handler.
int sceKernelRegisterDebugPutcharForKernel(int (*debug_putchar)(const void *args, char c), const void *args);
sceKernelDebugPutcharForKernel
Version |
NID
|
0.931-3.60 |
0x82D2EDCE
|
Temp name was sceDebugPutcharForKernel.
Print character.
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(kernel_message_ctx *msg_ctx, 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);
set_info_dump_flag
Version |
NID
|
0.931 |
not present
|
3.60 |
0xF857CDD6
|
3.71 |
0xA465A31A
|
Temp name was sceDebugDisableInfoDumpForKernel.
Returns previous info dump flag.
// ex: set_info_dump_flag(0); as used in henkaku/payload.c
// flag: 0: disable, 1: enable
int set_info_dump_flag(int flag);
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, ...);
sceKernelSetMinimumLogLevelForKernel
Version |
NID
|
0.931-3.60 |
0xBE2C05A2
|
/**
* @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 sceKernelSetMinimumLogLevelForKernel(SceInt32 minimumLogLevel);
sceKernelGetMinimumLogLevelForKernel
Version |
NID
|
0.931 |
0xDA6B6770
|
3.60 |
not present
|
Returns the minimumLogLevel set by sceKernelSetMinimumLogLevelForKernel.
SceInt32 sceKernelGetMinimumLogLevelForKernel(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 |
moved to ForDriver
|
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, kernel_message_ctx *msg_ctx, 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.60 |
0xEFF9962B
|
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);
SceDebugForDriver
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(int level, const char *fmt, ...);
sceKernelVprintfLevelForDriver
Version |
NID
|
0.931-0.990 |
not present
|
3.60 |
0x611A158B
|
int sceKernelVprintfLevelForDriver(int level, const char *fmt, va_list arg);
sceKernelPrintfLevelWithCtxForDriver
Version |
NID
|
0.931-0.990 |
not present
|
3.60 |
0xD9703808
|
int sceKernelPrintfLevelWithCtxForDriver(int level, kernel_message_ctx *msg_ctx, const char *fmt, ...);
sceKernelVprintfLevelWithCtxForDriver
Version |
NID
|
0.931-0.990 |
not present
|
3.60 |
0x02B04343
|
Temp name was sceDebugPrintf2ForDriver.
int sceKernelVprintfLevelWithCtxForDriver(int level, kernel_message_ctx *msg_ctx, const char *fmt, va_list arg);
sceKernelAssertForDriver
Version |
NID
|
0.931-3.60 |
0x35A35322
|
Temp name was sceDebugPrintKernelAssertionForDriver.
// 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, kernel_message_ctx *msg_ctx, 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, kernel_message_ctx *msg_ctx, const void *addr);
sceKernelVprintfAssertLevelForDriver
Version |
NID
|
0.931 |
not present
|
0.990-3.60 |
0x821A2D59
|
Temp name was sceDebugPrintfKernelAssertionForDriver.
// 0.990:
int sceKernelVprintfAssertLevelForDriver(int level, SceBool condition, const char *pFile, const char *pFunc, int line, const void *addr, const char *fmt, va_list arg);
// 3.60:
int sceKernelVprintfAssertLevelForDriver(int level, SceBool condition, kernel_message_ctx *msg_ctx, const void *addr, const char *fmt, va_list arg);
sceKernelGetAssertLevelForDriver
Version |
NID
|
0.931 |
in ForKernel
|
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(kernel_message_ctx *msg_ctx, const void *addr);
sceKernelVprintfPanicForDriver
Version |
NID
|
0.931-0.990 |
not present
|
3.60 |
0x00CCE39C
|
int sceKernelVprintfPanicForDriver(kernel_message_ctx *msg_ctx, const void *addr, const char *fmt, va_list arg);
sceKernelGetTtyInfoForDriver
Version |
NID
|
0.931-0.990 |
not present
|
3.60 |
0x62466B0A
|
This is a guessed name.
// max bufSize is 0x1000
int sceKernelGetTtyInfoForDriver(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);
sceEventLogGetInfoForDriver
Version |
NID
|
0.931-0.990 |
not present
|
3.60 |
0xCC5365D3
|
This is a guessed name.
Copy by blocks of 0x30 bytes (or maybe 0xC0 bytes).
// max bufSize is 0xC00 (0x40 blocks of size 0x30)
int sceEventLogGetInfoForDriver(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
|
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
|
sceKernelAllocHeapMemoryFromGlobalHeapForTZS
Version |
NID
|
0.940-3.60 |
0x29DE887D
|
sceKernelFreeHeapMemoryForTZS
Version |
NID
|
0.931-3.60 |
0x42FB5B12
|
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, kernel_message_ctx *msg_ctx, const void *addr);
sceKernelAssertLevelForTZS
Version |
NID
|
3.60 |
0x618F89E6
|
// 3.60:
int sceKernelAssertLevelForTZS(int level, SceBool condition, kernel_message_ctx *msg_ctx, 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);
SceDebugForTZS_563B623D
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
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
|
sceKernelSysrootSetSharedMemoryForTZS
Version |
NID
|
0.940-1.80 |
0x45EEB2E0
|
sceKernelSysrootGetKermitRevisionForTZS
Version |
NID
|
0.940-1.80 |
0xDB3DAB76
|
sceKernelSysrootGetSharedMemoryForTZS
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);
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
|