SVC: Difference between revisions
| Line 1,162: | Line 1,162: | ||
= KernelSetState = | = KernelSetState = | ||
KernelSetState uses the 6th [[ARM11_Interrupts#Private_Interrupts|software-generated interrupt]] for any operation involving synchronization between cores. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
| Line 1,209: | Line 1,211: | ||
| Yes | | Yes | ||
| No | | No | ||
| | | Arguments: <code>u64 unk</code> | ||
What this does depends of the value of the field that was stored in [[Configuration_Memory|0x1FF80015]]. If this is 0 (Prod) or any invalid value, nothing is done. If it is 1 (Dev), <code>unk == 0</code> is written to some global variable. If 2 (Debugger), it's written to the following byte. If 3 (Firm), this calls a scheduler-related function with <code>(u32)unk</code> which performs a context switch, and that value to a global variable if its contents are not equal to the arg, under certain conditions (returns error 0xC8A01414 otherwise). | |||
|- | |- | ||
| 7 | | 7 | ||
| Line 1,225: | Line 1,228: | ||
| Yes, implemented at some point after system-version v4.5. | | Yes, implemented at some point after system-version v4.5. | ||
| ? | | ? | ||
| | | Argumens: <code>u64 unk</code>. | ||
Writes <code>unk</code> to some global variable, but the latter doesn't seem to be used anywhere else. | |||
|- | |- | ||
| 10 | | 10 | ||