[ros-diffs] [tkreuzer] 34711: add amd64 ketypes.h and mmtypes.h copied from x86

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Thu Jul 24 01:17:47 CEST 2008


Author: tkreuzer
Date: Wed Jul 23 18:17:46 2008
New Revision: 34711

URL: http://svn.reactos.org/svn/reactos?rev=34711&view=rev
Log:
add amd64 ketypes.h and mmtypes.h copied from x86

Added:
    branches/ros-amd64-bringup/reactos/include/ndk/amd64/
    branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h   (with props)
    branches/ros-amd64-bringup/reactos/include/ndk/amd64/mmtypes.h   (with props)
Modified:
    branches/ros-amd64-bringup/reactos/include/ndk/arch/ketypes.h

Added: branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h?rev=34711&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h (added)
+++ branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h [iso-8859-1] Wed Jul 23 18:17:46 2008
@@ -1,0 +1,725 @@
+/*++ NDK Version: 0098
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    ketypes.h (X86)
+
+Abstract:
+
+    i386 Type definitions for the Kernel services.
+
+Author:
+
+    Alex Ionescu (alexi at tinykrnl.org) - Updated - 27-Feb-2006
+
+--*/
+
+#ifndef _I386_KETYPES_H
+#define _I386_KETYPES_H
+
+//
+// Dependencies
+//
+
+//
+// KPCR Access for non-IA64 builds
+//
+#define K0IPCR                  ((ULONG_PTR)(KIP0PCRADDRESS))
+#define PCR                     ((volatile KPCR * const)K0IPCR)
+#if defined(CONFIG_SMP) || defined(NT_BUILD)
+#undef  KeGetPcr
+#define KeGetPcr()              ((volatile KPCR * const)__readfsdword(0x1C))
+#endif
+
+//
+// Machine Types
+//
+#define MACHINE_TYPE_ISA        0x0000
+#define MACHINE_TYPE_EISA       0x0001
+#define MACHINE_TYPE_MCA        0x0002
+
+//
+// X86 80386 Segment Types
+//
+#define I386_TASK_GATE          0x5
+#define I386_TSS                0x9
+#define I386_ACTIVE_TSS         0xB
+#define I386_CALL_GATE          0xC
+#define I386_INTERRUPT_GATE     0xE
+#define I386_TRAP_GATE          0xF
+
+//
+// Selector Names
+//
+#define RPL_MASK                0x0003
+#define MODE_MASK               0x0001
+#define KGDT_R0_CODE            0x8
+#define KGDT_R0_DATA            0x10
+#define KGDT_R3_CODE            0x18
+#define KGDT_R3_DATA            0x20
+#define KGDT_TSS                0x28
+#define KGDT_R0_PCR             0x30
+#define KGDT_R3_TEB             0x38
+#define KGDT_LDT                0x48
+#define KGDT_DF_TSS             0x50
+#define KGDT_NMI_TSS            0x58
+
+//
+// CR4
+//
+#define CR4_VME                 0x1
+#define CR4_PVI                 0x2
+#define CR4_TSD                 0x4
+#define CR4_DE                  0x8
+#define CR4_PSE                 0x10
+#define CR4_PAE                 0x20
+#define CR4_MCE                 0x40
+#define CR4_PGE                 0x80
+#define CR4_FXSR                0x200
+#define CR4_XMMEXCPT            0x400
+
+//
+// EFlags
+//
+#define EFLAGS_CF               0x01L
+#define EFLAGS_ZF               0x40L
+#define EFLAGS_TF               0x100L
+#define EFLAGS_INTERRUPT_MASK   0x200L
+#define EFLAGS_DF               0x400L
+#define EFLAGS_NESTED_TASK      0x4000L
+#define EFLAGS_V86_MASK         0x20000
+#define EFLAGS_ALIGN_CHECK      0x40000
+#define EFLAGS_VIF              0x80000
+#define EFLAGS_VIP              0x100000
+#define EFLAGS_USER_SANITIZE    0x3F4DD7
+#define EFLAG_SIGN              0x8000
+#define EFLAG_ZERO              0x4000
+
+//
+// IPI Types
+//
+#define IPI_APC                 1
+#define IPI_DPC                 2
+#define IPI_FREEZE              4
+#define IPI_PACKET_READY        8
+#define IPI_SYNCH_REQUEST       16
+
+//
+// PRCB Flags
+//
+#define PRCB_MAJOR_VERSION      1
+#define PRCB_BUILD_DEBUG        1
+#define PRCB_BUILD_UNIPROCESSOR 2
+
+//
+// HAL Variables
+//
+#define INITIAL_STALL_COUNT     0x64
+
+//
+// IOPM Definitions
+//
+#define IO_ACCESS_MAP_NONE      0
+#define IOPM_OFFSET             FIELD_OFFSET(KTSS, IoMaps[0].IoMap)
+#define KiComputeIopmOffset(MapNumber)              \
+    (MapNumber == IO_ACCESS_MAP_NONE) ?             \
+        (USHORT)(sizeof(KTSS)) :                    \
+        (USHORT)(FIELD_OFFSET(KTSS, IoMaps[MapNumber-1].IoMap))
+
+//
+// Static Kernel-Mode Address start (use MM_KSEG0_BASE for actual)
+//
+#define KSEG0_BASE              0x80000000
+
+//
+// Synchronization-level IRQL
+//
+#ifndef CONFIG_SMP
+#define SYNCH_LEVEL             DISPATCH_LEVEL
+#else
+#define SYNCH_LEVEL             (IPI_LEVEL - 1)
+#endif
+
+//
+// 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;
+    struct _EXCEPTION_REGISTRATION_RECORD FAR *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;
+
+//
+// LDT Entry Definition
+//
+#ifndef _LDT_ENTRY_DEFINED
+#define _LDT_ENTRY_DEFINED
+typedef struct _LDT_ENTRY
+{
+    USHORT LimitLow;
+    USHORT BaseLow;
+    union
+    {
+        struct
+        {
+            UCHAR BaseMid;
+            UCHAR Flags1;
+            UCHAR Flags2;
+            UCHAR BaseHi;
+        } Bytes;
+        struct
+        {
+            ULONG BaseMid:8;
+            ULONG Type:5;
+            ULONG Dpl:2;
+            ULONG Pres:1;
+            ULONG LimitHi:4;
+            ULONG Sys:1;
+            ULONG Reserved_0:1;
+            ULONG Default_Big:1;
+            ULONG Granularity:1;
+            ULONG BaseHi:8;
+        } Bits;
+    } HighWord;
+} LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
+#endif
+
+//
+// GDT Entry Definition
+//
+typedef struct _KGDTENTRY
+{
+    USHORT LimitLow;
+    USHORT BaseLow;
+    union
+    {
+        struct
+        {
+            UCHAR BaseMid;
+            UCHAR Flags1;
+            UCHAR Flags2;
+            UCHAR BaseHi;
+        } Bytes;
+        struct
+        {
+            ULONG BaseMid:8;
+            ULONG Type:5;
+            ULONG Dpl:2;
+            ULONG Pres:1;
+            ULONG LimitHi:4;
+            ULONG Sys:1;
+            ULONG Reserved_0:1;
+            ULONG Default_Big:1;
+            ULONG Granularity:1;
+            ULONG BaseHi:8;
+        } Bits;
+    } HighWord;
+} KGDTENTRY, *PKGDTENTRY;
+
+//
+// IDT Entry Access Definition
+//
+typedef struct _KIDT_ACCESS
+{
+    union
+    {
+        struct
+        {
+            UCHAR Reserved;
+            UCHAR SegmentType:4;
+            UCHAR SystemSegmentFlag:1;
+            UCHAR Dpl:2;
+            UCHAR Present:1;
+        };
+        USHORT Value;
+    };
+} KIDT_ACCESS, *PKIDT_ACCESS;
+
+//
+// IDT Entry Definition
+//
+typedef struct _KIDTENTRY
+{
+    USHORT Offset;
+    USHORT Selector;
+    USHORT Access;
+    USHORT ExtendedOffset;
+} KIDTENTRY, *PKIDTENTRY;
+
+typedef struct _DESCRIPTOR
+{
+    USHORT Pad;
+    USHORT Limit;
+    ULONG Base;
+} KDESCRIPTOR, *PKDESCRIPTOR;
+
+#ifndef NTOS_MODE_USER
+//
+// Macro to get current KPRCB
+//
+FORCEINLINE
+struct _KPRCB *
+KeGetCurrentPrcb(VOID)
+{
+    return (struct _KPRCB *)(ULONG_PTR)__readfsdword(FIELD_OFFSET(KPCR, Prcb));
+}
+
+//
+// FN/FX (FPU) Save Area Structures
+//
+typedef struct _FNSAVE_FORMAT
+{
+    ULONG ControlWord;
+    ULONG StatusWord;
+    ULONG TagWord;
+    ULONG ErrorOffset;
+    ULONG ErrorSelector;
+    ULONG DataOffset;
+    ULONG DataSelector;
+    UCHAR RegisterArea[80];
+} FNSAVE_FORMAT, *PFNSAVE_FORMAT;
+
+typedef struct _FXSAVE_FORMAT
+{
+    USHORT ControlWord;
+    USHORT StatusWord;
+    USHORT TagWord;
+    USHORT ErrorOpcode;
+    ULONG ErrorOffset;
+    ULONG ErrorSelector;
+    ULONG DataOffset;
+    ULONG DataSelector;
+    ULONG MXCsr;
+    ULONG MXCsrMask;
+    UCHAR RegisterArea[128];
+    UCHAR Reserved3[128];
+    UCHAR Reserved4[224];
+    UCHAR Align16Byte[8];
+} FXSAVE_FORMAT, *PFXSAVE_FORMAT;
+
+typedef struct _FX_SAVE_AREA
+{
+    union
+    {
+        FNSAVE_FORMAT FnArea;
+        FXSAVE_FORMAT FxArea;
+    } U;
+    ULONG NpxSavedCpu;
+    ULONG Cr0NpxState;
+} FX_SAVE_AREA, *PFX_SAVE_AREA;
+
+//
+// Special Registers Structure (outside of CONTEXT)
+//
+typedef struct _KSPECIAL_REGISTERS
+{
+    ULONG Cr0;
+    ULONG Cr2;
+    ULONG Cr3;
+    ULONG Cr4;
+    ULONG KernelDr0;
+    ULONG KernelDr1;
+    ULONG KernelDr2;
+    ULONG KernelDr3;
+    ULONG KernelDr6;
+    ULONG KernelDr7;
+    KDESCRIPTOR Gdtr;
+    KDESCRIPTOR Idtr;
+    USHORT Tr;
+    USHORT Ldtr;
+    ULONG Reserved[6];
+} KSPECIAL_REGISTERS, *PKSPECIAL_REGISTERS;
+
+//
+// Processor State Data
+//
+typedef struct _KPROCESSOR_STATE
+{
+    CONTEXT ContextFrame;
+    KSPECIAL_REGISTERS SpecialRegisters;
+} KPROCESSOR_STATE, *PKPROCESSOR_STATE;
+
+//
+// Processor Region Control Block
+//
+#pragma pack(push,4)
+typedef struct _KPRCB
+{
+    USHORT MinorVersion;
+    USHORT MajorVersion;
+    struct _KTHREAD *CurrentThread;
+    struct _KTHREAD *NextThread;
+    struct _KTHREAD *IdleThread;
+    UCHAR Number;
+    UCHAR Reserved;
+    USHORT BuildType;
+    KAFFINITY SetMember;
+    UCHAR CpuType;
+    UCHAR CpuID;
+    USHORT CpuStep;
+    KPROCESSOR_STATE ProcessorState;
+    ULONG KernelReserved[16];
+    ULONG HalReserved[16];
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    ULONG CFlushSize;
+    UCHAR PrcbPad0[88];
+#else
+    UCHAR PrcbPad0[92];
+#endif
+    KSPIN_LOCK_QUEUE LockQueue[LockQueueMaximumLock];
+    struct _KTHREAD *NpxThread;
+    ULONG InterruptCount;
+    ULONG KernelTime;
+    ULONG UserTime;
+    ULONG DpcTime;
+    ULONG DebugDpcTime;
+    ULONG InterruptTime;
+    ULONG AdjustDpcThreshold;
+    ULONG PageColor;
+    UCHAR SkipTick;
+    UCHAR DebuggerSavedIRQL;
+#if (NTDDI_VERSION >= NTDDI_WS03)
+    UCHAR NodeColor;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    UCHAR PollSlot;
+#else
+    UCHAR Spare1;
+#endif
+    ULONG NodeShiftedColor;
+#else
+    UCHAR Spare1[6];
+#endif
+    struct _KNODE *ParentNode;
+    ULONG MultiThreadProcessorSet;
+    struct _KPRCB *MultiThreadSetMaster;
+#if (NTDDI_VERSION >= NTDDI_WS03)
+    ULONG SecondaryColorMask;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    ULONG DpcTimeLimit;
+#else
+    LONG Sleeping;
+#endif
+#else
+    ULONG ThreadStartCount[2];
+#endif
+    ULONG CcFastReadNoWait;
+    ULONG CcFastReadWait;
+    ULONG CcFastReadNotPossible;
+    ULONG CcCopyReadNoWait;
+    ULONG CcCopyReadWait;
+    ULONG CcCopyReadNoWaitMiss;
+#if (NTDDI_VERSION < NTDDI_LONGHORN)
+    ULONG KeAlignmentFixupCount;
+#endif
+    ULONG SpareCounter0;
+#if (NTDDI_VERSION < NTDDI_LONGHORN)
+    ULONG KeDcacheFlushCount;
+    ULONG KeExceptionDispatchCount;
+    ULONG KeFirstLevelTbFills;
+    ULONG KeFloatingEmulationCount;
+    ULONG KeIcacheFlushCount;
+    ULONG KeSecondLevelTbFills;
+    ULONG KeSystemCalls;
+#endif
+    volatile ULONG IoReadOperationCount;
+    volatile ULONG IoWriteOperationCount;
+    volatile ULONG IoOtherOperationCount;
+    LARGE_INTEGER IoReadTransferCount;
+    LARGE_INTEGER IoWriteTransferCount;
+    LARGE_INTEGER IoOtherTransferCount;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    ULONG CcFastMdlReadNoWait;
+    ULONG CcFastMdlReadWait;
+    ULONG CcFastMdlReadNotPossible;
+    ULONG CcMapDataNoWait;
+    ULONG CcMapDataWait;
+    ULONG CcPinMappedDataCount;
+    ULONG CcPinReadNoWait;
+    ULONG CcPinReadWait;
+    ULONG CcMdlReadNoWait;
+    ULONG CcMdlReadWait;
+    ULONG CcLazyWriteHotSpots;
+    ULONG CcLazyWriteIos;
+    ULONG CcLazyWritePages;
+    ULONG CcDataFlushes;
+    ULONG CcDataPages;
+    ULONG CcLostDelayedWrites;
+    ULONG CcFastReadResourceMiss;
+    ULONG CcCopyReadWaitMiss;
+    ULONG CcFastMdlReadResourceMiss;
+    ULONG CcMapDataNoWaitMiss;
+    ULONG CcMapDataWaitMiss;
+    ULONG CcPinReadNoWaitMiss;
+    ULONG CcPinReadWaitMiss;
+    ULONG CcMdlReadNoWaitMiss;
+    ULONG CcMdlReadWaitMiss;
+    ULONG CcReadAheadIos;
+    ULONG KeAlignmentFixupCount;
+    ULONG KeExceptionDispatchCount;
+    ULONG KeSystemCalls;
+    ULONG PrcbPad1[3];
+#else
+    ULONG SpareCounter1[8];
+#endif
+    PP_LOOKASIDE_LIST PPLookasideList[16];
+    PP_LOOKASIDE_LIST PPNPagedLookasideList[32];
+    PP_LOOKASIDE_LIST PPPagedLookasideList[32];
+    volatile ULONG PacketBarrier;
+    volatile ULONG ReverseStall;
+    PVOID IpiFrame;
+    UCHAR PrcbPad2[52];
+    volatile PVOID CurrentPacket[3];
+    volatile ULONG TargetSet;
+    volatile PKIPI_WORKER WorkerRoutine;
+    volatile ULONG IpiFrozen;
+    UCHAR PrcbPad3[40];
+    volatile ULONG RequestSummary;
+    volatile struct _KPRCB *SignalDone;
+    UCHAR PrcbPad4[56];
+    struct _KDPC_DATA DpcData[2];
+    PVOID DpcStack;
+    ULONG MaximumDpcQueueDepth;
+    ULONG DpcRequestRate;
+    ULONG MinimumDpcRate;
+    volatile UCHAR DpcInterruptRequested;
+    volatile UCHAR DpcThreadRequested;
+    volatile UCHAR DpcRoutineActive;
+    volatile UCHAR DpcThreadActive;
+    ULONG PrcbLock;
+    ULONG DpcLastCount;
+    volatile ULONG TimerHand;
+    volatile ULONG TimerRequest;
+    PVOID DpcThread;
+    KEVENT DpcEvent;
+    UCHAR ThreadDpcEnable;
+    volatile BOOLEAN QuantumEnd;
+    UCHAR PrcbPad50;
+    volatile UCHAR IdleSchedule;
+    LONG DpcSetEventRequest;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    LONG Sleeping;
+    ULONG PeriodicCount;
+    ULONG PeriodicBias;
+    UCHAR PrcbPad5[6];
+#else
+    UCHAR PrcbPad5[18];
+#endif
+    LONG TickOffset;
+    KDPC CallDpc;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    LONG ClockKeepAlive;
+    UCHAR ClockCheckSlot;
+    UCHAR ClockPollCycle;
+    UCHAR PrcbPad6[2];
+    LONG DpcWatchdogPeriod;
+    LONG DpcWatchDogCount;
+    LONG ThreadWatchdogPeriod;
+    LONG ThreadWatchDogCount;
+    ULONG PrcbPad70[2];
+#else
+    ULONG PrcbPad7[8];
+#endif
+    LIST_ENTRY WaitListHead;
+    ULONG ReadySummary;
+    ULONG QueueIndex;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    SINGLE_LIST_ENTRY DeferredReadyListHead;
+    ULONGLONG StartCycles;
+    ULONGLONG CycleTime;
+    ULONGLONG PrcbPad71[3];
+    LIST_ENTRY DispatcherReadyListHead[32];
+#else
+    LIST_ENTRY DispatcherReadyListHead[32];
+    SINGLE_LIST_ENTRY DeferredReadyListHead;
+    ULONG PrcbPad72[11];
+#endif
+    PVOID ChainedInterruptList;
+    LONG LookasideIrpFloat;
+    volatile LONG MmPageFaultCount;
+    volatile LONG MmCopyOnWriteCount;
+    volatile LONG MmTransitionCount;
+    volatile LONG MmCacheTransitionCount;
+    volatile LONG MmDemandZeroCount;
+    volatile LONG MmPageReadCount;
+    volatile LONG MmPageReadIoCount;
+    volatile LONG MmCacheReadCount;
+    volatile LONG MmCacheIoCount;
+    volatile LONG MmDirtyPagesWriteCount;
+    volatile LONG MmDirtyWriteIoCount;
+    volatile LONG MmMappedPagesWriteCount;
+    volatile LONG MmMappedWriteIoCount;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    ULONG CachedCommit;
+    ULONG CachedResidentAvailable;
+    PVOID HyperPte;
+    UCHAR CpuVendor;
+    UCHAR PrcbPad9[3];
+#else
+    ULONG SpareFields0[1];
+#endif
+    CHAR VendorString[13];
+    UCHAR InitialApicId;
+    UCHAR LogicalProcessorsPerPhysicalProcessor;
+    ULONG MHz;
+    ULONG FeatureBits;
+    LARGE_INTEGER UpdateSignature;
+    volatile LARGE_INTEGER IsrTime;
+    LARGE_INTEGER SpareField1;
+    FX_SAVE_AREA NpxSaveArea;
+    PROCESSOR_POWER_STATE PowerState;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    KDPC DpcWatchdogDoc;
+    KTIMER DpcWatchdogTimer;
+    PVOID WheaInfo;
+    PVOID EtwSupport;
+    SLIST_HEADER InterruptObjectPool;
+    LARGE_INTEGER HyperCallPagePhysical;
+    LARGE_INTEGER HyperCallPageVirtual;
+    PVOID RateControl;
+    CACHE_DESCRIPTOR Cache[5];
+    ULONG CacheCount;
+    ULONG CacheProcessorMask[5];
+    UCHAR LogicalProcessorsPerCore;
+    UCHAR PrcbPad8[3];
+    ULONG PackageProcessorSet;
+    ULONG CoreProcessorSet;
+#endif
+} KPRCB, *PKPRCB;
+
+//
+// Processor Control Region
+//
+typedef struct _KIPCR
+{
+    union
+    {
+        NT_TIB NtTib;
+        struct
+        {
+            struct _EXCEPTION_REGISTRATION_RECORD *Used_ExceptionList;
+            PVOID Used_StackBase;
+            PVOID PerfGlobalGroupMask;
+            PVOID TssCopy;
+            ULONG ContextSwitches;
+            KAFFINITY SetMemberCopy;
+            PVOID Used_Self;
+        };
+    };
+    struct _KPCR *Self;
+    struct _KPRCB *Prcb;
+    KIRQL Irql;
+    ULONG IRR;
+    ULONG IrrActive;
+    ULONG IDR;
+    PVOID KdVersionBlock;
+    PKIDTENTRY IDT;
+    PKGDTENTRY GDT;
+    struct _KTSS *TSS;
+    USHORT MajorVersion;
+    USHORT MinorVersion;
+    KAFFINITY SetMember;
+    ULONG StallScaleFactor;
+    UCHAR SparedUnused;
+    UCHAR Number;
+    UCHAR Reserved;
+    UCHAR L2CacheAssociativity;
+    ULONG VdmAlert;
+    ULONG KernelReserved[14];
+    ULONG SecondLevelCacheSize;
+    ULONG HalReserved[16];
+    ULONG InterruptMode;
+    UCHAR Spare1;
+    ULONG KernelReserved2[17];
+    KPRCB PrcbData;
+} KIPCR, *PKIPCR;
+#pragma pack(pop)
+
+//
+// TSS Definition
+//
+typedef struct _KiIoAccessMap
+{
+    UCHAR DirectionMap[32];
+    UCHAR IoMap[8196];
+} KIIO_ACCESS_MAP;
+
+typedef struct _KTSS
+{
+    USHORT Backlink;
+    USHORT Reserved0;
+    ULONG Esp0;
+    USHORT Ss0;
+    USHORT Reserved1;
+    ULONG NotUsed1[4];
+    ULONG CR3;
+    ULONG Eip;
+    ULONG EFlags;
+    ULONG Eax;
+    ULONG Ecx;
+    ULONG Edx;
+    ULONG Ebx;
+    ULONG Esp;
+    ULONG Ebp;
+    ULONG Esi;
+    ULONG Edi;
+    USHORT Es;
+    USHORT Reserved2;
+    USHORT Cs;
+    USHORT Reserved3;
+    USHORT Ss;
+    USHORT Reserved4;
+    USHORT Ds;
+    USHORT Reserved5;
+    USHORT Fs;
+    USHORT Reserved6;
+    USHORT Gs;
+    USHORT Reserved7;
+    USHORT LDT;
+    USHORT Reserved8;
+    USHORT Flags;
+    USHORT IoMapBase;
+    KIIO_ACCESS_MAP IoMaps[1];
+    UCHAR IntDirectionMap[32];
+} KTSS, *PKTSS;
+
+//
+// i386 CPUs don't have exception frames
+//
+typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
+#endif
+#endif

