Changes

Jump to navigation Jump to search
3,309 bytes added ,  06:58, 14 October 2017
no edit summary
== svcGetInfo ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X1 || u64 || <code>Info ID</code>
|-
| (In) X2 || u64 || <code>Handle</code>
|-
| (In) X3 || u64 || <code>Info Sub ID</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|-
| (Out) X1 || u64 || <code>Out</code>
|}
</div>
 
{| class=wikitable
! Handle type || Id0 || Id1 || Description
== svcDumpInfo ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) None || ||
|-
| (Out) None || ||
|}
</div>
 
Does nothing, just returns with registers set to all-zero.
== svcReadWriteRegister ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X1 || u64 || <code>Reg Addr</code>
|-
| (In) W2 || u64 || <code>RW Mask</code>
|-
| (In) W3 || u64 || <code>In Value</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|-
| (Out) W1|| u64 || <code>Out Value</code>
|}
</div>
 
Read/write IO registers with a hardcoded whitelist. Input address is physical-address and must be aligned to 4.
== svcCreateSharedMemory ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) W1 || u64 || <code>Size</code>
|-
| (In) W2 || u64 || <code>My Permissions</code>
|-
| (In) W3 || u64 || <code>Other Permissions</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|-
| (Out) W1|| u64 || <code>Shared Memory Handle</code>
|}
</div>
 
Other perm can be used to enforce permission 1, 3, or 0x10000000 if don't care.
== svcMapTransferMemory ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X0 || u64 || <code>Transfer Mem Handle</code>
|-
| (In) X1 || u64 || <code>Addr</code>
|-
| (In) X2 || u64 || <code>Size</code>
|-
| (In) W3 || u64 || <code>Permissions</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|}
</div>
 
The newly mapped pages will have [[#MemoryState]] type 0xE.
== svcUnmapTransferMemory ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X0 || u64 || <code>Transfer Mem Handle</code>
|-
| (In) X1 || u64 || <code>Addr</code>
|-
| (In) X2 || u64 || <code>Size</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|}
</div>
 
Size must match size given in map syscall, otherwise there's an invalid-size error.
== svcQueryPhysicalAddress ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X1 || u64 || <code>Addr</code>
|-
| (Out) W0 || [[#Result]]|| <code>Ret</code>
|-
| (Out) X1 || u64 || <code>Out0</code>
|-
| (Out) X2 || u64 || <code>Out1</code>
|-
| (Out) X3 || u64 || <code>Out2</code>
|}
</div>
 
The inverse operation of [[#svcQueryIoMapping]].
== svcQueryIoMapping ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X1 || u64 || <code>Physical Address</code>
|-
| (In) X2 || u64 || <code>Size</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|-
| (Out) X1 || u64 || <code>Virtual Address</code>
|}
</div>
 
'''Description:''' Returns a virtual address mapped to a given IO range.
== svcCreateDeviceAddressSpace ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X1 || u64 || <code>Device as Start Addr</code>
|-
| (In) X2 || u64 || <code>Device as End Addr</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|-
| (Out) W1 || u64 || <code>Device as Handle</code>
|}
</div>
 
'''Description:''' Creates a virtual address space for binding device address spaces and returns a handle.
== svcAttachDeviceAddressSpace ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) W0 || u64 || <code>Device</code>
|-
| (In) X1 || u64 || <code>Device as Handle</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|}
</div>
 
'''Description:''' Attaches a device address space to a [[#DeviceName|device]].
== svcDetachDeviceAddressSpace ==
 
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) W0 || u64 || <code>Device</code>
|-
| (In) X1 || u64 || <code>Device as Handle</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|}
</div>
 
'''Description:''' Detaches a device address space from a [[#DeviceName|device]].
48

edits

Navigation menu