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<api name="ObjectApiX64" label_prefix="x86_64_">
9    <struct name="seL4_UserContext">
10        <member name="rip"/>
11        <member name="rsp"/>
12        <member name="rflags"/>
13        <member name="rax"/>
14        <member name="rbx"/>
15        <member name="rcx"/>
16        <member name="rdx"/>
17        <member name="rsi"/>
18        <member name="rdi"/>
19        <member name="rbp"/>
20        <member name="r8"/>
21        <member name="r9"/>
22        <member name="r10"/>
23        <member name="r11"/>
24        <member name="r12"/>
25        <member name="r13"/>
26        <member name="r14"/>
27        <member name="r15"/>
28        <member name="fs_base"/>
29        <member name="gs_base"/>
30    </struct>
31
32    <interface name="seL4_X86_PDPT" manual_name="PDPT">
33        <method id="X86PDPTMap" name="Map">
34            <description>
35                TODO
36            </description>
37            <param dir="in" name="pml4" type="seL4_X64_PML4"/>
38            <param dir="in" name="vaddr" type="seL4_Word"/>
39            <param dir="in" name="attr" type="seL4_X86_VMAttributes"/>
40            <error name="seL4_DeleteFirst">
41                <description>
42                    A mapping already exists for this level in <texttt text="vspace"/> at <texttt text="vaddr"/>.
43                </description>
44            </error>
45            <error name="seL4_FailedLookup">
46                <description>
47                    The <texttt text="pml4"/> is not assigned to an ASID pool.
48                </description>
49            </error>
50            <error name="seL4_IllegalOperation">
51                <description>
52                    The <texttt text="_service"/> is a CPtr to a capability of the wrong type.
53                </description>
54            </error>
55            <error name="seL4_InvalidArgument">
56                <description>
57                    The <texttt text="vaddr"/> is in the kernel virtual address range.
58                </description>
59            </error>
60            <error name="seL4_InvalidCapability">
61                <description>
62                    The <texttt text="_service"/> or <texttt text="pml4"/> is a CPtr to a capability of the wrong type.
63                    Or, <texttt text="pml4"/> is not assigned to an ASID pool.
64                    Or, <texttt text="_service"/> is already mapped in a VSpace.
65                </description>
66            </error>
67        </method>
68        <method id="X86PDPTUnmap" name="Unmap">
69            <description>
70                TODO
71            </description>
72            <error name="seL4_IllegalOperation">
73                <description>
74                    The <texttt text="_service"/> is a CPtr to a capability of the wrong type.
75                </description>
76            </error>
77            <error name="seL4_InvalidCapability">
78                <description>
79                    The <texttt text="_service"/> is a CPtr to a capability of the wrong type.
80                </description>
81            </error>
82            <error name="seL4_RevokeFirst">
83                <description>
84                    A copy of the <texttt text="_service"/> capability exists.
85                </description>
86            </error>
87        </method>
88    </interface>
89</api>
90