Difference between revisions of "SKBL"

From Vita Development Wiki
Jump to navigation Jump to search
Line 4: Line 4:
  
 
Offsets are relative to SKBL text segment base address. See [[Physical_Memory#Secure_DRAM|Secure DRAM]].
 
Offsets are relative to SKBL text segment base address. See [[Physical_Memory#Secure_DRAM|Secure DRAM]].
 +
 +
== SceKernelModulemgr ==
 +
 +
=== get_module_object ===
 +
 +
{| class="wikitable"
 +
|-
 +
! Version !! offset !! mode
 +
|-
 +
| 3.60 || 0x2350 || thumb
 +
|}
 +
 +
<source lang="C">SceModuleObject *get_module_object(SceUID modid);</source>
 +
 +
=== get_module_bootstart ===
 +
 +
{| class="wikitable"
 +
|-
 +
! Version !! offset !! mode
 +
|-
 +
| 3.60 || 0x2744 || thumb
 +
|}
 +
 +
<source lang="C">int get_module_bootstart(SceUID modid, void *entry);</source>
 +
 +
=== sceKernelLoadModuleWithBuffer ===
 +
 +
{| class="wikitable"
 +
|-
 +
! Version !! offset !! mode
 +
|-
 +
| 3.60 || 0x2494 || thumb
 +
|}
 +
 +
<source lang="C">SceUID sceKernelLoadModuleWithBuffer(const void *pModule, SceSize size);</source>
 +
 +
=== sceKernelStartModule ===
 +
 +
{| class="wikitable"
 +
|-
 +
! Version !! offset !! mode
 +
|-
 +
| 3.60 || 0x2710 || thumb
 +
|}
 +
 +
<source lang="C">int sceKernelStartModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);</source>
 +
 +
=== sceKernelStartModuleForPid ===
 +
 +
{| class="wikitable"
 +
|-
 +
! Version !! offset !! mode
 +
|-
 +
| 3.60 || 0x25BC || thumb
 +
|}
 +
 +
<source lang="C">int sceKernelStartModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);</source>
 +
 +
=== sceKernelLoadStartModule ===
 +
 +
{| class="wikitable"
 +
|-
 +
! Version !! offset !! mode
 +
|-
 +
| 3.60 || 0x20B0 || thumb
 +
|}
 +
 +
<source lang="C">
 +
typedef struct SceTzsModule {
 +
const void *pModule;
 +
const void *pModuleEnd;
 +
} SceTzsModule;
 +
 +
int sceKernelLoadStartModule(SceTzsModule *pModule, void *argp);
 +
</source>
  
 
== SceSysmem ==
 
== SceSysmem ==
Line 184: Line 259:
  
 
<source lang="C">int sceKernelCpuGetPaddr(void *VA,uintptr_t *pPA);</source>
 
<source lang="C">int sceKernelCpuGetPaddr(void *VA,uintptr_t *pPA);</source>
 
== SceKernelModulemgr ==
 
 
=== get_module_object ===
 
 
{| class="wikitable"
 
|-
 
! Version !! offset !! mode
 
|-
 
| 3.60 || 0x2350 || thumb
 
|}
 
 
<source lang="C">SceModuleObject *get_module_object(SceUID modid);</source>
 
 
=== get_module_bootstart ===
 
 
{| class="wikitable"
 
|-
 
! Version !! offset !! mode
 
|-
 
| 3.60 || 0x2744 || thumb
 
|}
 
 
<source lang="C">int get_module_bootstart(SceUID modid, void *entry);</source>
 
 
=== sceKernelLoadModuleWithBuffer ===
 
 
{| class="wikitable"
 
|-
 
! Version !! offset !! mode
 
|-
 
| 3.60 || 0x2494 || thumb
 
|}
 
 
<source lang="C">SceUID sceKernelLoadModuleWithBuffer(const void *pModule, SceSize size);</source>
 
 
=== sceKernelStartModule ===
 
 
{| class="wikitable"
 
|-
 
! Version !! offset !! mode
 
|-
 
| 3.60 || 0x2710 || thumb
 
|}
 
 
<source lang="C">int sceKernelStartModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);</source>
 
 
=== sceKernelStartModuleForPid ===
 
 
{| class="wikitable"
 
|-
 
! Version !! offset !! mode
 
|-
 
| 3.60 || 0x25BC || thumb
 
|}
 
 
<source lang="C">int sceKernelStartModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);</source>
 
 
=== sceKernelLoadStartModule ===
 
 
{| class="wikitable"
 
|-
 
! Version !! offset !! mode
 
|-
 
| 3.60 || 0x20B0 || thumb
 
|}
 
 
<source lang="C">
 
