SVC: Difference between revisions

Neobrain (talk | contribs)
No edit summary
Xerpi (talk | contribs)
Add Interrupts
Line 516: Line 516:
| style="background: green" | Yes
| style="background: green" | Yes
| style="background: green" | Yes
| style="background: green" | Yes
| Result BindInterrupt(Interrupt name, Handle syncObject, s32 priority, bool isManualClear)
| Result [[SVC#Interrupts|BindInterrupt]](Interrupt name, Handle syncObject, s32 priority, bool isManualClear)
|
|
|-
|-
Line 1,466: Line 1,466:
= svc7B Backdoor =
= svc7B Backdoor =
This saves SVC-mode SP+LR on the user-mode stack, then sets the SVC-mode SP to the user-mode SP. This then calls the specified code in SVC-mode. Once the called code returns, this pops the saved SP+LR off the stack for restoring the SVC-mode SP, then returns from the svc7b handler. Note that this svc7b handler does not disable IRQs, if any IRQs/context-switches occur while the SVC-mode SP is set to the user-mode one here, the ARM11-kernel will crash(which hangs the whole ARM11-side system).
This saves SVC-mode SP+LR on the user-mode stack, then sets the SVC-mode SP to the user-mode SP. This then calls the specified code in SVC-mode. Once the called code returns, this pops the saved SP+LR off the stack for restoring the SVC-mode SP, then returns from the svc7b handler. Note that this svc7b handler does not disable IRQs, if any IRQs/context-switches occur while the SVC-mode SP is set to the user-mode one here, the ARM11-kernel will crash(which hangs the whole ARM11-side system).
= Interrupts =
{| class="wikitable" border="1"
!  Interrupt numbers
!  Module using it
|-
| 0x54, 0x55, 0x5C
| I2C
|}


= Kernel error-codes =
= Kernel error-codes =