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="ObjectApiAarch64" label_prefix="aarch64_"> 9 <struct name="seL4_UserContext"> 10 <member name="pc"/> 11 <member name="sp"/> 12 <member name="spsr"/> 13 <member name="x0"/> 14 <member name="x1"/> 15 <member name="x2"/> 16 <member name="x3"/> 17 <member name="x4"/> 18 <member name="x5"/> 19 <member name="x6"/> 20 <member name="x7"/> 21 <member name="x8"/> 22 <member name="x16"/> 23 <member name="x17"/> 24 <member name="x18"/> 25 <member name="x29"/> 26 <member name="x30"/> 27 <member name="x9"/> 28 <member name="x10"/> 29 <member name="x11"/> 30 <member name="x12"/> 31 <member name="x13"/> 32 <member name="x14"/> 33 <member name="x15"/> 34 <member name="x19"/> 35 <member name="x20"/> 36 <member name="x21"/> 37 <member name="x22"/> 38 <member name="x23"/> 39 <member name="x24"/> 40 <member name="x25"/> 41 <member name="x26"/> 42 <member name="x27"/> 43 <member name="x28"/> 44 <member name="tpidr_el0"/> 45 <member name="tpidrro_el0"/> 46 </struct> 47 <interface name="seL4_ARM_VSpace" manual_name="Page Global Directory" 48 cap_description="Capability to the top level translation table being operated on."> 49 <method id="ARMVSpaceClean_Data" name="Clean_Data" manual_label="vspace_clean" 50 manual_name="Clean Data"> 51 <brief> 52 Clean cached pages within a top level translation table 53 </brief> 54 <description> 55 <docref>See <autoref label="ch:vspace"/>.</docref> 56 </description> 57 <param dir="in" name="start" type="seL4_Word" 58 description="Start address"/> 59 <param dir="in" name="end" type="seL4_Word" 60 description="End address"/> 61 </method> 62 <method id="ARMVSpaceInvalidate_Data" name="Invalidate_Data" 63 manual_name="Invalidate Data" manual_label="vspace_invalidate"> 64 <brief> 65 Invalidate cached pages within a top level translation table 66 </brief> 67 <description> 68 <docref>See <autoref label="ch:vspace"/>.</docref> 69 </description> 70 <param dir="in" name="start" type="seL4_Word" 71 description="Start address"/> 72 <param dir="in" name="end" type="seL4_Word" 73 description="End address"/> 74 </method> 75 <method id="ARMVSpaceCleanInvalidate_Data" name="CleanInvalidate_Data" 76 manual_name="Clean and Invalidate Data" manual_label="vspace_clean_invalidate"> 77 <brief> 78 Clean and invalidate cached pages within a top level translation table 79 </brief> 80 <description> 81 <docref>See <autoref label="ch:vspace"/>.</docref> 82 </description> 83 <param dir="in" name="start" type="seL4_Word" 84 description="Start address"/> 85 <param dir="in" name="end" type="seL4_Word" 86 description="End address"/> 87 </method> 88 <method id="ARMVSpaceUnify_Instruction" name="Unify_Instruction" 89 manual_name="Unify Instruction" manual_label="vspace_unify_instruction"> 90 <brief> 91 Clean and invalidate cached instruction pages to point of unification 92 </brief> 93 <description> 94 <docref>See <autoref label="ch:vspace"/>.</docref> 95 </description> 96 <param dir="in" name="start" type="seL4_Word" 97 description="Start address"/> 98 <param dir="in" name="end" type="seL4_Word" 99 description="End address"/> 100 </method> 101 </interface> 102 <interface name="seL4_ARM_PageUpperDirectory" manual_name="Page Upper Directory" 103 cap_description="Capability to the upper page directory being operated on."> 104 <method id="ARMPageUpperDirectoryMap" name="Map" condition="!(defined CONFIG_ARM_HYPERVISOR_SUPPORT && defined CONFIG_ARM_PA_SIZE_BITS_40)"> 105 <brief> 106 Map an upper page directory 107 </brief> 108 <description> 109 Map an upper page directory (level 1) to a top level translation table (level 0). 110 If the upper page directory is already mapped this operation will fail, 111 returning a seL4_InvalidCapability error. If another object is already mapped at this 112 level for the virtual address this operation will fail, 113 returning a seL4_DeleteFirst error. 114 </description> 115 <param dir="in" name="vspace" type="seL4_CPtr" 116 description="Top level translation table. Must be assigned to an ASID pool."/> 117 <param dir="in" name="vaddr" type="seL4_Word" 118 description="Virtual address"/> 119 <param dir="in" name="attr" type="seL4_ARM_VMAttributes"> 120 <description> 121 VM Attributes for the mapping.<docref>Possible values for this type are given in <autoref label="ch:vspace"/> .</docref> 122 </description> 123 </param> 124 </method> 125 <method id="ARMPageUpperDirectoryUnmap" name="Unmap" 126 condition="!(defined CONFIG_ARM_HYPERVISOR_SUPPORT && defined CONFIG_ARM_PA_SIZE_BITS_40)"> 127 </method> 128 </interface> 129 <interface name="seL4_ARM_PageDirectory" manual_name="Page Directory" 130 cap_description="Capability to the page directory being operated on."> 131 <method id="ARMPageDirectoryMap" name="Map"> 132 <brief> 133 Map a page directory 134 </brief> 135 <description> 136 Map a page directory (level 2) to an upper page directory (level 1). 137 If an upper page directory does not exist for the virtual address this 138 operation will fail, returning a seL4_FailedLookup error. If the page 139 directory is already mapped this operation will fail, 140 returning a seL4_InvalidCapability error. If another object is already mapped 141 at this level for the virtual address this operation will 142 fail, returning a seL4_DeleteFirst error. 143 </description> 144 <param dir="in" name="vspace" type="seL4_CPtr" 145 description="Top level translation table. Must be assigned to an ASID pool."/> 146 <param dir="in" name="vaddr" type="seL4_Word" 147 description="Virtual adress"/> 148 <param dir="in" name="attr" type="seL4_ARM_VMAttributes"> 149 <description> 150 VM Attributes for the mapping.<docref>Possible values for this type are given in <autoref label="ch:vspace"/> .</docref> 151 </description> 152 </param> 153 </method> 154 <method id="ARMPageDirectoryUnmap" name="Unmap"> 155 <brief> 156 Unmap a page directory 157 </brief> 158 <description> 159 Unmap a page directory (level 2) from an upper page directory (level 1) 160 </description> 161 </method> 162 </interface> 163</api> 164