Basic context, frames and exceptions definitions
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
f74ba62f24
commit
ca1d7ddfe8
@ -9,12 +9,19 @@
|
|||||||
#ifndef __XTDK_AMD64_KETYPES_H
|
#ifndef __XTDK_AMD64_KETYPES_H
|
||||||
#define __XTDK_AMD64_KETYPES_H
|
#define __XTDK_AMD64_KETYPES_H
|
||||||
|
|
||||||
|
#include <xtbase.h>
|
||||||
#include <xttypes.h>
|
#include <xttypes.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* Size of the exception area */
|
||||||
|
#define EXCEPTION_AREA_SIZE 64
|
||||||
|
|
||||||
/* IOPM Definitions */
|
/* IOPM Definitions */
|
||||||
#define IO_ACCESS_MAP_NONE 0
|
#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 */
|
/* Static Kernel-Mode address start */
|
||||||
#define KSEG0_BASE 0xFFFFF80000000000
|
#define KSEG0_BASE 0xFFFFF80000000000
|
||||||
|
|
||||||
@ -24,6 +31,104 @@
|
|||||||
/* XTOS Kernel stack size */
|
/* XTOS Kernel stack size */
|
||||||
#define KERNEL_STACK_SIZE 0x8000
|
#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 */
|
/* Global Descriptor Table (GDT) entry union definition */
|
||||||
typedef union _KGDTENTRY
|
typedef union _KGDTENTRY
|
||||||
{
|
{
|
||||||
@ -91,4 +196,142 @@ typedef struct _KTSS
|
|||||||
USHORT IoMapBase;
|
USHORT IoMapBase;
|
||||||
} KTSS, *PKTSS;
|
} 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 */
|
#endif /* __XTDK_AMD64_KETYPES_H */
|
||||||
|
@ -9,10 +9,21 @@
|
|||||||
#ifndef __XTDK_AMD64_XTSTRUCT_H
|
#ifndef __XTDK_AMD64_XTSTRUCT_H
|
||||||
#define __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 */
|
/* Architecture-related structures forward references */
|
||||||
|
typedef struct ALIGN(16) _CONTEXT CONTEXT, *PCONTEXT;
|
||||||
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
|
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 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;
|
typedef struct _KTSS KTSS, *PKTSS;
|
||||||
|
|
||||||
/* Architecture-related unions forward references */
|
/* Architecture-related unions forward references */
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#ifndef __XTDK_I686_KETYPES_H
|
#ifndef __XTDK_I686_KETYPES_H
|
||||||
#define __XTDK_I686_KETYPES_H
|
#define __XTDK_I686_KETYPES_H
|
||||||
|
|
||||||
|
#include <xtstruct.h>
|
||||||
#include <xttypes.h>
|
#include <xttypes.h>
|
||||||
|
|
||||||
|
|
||||||
@ -28,6 +29,61 @@
|
|||||||
/* XTOS Kernel stack size */
|
/* XTOS Kernel stack size */
|
||||||
#define KERNEL_STACK_SIZE 0x4000
|
#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 */
|
/* Global Descriptor Table (GDT) entry structure definition */
|
||||||
typedef struct _KGDTENTRY
|
typedef struct _KGDTENTRY
|
||||||
{
|
{
|
||||||
@ -59,7 +115,8 @@ typedef struct _KGDTENTRY
|
|||||||
} KGDTENTRY, *PKGDTENTRY;
|
} KGDTENTRY, *PKGDTENTRY;
|
||||||
|
|
||||||
/* Interrupt Descriptor Table (IDT) entry structure definition */
|
/* Interrupt Descriptor Table (IDT) entry structure definition */
|
||||||
typedef struct _KIDTENTRY {
|
typedef struct _KIDTENTRY
|
||||||
|
{
|
||||||
USHORT Offset;
|
USHORT Offset;
|
||||||
USHORT Selector;
|
USHORT Selector;
|
||||||
USHORT Access;
|
USHORT Access;
|
||||||
@ -67,13 +124,15 @@ typedef struct _KIDTENTRY {
|
|||||||
} KIDTENTRY, *PKIDTENTRY;
|
} KIDTENTRY, *PKIDTENTRY;
|
||||||
|
|
||||||
/* Interrupt direction access map structure definition */
|
/* Interrupt direction access map structure definition */
|
||||||
typedef struct _KIIO_ACCESS_MAP {
|
typedef struct _KIIO_ACCESS_MAP
|
||||||
|
{
|
||||||
UCHAR DirectionMap[IOPM_DIRECTION_MAP_SIZE];
|
UCHAR DirectionMap[IOPM_DIRECTION_MAP_SIZE];
|
||||||
UCHAR IoMap[IOPM_FULL_SIZE];
|
UCHAR IoMap[IOPM_FULL_SIZE];
|
||||||
} KIIO_ACCESS_MAP, *PKIIO_ACCESS_MAP;
|
} KIIO_ACCESS_MAP, *PKIIO_ACCESS_MAP;
|
||||||
|
|
||||||
/* Task State Segment (TSS) structure definition */
|
/* Task State Segment (TSS) structure definition */
|
||||||
typedef struct _KTSS {
|
typedef struct _KTSS
|
||||||
|
{
|
||||||
USHORT Backlink;
|
USHORT Backlink;
|
||||||
USHORT Reserved0;
|
USHORT Reserved0;
|
||||||
ULONG Esp0;
|
ULONG Esp0;
|
||||||
@ -111,4 +170,50 @@ typedef struct _KTSS {
|
|||||||
UCHAR IntDirectionMap[IOPM_DIRECTION_MAP_SIZE];
|
UCHAR IntDirectionMap[IOPM_DIRECTION_MAP_SIZE];
|
||||||
} KTSS, *PKTSS;
|
} 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 */
|
#endif /* __XTDK_I686_KETYPES_H */
|
||||||
|
@ -9,14 +9,24 @@
|
|||||||
#ifndef __XTDK_I686_XTSTRUCT_H
|
#ifndef __XTDK_I686_XTSTRUCT_H
|
||||||
#define __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 */
|
/* Architecture-related structures forward references */
|
||||||
|
typedef struct _CONTEXT CONTEXT, *PCONTEXT;
|
||||||
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
|
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 HARDWARE_PTE, *PHARDWARE_PTE;
|
||||||
typedef struct _HARDWARE_PTE_PAE HARDWARE_PTE_PAE, *PHARDWARE_PTE_PAE;
|
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 _KGDTENTRY KGDTENTRY, *PKGDTENTRY;
|
||||||
typedef struct _KIDTENTRY KIDTENTRY, *PKIDTENTRY;
|
typedef struct _KIDTENTRY KIDTENTRY, *PKIDTENTRY;
|
||||||
typedef struct _KIIO_ACCESS_MAP KIIO_ACCESS_MAP, *PKIIO_ACCESS_MAP;
|
typedef struct _KIIO_ACCESS_MAP KIIO_ACCESS_MAP, *PKIIO_ACCESS_MAP;
|
||||||
|
typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME;
|
||||||
typedef struct _KTSS KTSS, *PKTSS;
|
typedef struct _KTSS KTSS, *PKTSS;
|
||||||
|
|
||||||
#endif /* __XTDK_I686_XTSTRUCT_H */
|
#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) */
|
/* Interrupt Request Level (IRQL) */
|
||||||
typedef UCHAR KIRQL, *PKIRQL;
|
typedef UCHAR KIRQL, *PKIRQL;
|
||||||
|
|
||||||
|
/* Processor modes */
|
||||||
|
typedef CHAR KPROCESSOR_MODE, *PKPROCESSOR_MODE;
|
||||||
|
|
||||||
/* 128-bit buffer containing a unique identifier value */
|
/* 128-bit buffer containing a unique identifier value */
|
||||||
typedef struct _GUID
|
typedef struct _GUID
|
||||||
{
|
{
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Base XT headers */
|
/* Base XT headers */
|
||||||
#include <xttarget.h>
|
|
||||||
#include <xttypes.h>
|
|
||||||
#include <xtdefs.h>
|
#include <xtdefs.h>
|
||||||
#include <xtstatus.h>
|
#include <xtstatus.h>
|
||||||
|
#include <xttarget.h>
|
||||||
|
#include <xttypes.h>
|
||||||
|
|
||||||
/* XT forward references */
|
/* XT forward references */
|
||||||
#include <xtstruct.h>
|
#include <xtstruct.h>
|
||||||
@ -21,15 +21,16 @@
|
|||||||
/* Architecture-independent XT API */
|
/* Architecture-independent XT API */
|
||||||
#include <xtbase.h>
|
#include <xtbase.h>
|
||||||
#include <xtdebug.h>
|
#include <xtdebug.h>
|
||||||
|
#include <xtfw.h>
|
||||||
#include <xtimage.h>
|
#include <xtimage.h>
|
||||||
#include <xtuefi.h>
|
#include <xtuefi.h>
|
||||||
#include <xtfw.h>
|
|
||||||
|
|
||||||
/* Low level data types headers */
|
/* Low level data types headers */
|
||||||
#include <rtltypes.h>
|
|
||||||
#include <ldrtypes.h>
|
|
||||||
#include <hltypes.h>
|
#include <hltypes.h>
|
||||||
#include <iotypes.h>
|
#include <iotypes.h>
|
||||||
|
#include <ketypes.h>
|
||||||
|
#include <ldrtypes.h>
|
||||||
|
#include <rtltypes.h>
|
||||||
|
|
||||||
/* Architecture-specific low level data types headers */
|
/* Architecture-specific low level data types headers */
|
||||||
#include ARCH_HEADER(hltypes.h)
|
#include ARCH_HEADER(hltypes.h)
|
||||||
@ -43,3 +44,6 @@
|
|||||||
|
|
||||||
/* Architecture specific XT routines*/
|
/* Architecture specific XT routines*/
|
||||||
#include ARCH_HEADER(hlfuncs.h)
|
#include ARCH_HEADER(hlfuncs.h)
|
||||||
|
|
||||||
|
/* Callbacks */
|
||||||
|
#include <kertptr.h>
|
||||||
|
@ -12,6 +12,9 @@
|
|||||||
#include <xtdefs.h>
|
#include <xtdefs.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* Enumeration lists forward references */
|
||||||
|
typedef enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION, *PEXCEPTION_DISPOSITION;
|
||||||
|
|
||||||
/* Structures forward references */
|
/* Structures forward references */
|
||||||
typedef struct _CPPORT CPPORT, *PCPPORT;
|
typedef struct _CPPORT CPPORT, *PCPPORT;
|
||||||
typedef struct _EFI_1394_DEVICE_PATH EFI_1394_DEVICE_PATH, *PEFI_1394_DEVICE_PATH;
|
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_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_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 _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 _FIRMWARE_INFORMATION_BLOCK FIRMWARE_INFORMATION_BLOCK, *PFIRMWARE_INFORMATION_BLOCK;
|
||||||
typedef struct _GUID GUID, *PGUID;
|
typedef struct _GUID GUID, *PGUID;
|
||||||
typedef struct _KERNEL_INITIALIZATION_BLOCK KERNEL_INITIALIZATION_BLOCK, *PKERNEL_INITIALIZATION_BLOCK;
|
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_LAST
|
||||||
} EFI_PXE_BASE_CODE_CALLBACK_STATUS, *PEFI_PXE_BASE_CODE_CALLBACK_STATUS;
|
} 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_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_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);
|
typedef EFI_STATUS (*PEFI_ALLOCATE_POOL)(IN EFI_MEMORY_TYPE PoolType, IN UINT_PTR Size, OUT PVOID *Buffer);
|
||||||
|
Loading…
Reference in New Issue
Block a user