1/*
2 * Copyright 2017, Data61
3 * Commonwealth Scientific and Industrial Research Organisation (CSIRO)
4 * ABN 41 687 119 230.
5 *
6 * This software may be distributed and modified according to the terms of
7 * the BSD 2-Clause license. Note that NO WARRANTY is provided.
8 * See "LICENSE_BSD2.txt" for details.
9 *
10 * @TAG(DATA61_BSD)
11 */
12
13#ifndef __LIBSEL4_SEL4_DEPRECATED_H
14#define __LIBSEL4_SEL4_DEPRECATED_H
15
16#include <sel4/macros.h>
17#include <sel4/arch/deprecated.h>
18#include <sel4/sel4_arch/deprecated.h>
19
20#define SEL4_PFIPC_LABEL SEL4_DEPRECATE_MACRO(seL4_Fault_VMFault)
21#define SEL4_PFIPC_LENGTH SEL4_DEPRECATE_MACRO(seL4_VMFault_Length)
22#define SEL4_PFIPC_FAULT_IP SEL4_DEPRECATE_MACRO(seL4_VMFault_IP)
23#define SEL4_PFIPC_FAULT_ADDR SEL4_DEPRECATE_MACRO(seL4_VMFault_Addr)
24#define SEL4_PFIPC_PREFETCH_FAULT SEL4_DEPRECATE_MACRO(seL4_VMFault_PrefetchFault)
25#define SEL4_PFIPC_FSR SEL4_DEPRECATE_MACRO(seL4_VMFault_FSR)
26
27#define SEL4_EXCEPT_IPC_LABEL SEL4_DEPRECATE_MACRO(seL4_Fault_UnknownSyscall)
28#define SEL4_USER_EXCEPTION_LABEL SEL4_DEPRECATE_MACRO(seL4_Fault_UserException)
29#define SEL4_USER_EXCEPTION_LENGTH  SEL4_DEPRECATE_MACRO(seL4_UserException_Length)
30
31#ifdef CONFIG_ARM_HYPERVISOR_SUPPORT
32#define SEL4_VGIC_MAINTENANCE_LENGTH SEL4_DEPRECATE_MACRO(seL4_VGICMaintenance_Length)
33#define SEL4_VGIC_MAINTENANCE_LABEL  SEL4_DEPRECATE_MACRO(seL4_Fault_VGICMaintenance)
34#define SEL4_VCPU_FAULT_LENGTH SEL4_DEPRECATE_MACRO(seL4_VCPUFault_Length)
35#define SEL4_VCPU_FAULT_LABEL SEL4_DEPRECATE_MACRO(seL4_Fault_VCPUFault)
36#endif /* CONFIG_ARM_HYPERVISOR_SUPPORT */
37
38typedef seL4_CapRights_t seL4_CapRights SEL4_DEPRECATED("use seL4_CapRights_t");
39
40typedef union {
41    struct {
42        seL4_Word fault_ip;
43        seL4_Word fault_addr;
44        seL4_Word prefetch_fault;
45        seL4_Word fsr;
46    } regs;
47    seL4_Word raw[4];
48} seL4_PageFaultIpcRegisters SEL4_DEPRECATED("use seL4_Fault_VMFault_new()");
49
50typedef seL4_Fault_tag_t seL4_FaultType SEL4_DEPRECATED("use seL4_Fault_tag_t");
51
52#define seL4_NoFault SEL4_DEPRECATE_MACRO(seL4_Fault_NullFault)
53#define seL4_CapFault SEL4_DEPRECATE_MACRO(seL4_Fault_CapFault)
54#define seL4_UnknownSyscall SEL4_DEPRECATE_MACRO(seL4_Fault_UnknownSyscall)
55#define seL4_UserException SEL4_DEPRECATE_MACRO(seL4_Fault_UserException)
56#define seL4_VMFault SEL4_DEPRECATE_MACRO(seL4_Fault_VMFault)
57
58static inline SEL4_DEPRECATED("removed") seL4_MessageInfo_t
59seL4_GetTag(void)
60{
61    return seL4_GetIPCBuffer()->tag;
62}
63
64static inline SEL4_DEPRECATED("removed") void
65seL4_SetTag(seL4_MessageInfo_t tag)
66{
67    seL4_GetIPCBuffer()->tag = tag;
68}
69
70static inline SEL4_DEPRECATED("use seL4_GetMR(seL4_VMFault_IP)") seL4_Word
71seL4_PF_FIP(void)
72{
73    return seL4_GetMR(seL4_VMFault_IP);
74}
75
76static inline SEL4_DEPRECATED("use seL4_GetMR(seL4_VMFault_Addr)") seL4_Word
77seL4_PF_Addr(void)
78{
79    return seL4_GetMR(seL4_VMFault_Addr);
80}
81
82static inline SEL4_DEPRECATED("use seL4_isVMFault_tag") seL4_Word
83seL4_isPageFault_MSG(void)
84{
85    return seL4_isVMFault_tag(seL4_GetIPCBuffer()->tag);
86}
87
88static inline SEL4_DEPRECATED("use seL4_isVMFault_tag") seL4_Word
89seL4_isPageFault_Tag(seL4_MessageInfo_t tag)
90{
91    return seL4_isVMFault_tag(tag);
92}
93
94static inline SEL4_DEPRECATED("use seL4_isUnknownSyscall_tag") seL4_Word
95seL4_isExceptIPC_Tag(seL4_MessageInfo_t tag)
96{
97    return seL4_isUnknownSyscall_tag(tag);
98}
99
100static inline SEL4_DEPRECATED("use seL4_GetMR") seL4_Word
101seL4_ExceptIPC_Get(seL4_Word mr)
102{
103    return seL4_GetMR(mr);
104}
105
106static inline SEL4_DEPRECATED("use seL4_SetMR") void
107seL4_ExceptIPC_Set(seL4_Word index, seL4_Word val)
108{
109    seL4_SetMR(index, val);
110}
111
112static inline SEL4_DEPRECATED("") seL4_Word
113seL4_IsArchSyscallFrom(seL4_MessageInfo_t tag)
114{
115    return seL4_MessageInfo_get_length(tag) == seL4_UnknownSyscall_Length;
116}
117
118static inline SEL4_DEPRECATED("") seL4_Word
119seL4_IsArchExceptionFrom(seL4_MessageInfo_t tag)
120{
121    return seL4_MessageInfo_get_length(tag) == seL4_UnknownSyscall_Length;
122}
123
124typedef seL4_Word seL4_CapData_t SEL4_DEPRECATED("Badge and guard data are just seL4_Word type");
125
126static inline SEL4_DEPRECATED("Badges do not need to be constructed") seL4_Word seL4_CapData_Badge_new(seL4_Word badge)
127{
128    return badge;
129}
130
131static inline SEL4_DEPRECATED("Use seL4_CNode_CapData_new().words[0]") seL4_Word seL4_CapData_Guard_new(seL4_Word guard, seL4_Word bits)
132{
133    return seL4_CNode_CapData_new(guard, bits).words[0];
134}
135
136#endif // __LIBSEL4_SEL4_DEPRECATED_H
137
138