SVC: Difference between revisions
No edit summary |
No edit summary |
||
Line 933: | Line 933: | ||
== svcMapDeviceAddressSpaceByForce == | == svcMapDeviceAddressSpaceByForce == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) W0 || u64 || <code>Device as Handle</code> | |||
|- | |||
| (In) W1 || u64 || <code>Process Handle</code> | |||
|- | |||
| (In) X2 || u64 || <code>Device Map Addr</code> | |||
|- | |||
| (In) X3 || u64 || <code>Device as Size</code> | |||
|- | |||
| (In) X4 || u64 || <code>Device as Addr</code> | |||
|- | |||
| (In) W5 || u64 || <code>Permissions</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|} | |||
</div> | |||
'''Description:''' Maps an attached device address space to an userspace address. | '''Description:''' Maps an attached device address space to an userspace address. | ||
Line 940: | Line 962: | ||
== svcMapDeviceAddressSpaceAligned == | == svcMapDeviceAddressSpaceAligned == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) W0 || u64 || <code>Device as Handle</code> | |||
|- | |||
| (In) W1 || u64 || <code>Process Handle</code> | |||
|- | |||
| (In) X2 || u64 || <code>Device Map Addr</code> | |||
|- | |||
| (In) X3 || u64 || <code>Device as Size</code> | |||
|- | |||
| (In) X4 || u64 || <code>Device as Addr</code> | |||
|- | |||
| (In) W5 || u64 || <code>Permissions</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|} | |||
</div> | |||
'''Description:''' Maps an attached device address space to an userspace address. | '''Description:''' Maps an attached device address space to an userspace address. | ||
Line 945: | Line 989: | ||
== svcUnmapDeviceAddressSpace == | == svcUnmapDeviceAddressSpace == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) W0 || u64 || <code>Device as Handle</code> | |||
|- | |||
| (In) W1 || u64 || <code>Process Handle</code> | |||
|- | |||
| (In) X2 || u64 || <code>Device Map Addr</code> | |||
|- | |||
| (In) X3 || u64 || <code>Device as Size</code> | |||
|- | |||
| (In) X4 || u64 || <code>Device as Addr</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|} | |||
</div> | |||
'''Description:''' Unmaps an attached device address space from an userspace address. | '''Description:''' Unmaps an attached device address space from an userspace address. | ||
== svcMapProcessMemory == | == svcMapProcessMemory == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) X0 || u64 || <code>Src Addr</code> | |||
|- | |||
| (In) W1 || u64 || <code>Process Handle</code> | |||
|- | |||
| (In) X2 || u64 || <code>Dest Addr</code> | |||
|- | |||
| (In) X3 || u64 || <code>Size</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|} | |||
</div> | |||
Maps the src address from the supplied process handle into the current process. | Maps the src address from the supplied process handle into the current process. | ||
Line 953: | Line 1,035: | ||
== svcUnmapProcessMemory == | == svcUnmapProcessMemory == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) W0 || u64 || <code>Process Handle</code> | |||
|- | |||
| (In) X1 || u64 || <code>Dest Addr</code> | |||
|- | |||
| (In) X2 || u64 || <code>Src Addr</code> | |||
|- | |||
| (In) X3 || u64 || <code>Size</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|} | |||
</div> | |||
Unmaps what was mapped by [[#svcMapProcessMemory]]. | Unmaps what was mapped by [[#svcMapProcessMemory]]. | ||
== svcQueryProcessMemory == | == svcQueryProcessMemory == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) X0 || u64 || <code>Meminfo Pointer</code> | |||
|- | |||
| (In) W2 || u64 || <code>Process Handle</code> | |||
|- | |||
| (In) X3 || u64 || <code>Addr</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|- | |||
| (Out) W1 || PageInfo || <code>Page Info</code> | |||
|} | |||
</div> | |||
Equivalent to [[#svcQueryMemory]] except takes a process handle. | Equivalent to [[#svcQueryMemory]] except takes a process handle. | ||
== svcMapProcessCodeMemory == | == svcMapProcessCodeMemory == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) W0 || u64 || <code>Process Handle</code> | |||
|- | |||
| (In) X1 || u64 || <code>Dest Addr</code> | |||
|- | |||
| (In) X2 || u64 || <code>Src Addr</code> | |||
|- | |||
| (In) X3 || u64 || <code>Size</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|} | |||
</div> | |||
Takes a process handle, and maps normal heap in that process as executable code in that process. Used when loading NROs. | Takes a process handle, and maps normal heap in that process as executable code in that process. Used when loading NROs. | ||
== svcUnmapProcessCodeMemory == | == svcUnmapProcessCodeMemory == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) W0 || u64 || <code>Process Handle</code> | |||
|- | |||
| (In) X1 || u64 || <code>Dest Addr</code> | |||
|- | |||
| (In) X2 || u64 || <code>Src Addr</code> | |||
|- | |||
| (In) X3 || u64 || <code>Size</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|} | |||
</div> | |||
Unmaps what was mapped by [[#svcMapProcessCodeMemory]]. | Unmaps what was mapped by [[#svcMapProcessCodeMemory]]. | ||
== svcCreateProcess == | == svcCreateProcess == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) X1 || u64 || <code>ProcInfo Pointer</code> | |||
|- | |||
| (In) X2 || u64 || <code>Capabilities Pointer</code> | |||
|- | |||
| (In) X3 || u64 || <code>Capibility Num</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|- | |||
| (Out) W1 || u64 || <code>Process Handle</code> | |||
|} | |||
</div> | |||
Takes a [[#CreateProcessInfo]] as input. | Takes a [[#CreateProcessInfo]] as input. | ||
== svcGetProcessInfo == | == svcGetProcessInfo == | ||
<div style="display: inline-block;"> | |||
{| class="wikitable" border="1" | |||
|- | |||
! Argument || Type || Name | |||
|- | |||
| (In) W0 || u64 || <code>Process Handle</code> | |||
|- | |||
| (Out) W0 || [[#Result]] || <code>Ret</code> | |||
|- | |||
| (Out) W1 || [[#ProcessState|| <code>Process State</code> | |||
|} | |||
</div> | |||
Returns an enum with value 0-7. | Returns an enum with value 0-7. | ||