vitasdk
Documentation of the vitasdk

Exports for Kernel. More...

Data Structures

struct  SceExcpmgrData
 
struct  SceExcpmgrExceptionContext
 

Typedefs

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

Enumerations

enum  SceExcpKind {
  SCE_EXCP_RESET = 0 , SCE_EXCP_UNDEF_INSTRUCTION = 1 , SCE_EXCP_SVC = 2 , SCE_EXCP_PABT = 3 ,
  SCE_EXCP_DABT = 4 , SCE_EXCP_UNUSED = 5 , SCE_EXCP_IRQ = 6 , SCE_EXCP_FIQ = 7
}
 
enum  SceExcpHandlingCode {
  SCE_EXCPMGR_EXCEPTION_HANDLED = 0 , SCE_EXCPMGR_EXCEPTION_NOT_HANDLED = 1 , SCE_EXCPMGR_EXCEPTION_HANDLING_CODE_2 = 2 , SCE_EXCPMGR_EXCEPTION_NOT_HANDLED_FATAL = 3 ,
  SCE_EXCPMGR_EXCEPTION_HANDLING_CODE_4 = 4
}
 

Functions

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

Variables

int SceExcpmgrData::nestedExceptionCount [4]
 Number of times an exception handler has been entered on core - panic if > 1 on exception return.
 
int SceExcpmgrData::unused [4]
 Seemingly unused.
 
void * SceExcpmgrData::ExcpStackTop [4]
 Top of the exception stack (size is 0x1000)
 
void * SceExcpmgrData::ExcpStackBottom [4]
 Bottom of the exception stack.
 
uint32_t SceExcpmgrExceptionContext::r0
 < Size is 0x400 on FW 3.60
 
uint32_t SceExcpmgrExceptionContext::r1
 
uint32_t SceExcpmgrExceptionContext::r2
 
uint32_t SceExcpmgrExceptionContext::r3
 
uint32_t SceExcpmgrExceptionContext::r4
 
uint32_t SceExcpmgrExceptionContext::r5
 
uint32_t SceExcpmgrExceptionContext::r6
 
uint32_t SceExcpmgrExceptionContext::r7
 
uint32_t SceExcpmgrExceptionContext::r8
 
uint32_t SceExcpmgrExceptionContext::r9
 
uint32_t SceExcpmgrExceptionContext::r10
 
uint32_t SceExcpmgrExceptionContext::r11
 
uint32_t SceExcpmgrExceptionContext::r12
 
uint32_t SceExcpmgrExceptionContext::sp
 
uint32_t SceExcpmgrExceptionContext::lr
 
uint32_t SceExcpmgrExceptionContext::address_of_faulting_instruction
 
SceExcpKind SceExcpmgrExceptionContext::ExceptionKind
 
uint32_t SceExcpmgrExceptionContext::SPSR
 
uint32_t SceExcpmgrExceptionContext::CPACR
 
uint32_t SceExcpmgrExceptionContext::FPSCR
 
uint32_t SceExcpmgrExceptionContext::FPEXC
 
uint32_t SceExcpmgrExceptionContext::CONTEXTIDR
 
uint32_t SceExcpmgrExceptionContext::TPIDRURW
 
uint32_t SceExcpmgrExceptionContext::TPIDRURO
 
uint32_t SceExcpmgrExceptionContext::TPIDRPRW
 
uint32_t SceExcpmgrExceptionContext::TTBR1
 
uint32_t SceExcpmgrExceptionContext::unused68
 
uint32_t SceExcpmgrExceptionContext::DACR
 
uint32_t SceExcpmgrExceptionContext::DFSR
 
uint32_t SceExcpmgrExceptionContext::IFSR
 
uint32_t SceExcpmgrExceptionContext::DFAR
 
uint32_t SceExcpmgrExceptionContext::IFAR
 
uint32_t SceExcpmgrExceptionContext::PAR
 
