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 #include <autoconf.h>
10 #include <sel4/macros.h>
11 
12 #define EXCEPT_IPC_LENGTH SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_Length)
13 
14 typedef seL4_Word seL4_UserExceptIPCRegister SEL4_DEPRECATED("use seL4_UserException_Msg");
15 
16 #define EXCEPT_IPC_USER_MR_FAULT_IP  SEL4_DEPRECATE_MACRO(seL4_UserException_FaultIP)
17 #define EXCEPT_IPC_USER_MR_ESP SEL4_DEPRECATE_MACRO(seL4_UserException_SP)
18 #define EXCEPT_IPC_USER_MR_EFLAGS SEL4_DEPRECATE_MACRO(seL4_UserException_EFLAGS)
19 #define EXCEPT_IPC_USER_MR_NUMBER SEL4_DEPRECATE_MACRO(seL4_UserException_Number)
20 #define EXCEPT_IPC_USER_MR_CODE SEL4_DEPRECATE_MACRO(seL4_UserException_Code)
21 #define SEL4_USER_EXCEPT_IPC_LENGTH
22 
23 typedef seL4_Word seL4_ExceptIPCRegister SEL4_DEPRECATED("use seL4_UnknownSyscall_Msg");
24 
25 #define EXCEPT_IPC_SYS_MR_EAX SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_EAX)
26 #define EXCEPT_IPC_SYS_MR_EBX SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_EBX)
27 #define EXCEPT_IPC_SYS_MR_ECX SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_ECX)
28 #define EXCEPT_IPC_SYS_MR_EDX SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_EDX)
29 #define EXCEPT_IPC_SYS_MR_ESI SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_ESI)
30 #define EXCEPT_IPC_SYS_MR_EDI SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_EDI)
31 #define EXCEPT_IPC_SYS_MR_EBP SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_EBP)
32 #define EXCEPT_IPC_SYS_MR_EIP SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_FaultIP)
33 #define EXCEPT_IPC_SYS_MR_ESP SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_SP)
34 #define EXCEPT_IPC_SYS_MR_EFLAGS SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_FLAGS)
35 #define EXCEPT_IPC_SYS_MR_SYSCALL SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_Syscall)
36 #define SEL4_EXCEPT_IPC_LENGTH SEL4_DEPRECATE_MACRO(seL4_UnknownSyscall_Length)
37 
38 typedef union {
39     struct {
40         seL4_Word fault_ip;
41         seL4_Word esp;
42         seL4_Word eflags;
43         seL4_Word exception_number;
44         seL4_Word exception_code;
45     } regs;
46     seL4_Word raw[5];
47 }   seL4_UserExceptionIpcRegisters SEL4_DEPRECATED("Use seL4_Fault_t");
48 
49 typedef union {
50     struct {
51         seL4_Word eax;
52         seL4_Word ebx;
53         seL4_Word ecx;
54         seL4_Word edx;
55         seL4_Word esi;
56         seL4_Word edi;
57         seL4_Word ebp;
58         seL4_Word eip;
59         seL4_Word esp;
60         seL4_Word eflags;
61         seL4_Word syscall;
62     } regs;
63     seL4_Word raw[11];
64 } seL4_ExceptionIpcRegisters SEL4_DEPRECATED("Use seL4_Fault_t");
65 
66 
seL4_Fault_isWriteFault(seL4_Word FaultStatusRegister)67 static inline SEL4_DEPRECATED("") seL4_Bool seL4_Fault_isWriteFault(seL4_Word FaultStatusRegister)
68 {
69     return (FaultStatusRegister & 0x2);
70 }
71 
seL4_Fault_isReadFault(seL4_Word FaultStatusRegister)72 static inline SEL4_DEPRECATED("") seL4_Bool seL4_Fault_isReadFault(seL4_Word FaultStatusRegister)
73 {
74     return !(FaultStatusRegister & 0x2);
75 }
76 
seL4_Fault_isProtectionFault(seL4_Word FaultStatusRegister)77 static inline SEL4_DEPRECATED("") seL4_Bool seL4_Fault_isProtectionFault(seL4_Word FaultStatusRegister)
78 {
79     return (FaultStatusRegister & 0x1);
80 }
81 
seL4_Fault_isNonPresentFault(seL4_Word FaultStatusRegister)82 static inline SEL4_DEPRECATED("") seL4_Bool seL4_Fault_isNonPresentFault(seL4_Word FaultStatusRegister)
83 {
84     return !(FaultStatusRegister & 0x1);
85 }
86 
87