NSKBL: Difference between revisions
m (→sceKblFreeFileSystemCtxForKernel: Mark NID as valid down to 0.940 and add info) |
CelesteBlue (talk | contribs) No edit summary |
||
Line 130: | Line 130: | ||
|} | |} | ||
On 0.940, calls a routine that | On FW 0.940, it calls a routine that simply executes <code>cpsid i</code> then returns 0. | ||
=== | === BootModulesForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 145: | Line 145: | ||
<source lang="C"> | <source lang="C"> | ||
//If run_boot_entry is SCE_TRUE, module_start is executed on core 0 and | // If run_boot_entry is SCE_TRUE, module_start is executed on core 0 and | ||
//module_bootstart is executed on all cores | // module_bootstart is executed on all cores | ||
SceInt32 BootModules(SceNskblModuleInfo* module_list, SceSize args, const void* argp, SceBool run_boot_entry); | SceInt32 BootModules(SceNskblModuleInfo* module_list, SceSize args, const void* argp, SceBool run_boot_entry); | ||
</source> | </source> | ||
=== | === sceSDfMgrStartForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 160: | Line 160: | ||
|} | |} | ||
=== | === LoadModulesForKernel === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 171: | Line 171: | ||
Load all modules from the provided list. The list end is marked by an entry with <code>moduleName = NULL</code>. | Load all modules from the provided list. The list end is marked by an entry with <code>moduleName = NULL</code>. | ||
Module GUIDs are populated into the list, so it must be writeable. | Module GUIDs are populated into the list, so it must be writeable. | ||
<source lang="C"> | <source lang="C">SceInt32 LoadModules(SceNskblModuleInfo* module_list);</source> | ||
SceInt32 LoadModules(SceNskblModuleInfo* module_list); | |||
</source> | |||
=== sceKblPutcharForKernel === | === sceKblPutcharForKernel === | ||
Line 185: | Line 184: | ||
|} | |} | ||
This is a guessed name. This function is at 0x510172BD in 3.60 and at 0x51003BE0 in 0.940.040. | This is a guessed name. | ||
This function is at 0x510172BD in FW 3.60 and at 0x51003BE0 in FW 0.940.040. | |||
<source lang="C">int sceKblPutcharForKernel(void *args, char c);</source> | <source lang="C">int sceKblPutcharForKernel(void *args, char c);</source> | ||
Line 197: | Line 198: | ||
|} | |} | ||
In 3.60 this function is at 0x510137A9 | In FW 3.60 this function is at 0x510137A9. | ||
<source lang="C">int sceKernelPrintfForKernel(const char *fmt, ...);</source> | <source lang="C">int sceKernelPrintfForKernel(const char *fmt, ...);</source> | ||
Line 211: | Line 212: | ||
|} | |} | ||
In 3.60 this function is at 0x51013841. | In FW 3.60 this function is at 0x51013841. | ||
<source lang="C">int sceKernelPrintfLevelForKernel(int level, const char *fmt, ...);</source> | <source lang="C">int sceKernelPrintfLevelForKernel(int level, const char *fmt, ...);</source> | ||
Line 225: | Line 226: | ||
Temp name was sceKblGetMinimumLogLevel. | Temp name was sceKblGetMinimumLogLevel. | ||
In 3.60 this function is at 0x51013921. | In FW 3.60 this function is at 0x51013921. | ||
<source lang="C">int sceKernelGetDebugLevelForKernel(void);</source> | <source lang="C">int sceKernelGetDebugLevelForKernel(void);</source> | ||
Line 237: | Line 238: | ||
|} | |} | ||
In 3.60 this function is at 0x51013765. | In FW 3.60 this function is at 0x51013765. | ||
<source lang="C">void *sceKernelGetDebugPutcharForKernel(void);</source> | <source lang="C">void *sceKernelGetDebugPutcharForKernel(void);</source> | ||
Line 249: | Line 250: | ||
|} | |} | ||
In 3.60 this function is at 0x510123DD. | In FW 3.60 this function is at 0x510123DD. | ||
<source lang="C">int sceKernelSysrootProcessmgrStart2ForKernel(void);</source> | <source lang="C">int sceKernelSysrootProcessmgrStart2ForKernel(void);</source> | ||
Line 261: | Line 262: | ||
|} | |} | ||
In 3.60 this function is at 0x510123A1. | In FW 3.60 this function is at 0x510123A1. | ||
<source lang="C">int sceKernelSysrootThreadMgrStartAfterProcessForKernel(void);</source> | <source lang="C">int sceKernelSysrootThreadMgrStartAfterProcessForKernel(void);</source> | ||
Line 273: | Line 274: | ||
|} | |} | ||
In 3.60 this function is at 0x5101297D. | In FW 3.60 this function is at 0x5101297D. | ||
<source lang="C">int sceKernelSysrootIofilemgrStartForKernel(void);</source> | <source lang="C">int sceKernelSysrootIofilemgrStartForKernel(void);</source> | ||
Line 285: | Line 286: | ||
|} | |} | ||
In 3.60 this function is at 0x510124FD. | In FW 3.60 this function is at 0x510124FD. | ||
<source lang="C">void sceKernelSysrootCorelockUnlockForKernel(void);</source> | <source lang="C">void sceKernelSysrootCorelockUnlockForKernel(void);</source> | ||
Line 297: | Line 298: | ||
|} | |} | ||
In 3.60 this function is at 0x510124E5. | In FW 3.60 this function is at 0x510124E5. | ||
<source lang="C">void sceKernelSysrootCorelockLockForKernel(SceUInt32 core);</source> | <source lang="C">void sceKernelSysrootCorelockLockForKernel(SceUInt32 core);</source> | ||
Line 311: | Line 312: | ||
|} | |} | ||
This is a guessed name. Temp name was sceKblCpuSwitchInterruptsForKernel. | |||
In FW 3.60 this function is at 0x51003554. | |||
<source lang="C">void sceKblCpuDisableIrqInterruptsForKernel(void);</source> | <source lang="C">void sceKblCpuDisableIrqInterruptsForKernel(void);</source> | ||
Line 325: | Line 326: | ||
|} | |} | ||
In 3.60 this function is at 0x510171B5. | In FW 3.60 this function is at 0x510171B5. | ||
<source lang="C">int sceSblAimgrIsCEXForKernel(void);</source> | <source lang="C">int sceSblAimgrIsCEXForKernel(void);</source> | ||
Line 337: | Line 338: | ||
|} | |} | ||
In 3.60 this function is at 0x51017175. | In FW 3.60 this function is at 0x51017175. | ||
<source lang="C">int sceSblAimgrIsDiagForKernel(void);</source> | <source lang="C">int sceSblAimgrIsDiagForKernel(void);</source> | ||
Line 351: | Line 352: | ||
|} | |} | ||
In 3.60 this function is at 0x51017159. | In FW 3.60 this function is at 0x51017159. | ||
<source lang="C">int sceSblAimgrIsDEXForKernel(void);</source> | <source lang="C">int sceSblAimgrIsDEXForKernel(void);</source> | ||
Line 365: | Line 366: | ||
|} | |} | ||
In 3.60 this function is at 0x51017139. | In FW 3.60 this function is at 0x51017139. | ||
<source lang="C">int sceSblAimgrIsToolForKernel(void);</source> | <source lang="C">int sceSblAimgrIsToolForKernel(void);</source> | ||
Line 379: | Line 380: | ||
|} | |} | ||
In 3.60 this function is at 0x5101711D. | In FW 3.60 this function is at 0x5101711D. | ||
<source lang="C">int sceSblAimgrIsTestForKernel(void);</source> | <source lang="C">int sceSblAimgrIsTestForKernel(void);</source> | ||
Line 393: | Line 394: | ||
|} | |} | ||
In 3.60 this function is at 0x51017299. | In FW 3.60 this function is at 0x51017299. | ||
<source lang="C">int sceSblAimgrIsVITAForKernel(void);</source> | <source lang="C">int sceSblAimgrIsVITAForKernel(void);</source> | ||
Line 407: | Line 408: | ||
|} | |} | ||
In 3.60 this function is at 0x510172A1. | In FW 3.60 this function is at 0x510172A1. | ||
<source lang="C">int sceSblAimgrIsDolceForKernel(void);</source> | <source lang="C">int sceSblAimgrIsDolceForKernel(void);</source> | ||
Line 421: | Line 422: | ||
|} | |} | ||
In 3.60 this function is at 0x510171E5. | In FW 3.60 this function is at 0x510171E5. | ||
<source lang="C">int sceSblAimgrIsGenuineDolceForKernel(void);</source> | <source lang="C">int sceSblAimgrIsGenuineDolceForKernel(void);</source> | ||
Line 435: | Line 436: | ||
|} | |} | ||
In 3.60 this function is at 0x51001551. | This is a guessed name. | ||
In FW 3.60 this function is at 0x51001551. | |||
<source lang="C"> | <source lang="C"> | ||
Line 455: | Line 458: | ||
|} | |} | ||
In 3.60 this function is at 0x51001571 | This is a guessed name. | ||
In FW 3.60 this function is at 0x51001571. | |||
<source lang="C">int sceKblStartModuleForKernel(SceUID *pUidList, SceUInt32 count, SceSize args, void *argp);</source> | <source lang="C">int sceKblStartModuleForKernel(SceUID *pUidList, SceUInt32 count, SceSize args, void *argp);</source> | ||
Line 469: | Line 474: | ||
|} | |} | ||
In 3.60 this function is at 0x51001345. | This is a guessed name. | ||
In FW 3.60 this function is at 0x51001345. | |||
<source lang="C">int sceKblAuthMgrCloseForKernel(void);</source> | <source lang="C">int sceKblAuthMgrCloseForKernel(void);</source> | ||
Line 483: | Line 490: | ||
|} | |} | ||
In 3.60 this function is at 0x51001561. | This is a guessed name. | ||
In FW 3.60 this function is at 0x51001561. | |||
<source lang="C">int sceKblSetNonSyncModuleStartForKernel(void);</source> | <source lang="C">int sceKblSetNonSyncModuleStartForKernel(void);</source> | ||
Line 495: | Line 504: | ||
|} | |} | ||
In 3.60 this function is at 0x510147C9. | In FW 3.60 this function is at 0x510147C9. | ||
<source lang="C">int sceKernelCpuIdForKernel(void);</source> | <source lang="C">int sceKernelCpuIdForKernel(void);</source> | ||
Line 507: | Line 516: | ||
|} | |} | ||
In 3.60 this function is at 0x51015851. | In FW 3.60 this function is at 0x51015851. | ||
<source lang="C">int sceKernelCheckDipswForKernel(int bit);</source> | <source lang="C">int sceKernelCheckDipswForKernel(int bit);</source> | ||
Line 519: | Line 528: | ||
|} | |} | ||
In 3.60 this function is at 0x51016FD1 | In FW 3.60 this function is at 0x51016FD1. | ||
<source lang="C">int sceSblQafManagerIsAllowKernelDebugForKernel(void);</source> | <source lang="C">int sceSblQafManagerIsAllowKernelDebugForKernel(void);</source> | ||
Line 533: | Line 542: | ||
|} | |} | ||
This is a guessed name. | |||
In 3.60 this function is at 0x510128AD | In FW 3.60 this function is at 0x510128AD. | ||
<source lang="C"> | <source lang="C"> | ||
typedef struct | typedef struct SceHardwareFlags { | ||
uint32_t data[4]; | uint32_t data[4]; | ||
} __attribute__((packed)) | } __attribute__((packed)) SceHardwareFlags; | ||
int sceKblGetHardwareFlagsForKernel( | int sceKblGetHardwareFlagsForKernel(SceHardwareFlags *pFlags); | ||
</source> | </source> | ||
Line 553: | Line 562: | ||
|} | |} | ||
This is a guessed name. | |||
In 3.60 this function is at 0x5100124D. | Some device init function. On FW 0.940 it initializes and mounts <code>os0:</code> (eMMC) and <code>sd0:</code> (GCSD). | ||
In FW 3.60 this function is at 0x5100124D. | |||
<source lang="C">int sceKblInitDeviceForKernel(void);</source> | <source lang="C">int sceKblInitDeviceForKernel(void);</source> | ||
Line 566: | Line 577: | ||
| 0.940-3.60 || 0x261F2747 | | 0.940-3.60 || 0x261F2747 | ||
|} | |} | ||
This is a guessed name. | |||
Cleanup state created by [[NSKBL#sceKblInitDeviceForKernel]]. | Cleanup state created by [[NSKBL#sceKblInitDeviceForKernel]]. | ||
In 3.60 this function is at 0x51001321. | In FW 3.60 this function is at 0x51001321. | ||
<source lang="C">int sceKblFreeFileSystemCtxForKernel(void);</source> | <source lang="C">int sceKblFreeFileSystemCtxForKernel(void);</source> |
Revision as of 00:25, 28 May 2022
Non-Secure Kernel Boot Loader (NSKBL) is a Non-Secure world program that performs eMMC setup, base kernel modules loading, etc. during PSVita boot.
Module
The NSKBL contains subroutines that are stripped versions of the non-secure kernel ones found in SceSysmem, SceKernelModulemgr, SceSblSmschedProxy, SceExcpmgr, SceKernelIntrMgr, SceSblAuthMgr, SceProcessmgr (maybe), SceSdif, SceIofilemgr (simple version?), and some other core drivers.
Notes
How to debug NSKBL
NSKBL supports sd0: for debugging. pKblParam->boot_type_indicator_1 = 0x40000 is required.
sceIoOpen(?) error code 0x803FF007
This error can occur if the file is fragmented.
Types
typedef struct SceNskblModuleInfo { char* moduleName; //Raw SKPRX name (e.g. "sysmem.skprx") - modules are loaded either from os0:kd/ or host0:module/ SceUID moduleId; //SCE_UID_INVALID_UID, gets filled when loading SceUInt32 loadFlags; //Passed as flags to sceKernelLoadModuleWithoutStart } SceNskblModuleInfo; /* Many pointers are NSKBL heap relationships */ typedef struct SceNskblSysrootInfo { // size is at least 0xC8 on FW 3.60 SceUID unk_0x00; // maybe some PID. ex: 0x10089 int unk_0x04; void *unk_0x08; void *unk_0x0C; void *unk_0x10; void *unk_0x14; void *unk_0x18; void *unk_0x1C; void *unk_0x20; void *unk_0x24; void *unk_0x28; void *unk_0x2C; SceUID unk_0x30; // maybe some PID. ex: 0x1000B const void *unk_0x34; // mapped paddr in vaddr const void *unk_0x38; // mapped paddr in vaddr void *unk_0x3C; int unk_0x40; // ex: 0x80000000 int unk_0x44; // ex: 0x20000000 void *unk_0x48; void *unk_0x4C; void *unk_0x50; void *unk_0x54; void *unk_0x58; void *unk_0x5C; void *unk_0x60; void *unk_0x64; void *unk_0x68; void *unk_0x6C; void *unk_0x70; void *unk_0x74; void *unk_0x78; void *unk_0x7C; void *unk_0x80; void *unk_0x84; void *unk_0x88; void *unk_0x8C; void *unk_0x90; void *unk_0x94; void *unk_0x98; SceUInt32 magic; // 0x 19442EA8 int unk_0xA0; // ex: 0x1000 int unk_0xA4; // ex: 0x1000 int unk_0xA8; // ex: 0x40000 int unk_0xAC; // ex: 0x200000 int unk_0xB0; // ex: 7 int unk_0xB4; int unk_0xB8; // ex: 0x80 sysroot_t *pSysroot; void *unk_0xC0; void *unk_0xC4; // more...? } SceNskblSysrootInfo; // 3.60 SceNskblSysrootInfo *nskbl_sysroot_info = (SceNskblSysrootInfo *)(0x51000000 + 0x138980); // 3.60
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
0.940-3.65 | SceKblForKernel | Non-secure | Kernel | 0xD0FC2991 |
SceKblForKernel
sceSDrfpStartForKernel
Version | NID |
---|---|
0.940-0.990 | 0x230456F3 |
3.60 | not present |
sceSDbgSdioStartForKernel
Version | NID |
---|---|
0.940-0.990 | 0x29A8524D |
3.60 | not present |
Requires DIPSW 193.
SceInt32 sceSDbgSdioStartForKernel(void);
SceKblForKernel_99B2F981
Version | NID |
---|---|
0.940-0.990 | 0x99B2F981 |
3.60 | not present |
On FW 0.940, it calls a routine that simply executes cpsid i
then returns 0.
BootModulesForKernel
Version | NID |
---|---|
0.940-0.990 | 0xA7D60F71 |
3.60 | not present |
Runs the entrypoint of all modules in provided list. The list end is marked by an entry with moduleId = SCE_UID_INVALID_UID
.
// If run_boot_entry is SCE_TRUE, module_start is executed on core 0 and // module_bootstart is executed on all cores SceInt32 BootModules(SceNskblModuleInfo* module_list, SceSize args, const void* argp, SceBool run_boot_entry);
sceSDfMgrStartForKernel
Version | NID |
---|---|
0.940-0.990 | 0xAA8005E4 |
3.60 | not present |
LoadModulesForKernel
Version | NID |
---|---|
0.940-0.990 | 0xFAE33FDD |
3.60 | not present |
Load all modules from the provided list. The list end is marked by an entry with moduleName = NULL
.
Module GUIDs are populated into the list, so it must be writeable.
SceInt32 LoadModules(SceNskblModuleInfo* module_list);
sceKblPutcharForKernel
Version | NID |
---|---|
0.940-3.60 | 0x08E9FAEB |
This is a guessed name.
This function is at 0x510172BD in FW 3.60 and at 0x51003BE0 in FW 0.940.040.
int sceKblPutcharForKernel(void *args, char c);
sceKernelPrintfForKernel
Version | NID |
---|---|
0.940-3.60 | 0x13A5ABEF |
In FW 3.60 this function is at 0x510137A9.
int sceKernelPrintfForKernel(const char *fmt, ...);
sceKernelPrintfLevelForKernel
Version | NID |
---|---|
0.940 | Not present |
0.990-3.60 | 0x752E7EEC |
In FW 3.60 this function is at 0x51013841.
int sceKernelPrintfLevelForKernel(int level, const char *fmt, ...);
sceKernelGetDebugLevelForKernel
Version | NID |
---|---|
0.940-3.60 | 0xC011935A |
Temp name was sceKblGetMinimumLogLevel.
In FW 3.60 this function is at 0x51013921.
int sceKernelGetDebugLevelForKernel(void);
sceKernelGetDebugPutcharForKernel
Version | NID |
---|---|
0.940-3.60 | 0x9B868276 |
In FW 3.60 this function is at 0x51013765.
void *sceKernelGetDebugPutcharForKernel(void);
sceKernelSysrootProcessmgrStart2ForKernel
Version | NID |
---|---|
0.940-3.60 | 0x161D6FCC |
In FW 3.60 this function is at 0x510123DD.
int sceKernelSysrootProcessmgrStart2ForKernel(void);
sceKernelSysrootThreadMgrStartAfterProcessForKernel
Version | NID |
---|---|
0.940-3.60 | 0x1DB28F02 |
In FW 3.60 this function is at 0x510123A1.
int sceKernelSysrootThreadMgrStartAfterProcessForKernel(void);
sceKernelSysrootIofilemgrStartForKernel
Version | NID |
---|---|
0.940-3.60 | 0xC7B77991 |
In FW 3.60 this function is at 0x5101297D.
int sceKernelSysrootIofilemgrStartForKernel(void);
sceKernelSysrootCorelockUnlockForKernel
Version | NID |
---|---|
0.940-3.60 | 0x314AA770 |
In FW 3.60 this function is at 0x510124FD.
void sceKernelSysrootCorelockUnlockForKernel(void);
sceKernelSysrootCorelockLockForKernel
Version | NID |
---|---|
0.940-3.60 | 0x807B4437 |
In FW 3.60 this function is at 0x510124E5.
void sceKernelSysrootCorelockLockForKernel(SceUInt32 core);
sceKblCpuDisableIrqInterruptsForKernel
Version | NID |
---|---|
0.940-0.990 | Not present |
3.60 | 0xDDB3A1A8 |
This is a guessed name. Temp name was sceKblCpuSwitchInterruptsForKernel.
In FW 3.60 this function is at 0x51003554.
void sceKblCpuDisableIrqInterruptsForKernel(void);
sceSblAimgrIsCEXForKernel
Version | NID |
---|---|
0.940-3.60 | 0x8A416887 |
In FW 3.60 this function is at 0x510171B5.
int sceSblAimgrIsCEXForKernel(void);
sceSblAimgrIsDiagForKernel
Version | NID |
---|---|
0.940-3.60 | 0xC3DDDE15 |
In FW 3.60 this function is at 0x51017175.
int sceSblAimgrIsDiagForKernel(void);
sceSblAimgrIsDEXForKernel
Version | NID |
---|---|
0.940-0.990 | Not present |
3.60 | 0x5945F065 |
In FW 3.60 this function is at 0x51017159.
int sceSblAimgrIsDEXForKernel(void);
sceSblAimgrIsToolForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xB6C9ACF1 |
In FW 3.60 this function is at 0x51017139.
int sceSblAimgrIsToolForKernel(void);
sceSblAimgrIsTestForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x943E7537 |
In FW 3.60 this function is at 0x5101711D.
int sceSblAimgrIsTestForKernel(void);
sceSblAimgrIsVITAForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x838466E9 |
In FW 3.60 this function is at 0x51017299.
int sceSblAimgrIsVITAForKernel(void);
sceSblAimgrIsDolceForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xA7BD4417 |
In FW 3.60 this function is at 0x510172A1.
int sceSblAimgrIsDolceForKernel(void);
sceSblAimgrIsGenuineDolceForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xB6D00D6D |
In FW 3.60 this function is at 0x510171E5.
int sceSblAimgrIsGenuineDolceForKernel(void);
sceKblLoadModuleForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x6D7A1F18 |
This is a guessed name.
In FW 3.60 this function is at 0x51001551.
typedef struct SceModuleLoadList { const char *filename; } __attribute__((packed)) SceModuleLoadList; int sceKblLoadModuleForKernel(const SceModuleLoadList *pList, SceUID *pUidList, SceUInt32 count, SceBool use_tool_extended_memory);
sceKblStartModuleForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x9A92436E |
This is a guessed name.
In FW 3.60 this function is at 0x51001571.
int sceKblStartModuleForKernel(SceUID *pUidList, SceUInt32 count, SceSize args, void *argp);
sceKblAuthMgrCloseForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x79241ACF |
This is a guessed name.
In FW 3.60 this function is at 0x51001345.
int sceKblAuthMgrCloseForKernel(void);
sceKblSetNonSyncModuleStartForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0x9F4F3F98 |
This is a guessed name.
In FW 3.60 this function is at 0x51001561.
int sceKblSetNonSyncModuleStartForKernel(void);
sceKernelCpuIdForKernel
Version | NID |
---|---|
0.940-3.60 | 0xB506A10E |
In FW 3.60 this function is at 0x510147C9.
int sceKernelCpuIdForKernel(void);
sceKernelCheckDipswForKernel
Version | NID |
---|---|
0.990-3.60 | 0xC8F4DE71 |
In FW 3.60 this function is at 0x51015851.
int sceKernelCheckDipswForKernel(int bit);
sceSblQafManagerIsAllowKernelDebugForKernel
Version | NID |
---|---|
0.940-3.60 | 0xCE94F329 |
In FW 3.60 this function is at 0x51016FD1.
int sceSblQafManagerIsAllowKernelDebugForKernel(void);
sceKblGetHardwareFlagsForKernel
Version | NID |
---|---|
0.990 | not present |
3.60 | 0xD3A516D5 |
This is a guessed name.
In FW 3.60 this function is at 0x510128AD.
typedef struct SceHardwareFlags { uint32_t data[4]; } __attribute__((packed)) SceHardwareFlags; int sceKblGetHardwareFlagsForKernel(SceHardwareFlags *pFlags);
sceKblInitDeviceForKernel
Version | NID |
---|---|
0.940-3.60 | 0xF7AF8690 |
This is a guessed name.
Some device init function. On FW 0.940 it initializes and mounts os0:
(eMMC) and sd0:
(GCSD).
In FW 3.60 this function is at 0x5100124D.
int sceKblInitDeviceForKernel(void);
sceKblFreeFileSystemCtxForKernel
Version | NID |
---|---|
0.940-3.60 | 0x261F2747 |
This is a guessed name.
Cleanup state created by NSKBL#sceKblInitDeviceForKernel.
In FW 3.60 this function is at 0x51001321.
int sceKblFreeFileSystemCtxForKernel(void);