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)67static inline SEL4_DEPRECATED("") seL4_Bool seL4_Fault_isWriteFault(seL4_Word FaultStatusRegister) 68 { 69 return (FaultStatusRegister & 0x2); 70 } 71 seL4_Fault_isReadFault(seL4_Word FaultStatusRegister)72static inline SEL4_DEPRECATED("") seL4_Bool seL4_Fault_isReadFault(seL4_Word FaultStatusRegister) 73 { 74 return !(FaultStatusRegister & 0x2); 75 } 76 seL4_Fault_isProtectionFault(seL4_Word FaultStatusRegister)77static inline SEL4_DEPRECATED("") seL4_Bool seL4_Fault_isProtectionFault(seL4_Word FaultStatusRegister) 78 { 79 return (FaultStatusRegister & 0x1); 80 } 81 seL4_Fault_isNonPresentFault(seL4_Word FaultStatusRegister)82static inline SEL4_DEPRECATED("") seL4_Bool seL4_Fault_isNonPresentFault(seL4_Word FaultStatusRegister) 83 { 84 return !(FaultStatusRegister & 0x1); 85 } 86 87