SVC: Difference between revisions

System calls: Consistency
mNo edit summary
Line 671: Line 671:
| style="background: red" | No
| style="background: red" | No
| style="background: red" | No
| style="background: red" | No
| [[Multi-threading#GetDebugThreadParam|GetDebugThreadParam]](s64* unused, u32* out, Handle kdebug, u32 threadId, DebugThreadParam param)
| [[Multi-threading#GetDebugThreadParam|GetDebugThreadParameter]](s64* unused, u32* out, Handle kdebug, u32 threadId, DebugThreadParam param)
| Disabled on regular kernel.
|  
|- style="border-top: double"
|- style="border-top: double"
| 0x70
| 0x70
Line 845: Line 845:


== struct DebugEventInfo ==
== struct DebugEventInfo ==
Size: 0x28 bytes
When using svcGetProcessDebugEvent, the kernel fetches the first [[KEventInfo]] instance of the process's [[KDebug]]. The debug event is handled and parsed into this structure.
When using svcGetProcessDebugEvent, the kernel fetches the first [[KEventInfo]] instance of the process's [[KDebug]]. The debug event is handled and parsed into this structure.


Line 1,100: Line 1,102:
!  Field
!  Field
|-
|-
| [[KThread]]*[nbCores]
| [[KThread]]*[4]
| Pointers to the attached process's that were running, on each core, at the time svcBreakDebugProcess was called
| Pointers to the attached process's that were running, on each core, at the time svcBreakDebugProcess was called
Only the first two entries are relevant on O3DS.
|}
|}


Line 1,192: Line 1,195:
When setting CPSR, the following assignment is done: <code>ctx->cpsr = ctx->cpsr & 0x7F0FDFF | userCtx->cpuRegisters.cpsr & 0xF80F0200;</code>. This is to avoid obvious security issues.
When setting CPSR, the following assignment is done: <code>ctx->cpsr = ctx->cpsr & 0x7F0FDFF | userCtx->cpuRegisters.cpsr & 0xF80F0200;</code>. This is to avoid obvious security issues.


== enum DebugThreadParam ==
== enum DebugThreadParameter ==


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 1,201: Line 1,204:
| 0
| 0
|-
|-
| SCHEDULE
| SCHEDULING_MASK_LOW
| 1
| 1
|-
|-