SceDeci4pDbgp: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
(Add signature for DTrace breakpoint handlers, add some info about module history, add missing headers for DbgpForDriver functions)
No edit summary
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Some functionality provided by this module seems to have been merged into [[SceUlobjMgr]] between 0.945 and 0.990.
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 ==
Line 7: Line 9:
! Version !! World !! Privilege
! Version !! World !! Privilege
|-
|-
| 3.60-3.65 || Non-secure || Kernel
| 0.940.I-3.730.011 || Non-secure || Kernel
|}
|}


Line 18: Line 20:
! Version !! Name !! World !! Visibility !! NID
! Version !! Name !! World !! Visibility !! NID
|-
|-
| 0.940-0.990 || [[SceDeci4pDbgp#SceDeci4pDbgpForDriver|SceDeci4pDbgpForDriver]] || Non-secure || User || 0xFBD04C34
| 0.940.I-0.996.090 || [[SceDeci4pDbgp#SceDeci4pDbgpForDriver|SceDeci4pDbgpForDriver]] || Non-secure || User || 0xFBD04C34
|-
|-
| 1.69-3.65 || [[SceDeci4pDbgp#SceDeci4pDbgpForDriver|SceDeci4pDbgpForDriver]] || Non-secure || Kernel || 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 ==
== Types ==
<source lang="C">
<source lang="C">
/**
/**
     @brief Breakpoint handler (0.990 signature)
     @brief Breakpoint handler (signature for FWs 0.990.030-0.995)
      
      
     @param[in] pid - UID of the process that hit the breakpoint
     @param[in] pid - UID of the process that hit the breakpoint
Line 42: Line 45:


/**
/**
     @brief Breakpoint handler (3.60+ signature)
     @brief Breakpoint handler (signature for FWs >= 3.60)
      
      
     @param[in] pid - UID of the process that hit the breakpoint
     @param[in] pid - UID of the process that hit the breakpoint
Line 63: Line 66:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-0.945 || 0x72AE00B7
| 0.940.I-0.945 || 0x72AE00B7
|-
|-
| 0.990-3.60 || Not present
| 0.990.030-3.730.011 || not present
|}
|}


Line 71: Line 74:


<source lang="C">
<source lang="C">
//On success, *ppDebugInfo receives a pointer to a 0x81000 bytes memblock
// On success, *ppDebugInfo receives a pointer to a 0x81000 bytes memblock
SceInt32 _sceDbgpStartSupportingAppObject(ScePVoid** ppDebugInfo);
SceInt32 _sceDbgpStartSupportingAppObject(ScePVoid** ppDebugInfo);
</source>
</source>
Line 80: Line 83:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-0.945 || 0x11908EDB
| 0.940.I-0.945 || 0x11908EDB
|-
|-
| 0.990-3.60 || Not present
| 0.990.030-3.730.011 || not present
|}
|}


Seemingly replaced by [[SceUlobjMgr#_sceUlobjMgrStopSupportingUserlevelObject|_sceUlobjMgrStopSupportingUserlevelObject]].
Seemingly replaced by [[SceUlobjMgr#_sceUlobjMgrStopSupportingUserlevelObject|_sceUlobjMgrStopSupportingUserlevelObject]].


<source lang="C">
<source lang="C">SceInt32 _sceDbgpStopSupportingAppObject(void);</source>
SceInt32 _sceDbgpStopSupportingAppObject(void);
</source>


=== sceDbgpGetDTraceBreakpointHandlerForDriver ===
=== sceDbgpGetDTraceBreakpointHandlerForDriver ===
Line 96: Line 97:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-0.945 || Not present
| 0.940.I-0.945 || not present
|-
|-
| 0.990-3.60 || 0x1D7C7BF
| 0.990.030-3.730.011 || 0x01D7C7BF
|}
|}


<source lang="C">
<source lang="C">SceDbgpBreakpointHandler* sceDbgpGetDTraceBreakpointHandlerForDriver(void);</source>
SceDbgpBreakpointHandler* sceDbgpGetDTraceBreakpointHandlerForDriver(void);
</source>


=== sceDbgpSetDTraceBreakpointHandlerForDriver ===
=== sceDbgpSetDTraceBreakpointHandlerForDriver ===
Line 110: Line 109:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-0.945 || Not present
| 0.940.I-0.945 || not present
|-
|-
| 0.990-3.60 || 0x0509AC51
| 0.990.030-3.730.011 || 0x0509AC51
|}
|}


In 0.990-0.995, this handles <code>bkpt #0x90</code>. Seems to handle breakpoints with code < 0x7F in 3.60.
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 lang="C">void sceDbgpSetDTraceBreakpointHandlerForDriver(SceDbgpBreakpointHandler* handler);</source>
</source>


=== SceDeci4pDbgpForDriver_7251789E ===
=== SceDeci4pDbgpForDriver_7251789E ===
Line 125: Line 123:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-0.995 || Not present
| 0.940-1.000.041 || not present
|-
|-
| 3.60 || 0x7251789E
| 2.000.081-3.730.011 || 0x7251789E
|}
|}


Sets handler for <code>bkpt #0x90</code>.
Sets handler for <code>bkpt #0x90</code>.
<source lang="C">
 
void SceDeci4pDbgpForDriver_7251789E(SceDbgpBreakpointHandler* handler);
<source lang="C">void SceDeci4pDbgpForDriver_7251789E(SceDbgpBreakpointHandler* handler);</source>
</source>


=== SceDeci4pDbgpForDriver_9CD5EE8C ===
=== SceDeci4pDbgpForDriver_9CD5EE8C ===
Line 140: Line 137:
! Version !! NID
! Version !! NID
|-
|-
| 0.940-0.995 || Not present
| 0.940-1.81 || not present
|-
|-
| 3.60 || 0x9CD5EE8C
| 2.000.081-3.730.011 || 0x9CD5EE8C
|}
|}


Get handler set by [[SceDeci4pDbgp#SceDeci4pDbgpForDriver_7251789E|SceDeci4pDbgpForDriver_7251789E]].
Get handler set by [[SceDeci4pDbgp#SceDeci4pDbgpForDriver_7251789E|SceDeci4pDbgpForDriver_7251789E]].
<source lang="C">
 
SceDbgpBreakpointHandler* SceDeci4pDbgpForDriver_9CD5EE8C(void);
<source lang="C">SceDbgpBreakpointHandler* SceDeci4pDbgpForDriver_9CD5EE8C(void);</source>
</source>


== 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