vitasdk
Documentation of the vitasdk

Detailed Description

Exports for Kernel.


Using this library in your project

Include the header file in your project:


Link the library to the executable:

SceExcpmgrForKernel_stub



Functions

 VITASDK_BUILD_ASSERT_EQ (0x40, SceExcpmgrData)
 
 VITASDK_BUILD_ASSERT_EQ (0x400, SceExcpmgrExceptionContext)
 
SceExcpmgrDataksceExcpmgrGetData (void)
 Get a pointer to SceExcpmgr's internal data. More...
 
int ksceExcpmgrRegisterHandler (SceExcpKind kind, int priority, void *handler)
 Register an exception handler. More...
 

Typedefs

typedef void() SceExcpmgrExceptionHandler(SceExcpmgrExceptionContext *context, SceExcpHandlingCode code)
 

Data Structure Documentation

◆ SceExcpmgrData

struct SceExcpmgrData
Data Fields
int nestedExceptionCount[4] Number of times an exception handler has been entered on core - panic if > 1 on exception return.
int unused[4] Seemingly unused.
void * ExcpStackTop[4] Top of the exception stack (size is 0x1000)
void * ExcpStackBottom[4] Bottom of the exception stack.

◆ SceExcpmgrExceptionContext

struct SceExcpmgrExceptionContext
Data Fields
uint32_t r0 < Size is 0x400 on FW 3.60
uint32_t r1
uint32_t r2
uint32_t r3
uint32_t r4
uint32_t r5
uint32_t r6
uint32_t r7
uint32_t r8
uint32_t r9
uint32_t r10
uint32_t r11
uint32_t r12
uint32_t sp
uint32_t lr
uint32_t address_of_faulting_instruction
SceExcpKind ExceptionKind
uint32_t SPSR
uint32_t CPACR
uint32_t FPSCR
uint32_t FPEXC
uint32_t CONTEXTIDR
uint32_t TPIDRURW
uint32_t TPIDRURO
uint32_t TPIDRPRW
uint32_t TTBR1
uint32_t unused68
uint32_t DACR
uint32_t DFSR
uint32_t IFSR
uint32_t DFAR
uint32_t IFAR
uint32_t PAR
uint32_t TEEHBR
uint32_t PMCR
uint32_t PMCNTENSET
uint32_t PMCNTENSET_2
uint32_t PMSELR
uint32_t PMCCNTR
uint32_t PMUSERENR
uint32_t PMXEVTYPER0
uint32_t PMXEVCNTR0
uint32_t PMXEVTYPER1
uint32_t PMXEVCNTR1
uint32_t PMXEVTYPER2
uint32_t PMXEVCNTR2
uint32_t PMXEVTYPER3
uint32_t PMXEVCNTR3
uint32_t PMXEVTYPER4
uint32_t PMXEVCNTR4
uint32_t PMXEVTYPER5
uint32_t PMXEVCNTR5
uint32_t unusedD0
uint32_t unkD4
uint32_t DBGSCRext
uint32_t unusedDC[9]
uint64_t VFP_registers[32]
uint32_t unk200[128]

Typedef Documentation

◆ SceExcpmgrExceptionHandler

typedef void() SceExcpmgrExceptionHandler(SceExcpmgrExceptionContext *context, SceExcpHandlingCode code)

Enumeration Type Documentation

◆ SceExcpKind

Enumerator
SCE_EXCP_RESET 
SCE_EXCP_UNDEF_INSTRUCTION 
SCE_EXCP_SVC 
SCE_EXCP_PABT 
SCE_EXCP_DABT 
SCE_EXCP_UNUSED 
SCE_EXCP_IRQ 
SCE_EXCP_FIQ 

◆ SceExcpHandlingCode

Enumerator
SCE_EXCPMGR_EXCEPTION_HANDLED 

Exception handled.

SCE_EXCPMGR_EXCEPTION_NOT_HANDLED 

Exception not handled - kills app with C2-12828-1.

SCE_EXCPMGR_EXCEPTION_HANDLING_CODE_2 
SCE_EXCPMGR_EXCEPTION_NOT_HANDLED_FATAL 

Fatal exception - panics the kernel.

SCE_EXCPMGR_EXCEPTION_HANDLING_CODE_4 

Function Documentation

◆ VITASDK_BUILD_ASSERT_EQ() [1/2]

VITASDK_BUILD_ASSERT_EQ ( 0x40  ,
SceExcpmgrData   
)

◆ VITASDK_BUILD_ASSERT_EQ() [2/2]

VITASDK_BUILD_ASSERT_EQ ( 0x400  ,
SceExcpmgrExceptionContext   
)

◆ ksceExcpmgrGetData()

SceExcpmgrData* ksceExcpmgrGetData ( void  )

Get a pointer to SceExcpmgr's internal data.

This is only used by exception handlers.

Returns
pointer to SceExcpmgrData structure

◆ ksceExcpmgrRegisterHandler()

int ksceExcpmgrRegisterHandler ( SceExcpKind  kind,
int  priority,
void *  handler 
)

Register an exception handler.

handler must point to eight bytes of space followed by the handler code. The space will be used in the internal linked list structure.

Parameters
[in]kindThe kind of exception
[in]priorityThe priority (must be 0 <= priority < 8), 0 highest
handlerThe handler
Returns
Error code or zero on success