From 654e22e49149e312a55e7fc376ca45dfb23205c3 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 28 Dec 2010 01:04:55 +0000 Subject: [PATCH] [CMAKE] Add a few definitions for amd64 svn path=/branches/cmake-bringup/; revision=50179 --- include/ndk/amd64/ketypes.h | 95 +++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/include/ndk/amd64/ketypes.h b/include/ndk/amd64/ketypes.h index 9e9042fa19a..9a9ee6f39cc 100644 --- a/include/ndk/amd64/ketypes.h +++ b/include/ndk/amd64/ketypes.h @@ -81,6 +81,7 @@ Author: #define CR4_PGE 0x80 #define CR4_FXSR 0x200 #define CR4_XMMEXCPT 0x400 +#define CR4_CHANNELS 0x800 // // EFlags @@ -98,6 +99,39 @@ Author: #define EFLAGS_USER_SANITIZE 0x3F4DD7 #define EFLAG_SIGN 0x8000 #define EFLAG_ZERO 0x4000 +#define EFLAGS_TF_MASK 0x0100 +#define EFLAGS_TF_SHIFT 0x0008 +#define EFLAGS_ID_MASK 0x200000 +#define EFLAGS_IF_MASK 0x0200 +#define EFLAGS_IF_SHIFT 0x0009 + +// +// Machine Specific Registers +// +#define MSR_EFER 0xC0000080 +#define MSR_STAR 0xC0000081 +#define MSR_LSTAR 0xC0000082 +#define MSR_CSTAR 0xC0000083 +#define MSR_SYSCALL_MASK 0xC0000084 +#define MSR_FS_BASE 0xC0000100 +#define MSR_GS_BASE 0xC0000101 +#define MSR_GS_SWAP 0xC0000102 +#define MSR_MCG_STATUS 0x017A +#define MSR_AMD_ACCESS 0x9C5A203A + +// +// Flags in MSR_EFER +// +#define MSR_LMA 0x0400 +#define MSR_LME 0x0100 +#define MSR_SCE 0x0001 +#define MSR_NXE 0x0800 +#define MSR_PAT 0x0277 +#define MSR_DEGUG_CTL 0x01D9 +#define MSR_LAST_BRANCH_FROM 0x01DB +#define MSR_LAST_BRANCH_TO 0x01DC +#define MSR_LAST_EXCEPTION_FROM 0x01DD +#define MSR_LAST_EXCEPTION_TO 0x01DE // // IPI Types @@ -115,6 +149,15 @@ Author: #define PRCB_BUILD_DEBUG 1 #define PRCB_BUILD_UNIPROCESSOR 2 +// +// Service Table +// +#define NUMBER_SERVICE_TABLES 2 +#define SERVICE_NUMBER_MASK 0xFFF +#define SERVICE_TABLE_SHIFT 7 +#define SERVICE_TABLE_MASK 0x20 +#define SERVICE_TABLE_TEST 0x20 + // // HAL Variables // @@ -144,6 +187,8 @@ Author: #define SYNCH_LEVEL (IPI_LEVEL - 2) #endif +#define NMI_STACK_SIZE 0x2000 + // // Trap Frame Definition // @@ -863,6 +908,56 @@ typedef struct _KEXCEPTION_FRAME UINT64 Return; } KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; +typedef struct _DISPATCHER_CONTEXT +{ + ULONG64 ControlPc; + PVOID ImageBase; + PVOID FunctionEntry; + PVOID EstablisherFrame; + ULONG64 TargetIp; + PVOID ContextRecord; + PVOID LanguageHandler; + PVOID HandlerData; + PVOID HistoryTable; + ULONG ScopeIndex; +} DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; + + +typedef struct _KSTART_FRAME +{ + ULONG64 P1Home; + ULONG64 P2Home; + ULONG64 P3Home; + ULONG64 P4Home; + ULONG64 P5Home; + ULONG64 Return; +} KSTART_FRAME, *PKSTART_FRAME; + +typedef struct _KSWITCH_FRAME +{ + ULONG64 P1Home; + ULONG64 P2Home; + ULONG64 P3Home; + ULONG64 P4Home; + ULONG64 P5Home; + ULONG64 ApcBypass; + ULONG64 Rbp; + ULONG64 Return; +} KSWITCH_FRAME, *PKSWITCH_FRAME; + +typedef struct _KTIMER_TABLE_ENTRY +{ + ULONG_PTR Lock; + LIST_ENTRY Entry; + ULARGE_INTEGER Time; +} KTIMER_TABLE_ENTRY, *PKTIMER_TABLE_ENTRY; + +typedef struct _KTIMER_TABLE +{ + KTIMER* TimerExpiry[64]; + KTIMER_TABLE_ENTRY TimerEntries[256]; +} KTIMER_TABLE, *PKTIMER_TABLE; + // // Inline function to get current KPRCB //