NSKBL

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.

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.

sceSDbgSdioStartForKernel
Requires DIPSW 193.

sceKblPutcharForKernel
This is a guessed name.

This function is at 0x510172BD in FW 3.60 and at 0x51003BE0 in FW 0.940.040.

sceKernelPrintfForKernel
In FW 3.60 this function is at 0x510137A9.

sceKernelPrintfLevelForKernel
In FW 3.60 this function is at 0x51013841.

sceKernelGetDebugLevelForKernel
Temp name was sceKblGetMinimumLogLevel.

In FW 3.60 this function is at 0x51013921.

sceKernelGetDebugPutcharForKernel
In FW 3.60 this function is at 0x51013765.

sceKernelSysrootProcessmgrStart2ForKernel
In FW 3.60 this function is at 0x510123DD.

sceKernelSysrootThreadMgrStartAfterProcessForKernel
In FW 3.60 this function is at 0x510123A1.

sceKernelSysrootIofilemgrStartForKernel
In FW 3.60 this function is at 0x5101297D.

sceKernelSysrootCorelockUnlockForKernel
In FW 3.60 this function is at 0x510124FD.

sceKernelSysrootCorelockLockForKernel
In FW 3.60 this function is at 0x510124E5.

sceKblCpuSuspendIntrForKernel_old
This is a guessed name.

On FW 0.940, it calls a routine that simply executes  then returns 0.

CPSID i ; Disable all interrupts except NMI (set PRIMASK)

Disables IRQ interrupts by setting the I-bit in the CPSR.

sceKblCpuSuspendIntrForKernel_new
This is a guessed name. Temp name was sceKblCpuSwitchInterruptsForKernel, sceKblCpuDisableIrqInterruptsForKernel.

In FW 3.60 this function is at 0x51003554.

sceSblAimgrIsCEXForKernel
In FW 3.60 this function is at 0x510171B5.

sceSblAimgrIsDiagForKernel
In FW 3.60 this function is at 0x51017175.

sceSblAimgrIsDEXForKernel
In FW 3.60 this function is at 0x51017159.

sceSblAimgrIsToolForKernel
In FW 3.60 this function is at 0x51017139.

sceSblAimgrIsTestForKernel
In FW 3.60 this function is at 0x5101711D.

sceSblAimgrIsVITAForKernel
In FW 3.60 this function is at 0x51017299.

sceSblAimgrIsDolceForKernel
In FW 3.60 this function is at 0x510172A1.

sceSblAimgrIsGenuineDolceForKernel
In FW 3.60 this function is at 0x510171E5.

LoadModulesForKernel
Load all modules from the provided list. The list end is marked by an entry with.

Module GUIDs are populated into the list, so it must be writeable.

sceKernelBootLoadModulesForKernel
Temp name was sceKblLoadModulesForKernel.

In FW 3.60 this function is at 0x51001551.

BootModulesForKernel
Runs the entrypoint of all modules in provided list. The list end is marked by an entry with.

sceKernelBootBootModulesForKernel
Temp name was sceKblBootModulesForKernel.

In FW 3.60 this function is at 0x51001571.

sceAuthMgrExitForKernel
Temp name was sceKblAuthMgrCloseForKernel.

In FW 3.60 this function is at 0x51001345.

sceKblSetNonSyncModuleStartForKernel
This is a guessed name.

In FW 3.60 this function is at 0x51001561.

sceKernelCpuIdForKernel
In FW 3.60 this function is at 0x510147C9.

sceKernelCheckDipswForKernel
In FW 3.60 this function is at 0x51015851.

sceSblQafManagerIsAllowKernelDebugForKernel
In FW 3.60 this function is at 0x51016FD1.

sceKblGetHardwareFlagsForKernel
This is a guessed name.

In FW 3.60 this function is at 0x510128AD.

sceSdStandaloneInitForKernel
Temp name was sceKblInitDeviceForKernel.

Some device init function. On FW 0.940 it initializes and mounts  (eMMC) and   (GCSD).

In FW 3.60 this function is at 0x5100124D.

sceSdStandaloneExitForKernel
Temp name was sceKblFreeFileSystemCtxForKernel.

Cleanup state created by sceSdStandaloneInitForKernel.

In FW 3.60 this function is at 0x51001321.