1<?xml version="1.0" ?>
2<!--
3     Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
4
5     SPDX-License-Identifier: BSD-2-Clause
6-->
7
8<!-- Please see syscalls.xsd to see the format of this file -->
9<syscalls>
10    <!-- official API syscalls -->
11    <api-master>
12        <config>
13            <syscall name="Call"      />
14            <syscall name="ReplyRecv" />
15            <syscall name="Send"      />
16            <syscall name="NBSend"    />
17            <syscall name="Recv"      />
18            <syscall name="Reply"     />
19            <syscall name="Yield"     />
20            <syscall name="NBRecv"    />
21        </config>
22    </api-master>
23    <api-mcs>
24        <config>
25            <syscall name="Call"      />
26            <syscall name="ReplyRecv" />
27            <syscall name="NBSendRecv" />
28            <syscall name="NBSendWait" />
29            <syscall name="Send"      />
30            <syscall name="NBSend"    />
31            <syscall name="Recv"      />
32            <syscall name="NBRecv"    />
33            <syscall name="Wait"      />
34            <syscall name="NBWait"    />
35            <syscall name="Yield"     />
36        </config>
37    </api-mcs>
38    <!-- Syscalls on the unknown syscall path. These definitions will be wrapped in #if condition -->
39    <debug>
40        <config condition="defined CONFIG_PRINTING">
41            <syscall name="DebugPutChar"  />
42            <syscall name="DebugDumpScheduler" />
43        </config>
44        <config condition="defined CONFIG_DEBUG_BUILD">
45            <syscall name="DebugHalt"     />
46            <syscall name="DebugCapIdentify"   />
47            <syscall name="DebugSnapshot" />
48            <syscall name="DebugNameThread"/>
49        </config>
50        <config condition="defined CONFIG_DEBUG_BUILD &amp;&amp; CONFIG_MAX_NUM_NODES > 1">
51            <syscall name="DebugSendIPI"/>
52        </config>
53        <config condition="defined CONFIG_DANGEROUS_CODE_INJECTION">
54            <syscall name="DebugRun"/>
55        </config>
56        <config condition="defined CONFIG_ENABLE_BENCHMARKS">
57            <syscall name="BenchmarkFlushCaches" />
58            <syscall name="BenchmarkResetLog" />
59            <syscall name="BenchmarkFinalizeLog"  />
60            <syscall name="BenchmarkSetLogBuffer"  />
61            <syscall name="BenchmarkNullSyscall"  />
62        </config>
63        <config condition="defined CONFIG_BENCHMARK_TRACK_UTILISATION">
64            <syscall name="BenchmarkGetThreadUtilisation"  />
65            <syscall name="BenchmarkResetThreadUtilisation"  />
66        </config>
67        <config condition="defined CONFIG_DEBUG_BUILD &amp;&amp; defined CONFIG_BENCHMARK_TRACK_UTILISATION">
68            <syscall name="BenchmarkDumpAllThreadsUtilisation"  />
69            <syscall name="BenchmarkResetAllThreadsUtilisation"  />
70        </config>
71        <config condition="defined CONFIG_KERNEL_X86_DANGEROUS_MSR">
72            <syscall name="X86DangerousWRMSR"/>
73            <syscall name="X86DangerousRDMSR"/>
74        </config>
75        <!-- This is not a debug syscall, but it needs to not appear in the 'API' syscall list
76             so that the check of 'is this a valid syscall' can remain a simple range check.
77             Therefore we'll put this here and the arch code will handle it before
78             passing to handleUnknownSyscall -->
79        <config condition="defined CONFIG_VTX">
80            <syscall name="VMEnter"/>
81        </config>
82        <config condition="defined CONFIG_SET_TLS_BASE_SELF">
83            <syscall name="SetTLSBase"/>
84        </config>
85    </debug>
86</syscalls>
87