forked from xt-sys/exectos
		
	Basic context, frames and exceptions definitions
This commit is contained in:
		| @@ -9,12 +9,19 @@ | ||||
| #ifndef __XTDK_AMD64_KETYPES_H | ||||
| #define __XTDK_AMD64_KETYPES_H | ||||
|  | ||||
| #include <xtbase.h> | ||||
| #include <xttypes.h> | ||||
|  | ||||
|  | ||||
| /* Size of the exception area */ | ||||
| #define EXCEPTION_AREA_SIZE               64 | ||||
|  | ||||
| /* IOPM Definitions */ | ||||
| #define IO_ACCESS_MAP_NONE                0 | ||||
|  | ||||
| /* Size of the FNSAVE/FRSTOR save area */ | ||||
| #define FLOATING_SAVE_AREA_SIZE           ((sizeof(FLOATING_SAVE_AREA) + 15) & ~15) | ||||
|  | ||||
| /* Static Kernel-Mode address start */ | ||||
| #define KSEG0_BASE                        0xFFFFF80000000000 | ||||
|  | ||||
| @@ -24,6 +31,104 @@ | ||||
| /* XTOS Kernel stack size */ | ||||
| #define KERNEL_STACK_SIZE                 0x8000 | ||||
|  | ||||
| /* Kernel frames */ | ||||
| #define KEXCEPTION_FRAME_SIZE             sizeof(KEXCEPTION_FRAME) | ||||
| #define KSWITCH_FRAME_SIZE                sizeof(KSWITCH_FRAME) | ||||
| #define KTRAP_FRAME_ALIGN                 0x10 | ||||
| #define KTRAP_FRAME_SIZE                  sizeof(KTRAP_FRAME) | ||||
|  | ||||
| /* Size of legacy 387 registers */ | ||||
| #define SIZE_OF_80387_REGISTERS           80 | ||||
|  | ||||
| /* Floating point state storing structure */ | ||||
| typedef struct _FLOATING_SAVE_AREA | ||||
| { | ||||
|     USHORT ControlWord; | ||||
|     USHORT StatusWord; | ||||
|     USHORT TagWord; | ||||
|     ULONG ErrorOffset; | ||||
|     USHORT ErrorSelector; | ||||
|     USHORT ErrorOpcode; | ||||
|     ULONG DataOffset; | ||||
|     USHORT DataSelector; | ||||
|     UCHAR RegisterArea[SIZE_OF_80387_REGISTERS]; | ||||
| } FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; | ||||
|  | ||||
| /* Context frame structure definition */ | ||||
| typedef struct ALIGN(16) _CONTEXT | ||||
| { | ||||
|     ULONG64 P1Home; | ||||
|     ULONG64 P2Home; | ||||
|     ULONG64 P3Home; | ||||
|     ULONG64 P4Home; | ||||
|     ULONG64 P5Home; | ||||
|     ULONG64 P6Home; | ||||
|     ULONG ContextFlags; | ||||
|     ULONG MxCsr; | ||||
|     USHORT SegCs; | ||||
|     USHORT SegDs; | ||||
|     USHORT SegEs; | ||||
|     USHORT SegFs; | ||||
|     USHORT SegGs; | ||||
|     USHORT SegSs; | ||||
|     ULONG EFlags; | ||||
|     ULONG64 Dr0; | ||||
|     ULONG64 Dr1; | ||||
|     ULONG64 Dr2; | ||||
|     ULONG64 Dr3; | ||||
|     ULONG64 Dr6; | ||||
|     ULONG64 Dr7; | ||||
|     ULONG64 Rax; | ||||
|     ULONG64 Rcx; | ||||
|     ULONG64 Rdx; | ||||
|     ULONG64 Rbx; | ||||
|     ULONG64 Rsp; | ||||
|     ULONG64 Rbp; | ||||
|     ULONG64 Rsi; | ||||
|     ULONG64 Rdi; | ||||
|     ULONG64 R8; | ||||
|     ULONG64 R9; | ||||
|     ULONG64 R10; | ||||
|     ULONG64 R11; | ||||
|     ULONG64 R12; | ||||
|     ULONG64 R13; | ||||
|     ULONG64 R14; | ||||
|     ULONG64 R15; | ||||
|     ULONG64 Rip; | ||||
|     union | ||||
|     { | ||||
|         FLOATING_SAVE_AREA FloatSave; | ||||
|         struct | ||||
|         { | ||||
|             M128 Header[2]; | ||||
|             M128 Legacy[8]; | ||||
|             M128 Xmm0; | ||||
|             M128 Xmm1; | ||||
|             M128 Xmm2; | ||||
|             M128 Xmm3; | ||||
|             M128 Xmm4; | ||||
|             M128 Xmm5; | ||||
|             M128 Xmm6; | ||||
|             M128 Xmm7; | ||||
|             M128 Xmm8; | ||||
|             M128 Xmm9; | ||||
|             M128 Xmm10; | ||||
|             M128 Xmm11; | ||||
|             M128 Xmm12; | ||||
|             M128 Xmm13; | ||||
|             M128 Xmm14; | ||||
|             M128 Xmm15; | ||||
|         }; | ||||
|     }; | ||||
|     M128 VectorRegister[26]; | ||||
|     ULONG64 VectorControl; | ||||
|     ULONG64 DebugControl; | ||||
|     ULONG64 LastBranchToRip; | ||||
|     ULONG64 LastBranchFromRip; | ||||
|     ULONG64 LastExceptionToRip; | ||||
|     ULONG64 LastExceptionFromRip; | ||||
| } CONTEXT, *PCONTEXT; | ||||
|  | ||||
| /* Global Descriptor Table (GDT) entry union definition */ | ||||
| typedef union _KGDTENTRY | ||||
| { | ||||
| @@ -91,4 +196,142 @@ typedef struct _KTSS | ||||
|     USHORT IoMapBase; | ||||
| } KTSS, *PKTSS; | ||||
|  | ||||
| /* Exception frame definition */ | ||||
| typedef struct _KEXCEPTION_FRAME | ||||
| { | ||||
|     ULONG64 P1Home; | ||||
|     ULONG64 P2Home; | ||||
|     ULONG64 P3Home; | ||||
|     ULONG64 P4Home; | ||||
|     ULONG64 P5; | ||||
|     ULONG64 InitialStack; | ||||
|     M128 Xmm6; | ||||
|     M128 Xmm7; | ||||
|     M128 Xmm8; | ||||
|     M128 Xmm9; | ||||
|     M128 Xmm10; | ||||
|     M128 Xmm11; | ||||
|     M128 Xmm12; | ||||
|     M128 Xmm13; | ||||
|     M128 Xmm14; | ||||
|     M128 Xmm15; | ||||
|     ULONG64 TrapFrame; | ||||
|     ULONG64 CallbackStack; | ||||
|     ULONG64 OutputBuffer; | ||||
|     ULONG64 OutputLength; | ||||
|     UCHAR ExceptionRecord[EXCEPTION_AREA_SIZE]; | ||||
|     ULONG64 MxCsr; | ||||
|     ULONG64 Rbp; | ||||
|     ULONG64 Rbx; | ||||
|     ULONG64 Rdi; | ||||
|     ULONG64 Rsi; | ||||
|     ULONG64 R12; | ||||
|     ULONG64 R13; | ||||
|     ULONG64 R14; | ||||
|     ULONG64 R15; | ||||
|     ULONG64 Return; | ||||
| } KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; | ||||
|  | ||||
| /* Switch frame definition */ | ||||
| typedef struct _KSWITCH_FRAME | ||||
| { | ||||
|     ULONG64 P1Home; | ||||
|     ULONG64 P2Home; | ||||
|     ULONG64 P3Home; | ||||
|     ULONG64 P4Home; | ||||
|     ULONG64 P5Home; | ||||
|     ULONG MxCsr; | ||||
|     KIRQL ApcBypass; | ||||
|     UCHAR Fill1[3]; | ||||
|     ULONG64 Rbp; | ||||
|     ULONG64 Return; | ||||
| } KSWITCH_FRAME, *PKSWITCH_FRAME; | ||||
|  | ||||
| /* Trap frame definition */ | ||||
| typedef struct _KTRAP_FRAME | ||||
| { | ||||
|     ULONG64 P1Home; | ||||
|     ULONG64 P2Home; | ||||
|     ULONG64 P3Home; | ||||
|     ULONG64 P4Home; | ||||
|     ULONG64 P5; | ||||
|     KPROCESSOR_MODE PreviousMode; | ||||
|     KIRQL PreviousIrql; | ||||
|     UCHAR FaultIndicator; | ||||
|     UCHAR ExceptionActive; | ||||
|     ULONG MxCsr; | ||||
|     ULONG64 Rax; | ||||
|     ULONG64 Rcx; | ||||
|     ULONG64 Rdx; | ||||
|     ULONG64 R8; | ||||
|     ULONG64 R9; | ||||
|     ULONG64 R10; | ||||
|     ULONG64 R11; | ||||
|     union | ||||
|     { | ||||
|         ULONG64 GsBase; | ||||
|         ULONG64 GsSwap; | ||||
|     }; | ||||
|     M128 Xmm0; | ||||
|     M128 Xmm1; | ||||
|     M128 Xmm2; | ||||
|     M128 Xmm3; | ||||
|     M128 Xmm4; | ||||
|     M128 Xmm5; | ||||
|     union | ||||
|     { | ||||
|         ULONG64 FaultAddress; | ||||
|         ULONG64 ContextRecord; | ||||
|         ULONG64 TimeStampCKCL; | ||||
|     }; | ||||
|     ULONG64 Dr0; | ||||
|     ULONG64 Dr1; | ||||
|     ULONG64 Dr2; | ||||
|     ULONG64 Dr3; | ||||
|     ULONG64 Dr6; | ||||
|     ULONG64 Dr7; | ||||
|     union | ||||
|     { | ||||
|         struct | ||||
|         { | ||||
|             ULONG64 DebugControl; | ||||
|             ULONG64 LastBranchToRip; | ||||
|             ULONG64 LastBranchFromRip; | ||||
|             ULONG64 LastExceptionToRip; | ||||
|             ULONG64 LastExceptionFromRip; | ||||
|         }; | ||||
|         struct | ||||
|         { | ||||
|             ULONG64 LastBranchControl; | ||||
|             ULONG LastBranchMSR; | ||||
|         }; | ||||
|     }; | ||||
|     USHORT SegDs; | ||||
|     USHORT SegEs; | ||||
|     USHORT SegFs; | ||||
|     USHORT SegGs; | ||||
|     ULONG64 TrapFrame; | ||||
|     ULONG64 Rbx; | ||||
|     ULONG64 Rdi; | ||||
|     ULONG64 Rsi; | ||||
|     ULONG64 Rbp; | ||||
|     union | ||||
|     { | ||||
|         ULONG64 ErrorCode; | ||||
|         ULONG64 ExceptionFrame; | ||||
|         ULONG64 TimeStampKlog; | ||||
|     }; | ||||
|     ULONG64 Rip; | ||||
|     USHORT SegCs; | ||||
|     UCHAR Fill0; | ||||
|     UCHAR Logging; | ||||
|     USHORT Fill1[2]; | ||||
|     ULONG EFlags; | ||||
|     ULONG Fill2; | ||||
|     ULONG64 Rsp; | ||||
|     USHORT SegSs; | ||||
|     USHORT Fill3; | ||||
|     ULONG CodePatchCycle; | ||||
| } KTRAP_FRAME, *PKTRAP_FRAME; | ||||
|  | ||||
| #endif /* __XTDK_AMD64_KETYPES_H */ | ||||
|   | ||||
| @@ -9,10 +9,21 @@ | ||||
| #ifndef __XTDK_AMD64_XTSTRUCT_H | ||||
| #define __XTDK_AMD64_XTSTRUCT_H | ||||
|  | ||||
| #include <xtdefs.h> | ||||
|  | ||||
|  | ||||
| /* Architecture-related enumeration lists forward references */ | ||||
| typedef enum _CPUID_FEATURES CPUID_FEATURES, *PCPUID_FEATURES; | ||||
| typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS; | ||||
|  | ||||
| /* Architecture-related structures forward references */ | ||||
| typedef struct ALIGN(16) _CONTEXT CONTEXT, *PCONTEXT; | ||||
| typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS; | ||||
| typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; | ||||
| typedef struct _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE; | ||||
| typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; | ||||
| typedef struct _KSWITCH_FRAME KSWITCH_FRAME, *PKSWITCH_FRAME; | ||||
| typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME; | ||||
| typedef struct _KTSS KTSS, *PKTSS; | ||||
|  | ||||
| /* Architecture-related unions forward references */ | ||||
|   | ||||
| @@ -9,6 +9,7 @@ | ||||
| #ifndef __XTDK_I686_KETYPES_H | ||||
| #define __XTDK_I686_KETYPES_H | ||||
|  | ||||
| #include <xtstruct.h> | ||||
| #include <xttypes.h> | ||||
|  | ||||
|  | ||||
| @@ -28,6 +29,61 @@ | ||||
| /* XTOS Kernel stack size */ | ||||
| #define KERNEL_STACK_SIZE                 0x4000 | ||||
|  | ||||
| /* Kernel frames */ | ||||
| #define KTRAP_FRAME_ALIGN                 0x08 | ||||
| #define KTRAP_FRAME_SIZE                  sizeof(KTRAP_FRAME) | ||||
| #define NPX_FRAME_SIZE                    0x210 | ||||
|  | ||||
| /* Number of supported extensions */ | ||||
| #define MAXIMUM_SUPPORTED_EXTENSION       512 | ||||
|  | ||||
| /* Size of 387 registers */ | ||||
| #define SIZE_OF_80387_REGISTERS           80 | ||||
|  | ||||
| /* Floating point state storing structure */ | ||||
| typedef struct _FLOATING_SAVE_AREA | ||||
| { | ||||
|     ULONG ControlWord; | ||||
|     ULONG StatusWord; | ||||
|     ULONG TagWord; | ||||
|     ULONG ErrorOffset; | ||||
|     ULONG ErrorSelector; | ||||
|     ULONG DataOffset; | ||||
|     ULONG DataSelector; | ||||
|     UCHAR RegisterArea[SIZE_OF_80387_REGISTERS]; | ||||
|     ULONG Cr0NpxState; | ||||
| } FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; | ||||
|  | ||||
| /* Context frame structure definition */ | ||||
| typedef struct _CONTEXT | ||||
| { | ||||
|     ULONG ContextFlags; | ||||
|     ULONG Dr0; | ||||
|     ULONG Dr1; | ||||
|     ULONG Dr2; | ||||
|     ULONG Dr3; | ||||
|     ULONG Dr6; | ||||
|     ULONG Dr7; | ||||
|     FLOATING_SAVE_AREA FloatSave; | ||||
|     ULONG SegGs; | ||||
|     ULONG SegFs; | ||||
|     ULONG SegEs; | ||||
|     ULONG SegDs; | ||||
|     ULONG Edi; | ||||
|     ULONG Esi; | ||||
|     ULONG Ebx; | ||||
|     ULONG Edx; | ||||
|     ULONG Ecx; | ||||
|     ULONG Eax; | ||||
|     ULONG Ebp; | ||||
|     ULONG Eip; | ||||
|     ULONG SegCs; | ||||
|     ULONG EFlags; | ||||
|     ULONG Esp; | ||||
|     ULONG SegSs; | ||||
|     UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; | ||||
| } CONTEXT, *PCONTEXT; | ||||
|  | ||||
| /* Global Descriptor Table (GDT) entry structure definition */ | ||||
| typedef struct _KGDTENTRY | ||||
| { | ||||
| @@ -59,7 +115,8 @@ typedef struct _KGDTENTRY | ||||
| } KGDTENTRY, *PKGDTENTRY; | ||||
|  | ||||
| /* Interrupt Descriptor Table (IDT) entry structure definition */ | ||||
| typedef struct _KIDTENTRY { | ||||
| typedef struct _KIDTENTRY | ||||
| { | ||||
|     USHORT Offset; | ||||
|     USHORT Selector; | ||||
|     USHORT Access; | ||||
| @@ -67,13 +124,15 @@ typedef struct _KIDTENTRY { | ||||
| } KIDTENTRY, *PKIDTENTRY; | ||||
|  | ||||
| /* Interrupt direction access map structure definition */ | ||||
| typedef struct _KIIO_ACCESS_MAP { | ||||
| typedef struct _KIIO_ACCESS_MAP | ||||
| { | ||||
|     UCHAR DirectionMap[IOPM_DIRECTION_MAP_SIZE]; | ||||
|     UCHAR IoMap[IOPM_FULL_SIZE]; | ||||
| } KIIO_ACCESS_MAP, *PKIIO_ACCESS_MAP; | ||||
|  | ||||
| /* Task State Segment (TSS) structure definition */ | ||||
| typedef struct _KTSS { | ||||
| typedef struct _KTSS | ||||
| { | ||||
|     USHORT Backlink; | ||||
|     USHORT Reserved0; | ||||
|     ULONG Esp0; | ||||
| @@ -111,4 +170,50 @@ typedef struct _KTSS { | ||||
|     UCHAR IntDirectionMap[IOPM_DIRECTION_MAP_SIZE]; | ||||
| } KTSS, *PKTSS; | ||||
|  | ||||
| /* Exception frame definition (not available on ia32) */ | ||||
| typedef struct _KEXCEPTION_FRAME | ||||
| { | ||||
|     ULONG PlaceHolder; | ||||
| } KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; | ||||
|  | ||||
| /* Trap frame definition */ | ||||
| typedef struct _KTRAP_FRAME | ||||
| { | ||||
|     ULONG DbgEbp; | ||||
|     ULONG DbgEip; | ||||
|     ULONG DbgArgMark; | ||||
|     ULONG DbgArgPointer; | ||||
|     ULONG TempSegCs; | ||||
|     ULONG TempEsp; | ||||
|     ULONG Dr0; | ||||
|     ULONG Dr1; | ||||
|     ULONG Dr2; | ||||
|     ULONG Dr3; | ||||
|     ULONG Dr6; | ||||
|     ULONG Dr7; | ||||
|     ULONG SegGs; | ||||
|     ULONG SegEs; | ||||
|     ULONG SegDs; | ||||
|     ULONG Edx; | ||||
|     ULONG Ecx; | ||||
|     ULONG Eax; | ||||
|     ULONG PreviousPreviousMode; | ||||
|     PEXCEPTION_REGISTRATION_RECORD ExceptionList; | ||||
|     ULONG SegFs; | ||||
|     ULONG Edi; | ||||
|     ULONG Esi; | ||||
|     ULONG Ebx; | ||||
|     ULONG Ebp; | ||||
|     ULONG ErrCode; | ||||
|     ULONG Eip; | ||||
|     ULONG SegCs; | ||||
|     ULONG EFlags; | ||||
|     ULONG HardwareEsp; | ||||
|     ULONG HardwareSegSs; | ||||
|     ULONG V86Es; | ||||
|     ULONG V86Ds; | ||||
|     ULONG V86Fs; | ||||
|     ULONG V86Gs; | ||||
| } KTRAP_FRAME, *PKTRAP_FRAME; | ||||
|  | ||||
| #endif /* __XTDK_I686_KETYPES_H */ | ||||
|   | ||||
| @@ -9,14 +9,24 @@ | ||||
| #ifndef __XTDK_I686_XTSTRUCT_H | ||||
| #define __XTDK_I686_XTSTRUCT_H | ||||
|  | ||||
| #include <xtdefs.h> | ||||
|  | ||||
|  | ||||
| /* Architecture-related enumeration lists forward references */ | ||||
| typedef enum _CPUID_FEATURES CPUID_FEATURES, *PCPUID_FEATURES; | ||||
| typedef enum _CPUID_REQUESTS CPUID_REQUESTS, *PCPUID_REQUESTS; | ||||
|  | ||||
| /* Architecture-related structures forward references */ | ||||
| typedef struct _CONTEXT CONTEXT, *PCONTEXT; | ||||
| typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS; | ||||
| typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; | ||||
| typedef struct _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE; | ||||
| typedef struct _HARDWARE_PTE_PAE HARDWARE_PTE_PAE, *PHARDWARE_PTE_PAE; | ||||
| typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; | ||||
| typedef struct _KGDTENTRY KGDTENTRY, *PKGDTENTRY; | ||||
| typedef struct _KIDTENTRY KIDTENTRY, *PKIDTENTRY; | ||||
| typedef struct _KIIO_ACCESS_MAP KIIO_ACCESS_MAP, *PKIIO_ACCESS_MAP; | ||||
| typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME; | ||||
| typedef struct _KTSS KTSS, *PKTSS; | ||||
|  | ||||
| #endif /* __XTDK_I686_XTSTRUCT_H */ | ||||
|   | ||||
							
								
								
									
										21
									
								
								sdk/xtdk/kertptr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								sdk/xtdk/kertptr.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| /** | ||||
|  * PROJECT:         ExectOS | ||||
|  * COPYRIGHT:       See COPYING.md in the top level directory | ||||
|  * FILE:            sdk/xtdk/kertptr.h | ||||
|  * DESCRIPTION:     XT kernel core handlers and routine pointers | ||||
|  * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org> | ||||
|  */ | ||||
|  | ||||
| #ifndef __XTDK_KERTPTR_H | ||||
| #define __XTDK_KERTPTR_H | ||||
|  | ||||
| #include <xtstruct.h> | ||||
| #include <xttarget.h> | ||||
| #include <xttypes.h> | ||||
| #include ARCH_HEADER(ketypes.h) | ||||
|  | ||||
|  | ||||
| /* Kernel routine callbacks */ | ||||
| typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE)(IN PEXCEPTION_RECORD ExceptionRecord, IN PVOID EstablisherFrame, IN OUT PCONTEXT ContextRecord, IN OUT PVOID DispatcherContext); | ||||
|  | ||||
| #endif /* __XTDK_KERTPTR_H */ | ||||
							
								
								
									
										48
									
								
								sdk/xtdk/ketypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								sdk/xtdk/ketypes.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| /** | ||||
|  * PROJECT:         ExectOS | ||||
|  * COPYRIGHT:       See COPYING.md in the top level directory | ||||
|  * FILE:            sdk/xtdk/ketypes.h | ||||
|  * DESCRIPTION:     XT kernel core structures definitions | ||||
|  * DEVELOPERS:      Rafal Kupiec <belliash@codingworkshop.eu.org> | ||||
|  */ | ||||
|  | ||||
| #ifndef __XTDK_KETYPES_H | ||||
| #define __XTDK_KETYPES_H | ||||
|  | ||||
| #include <kertptr.h> | ||||
| #include <xtstruct.h> | ||||
| #include <xttarget.h> | ||||
| #include <xttypes.h> | ||||
|  | ||||
|  | ||||
| /* Maximum number of exception parameters */ | ||||
| #define EXCEPTION_MAXIMUM_PARAMETERS 15 | ||||
|  | ||||
| /* Exception disposition return values */ | ||||
| typedef enum _EXCEPTION_DISPOSITION | ||||
| { | ||||
|     ExceptionContinueExecution, | ||||
|     ExceptionContinueSearch, | ||||
|     ExceptionNestedException, | ||||
|     ExceptionCollidedUnwind, | ||||
| } EXCEPTION_DISPOSITION, *PEXCEPTION_DISPOSITION; | ||||
|  | ||||
| /* Exception record structure definition */ | ||||
| typedef struct _EXCEPTION_RECORD | ||||
| { | ||||
|     XTSTATUS ExceptionCode; | ||||
|     ULONG ExceptionFlags; | ||||
|     PEXCEPTION_RECORD ExceptionRecord; | ||||
|     PVOID ExceptionAddress; | ||||
|     ULONG NumberParameters; | ||||
|     ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; | ||||
| } EXCEPTION_RECORD, *PEXCEPTION_RECORD; | ||||
|  | ||||
| /* Exception registration record  structure definition */ | ||||
| typedef struct _EXCEPTION_REGISTRATION_RECORD | ||||
| { | ||||
|   PEXCEPTION_REGISTRATION_RECORD Next; | ||||
|   PEXCEPTION_ROUTINE Handler; | ||||
| } EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD; | ||||
|  | ||||
| #endif /* __XTDK_KEFUNCS_H */ | ||||
| @@ -17,6 +17,9 @@ | ||||
| /* Interrupt Request Level (IRQL) */ | ||||
| typedef UCHAR KIRQL, *PKIRQL; | ||||
|  | ||||
| /* Processor modes */ | ||||
| typedef CHAR KPROCESSOR_MODE, *PKPROCESSOR_MODE; | ||||
|  | ||||
| /* 128-bit buffer containing a unique identifier value */ | ||||
| typedef struct _GUID | ||||
| { | ||||
|   | ||||
| @@ -7,10 +7,10 @@ | ||||
|  */ | ||||
|  | ||||
| /* Base XT headers */ | ||||
| #include <xttarget.h> | ||||
| #include <xttypes.h> | ||||
| #include <xtdefs.h> | ||||
| #include <xtstatus.h> | ||||
| #include <xttarget.h> | ||||
| #include <xttypes.h> | ||||
|  | ||||
| /* XT forward references */ | ||||
| #include <xtstruct.h> | ||||
| @@ -21,15 +21,16 @@ | ||||
| /* Architecture-independent XT API */ | ||||
| #include <xtbase.h> | ||||
| #include <xtdebug.h> | ||||
| #include <xtfw.h> | ||||
| #include <xtimage.h> | ||||
| #include <xtuefi.h> | ||||
| #include <xtfw.h> | ||||
|  | ||||
| /* Low level data types headers */ | ||||
| #include <rtltypes.h> | ||||
| #include <ldrtypes.h> | ||||
| #include <hltypes.h> | ||||
| #include <iotypes.h> | ||||
| #include <ketypes.h> | ||||
| #include <ldrtypes.h> | ||||
| #include <rtltypes.h> | ||||
|  | ||||
| /* Architecture-specific low level data types headers */ | ||||
| #include ARCH_HEADER(hltypes.h) | ||||
| @@ -43,3 +44,6 @@ | ||||
|  | ||||
| /* Architecture specific XT routines*/ | ||||
| #include ARCH_HEADER(hlfuncs.h) | ||||
|  | ||||
| /* Callbacks */ | ||||
| #include <kertptr.h> | ||||
|   | ||||
| @@ -12,6 +12,9 @@ | ||||
| #include <xtdefs.h> | ||||
|  | ||||
|  | ||||
| /* Enumeration lists forward references */ | ||||
| typedef enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION, *PEXCEPTION_DISPOSITION; | ||||
|  | ||||
| /* Structures forward references */ | ||||
| typedef struct _CPPORT CPPORT, *PCPPORT; | ||||
| typedef struct _EFI_1394_DEVICE_PATH EFI_1394_DEVICE_PATH, *PEFI_1394_DEVICE_PATH; | ||||
| @@ -148,6 +151,8 @@ typedef struct _EFI_USB_DEVICE_PATH EFI_USB_DEVICE_PATH, *PEFI_USB_DEVICE_PATH; | ||||
| typedef struct _EFI_USB_WWID_DEVICE_PATH EFI_USB_WWID_DEVICE_PATH, *PEFI_USB_WWID_DEVICE_PATH; | ||||
| typedef struct _EFI_VENDOR_DEVICE_PATH EFI_VENDOR_DEVICE_PATH, *PEFI_VENDOR_DEVICE_PATH; | ||||
| typedef struct _EFI_VLAN_DEVICE_PATH EFI_VLAN_DEVICE_PATH, *PEFI_VLAN_DEVICE_PATH; | ||||
| typedef struct _EXCEPTION_RECORD EXCEPTION_RECORD, *PEXCEPTION_RECORD; | ||||
| typedef struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD; | ||||
| typedef struct _FIRMWARE_INFORMATION_BLOCK FIRMWARE_INFORMATION_BLOCK, *PFIRMWARE_INFORMATION_BLOCK; | ||||
| typedef struct _GUID GUID, *PGUID; | ||||
| typedef struct _KERNEL_INITIALIZATION_BLOCK KERNEL_INITIALIZATION_BLOCK, *PKERNEL_INITIALIZATION_BLOCK; | ||||
|   | ||||
| @@ -493,7 +493,7 @@ typedef enum _EFI_PXE_BASE_CODE_CALLBACK_STATUS | ||||
|     EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST | ||||
| } EFI_PXE_BASE_CODE_CALLBACK_STATUS, *PEFI_PXE_BASE_CODE_CALLBACK_STATUS; | ||||
|  | ||||
| /* EFI routines forward references */ | ||||
| /* EFI routine callbacks */ | ||||
| typedef EFI_STATUS (*PEFI_CONVERT_POINTER)(IN UINT_PTR DebugDisposition, IN OUT PVOID *Address); | ||||
| typedef EFI_STATUS (*PEFI_ALLOCATE_PAGES)(IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR NoPages, OUT PEFI_PHYSICAL_ADDRESS Memory); | ||||
| typedef EFI_STATUS (*PEFI_ALLOCATE_POOL)(IN EFI_MEMORY_TYPE PoolType, IN UINT_PTR Size, OUT PVOID *Buffer); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user