1#ifndef X86_MATANEL_EXCEPTION
2#define X86_MATANEL_EXCEPTION
34#define EXCEPTION_MAXIMUM_PARAMETERS 15
107 void* EstablisherFrame,
109 void* DispatcherContext
116 __label__ _try_start, _try_end, _except_label, _try_break; \
120 ".section __ex_table,\"a\"\n\t" \
121 ".quad %P0, %P1, %P2\n\t" \
124 : "i" (&& _try_start), "i" (&& _try_end), "i" (&& _except_label)\
128 __asm__ volatile("" ::: "memory"); \
133 __asm__ volatile("" ::: "memory"); \
136 int _volatile_true = 1; \
137 __asm__ volatile("" : "+r"(_volatile_true)); \
138 if (_volatile_true) goto _try_break; \
150#define leave do { goto _try_break; } while (0)
185 IN uint32_t Alignment
@ ExceptionContinueSearch
@ ExceptionCollidedUnwind
@ ExceptionNestedException
@ ExceptionContinueExecution
EXCEPTION_RANGE __stop_ex_table[]
bool ExpIsExceptionHandlerPresent(IN PETHREAD Thread)
struct _EXCEPTION_RANGE EXCEPTION_RANGE
MTSTATUS ProbeForRead(IN const void *Address, IN size_t Length, IN uint32_t Alignment)
struct _EXCEPTION_RECORD EXCEPTION_RECORD
bool ExpIsPrivilegedInstruction(uint8_t *Ip)
PETHREAD PsGetCurrentThread(void)
void ExpDispatchException(IN PTRAP_FRAME TrapFrame, IN PCONTEXT ContextRecord, IN PEXCEPTION_RECORD ExceptionRecord)
void ExpRaiseStatus(IN MTSTATUS Status, IN uint64_t Rip)
struct _EX_FRAME_REGISTRATION EX_FRAME_REGISTRATION
struct _CONTEXT * PCONTEXT
enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION
struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD
EXCEPTION_RANGE __start_ex_table[]
uint64_t MiSearchExceptionTable(uint64_t rip)
struct _EXCEPTION_RECORD * PEXCEPTION_RECORD
bool ExpCaptureContext(IN PCONTEXT Context)
EXCEPTION_DISPOSITION MeStandardHandler(PEXCEPTION_RECORD ExceptionRecord, void *EstablisherFrame, PCONTEXT ContextRecord, void *DispatcherContext)
struct _EXCEPTION_RANGE * PEXCEPTION_RANGE
uint64_t ExpFindKernelModeExceptionHandler(uint64_t Rip)
EXCEPTION_REGISTRATION_RECORD * RegistrationPointer
struct _EXCEPTION_RECORD * ExceptionRecord
struct _EXCEPTION_REGISTRATION_RECORD * Next
enum _EXCEPTION_DISPOSITION(* Handler)(struct _EXCEPTION_RECORD *arg1, void *Frame, struct _CONTEXT *arg2, void *DispCtx)