SVC: Difference between revisions

Adubbz (talk | contribs)
No edit summary
Line 227: Line 227:
! Argument || Type || Name
! Argument || Type || Name
|-
|-
| (In) X0 || u64 || <code>Size</code>
| (In) W1 || u64 || <code>Size</code>
|-
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
| (Out) W0 || [[#Result]] || <code>Ret</code>
Line 242: Line 242:


[2.0.0+] <code>Size</code> must be less than 0x18000000.
[2.0.0+] <code>Size</code> must be less than 0x18000000.


== svcSetMemoryPermission ==
== svcSetMemoryPermission ==
Line 251: Line 249:


This can be used to move back and forth between ---, r-- and rw-.
This can be used to move back and forth between ---, r-- and rw-.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X0 || u64 || <code>Addr</code>
|-
| (In) X1 || u64 || <code>Size</code>
|-
| (In) W2 || u64 || <code>Prot</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|}
</div>


== svcSetMemoryAttribute ==
== svcSetMemoryAttribute ==
Line 258: Line 271:


What happens "under the hood" is the "Memory Attribute Indirection Register" index is changed from 2 to 3 in the MMU descriptor.
What happens "under the hood" is the "Memory Attribute Indirection Register" index is changed from 2 to 3 in the MMU descriptor.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X0 || u64 || <code>Addr</code>
|-
| (In) X1 || u64 || <code>Size</code>
|-
| (In) W2 || u64 || <code>State0</code>
|-
| (In) W3 || u64 || <code>State1</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|}
</div>


{| class=wikitable
{| class=wikitable
Line 285: Line 315:


[2.0.0+] Support for the <code>0x482907</code> mappings outside the "MapRegion" were removed.
[2.0.0+] Support for the <code>0x482907</code> mappings outside the "MapRegion" were removed.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X0 || u64 || <code>Dst</code>
|-
| (In) X1 || u64 || <code>Src</code>
|-
| (In) X2 || u64 || <code>Size</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|}
</div>


== svcUnmapMemory ==
== svcUnmapMemory ==
Line 292: Line 337:


The srcaddr/dstaddr must match what was given when the pages were originally mapped.
The srcaddr/dstaddr must match what was given when the pages were originally mapped.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X0 || u64 || <code>Dst</code>
|-
| (In) X1 || u64 || <code>Src</code>
|-
| (In) X2 || u64 || <code>Size</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|}
</div>


== svcQueryMemory ==
== svcQueryMemory ==
Line 297: Line 357:


Outputs a [[#MemoryInfo]] struct.
Outputs a [[#MemoryInfo]] struct.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X0 || MemoryInfo*|| <code>Mem Info</code>
|-
| (In) X2 || u64 || <code>Addr</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|-
| (Out) W1 || PageInfo || <code>Page Info</code>
|}
</div>


== svcExitProcess ==
== svcExitProcess ==
'''Description:''' Exits the current process.
'''Description:''' Exits the current process.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) None || ||
|-
| (Out) None || ||
|}
</div>


== svcCreateThread ==
== svcCreateThread ==
Line 305: Line 391:


Processor_id must be 0,1,2,3 or -2, where -2 uses the default cpuid for process.
Processor_id must be 0,1,2,3 or -2, where -2 uses the default cpuid for process.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) X1 || u64 || <code>Entry</code>
|-
| (In) X2 || u64 || <code>Arg</code>
|-
| (In) X3 || u64 || <code>Stack Top</code>
|-
| (In) W4 || u64 || <code>Priority</code>
|-
| (In) W5 || u64 || <code>Processor ID</code>
|-
| (Out) W0 || [[#Result]] || <code>Ret</code>
|-
| (Out) W1 || Handle || <code>Handle</code>
|}
</div>


== svcStartThread ==
== svcStartThread ==
'''Description:''' Starts the thread for the provided handle.
'''Description:''' Starts the thread for the provided handle.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) W0|| u64 || <code>Handle</code>
|-
| (Out) None ||  ||
|}
</div>


== svcExitThread ==
== svcExitThread ==
'''Description:''' Exits the current thread.
'''Description:''' Exits the current thread.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) None || ||
|-
| (Out) None || ||
|}
</div>


== svcSleepThread ==
== svcSleepThread ==
Line 335: Line 464:


Cpu-id is an integer in the range 0-3.
Cpu-id is an integer in the range 0-3.
<div style="display: inline-block;">
{| class="wikitable" border="1"
|-
! Argument || Type || Name
|-
| (In) None || ||
|-
| (Out) W0/X0 || u64 || <code>CPU ID</code>
|}
</div>


== svcMapSharedMemory ==
== svcMapSharedMemory ==