Secure Monitor: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
Nwert (talk | contribs)
mNo edit summary
No edit summary
Line 2: Line 2:


The secure monitor provides two top level handlers of which each provides a range of sub handlers.
The secure monitor provides two top level handlers of which each provides a range of sub handlers.
Secure Monitor Calls follow the ARM SMC calling convention:
{| class=wikitable
! Bit number || Bit mask || Description
|-
| 31 || 0x80000000 || Set to 0 means Yielding Call; Set to 1 means Fast Call.
|-
| 30 || 0x40000000 || Set to 0 means SMC32 convention; Set to 1 means SMC64.
|-
| 29-24 || 0x3F000000 || Service Call ranges.
|-
| 23-16 || 0x00FF0000 || Must be zero.
|-
| 15-0 || 0x0000FFFF || Function number within the range call type.
|}


== Id 0 ==
== Id 0 ==
Line 54: Line 69:
! Sub-Id || Name || In || Out
! Sub-Id || Name || In || Out
|-
|-
| 0xC4000001 || oyasumi || ||
| 0xC4000001 || CPU_SUSPEND (oyasumi) || ||
|-
|-
| 0x84000002 || || ||
| 0x84000002 || CPU_OFF || ||
|-
|-
| 0xC4000003 || || ||
| 0xC4000003 || CPU_ON || ||
|-
|-
| 0xC3000004 || (Same as Id 0 Sub-Id 2.) || ||
| 0xC3000004 || (Same as Id 0 Sub-Id 2.) || ||

Revision as of 14:57, 10 July 2017

Secure Monitor Calls

The secure monitor provides two top level handlers of which each provides a range of sub handlers.

Secure Monitor Calls follow the ARM SMC calling convention:

Bit number Bit mask Description
31 0x80000000 Set to 0 means Yielding Call; Set to 1 means Fast Call.
30 0x40000000 Set to 0 means SMC32 convention; Set to 1 means SMC64.
29-24 0x3F000000 Service Call ranges.
23-16 0x00FF0000 Must be zero.
15-0 0x0000FFFF Function number within the range call type.

Id 0

Cryptography related functions.

Sub-Id Name In Out
0xC3000401
0xC3000002 (Same as Id 1 Sub-Id 4.)
0xC3000003
0xC3000404
0xC3000E05
0xC3000006
0xC3000007
0xC3000008
0xC3000009
0xC300000A
0xC300040B
0xC300100C
0xC300100D
0xC300100E
0xC300060F
0xC3000610
0xC3000011
0xC3000012

Id 1

General and power related functions.

Sub-Id Name In Out
0xC4000001 CPU_SUSPEND (oyasumi)
0x84000002 CPU_OFF
0xC4000003 CPU_ON
0xC3000004 (Same as Id 0 Sub-Id 2.)
0xC3000005
0xC3000006
0xC3000007
0xC3000008