seL4/libsel4/sel4_arch_include/aarch32/interfaces/sel4arch.xml
2017-08-09 10:01:00 +10:00

133 lines
5.7 KiB
XML

<?xml version="1.0" ?>
<!--
Copyright 2017, Data61
Commonwealth Scientific and Industrial Research Organisation (CSIRO)
ABN 41 687 119 230.
This software may be distributed and modified according to the terms of
the BSD 2-Clause license. Note that NO WARRANTY is provided.
See "LICENSE_BSD2.txt" for details.
@TAG(DATA61_BSD)
-->
<api name="ObjectApiAarch32" label_prefix="aarch32_">
<struct name="seL4_UserContext">
<member name="pc"/>
<member name="sp"/>
<member name="cpsr"/>
<member name="r0"/>
<member name="r1"/>
<member name="r8"/>
<member name="r9"/>
<member name="r10"/>
<member name="r11"/>
<member name="r12"/>
<member name="r2"/>
<member name="r3"/>
<member name="r4"/>
<member name="r5"/>
<member name="r6"/>
<member name="r7"/>
<member name="r14"/>
</struct>
<interface name="seL4_ARM_PageDirectory" manual_name="Page Directory">
<method id="ARMPDClean_Data" name="Clean_Data" manual_name="Clean Data" manual_label="pd_clean">
<brief>
Clean cached pages within a page directory
</brief>
<description>
See <autoref label="ch:vspace"/>.
</description>
<param dir="in" name="start" type="seL4_Word"
description="Start address"/>
<param dir="in" name="end" type="seL4_Word"
description="End address"/>
</method>
<method id="ARMPDInvalidate_Data" name="Invalidate_Data" manual_name="Invalidate Data" manual_label="pd_invalidate">
<brief>
Invalidate cached pages within a page directory
</brief>
<description>
See <autoref label="ch:vspace"/>.
</description>
<param dir="in" name="start" type="seL4_Word"
description="Start address"/>
<param dir="in" name="end" type="seL4_Word"
description="End address"/>
</method>
<method id="ARMPDCleanInvalidate_Data" name="CleanInvalidate_Data"
manual_name="Clean and Invalidate Data" manual_label="pd_clean_invalidate">
<brief>
Clean and invalidate cached pages within a page directory
</brief>
<description>
See <autoref label="ch:vspace"/>.
</description>
<param dir="in" name="start" type="seL4_Word"
description="Start address"/>
<param dir="in" name="end" type="seL4_Word"
description="End address"/>
</method>
<method id="ARMPDUnify_Instruction" name="Unify_Instruction" manual_name="Unify Instruction" manual_label="pd_unify_instruction">
<brief>
Clean and invalidate cached instruction pages to point of unification
</brief>
<description>
See <autoref label="ch:vspace"/>.
</description>
<param dir="in" name="start" type="seL4_Word"
description="Start address"/>
<param dir="in" name="end" type="seL4_Word"
description="End address"/>
</method>
</interface>
<interface name="seL4_ARM_VCPU" manual_name="VCPU">
<method id="ARMVCPUSetTCB" name="SetTCB" condition="defined(CONFIG_ARM_HYPERVISOR_SUPPORT)"
manual_name="Set TCB">
<brief>
Bind a TCB to a virtual CPU
</brief>
<description>
There is a 1:1 relationship between a virtual CPU and a TCB. If either (or both) of them is
associated with another one, they will be dissociated, and then associated to the
ones called in this system calls.
</description>
<param dir="in" name="tcb" type="seL4_TCB"
description="Capability to TCB to bind to a virtual CPU"/>
</method>
<method id="ARMVCPUInjectIRQ" name="InjectIRQ" condition="defined(CONFIG_ARM_HYPERVISOR_SUPPORT)"
manual_name="Inject IRQ">
<brief>
Inject an IRQ to a virtual CPU
</brief>
<param dir="in" name="virq" type="seL4_Uint16"
description="Virtual IRQ ID"/>
<param dir="in" name="priority" type="seL4_Uint8"
description="Priority of the IRQ to be injected"/>
<param dir="in" name="group" type="seL4_Uint8"
description="IRQ group"/>
<param dir="in" name="index" type="seL4_Uint8"
description="IRQ index"/>
</method>
<method id="ARMVCPUReadReg" name="ReadRegs" condition="defined(CONFIG_ARM_HYPERVISOR_SUPPORT)"
manual_name="Read Registers">
<brief>
Read a virtual CPU register
</brief>
<param dir="in" name="field" type="seL4_Uint32"
description="Register to read from a VCPU"/>
<param dir="out" name="value" type="seL4_Uint32"
description="Returned value of the VCPU register"/>
</method>
<method id="ARMVCPUWriteReg" name="WriteRegs" condition="defined(CONFIG_ARM_HYPERVISOR_SUPPORT)"
manual_name="Write Registers">
<brief>
Write a virtual CPU register
</brief>
<param dir="in" name="field" type="seL4_Uint32"
description="Register ID to write to a VCPU"/>
<param dir="in" name="value" type="seL4_Uint32"
description="Value to be written to the VCPU register"/>
</method>
</interface>
</api>