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