Changes

Jump to navigation Jump to search
3,309 bytes added ,  06:58, 14 October 2017
no edit summary
Line 665: Line 665:     
== svcGetInfo ==
 
== 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
 
{| class=wikitable
 
! Handle type || Id0 || Id1 || Description
 
! Handle type || Id0 || Id1 || Description
Line 706: Line 724:     
== svcDumpInfo ==
 
== 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.
 
Does nothing, just returns with registers set to all-zero.
    
== svcReadWriteRegister ==
 
== 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.
 
Read/write IO registers with a hardcoded whitelist. Input address is physical-address and must be aligned to 4.
   Line 727: Line 775:     
== svcCreateSharedMemory ==
 
== 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.
 
Other perm can be used to enforce permission 1, 3, or 0x10000000 if don't care.
    
== svcMapTransferMemory ==
 
== 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.
 
The newly mapped pages will have [[#MemoryState]] type 0xE.
   Line 735: Line 819:     
== svcUnmapTransferMemory ==
 
== 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.
 
Size must match size given in map syscall, otherwise there's an invalid-size error.
    
== svcQueryPhysicalAddress ==
 
== 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]].
 
The inverse operation of [[#svcQueryIoMapping]].
    
== 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.
 
'''Description:''' Returns a virtual address mapped to a given IO range.
    
== svcCreateDeviceAddressSpace ==
 
== 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.
 
'''Description:''' Creates a virtual address space for binding device address spaces and returns a handle.
   Line 749: Line 899:     
== svcAttachDeviceAddressSpace ==
 
== 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]].
 
'''Description:''' Attaches a device address space to a [[#DeviceName|device]].
    
== svcDetachDeviceAddressSpace ==
 
== 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]].
 
'''Description:''' Detaches a device address space from a [[#DeviceName|device]].
  
48

edits

Navigation menu