SVC: Difference between revisions

No edit summary
Line 1,148: Line 1,148:
| MemoryState
| MemoryState
|}
|}
== struct ThreadContext ==
Size: 0xCC bytes
{| class="wikitable" border="1"
|-
!  Offset
! Type
!  Description
|-
| 0x0
| ThreadCpuRegisters
| Saved CPU registers (r0-r12, sp, lr, pc, cpsr)
|-
| 0x44
| ThreadFpuRegisters
| Saved FPU registers (d0-d15, fpscr, fpexc)
|}
The user needs to adjust pc for exceptions that occured while in Thumb mode.
'''Flags for svcGetDebugThreadContext/svcSetDebugThreadContext''':
{| class="wikitable" border="1"
|-
! Bit
! Description
|-
| 0
| Get/set CPU GPRs (r0-r12)
|-
| 1
| Get/set CPU SPRs (sp, lr, pc, cpsr)
|-
| 2
| Get/set FPU GPRs (d0-d15)
|-
| 3
| Get/set FPU SPRs (fpscr, fpexc)
|}
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 DebugThreadParam ==