Propchange: branches/ros-amd64-bringup/reactos/include/ndk/amd64/ketypes.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: branches/ros-amd64-bringup/reactos/include/ndk/amd64/mmtypes.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/ndk/amd64/mmtypes.h?rev=34711&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/ndk/amd64/mmtypes.h (added)
+++ branches/ros-amd64-bringup/reactos/include/ndk/amd64/mmtypes.h [iso-8859-1] Wed Jul 23 18:17:46 2008
@@ -1,0 +1,169 @@
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    mmtypes.h (X86)
+
+Abstract:
+
+    i386 Type definitions for the Memory Manager
+
+Author:
+
+    Alex Ionescu (alex.ionescu at reactos.com)   06-Oct-2004
+
+--*/
+
+#ifndef _AMD64_MMTYPES_H
+#define _AMD64_MMTYPES_H
+
+//
+// Dependencies
+//
+
+//
+// Page-related Macros
+//
+#define PAGE_SIZE                         0x1000
+#define PAGE_SHIFT                        12L
+#define MM_ALLOCATION_GRANULARITY         0x10000
+#define MM_ALLOCATION_GRANULARITY_SHIFT   16L
+
+//
+// Sanity checks for Paging Macros
+//
+#ifdef C_ASSERT
+C_ASSERT(PAGE_SIZE == (1 << PAGE_SHIFT));
+C_ASSERT(MM_ALLOCATION_GRANULARITY == (1 << MM_ALLOCATION_GRANULARITY_SHIFT));
+C_ASSERT(MM_ALLOCATION_GRANULARITY &&
+         !(MM_ALLOCATION_GRANULARITY & (MM_ALLOCATION_GRANULARITY - 1)));
+C_ASSERT(MM_ALLOCATION_GRANULARITY >= PAGE_SIZE);
+#endif
+
+//
+// PAE SEG0 Base?
+//
+#define KSEG0_BASE_PAE                    0xE0000000
+
+//
+// Page Table Entry Definitions
+//
+typedef struct _HARDWARE_PTE_X86
+{
+    ULONG Valid:1;
+    ULONG Write:1;
+    ULONG Owner:1;
+    ULONG WriteThrough:1;
+    ULONG CacheDisable:1;
+    ULONG Accessed:1;
+    ULONG Dirty:1;
+    ULONG LargePage:1;
+    ULONG Global:1;
+    ULONG CopyOnWrite:1;
+    ULONG Prototype: 1;
+    ULONG reserved: 1;
+    ULONG PageFrameNumber:20;
+} HARDWARE_PTE_X86, *PHARDWARE_PTE_X86;
+
+typedef struct _MMPTE_SOFTWARE
+{
+    ULONG Valid:1;
+    ULONG PageFileLow:4;
+    ULONG Protection:5;
+    ULONG Prototype:1;
+    ULONG Transition:1;
+    ULONG PageFileHigh:20;
+} MMPTE_SOFTWARE;
+
+typedef struct _MMPTE_TRANSITION
+{
+    ULONG Valid:1;
+    ULONG Write:1;
+    ULONG Owner:1;
+    ULONG WriteThrough:1;
+    ULONG CacheDisable:1;
+    ULONG Protection:5;
+    ULONG Prototype:1;
+    ULONG Transition:1;
+    ULONG PageFrameNumber:20;
+} MMPTE_TRANSITION;
+
+typedef struct _MMPTE_PROTOTYPE
+{
+    ULONG Valid:1;
+    ULONG ProtoAddressLow:7;
+    ULONG ReadOnly:1;
+    ULONG WhichPool:1;
+    ULONG Prototype:1;
+    ULONG ProtoAddressHigh:21;
+} MMPTE_PROTOTYPE;
+
+typedef struct _MMPTE_SUBSECTION
+{
+    ULONG Valid:1;
+    ULONG SubsectionAddressLow:4;
+    ULONG Protection:5;
+    ULONG Prototype:1;
+    ULONG SubsectionAddressHigh:20;
+    ULONG WhichPool:1;
+} MMPTE_SUBSECTION;
+
+typedef struct _MMPTE_LIST
+{
+    ULONG Valid:1;
+    ULONG OneEntry:1;
+    ULONG filler0:8;
+    ULONG NextEntry:20;
+    ULONG Prototype:1;
+    ULONG filler1:1;
+} MMPTE_LIST;
+
+#ifndef CONFIG_SMP
+
+typedef struct _MMPTE_HARDWARE
+{
+    ULONG Valid:1;
+    ULONG Write:1;
+    ULONG Owner:1;
+    ULONG WriteThrough:1;
+    ULONG CacheDisable:1;
+    ULONG Accessed:1;
+    ULONG Dirty:1;
+    ULONG LargePage:1;
+    ULONG Global:1;
+    ULONG CopyOnWrite:1;
+    ULONG Prototype:1;
+    ULONG reserved:1;
+    ULONG PageFrameNumber:20;
+} MMPTE_HARDWARE, *PMMPTE_HARDWARE;
+
+#else
+
+typedef struct _MMPTE_HARDWARE
+{
+    ULONG Valid:1;
+    ULONG Writable:1;
+    ULONG Owner:1;
+    ULONG WriteThrough:1;
+    ULONG CacheDisable:1;
+    ULONG Accessed:1;
+    ULONG Dirty:1;
+    ULONG LargePage:1;
+    ULONG Global:1;
+    ULONG CopyOnWrite:1;
+    ULONG Prototype:1;
+    ULONG Write:1;
+    ULONG PageFrameNumber:20;
+} MMPTE_HARDWARE, *PMMPTE_HARDWARE;
+
+#endif
+
+//
+// Use the right PTE structure
+//
+#define HARDWARE_PTE        HARDWARE_PTE_X86
+#define PHARDWARE_PTE       PHARDWARE_PTE_X86
+
+#endif

Propchange: branches/ros-amd64-bringup/reactos/include/ndk/amd64/mmtypes.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: branches/ros-amd64-bringup/reactos/include/ndk/arch/ketypes.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/ndk/arch/ketypes.h?rev=34711&r1=34710&r2=34711&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/ndk/arch/ketypes.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/include/ndk/arch/ketypes.h [iso-8859-1] Wed Jul 23 18:17:46 2008
@@ -24,6 +24,8 @@
 //
 #ifdef _M_IX86
 #include <i386/ketypes.h>
+#elif defined(_M_AMD64)
+#include <amd64/ketypes.h>
 #elif defined(_M_PPC)
 #include <powerpc/ketypes.h>
 #elif defined(_M_ARM)



More information about the Ros-diffs mailing list