typedef struct SceTzsModule {
 
const void *pModule;
 
const void *pModuleEnd;
 
} SceTzsModule;
 
 
int sceKernelLoadStartModule(SceTzsModule *pModule, void *argp);
 
</source>
 

Revision as of 00:42, 30 March 2021

Common

These functions are at different offsets than those of SceTzs modules.

Offsets are relative to SKBL text segment base address. See Secure DRAM.

SceKernelModulemgr

get_module_object

Version offset mode
3.60 0x2350 thumb
SceModuleObject *get_module_object(SceUID modid);

get_module_bootstart

Version offset mode
3.60 0x2744 thumb
int get_module_bootstart(SceUID modid, void *entry);

sceKernelLoadModuleWithBuffer

Version offset mode
3.60 0x2494 thumb
SceUID sceKernelLoadModuleWithBuffer(const void *pModule, SceSize size);

sceKernelStartModule

Version offset mode
3.60 0x2710 thumb
int sceKernelStartModule(SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);

sceKernelStartModuleForPid

Version offset mode
3.60 0x25BC thumb
int sceKernelStartModuleForPid(SceUID pid, SceUID modid, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status);

sceKernelLoadStartModule

Version offset mode
3.60 0x20B0 thumb
typedef struct SceTzsModule {
	const void *pModule;
	const void *pModuleEnd;
} SceTzsModule;

int sceKernelLoadStartModule(SceTzsModule *pModule, void *argp);

SceSysmem

sceGUIDReferObjectWithClass

Version offset mode
3.60 0x9DF8 thumb
int sceGUIDReferObjectWithClass(SceUID uid, SceClass *pClass, SceKernelObject **ppEntry);

sceKernelUidRelease

Version offset mode
3.60 0x9E60 thumb
int sceKernelUidRelease(SceUID uid);

sceKernelIsColdBoot

Version offset mode
3.60 0x14904 thumb
int sceKernelIsColdBoot(void);

memcpy

Version offset mode
3.60 0x15920 thumb
void *memcpy(void *dst, const void *src, int len);

memset

Version offset mode
3.60 0x15A30 thumb
void *memset(void *dst, int ch, int len);

sceKernelCpuIcacheInvalidateAll

Version offset mode
3.60 0x16480 thumb
void sceKernelCpuIcacheInvalidateAll(void);

sceKernelCpuIcacheInvalidateMVAURange

Version offset mode
3.60 0x164A0 thumb
void sceKernelCpuIcacheInvalidateMVAURange(void *start, SceSize size);

sceKernelCpuDcacheCleanMVACRange

Version offset mode
3.60 0x1650C thumb
void sceKernelCpuDcacheCleanMVACRange(void *addr, unsigned int size);

sceKernelDcacheWritebackInvalidateRange

Version offset mode
3.60 0x1652C thumb

Temp name was sceKernelCpuDcacheCleanInvalidateMVACRangeForKernel, sceKernelCpuDcacheWritebackInvalidateRangeForKernel.

// DCCIMVAC, Data cache clean and invalidate by MVA (PoC)
void sceKernelDcacheWritebackInvalidateRange(const void *addr, unsigned int size);

sceKernelCorelockContextInitialize

Version offset mode
3.60 0x16A80 thumb
typedef struct SceCorelockContext {
	int lock;
	int16_t core_count;
	int16_t last_wait_core; // 0:core3, 1:core0, 2:core1, 3:core2
} SceCorelockContext;

void sceKernelCorelockContextInitialize(SceCorelockContext *ctx);

sceKernelCorelockLock

Version offset mode
3.60 0x16A8C thumb
void sceKernelCorelockLock(SceCorelockContext *ctx, int core);

sceKernelCorelockUnlock

Version offset mode
3.60 0x16AC0 thumb
void sceKernelCorelockUnlock(SceCorelockContext *ctx);

sceKernelDcacheCleanRange_0x20

Version offset mode
3.60 0x16E54 thumb
int sceKernelDcacheCleanRange_0x20(const void *start, SceSize size);

sceKernelDcacheCleanRange_0x1

Version offset mode
3.60 0x16E60 thumb
int sceKernelDcacheCleanRange_0x1(const void *start, SceSize size);

sceKernelCpuUnrestrictedMemcpy

Version offset mode
3.60 0x16E90 thumb
int sceKernelCpuUnrestrictedMemcpy(void *dst, const void *src, SceSize len);

sceKernelCpuGetPaddr

Version offset mode
3.60 0x179E0 thumb
int sceKernelCpuGetPaddr(void *VA,uintptr_t *pPA);