uint32_t SceExcpmgrExceptionContext::TEEHBR
 
uint32_t SceExcpmgrExceptionContext::PMCR
 
uint32_t SceExcpmgrExceptionContext::PMCNTENSET
 
uint32_t SceExcpmgrExceptionContext::PMCNTENSET_2
 
uint32_t SceExcpmgrExceptionContext::PMSELR
 
uint32_t SceExcpmgrExceptionContext::PMCCNTR
 
uint32_t SceExcpmgrExceptionContext::PMUSERENR
 
uint32_t SceExcpmgrExceptionContext::PMXEVTYPER0
 
uint32_t SceExcpmgrExceptionContext::PMXEVCNTR0
 
uint32_t SceExcpmgrExceptionContext::PMXEVTYPER1
 
uint32_t SceExcpmgrExceptionContext::PMXEVCNTR1
 
uint32_t SceExcpmgrExceptionContext::PMXEVTYPER2
 
uint32_t SceExcpmgrExceptionContext::PMXEVCNTR2
 
uint32_t SceExcpmgrExceptionContext::PMXEVTYPER3
 
uint32_t SceExcpmgrExceptionContext::PMXEVCNTR3
 
uint32_t SceExcpmgrExceptionContext::PMXEVTYPER4
 
uint32_t SceExcpmgrExceptionContext::PMXEVCNTR4
 
uint32_t SceExcpmgrExceptionContext::PMXEVTYPER5
 
uint32_t SceExcpmgrExceptionContext::PMXEVCNTR5
 
uint32_t SceExcpmgrExceptionContext::unusedD0
 
uint32_t SceExcpmgrExceptionContext::unkD4
 
uint32_t SceExcpmgrExceptionContext::DBGSCRext
 
uint32_t SceExcpmgrExceptionContext::unusedDC [9]
 
uint64_t SceExcpmgrExceptionContext::VFP_registers [32]
 
uint32_t SceExcpmgrExceptionContext::unk200 [128]
 

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




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

Variable Documentation

◆ nestedExceptionCount

int SceExcpmgrData::nestedExceptionCount[4]

Number of times an exception handler has been entered on core - panic if > 1 on exception return.

◆ unused

int SceExcpmgrData::unused[4]

Seemingly unused.

◆ ExcpStackTop

void* SceExcpmgrData::ExcpStackTop[4]

Top of the exception stack (size is 0x1000)

◆ ExcpStackBottom

void* SceExcpmgrData::ExcpStackBottom[4]

Bottom of the exception stack.

◆ r0

uint32_t SceExcpmgrExceptionContext::r0

< Size is 0x400 on FW 3.60

◆ r1

uint32_t SceExcpmgrExceptionContext::r1

◆ r2

uint32_t SceExcpmgrExceptionContext::r2

◆ r3

uint32_t SceExcpmgrExceptionContext::r3

◆ r4

uint32_t SceExcpmgrExceptionContext::r4

◆ r5

uint32_t SceExcpmgrExceptionContext::r5

◆ r6

uint32_t SceExcpmgrExceptionContext::r6

◆ r7

uint32_t SceExcpmgrExceptionContext::r7

◆ r8

uint32_t SceExcpmgrExceptionContext::r8

◆ r9

uint32_t SceExcpmgrExceptionContext::r9

◆ r10

uint32_t SceExcpmgrExceptionContext::r10

◆ r11

uint32_t SceExcpmgrExceptionContext::r11

◆ r12

uint32_t SceExcpmgrExceptionContext::r12

◆ sp

uint32_t SceExcpmgrExceptionContext::sp

◆ lr

uint32_t SceExcpmgrExceptionContext::lr

◆ address_of_faulting_instruction

uint32_t SceExcpmgrExceptionContext::address_of_faulting_instruction

◆ ExceptionKind

SceExcpKind SceExcpmgrExceptionContext::ExceptionKind

◆ SPSR

uint32_t SceExcpmgrExceptionContext::SPSR

