Restructure the x86 interrupt handling to allow for a more flexible method of using IOAPIC and MSI interrupts. The essence of this change is to allow for the user to pick, for both IOAPIC and MSIs, which CPU vector to use. Additionally there is future support, in the API, for seL4 to eventually protect MSI interrupts with the vt-d interrupt routing tables. API behaviour for legacy systems using the PIC is preserved Part of SELFOUR-281
159 lines
6.8 KiB
XML
159 lines
6.8 KiB
XML
<?xml version="1.0" ?>
|
|
<!--
|
|
Copyright 2014, NICTA
|
|
|
|
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(NICTA_BSD)
|
|
-->
|
|
<api>
|
|
<interface name="seL4_Untyped">
|
|
<method id="UntypedRetype" name="Retype">
|
|
<param dir="in" name="type" type="seL4_Word"/>
|
|
<param dir="in" name="size_bits" type="seL4_Word"/>
|
|
<param dir="in" name="root" type="seL4_CNode"/>
|
|
<param dir="in" name="node_index" type="seL4_Word"/>
|
|
<param dir="in" name="node_depth" type="seL4_Word"/>
|
|
<param dir="in" name="node_offset" type="seL4_Word"/>
|
|
<param dir="in" name="num_objects" type="seL4_Word"/>
|
|
</method>
|
|
</interface>
|
|
<interface name="seL4_TCB">
|
|
<method id="TCBReadRegisters" name="ReadRegisters">
|
|
<param dir="in" name="suspend_source" type="seL4_Bool"/>
|
|
<param dir="in" name="arch_flags" type="seL4_Uint8"/>
|
|
<param dir="in" name="count" type="seL4_Word"/>
|
|
<param dir="out" name="regs" type="seL4_UserContext"/>
|
|
</method>
|
|
<method id="TCBWriteRegisters" name="WriteRegisters">
|
|
<param dir="in" name="resume_target" type="seL4_Bool"/>
|
|
<param dir="in" name="arch_flags" type="seL4_Uint8"/>
|
|
<param dir="in" name="count" type="seL4_Word"/>
|
|
<param dir="in" name="regs" type="seL4_UserContext"/>
|
|
</method>
|
|
<method id="TCBCopyRegisters" name="CopyRegisters">
|
|
<param dir="in" name="source" type="seL4_TCB"/>
|
|
<param dir="in" name="suspend_source" type="seL4_Bool"/>
|
|
<param dir="in" name="resume_target" type="seL4_Bool"/>
|
|
<param dir="in" name="transfer_frame" type="seL4_Bool"/>
|
|
<param dir="in" name="transfer_integer" type="seL4_Bool"/>
|
|
<param dir="in" name="arch_flags" type="seL4_Uint8"/>
|
|
</method>
|
|
<method id="TCBConfigure" name="Configure">
|
|
<param dir="in" name="fault_ep" type="seL4_Word"/>
|
|
<param dir="in" name="priority" type="seL4_Uint8"/>
|
|
<param dir="in" name="cspace_root" type="seL4_CNode"/>
|
|
<param dir="in" name="cspace_root_data" type="seL4_CapData_t"/>
|
|
<param dir="in" name="vspace_root" type="seL4_CNode"/>
|
|
<param dir="in" name="vspace_root_data" type="seL4_CapData_t"/>
|
|
<param dir="in" name="buffer" type="seL4_Word"/>
|
|
<param dir="in" name="bufferFrame" type="seL4_CPtr"/>
|
|
</method>
|
|
<method id="TCBSetPriority" name="SetPriority">
|
|
<param dir="in" name="priority" type="seL4_Uint8"/>
|
|
</method>
|
|
<method id="TCBSetIPCBuffer" name="SetIPCBuffer">
|
|
<param dir="in" name="buffer" type="seL4_Word"/>
|
|
<param dir="in" name="bufferFrame" type="seL4_CPtr"/>
|
|
</method>
|
|
<method id="TCBSetSpace" name="SetSpace">
|
|
<param dir="in" name="fault_ep" type="seL4_Word"/>
|
|
<param dir="in" name="cspace_root" type="seL4_CNode"/>
|
|
<param dir="in" name="cspace_root_data" type="seL4_CapData_t"/>
|
|
<param dir="in" name="vspace_root" type="seL4_CNode"/>
|
|
<param dir="in" name="vspace_root_data" type="seL4_CapData_t"/>
|
|
</method>
|
|
<method id="TCBSuspend" name="Suspend"/>
|
|
<method id="TCBResume" name="Resume"/>
|
|
<method id="TCBBindNotification" name="BindNotification">
|
|
<param dir="in" name="notification" type="seL4_CPtr"/>
|
|
</method>
|
|
<method id="TCBUnbindNotification" name="UnbindNotification">
|
|
</method>
|
|
</interface>
|
|
<interface name="seL4_CNode">
|
|
<method id="CNodeRevoke" name="Revoke">
|
|
<param dir="in" name="index" type="seL4_Word"/>
|
|
<param dir="in" name="depth" type="seL4_Uint8"/>
|
|
</method>
|
|
<method id="CNodeDelete" name="Delete">
|
|
<param dir="in" name="index" type="seL4_Word"/>
|
|
<param dir="in" name="depth" type="seL4_Uint8"/>
|
|
</method>
|
|
<method id="CNodeRecycle" name="Recycle">
|
|
<param dir="in" name="index" type="seL4_Word"/>
|
|
<param dir="in" name="depth" type="seL4_Uint8"/>
|
|
</method>
|
|
<method id="CNodeCopy" name="Copy">
|
|
<param dir="in" name="dest_index" type="seL4_Word"/>
|
|
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="src_root" type="seL4_CNode"/>
|
|
<param dir="in" name="src_index" type="seL4_Word"/>
|
|
<param dir="in" name="src_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="rights" type="seL4_CapRights"/>
|
|
</method>
|
|
<method id="CNodeMint" name="Mint">
|
|
<param dir="in" name="dest_index" type="seL4_Word"/>
|
|
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="src_root" type="seL4_CNode"/>
|
|
<param dir="in" name="src_index" type="seL4_Word"/>
|
|
<param dir="in" name="src_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="rights" type="seL4_CapRights"/>
|
|
<param dir="in" name="badge" type="seL4_CapData_t"/>
|
|
</method>
|
|
<method id="CNodeMove" name="Move">
|
|
<param dir="in" name="dest_index" type="seL4_Word"/>
|
|
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="src_root" type="seL4_CNode"/>
|
|
<param dir="in" name="src_index" type="seL4_Word"/>
|
|
<param dir="in" name="src_depth" type="seL4_Uint8"/>
|
|
</method>
|
|
<method id="CNodeMutate" name="Mutate">
|
|
<param dir="in" name="dest_index" type="seL4_Word"/>
|
|
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="src_root" type="seL4_CNode"/>
|
|
<param dir="in" name="src_index" type="seL4_Word"/>
|
|
<param dir="in" name="src_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="badge" type="seL4_CapData_t"/>
|
|
</method>
|
|
<method id="CNodeRotate" name="Rotate">
|
|
<param dir="in" name="dest_index" type="seL4_Word"/>
|
|
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="dest_badge" type="seL4_CapData_t"/>
|
|
<param dir="in" name="pivot_root" type="seL4_CNode"/>
|
|
<param dir="in" name="pivot_index" type="seL4_Word"/>
|
|
<param dir="in" name="pivot_depth" type="seL4_Uint8"/>
|
|
<param dir="in" name="pivot_badge" type="seL4_CapData_t"/>
|
|
<param dir="in" name="src_root" type="seL4_CNode"/>
|
|
<param dir="in" name="src_index" type="seL4_Word"/>
|
|
<param dir="in" name="src_depth" type="seL4_Uint8"/>
|
|
</method>
|
|
<method id="CNodeSaveCaller" name="SaveCaller">
|
|
<param dir="in" name="index" type="seL4_Word"/>
|
|
<param dir="in" name="depth" type="seL4_Uint8"/>
|
|
</method>
|
|
</interface>
|
|
<interface name="seL4_IRQControl">
|
|
<method id="IRQIssueIRQHandler" name="Get">
|
|
<param dir="in" name="irq" type="int"/>
|
|
<param dir="in" name="root" type="seL4_CNode"/>
|
|
<param dir="in" name="index" type="seL4_Word"/>
|
|
<param dir="in" name="depth" type="seL4_Uint8"/>
|
|
</method>
|
|
</interface>
|
|
<interface name="seL4_IRQHandler">
|
|
<method id="IRQAckIRQ" name="Ack"/>
|
|
<method id="IRQSetIRQHandler" name="SetNotification">
|
|
<param dir="in" name="notification" type="seL4_CPtr"/>
|
|
</method>
|
|
<method id="IRQClearIRQHandler" name="Clear"/>
|
|
</interface>
|
|
<interface name="seL4_DomainSet">
|
|
<method id="DomainSetSet" name="Set">
|
|
<param dir="in" name="domain" type="seL4_Uint8"/>
|
|
<param dir="in" name="thread" type="seL4_TCB"/>
|
|
</method>
|
|
</interface>
|
|
</api>
|