1/*
2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9/* this file is shared between the kernel and libsel4 */
10
11typedef struct seL4_IPCBuffer_ {
12    seL4_MessageInfo_t tag;
13    seL4_Word msg[seL4_MsgMaxLength];
14    seL4_Word userData;
15    seL4_Word caps_or_badges[seL4_MsgMaxExtraCaps];
16    seL4_CPtr receiveCNode;
17    seL4_CPtr receiveIndex;
18    seL4_Word receiveDepth;
19} seL4_IPCBuffer __attribute__((__aligned__(sizeof(struct seL4_IPCBuffer_))));
20
21typedef enum {
22    seL4_CapFault_IP,
23    seL4_CapFault_Addr,
24    seL4_CapFault_InRecvPhase,
25    seL4_CapFault_LookupFailureType,
26    seL4_CapFault_BitsLeft,
27    seL4_CapFault_DepthMismatch_BitsFound,
28    seL4_CapFault_GuardMismatch_GuardFound = seL4_CapFault_DepthMismatch_BitsFound,
29    seL4_CapFault_GuardMismatch_BitsFound,
30    SEL4_FORCE_LONG_ENUM(seL4_CapFault_Msg),
31} seL4_CapFault_Msg;
32
33#define seL4_ReadWrite     seL4_CapRights_new(0, 0, 1, 1)
34#define seL4_AllRights     seL4_CapRights_new(1, 1, 1, 1)
35#define seL4_CanRead       seL4_CapRights_new(0, 0, 1, 0)
36#define seL4_CanWrite      seL4_CapRights_new(0, 0, 0, 1)
37#define seL4_CanGrant      seL4_CapRights_new(0, 1, 0, 0)
38#define seL4_CanGrantReply seL4_CapRights_new(1, 0, 0, 0)
39#define seL4_NoWrite       seL4_CapRights_new(1, 1, 1, 0)
40#define seL4_NoRead        seL4_CapRights_new(1, 1, 0, 1)
41#define seL4_NoRights      seL4_CapRights_new(0, 0, 0, 0)
42
43