Difference between revisions of "SceDeci4pDbgp"

From Vita Development Wiki
Jump to navigation Jump to search
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
DECI4P Debug process.
 +
 +
Some functionality provided by this module seems to have been merged into [[SceUlobjMgr]] between FW 0.945 and 0.990.030.
 +
 
== Module ==
 
== Module ==
  
=== Known NIDs ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Version !! Name !! World !! Privilege !! NID
+
! Version !! World !! Privilege
 
|-
 
|-
| 3.65 || SceDeci4pDbgp || Non-secure || Kernel || 0xC242A649
+
| 0.940.I-3.730.011 || Non-secure || Kernel
 
|}
 
|}
  
Line 17: Line 20:
 
! Version !! Name !! World !! Visibility !! NID
 
! Version !! Name !! World !! Visibility !! NID
 
|-
 
|-
| 1.69 - 3.65 || [[SceDeci4pDbgp#SceDeci4pDbgpForDriver|SceDeci4pDbgpForDriver]] || Non-secure || Kernel || 0xFBD04C34
+
| 0.940.I-0.996.090 || [[SceDeci4pDbgp#SceDeci4pDbgpForDriver|SceDeci4pDbgpForDriver]] || Non-secure || User || 0xFBD04C34
 +
|-
 +
| 1.000.041-3.730.011 || [[SceDeci4pDbgp#SceDeci4pDbgpForDriver|SceDeci4pDbgpForDriver]] || Non-secure || Kernel || 0xFBD04C34
 
|-
 
|-
| 3.65 || [[SceDeci4pDbgp#SceDeci4pDbgp|SceDeci4pDbgp]] || Non-secure || User || 0x40286FC4
+
| 2.500.071-3.730.011 || [[SceDeci4pDbgp#SceDeci4pDbgp|SceDeci4pDbgp]] || Non-secure || User || 0x40286FC4
 
|}
 
|}
 +
 +
== Types ==
 +
 +
<source lang="C">
 +
/**
 +
    @brief Breakpoint handler (signature for FWs 0.990.030-0.995)
 +
   
 +
    @param[in] pid - UID of the process that hit the breakpoint
 +
    @param[in] thid - UID of the thread that hit the breakpoint
 +
    @param[in] bkpt_addr - Address of the breakpoint opcode
 +
    @param[in] excp_ctx - Pointer to exception context (breakpoints trigger a PABT)
 +
    @param[in] cpsr - Value of the CPSR when breakpoint was hit
 +
    @param[in] arm_opcode - Opcode of the ARM instruction that triggered breakpoint (reversed endianness)
 +
    @param[in] thumb_opcode - Opcode of the Thumb instruction that triggered breakpoint (reversed endianness)
 +
    @param[in] is_thumb - 1 if CPU ran in Thumb mode when breakpoint was hit, 0 otherwise
 +
*/
 +
typedef SceInt32 (SceDbgpBreakpointHandler)(ScePID pid, SceUID thid, ScePVoid bkpt_addr, SceExcpmgrExceptionContext* excp_ctx, SceUInt32 spsr, SceUInt32 arm_opcode, SceUInt16 thumb_opcode, SceBool is_thumb);
 +
 +
/**
 +
    @brief Breakpoint handler (signature for FWs >= 3.60)
 +
   
 +
    @param[in] pid - UID of the process that hit the breakpoint
 +
    @param[in] thid - UID of the thread that hit the breakpoint
 +
    @param[in] bkpt_addr - Address of the breakpoint opcode
 +
    @param[in] sp - Value of the stack pointer when breakpoint was hit
 +
    @param[in] cpsr - Value of the CPSR when breakpoint was hit
 +
    @param[in] arm_opcode - Opcode of the ARM instruction that triggered breakpoint (reversed endianness)
 +
    @param[in] thumb_opcode - Opcode of the Thumb instruction that triggered breakpoint (reversed endianness)
 +
    @param[in] is_thumb - 1 if CPU ran in Thumb mode when breakpoint was hit, 0 otherwise
 +
*/
 +
typedef SceInt32 (SceDbgpBreakpointHandler)(ScePID pid, SceUID thid, ScePVoid bkpt_addr, SceUIntPtr sp, SceUInt32 cpsr, SceUInt32 arm_opcode, SceUInt16 thumb_opcode, SceBool is_thumb);
 +
</source>
  
 
== SceDeci4pDbgpForDriver ==
 
== SceDeci4pDbgpForDriver ==
  
=== sceDbgpGetDTraceBreakpointHandlerForDriver ===
+
=== _sceDbgpStartSupportingAppObject ===
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 1.69 || 0x1d7c7bf
+
| 0.940.I-0.945 || 0x72AE00B7
 +
|-
 +
| 0.990.030-3.730.011 || not present
 
|}
 
|}
 +
 +
Seemingly replaced by [[SceUlobjMgr#_sceUlobjMgrStartSupportingUserlevelObject|_sceUlobjMgrStartSupportingUserlevelObject]].
  
 
<source lang="C">
 
<source lang="C">
void *sceDbgpGetDTraceBreakpointHandlerForDriver(void);
+
// On success, *ppDebugInfo receives a pointer to a 0x81000 bytes memblock
 +
SceInt32 _sceDbgpStartSupportingAppObject(ScePVoid** ppDebugInfo);
 
</source>
 
</source>
 +
 +
=== _sceDbgpStopSupportingAppObject ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.940.I-0.945 || 0x11908EDB
 +
|-
 +
| 0.990.030-3.730.011 || not present
 +
|}
 +
 +
Seemingly replaced by [[SceUlobjMgr#_sceUlobjMgrStopSupportingUserlevelObject|_sceUlobjMgrStopSupportingUserlevelObject]].
 +
 +
<source lang="C">SceInt32 _sceDbgpStopSupportingAppObject(void);</source>
 +
 +
=== sceDbgpGetDTraceBreakpointHandlerForDriver ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.940.I-0.945 || not present
 +
|-
 +
| 0.990.030-3.730.011 || 0x01D7C7BF
 +
|}
 +
 +
<source lang="C">SceDbgpBreakpointHandler* sceDbgpGetDTraceBreakpointHandlerForDriver(void);</source>
  
 
=== sceDbgpSetDTraceBreakpointHandlerForDriver ===
 
=== sceDbgpSetDTraceBreakpointHandlerForDriver ===
Line 41: Line 109:
 
! Version !! NID
 
! Version !! NID
 
|-
 
|-
| 1.69 || 0x509ac51
+
| 0.940.I-0.945 || not present
 +
|-
 +
| 0.990.030-3.730.011 || 0x0509AC51
 +
|}
 +
 
 +
In FWs 0.990.030-0.995, this handles <code>bkpt #0x90</code>. Seems to handle breakpoints with code < 0x7F in FW 3.60.
 +
 
 +
<source lang="C">void sceDbgpSetDTraceBreakpointHandlerForDriver(SceDbgpBreakpointHandler* handler);</source>
 +
 
 +
=== SceDeci4pDbgpForDriver_7251789E ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.940-1.000.041 || not present
 +
|-
 +
| 2.000.081-3.730.011 || 0x7251789E
 
|}
 
|}
  
<source lang="C">
+
Sets handler for <code>bkpt #0x90</code>.
void sceDbgpSetDTraceBreakpointHandlerForDriver(void *handler);
+
 
</source>
+
<source lang="C">void SceDeci4pDbgpForDriver_7251789E(SceDbgpBreakpointHandler* handler);</source>
 +
 
 +
=== SceDeci4pDbgpForDriver_9CD5EE8C ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.940-1.81 || not present
 +
|-
 +
| 2.000.081-3.730.011 || 0x9CD5EE8C
 +
|}
 +
 
 +
Get handler set by [[SceDeci4pDbgp#SceDeci4pDbgpForDriver_7251789E|SceDeci4pDbgpForDriver_7251789E]].
  
          SceDeci4pDbgpForDriver_7251789E: 0x7251789E
+
<source lang="C">SceDbgpBreakpointHandler* SceDeci4pDbgpForDriver_9CD5EE8C(void);</source>
          SceDeci4pDbgpForDriver_9CD5EE8C: 0x9CD5EE8C
 
  
 
== SceDeci4pDbgp ==
 
== SceDeci4pDbgp ==
  
          SceDeci4pDbgp_073A6B4B: 0x073A6B4B
+
=== SceDeci4pDbgp_073A6B4B ===
          SceDeci4pDbgp_0C30DE67: 0x0C30DE67
+
{| class="wikitable"
          SceDeci4pDbgp_6180DC1A: 0x6180DC1A
+
|-
          SceDeci4pDbgp_E0EED45E: 0xE0EED45E
+
! Version !! NID
 +
|-
 +
| 0.931.010-2.12 || not present
 +
|-
 +
| 2.500.071-3.730.011 || 0x073A6B4B
 +
|}
 +
 
 +
=== sceDeci4pDbgpResumeAppForTestForUser ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931.010-2.12 || not present
 +
|-
 +
| 2.500.071-3.730.011 || 0x0C30DE67
 +
|}
 +
 
 +
=== SceDeci4pDbgp_6180DC1A ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931.010-2.12 || not present
 +
|-
 +
| 2.500.071-3.730.011 || 0x6180DC1A
 +
|}
 +
 
 +
=== sceDeci4pDbgpSuspendAppForTestForUser ===
 +
{| class="wikitable"
 +
|-
 +
! Version !! NID
 +
|-
 +
| 0.931.010-2.12 || not present
 +
|-
 +
| 2.500.071-3.730.011 || 0xE0EED45E
 +
|}
 +
 
  
 +
[[Category:ARM]]
 +
[[Category:Kernel]]
 
[[Category:Modules]]
 
[[Category:Modules]]
[[Category:Kernel]]
+
[[Category:Library]]

Latest revision as of 13:11, 9 June 2023

DECI4P Debug process.

Some functionality provided by this module seems to have been merged into SceUlobjMgr between FW 0.945 and 0.990.030.

Module

Version World Privilege
0.940.I-3.730.011 Non-secure Kernel

Libraries

Known NIDs

Version Name World Visibility NID
0.940.I-0.996.090 SceDeci4pDbgpForDriver Non-secure User 0xFBD04C34
1.000.041-3.730.011 SceDeci4pDbgpForDriver Non-secure Kernel 0xFBD04C34
2.500.071-3.730.011 SceDeci4pDbgp Non-secure User 0x40286FC4

Types

/**
    @brief Breakpoint handler (signature for FWs 0.990.030-0.995)
    
    @param[in] pid - UID of the process that hit the breakpoint
    @param[in] thid - UID of the thread that hit the breakpoint
    @param[in] bkpt_addr - Address of the breakpoint opcode
    @param[in] excp_ctx - Pointer to exception context (breakpoints trigger a PABT)
    @param[in] cpsr - Value of the CPSR when breakpoint was hit
    @param[in] arm_opcode - Opcode of the ARM instruction that triggered breakpoint (reversed endianness)
    @param[in] thumb_opcode - Opcode of the Thumb instruction that triggered breakpoint (reversed endianness)
    @param[in] is_thumb - 1 if CPU ran in Thumb mode when breakpoint was hit, 0 otherwise
*/
typedef SceInt32 (SceDbgpBreakpointHandler)(ScePID pid, SceUID thid, ScePVoid bkpt_addr, SceExcpmgrExceptionContext* excp_ctx, SceUInt32 spsr, SceUInt32 arm_opcode, SceUInt16 thumb_opcode, SceBool is_thumb);

/**
    @brief Breakpoint handler (signature for FWs >= 3.60)
    
    @param[in] pid - UID of the process that hit the breakpoint
    @param[in] thid - UID of the thread that hit the breakpoint
    @param[in] bkpt_addr - Address of the breakpoint opcode
    @param[in] sp - Value of the stack pointer when breakpoint was hit
    @param[in] cpsr - Value of the CPSR when breakpoint was hit
    @param[in] arm_opcode - Opcode of the ARM instruction that triggered breakpoint (reversed endianness)
    @param[in] thumb_opcode - Opcode of the Thumb instruction that triggered breakpoint (reversed endianness)
    @param[in] is_thumb - 1 if CPU ran in Thumb mode when breakpoint was hit, 0 otherwise
*/
typedef SceInt32 (SceDbgpBreakpointHandler)(ScePID pid, SceUID thid, ScePVoid bkpt_addr, SceUIntPtr sp, SceUInt32 cpsr, SceUInt32 arm_opcode, SceUInt16 thumb_opcode, SceBool is_thumb);

SceDeci4pDbgpForDriver

_sceDbgpStartSupportingAppObject

Version NID
0.940.I-0.945 0x72AE00B7
0.990.030-3.730.011 not present

Seemingly replaced by _sceUlobjMgrStartSupportingUserlevelObject.

// On success, *ppDebugInfo receives a pointer to a 0x81000 bytes memblock
SceInt32 _sceDbgpStartSupportingAppObject(ScePVoid** ppDebugInfo);

_sceDbgpStopSupportingAppObject

Version NID
0.940.I-0.945 0x11908EDB
0.990.030-3.730.011 not present

Seemingly replaced by _sceUlobjMgrStopSupportingUserlevelObject.

SceInt32 _sceDbgpStopSupportingAppObject(void);

sceDbgpGetDTraceBreakpointHandlerForDriver

Version NID
0.940.I-0.945 not present
0.990.030-3.730.011 0x01D7C7BF
SceDbgpBreakpointHandler* sceDbgpGetDTraceBreakpointHandlerForDriver(void);

sceDbgpSetDTraceBreakpointHandlerForDriver

Version NID
0.940.I-0.945 not present
0.990.030-3.730.011 0x0509AC51

In FWs 0.990.030-0.995, this handles bkpt #0x90. Seems to handle breakpoints with code < 0x7F in FW 3.60.

void sceDbgpSetDTraceBreakpointHandlerForDriver(SceDbgpBreakpointHandler* handler);

SceDeci4pDbgpForDriver_7251789E

Version NID
0.940-1.000.041 not present
2.000.081-3.730.011 0x7251789E

Sets handler for bkpt #0x90.

void SceDeci4pDbgpForDriver_7251789E(SceDbgpBreakpointHandler* handler);

SceDeci4pDbgpForDriver_9CD5EE8C

Version NID
0.940-1.81 not present
2.000.081-3.730.011 0x9CD5EE8C

Get handler set by SceDeci4pDbgpForDriver_7251789E.

SceDbgpBreakpointHandler* SceDeci4pDbgpForDriver_9CD5EE8C(void);

SceDeci4pDbgp

SceDeci4pDbgp_073A6B4B

Version NID
0.931.010-2.12 not present
2.500.071-3.730.011 0x073A6B4B

sceDeci4pDbgpResumeAppForTestForUser

Version NID
0.931.010-2.12 not present
2.500.071-3.730.011 0x0C30DE67

SceDeci4pDbgp_6180DC1A

Version NID
0.931.010-2.12 not present
2.500.071-3.730.011 0x6180DC1A

sceDeci4pDbgpSuspendAppForTestForUser

Version NID
0.931.010-2.12 not present
2.500.071-3.730.011 0xE0EED45E