◆ CPACR

uint32_t SceExcpmgrExceptionContext::CPACR

◆ FPSCR

uint32_t SceExcpmgrExceptionContext::FPSCR

◆ FPEXC

uint32_t SceExcpmgrExceptionContext::FPEXC

◆ CONTEXTIDR

uint32_t SceExcpmgrExceptionContext::CONTEXTIDR

◆ TPIDRURW

uint32_t SceExcpmgrExceptionContext::TPIDRURW

◆ TPIDRURO

uint32_t SceExcpmgrExceptionContext::TPIDRURO

◆ TPIDRPRW

uint32_t SceExcpmgrExceptionContext::TPIDRPRW

◆ TTBR1

uint32_t SceExcpmgrExceptionContext::TTBR1

◆ unused68

uint32_t SceExcpmgrExceptionContext::unused68

◆ DACR

uint32_t SceExcpmgrExceptionContext::DACR

◆ DFSR

uint32_t SceExcpmgrExceptionContext::DFSR

◆ IFSR

uint32_t SceExcpmgrExceptionContext::IFSR

◆ DFAR

uint32_t SceExcpmgrExceptionContext::DFAR

◆ IFAR

uint32_t SceExcpmgrExceptionContext::IFAR

◆ PAR

uint32_t SceExcpmgrExceptionContext::PAR

◆ TEEHBR

uint32_t SceExcpmgrExceptionContext::TEEHBR

◆ PMCR

uint32_t SceExcpmgrExceptionContext::PMCR

◆ PMCNTENSET

uint32_t SceExcpmgrExceptionContext::PMCNTENSET

◆ PMCNTENSET_2

uint32_t SceExcpmgrExceptionContext::PMCNTENSET_2

◆ PMSELR

uint32_t SceExcpmgrExceptionContext::PMSELR

◆ PMCCNTR

uint32_t SceExcpmgrExceptionContext::PMCCNTR

◆ PMUSERENR

uint32_t SceExcpmgrExceptionContext::PMUSERENR

◆ PMXEVTYPER0

uint32_t SceExcpmgrExceptionContext::PMXEVTYPER0

◆ PMXEVCNTR0

uint32_t SceExcpmgrExceptionContext::PMXEVCNTR0

◆ PMXEVTYPER1

uint32_t SceExcpmgrExceptionContext::PMXEVTYPER1

◆ PMXEVCNTR1

uint32_t SceExcpmgrExceptionContext::PMXEVCNTR1

◆ PMXEVTYPER2

uint32_t SceExcpmgrExceptionContext::PMXEVTYPER2

◆ PMXEVCNTR2

uint32_t SceExcpmgrExceptionContext::PMXEVCNTR2

◆ PMXEVTYPER3

uint32_t SceExcpmgrExceptionContext::PMXEVTYPER3

◆ PMXEVCNTR3

uint32_t SceExcpmgrExceptionContext::PMXEVCNTR3

◆ PMXEVTYPER4

uint32_t SceExcpmgrExceptionContext::PMXEVTYPER4

◆ PMXEVCNTR4

uint32_t SceExcpmgrExceptionContext::PMXEVCNTR4

◆ PMXEVTYPER5

uint32_t SceExcpmgrExceptionContext::PMXEVTYPER5

◆ PMXEVCNTR5

uint32_t SceExcpmgrExceptionContext::PMXEVCNTR5

◆ unusedD0

uint32_t SceExcpmgrExceptionContext::unusedD0

◆ unkD4

uint32_t SceExcpmgrExceptionContext::unkD4

◆ DBGSCRext

uint32_t SceExcpmgrExceptionContext::DBGSCRext

◆ unusedDC

uint32_t SceExcpmgrExceptionContext::unusedDC[9]

◆ VFP_registers

uint64_t SceExcpmgrExceptionContext::VFP_registers[32]

◆ unk200

uint32_t SceExcpmgrExceptionContext::unk200[128]