#define IPI_FREEZE 3
#define IPI_PACKET_READY 4
#define IPI_SYNCH_REQUEST 10
+#define MAXIMUM_VECTOR 0x100
+
+#ifndef ROUND_UP
+#define ROUND_UP(x,y) (((x) + ((y)-1)) & ~((y)-1))
+#endif
+
+typedef double DOUBLE;
+
+typedef struct _FX_SAVE_AREA {
+ ULONG Fr[32];
+} FX_SAVE_AREA;
+
+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;
//
// Trap Frame Definition
//
typedef struct _KTRAP_FRAME
{
- PVOID TrapFrame;\r
- UCHAR OldIrql;\r
- UCHAR PreviousMode;\r
- UCHAR SavedApcStateIndex;\r
- UCHAR SavedKernelApcDisable;\r
- UCHAR ExceptionRecord[ROUND_UP(sizeof(EXCEPTION_RECORD), ULONGLONG];\r
- ULONG FILL2;\r
- ULONG Gpr0;\r
- ULONG Gpr1;\r
- ULONG Gpr2;\r
- ULONG Gpr3;\r
- ULONG Gpr4;\r
- ULONG Gpr5;\r
- ULONG Gpr6;\r
- ULONG Gpr7;\r
- ULONG Gpr8;\r
- ULONG Gpr9;\r
- ULONG Gpr10;\r
- ULONG Gpr11;\r
- ULONG Gpr12;\r
- DOUBLE Fpr0;\r
- DOUBLE Fpr1;\r
- DOUBLE Fpr2;\r
- DOUBLE Fpr3;\r
- DOUBLE Fpr4;\r
- DOUBLE Fpr5;\r
- DOUBLE Fpr6;\r
- DOUBLE Fpr7;\r
- DOUBLE Fpr8;\r
- DOUBLE Fpr9;\r
- DOUBLE Fpr10;\r
- DOUBLE Fpr11;\r
- DOUBLE Fpr12;\r
- DOUBLE Fpr13;\r
- DOUBLE Fpscr;\r
- ULONG Cr;\r
- ULONG Xer;\r
- ULONG Msr;\r
- ULONG Iar;\r
- ULONG Lr;\r
- ULONG Ctr;\r
- ULONG Dr0;\r
- ULONG Dr1;\r
- ULONG Dr2;\r
- ULONG Dr3;\r
- ULONG Dr4;\r
- ULONG Dr5;\r
- ULONG Dr6;\r
+ PVOID TrapFrame;
+ UCHAR OldIrql;
+ UCHAR PreviousMode;
+ UCHAR SavedApcStateIndex;
+ UCHAR SavedKernelApcDisable;
+ UCHAR ExceptionRecord[ROUND_UP(sizeof(EXCEPTION_RECORD), sizeof(ULONGLONG))];
+ ULONG FILL2;
+ ULONG Gpr0;
+ ULONG Gpr1;
+ ULONG Gpr2;
+ ULONG Gpr3;
+ ULONG Gpr4;
+ ULONG Gpr5;
+ ULONG Gpr6;
+ ULONG Gpr7;
+ ULONG Gpr8;
+ ULONG Gpr9;
+ ULONG Gpr10;
+ ULONG Gpr11;
+ ULONG Gpr12;
+ DOUBLE Fpr0;
+ DOUBLE Fpr1;
+ DOUBLE Fpr2;
+ DOUBLE Fpr3;
+ DOUBLE Fpr4;
+ DOUBLE Fpr5;
+ DOUBLE Fpr6;
+ DOUBLE Fpr7;
+ DOUBLE Fpr8;
+ DOUBLE Fpr9;
+ DOUBLE Fpr10;
+ DOUBLE Fpr11;
+ DOUBLE Fpr12;
+ DOUBLE Fpr13;
+ DOUBLE Fpscr;
+ ULONG Cr;
+ ULONG Xer;
+ ULONG Msr;
+ ULONG Iar;
+ ULONG Lr;
+ ULONG Ctr;
+ ULONG Dr0;
+ ULONG Dr1;
+ ULONG Dr2;
+ ULONG Dr3;
+ ULONG Dr4;
+ ULONG Dr5;
+ ULONG Dr6;
ULONG Dr7;
} KTRAP_FRAME, *PKTRAP_FRAME;
+//
+// 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 Definition
+//
+typedef struct _KIDTENTRY
+{
+ USHORT Offset;
+ USHORT Selector;
+ USHORT Access;
+ USHORT ExtendedOffset;
+} KIDTENTRY, *PKIDTENTRY;
+
//
// Page Table Entry Definition
//
//
typedef struct _KSPECIAL_REGISTERS
{
- ULONG KernelDr0;\r
- ULONG KernelDr1;\r
- ULONG KernelDr2;\r
- ULONG KernelDr3;\r
- ULONG KernelDr4;\r
- ULONG KernelDr5;\r
- ULONG KernelDr6;\r
- ULONG KernelDr7;\r
- ULONG Sprg0;\r
- ULONG Sprg1;\r
- ULONG Sr0;\r
- ULONG Sr1;\r
- ULONG Sr2;\r
- ULONG Sr3;\r
- ULONG Sr4;\r
- ULONG Sr5;\r
- ULONG Sr6;\r
- ULONG Sr7;\r
- ULONG Sr8;\r
- ULONG Sr9;\r
- ULONG Sr10;\r
- ULONG Sr11;\r
- ULONG Sr12;\r
- ULONG Sr13;\r
- ULONG Sr14;\r
- ULONG Sr15;\r
- ULONG DBAT0L;\r
- ULONG DBAT0U;\r
- ULONG DBAT1L;\r
- ULONG DBAT1U;\r
- ULONG DBAT2L;\r
- ULONG DBAT2U;\r
- ULONG DBAT3L;\r
- ULONG DBAT3U;\r
- ULONG IBAT0L;\r
- ULONG IBAT0U;\r
- ULONG IBAT1L;\r
- ULONG IBAT1U;\r
- ULONG IBAT2L;\r
- ULONG IBAT2U;\r
- ULONG IBAT3L;\r
- ULONG IBAT3U;\r
- ULONG Sdr1;\r
+ ULONG KernelDr0;
+ ULONG KernelDr1;
+ ULONG KernelDr2;
+ ULONG KernelDr3;
+ ULONG KernelDr4;
+ ULONG KernelDr5;
+ ULONG KernelDr6;
+ ULONG KernelDr7;
+ ULONG Sprg0;
+ ULONG Sprg1;
+ ULONG Sr0;
+ ULONG Sr1;
+ ULONG Sr2;
+ ULONG Sr3;
+ ULONG Sr4;
+ ULONG Sr5;
+ ULONG Sr6;
+ ULONG Sr7;
+ ULONG Sr8;
+ ULONG Sr9;
+ ULONG Sr10;
+ ULONG Sr11;
+ ULONG Sr12;
+ ULONG Sr13;
+ ULONG Sr14;
+ ULONG Sr15;
+ ULONG DBAT0L;
+ ULONG DBAT0U;
+ ULONG DBAT1L;
+ ULONG DBAT1U;
+ ULONG DBAT2L;
+ ULONG DBAT2U;
+ ULONG DBAT3L;
+ ULONG DBAT3U;
+ ULONG IBAT0L;
+ ULONG IBAT0U;
+ ULONG IBAT1L;
+ ULONG IBAT1U;
+ ULONG IBAT2L;
+ ULONG IBAT2U;
+ ULONG IBAT3L;
+ ULONG IBAT3U;
+ ULONG Sdr1;
ULONG Reserved[9];
} KSPECIAL_REGISTERS, *PKSPECIAL_REGISTERS;
#pragma pack(push,4)
typedef struct _KPROCESSOR_STATE
{
- PCONTEXT ContextFrame;
+ CONTEXT ContextFrame;
KSPECIAL_REGISTERS SpecialRegisters;
-} KPROCESSOR_STATE;
+} KPROCESSOR_STATE, *PKPROCESSOR_STATE;
//
// Processor Region Control Block
KPROCESSOR_STATE ProcessorState;
ULONG KernelReserved[16];
ULONG HalReserved[16];
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+ ULONG CFlushSize;
+ UCHAR PrcbPad0[88];
+#else
UCHAR PrcbPad0[92];
- PVOID LockQueue[33]; // Used for Queued Spinlocks
+#endif
+ KSPIN_LOCK_QUEUE LockQueue[LockQueueMaximumLock];
struct _KTHREAD *NpxThread;
ULONG InterruptCount;
ULONG KernelTime;
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;
- ULONG KeContextSwitches;
+#endif
+ ULONG SpareCounter0;
+#if (NTDDI_VERSION < NTDDI_LONGHORN)
ULONG KeDcacheFlushCount;
ULONG KeExceptionDispatchCount;
ULONG KeFirstLevelTbFills;
ULONG KeIcacheFlushCount;
ULONG KeSecondLevelTbFills;
ULONG KeSystemCalls;
- ULONG IoReadOperationCount;
- ULONG IoWriteOperationCount;
- ULONG IoOtherOperationCount;
+#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];
- ULONG PacketBarrier;
- ULONG ReverseStall;
+ volatile ULONG PacketBarrier;
+ volatile ULONG ReverseStall;
PVOID IpiFrame;
UCHAR PrcbPad2[52];
- PVOID CurrentPacket[3];
- ULONG TargetSet;
- ULONG_PTR WorkerRoutine;
- ULONG IpiFrozen;
+ volatile PVOID CurrentPacket[3];
+ volatile ULONG TargetSet;
+ volatile PKIPI_WORKER WorkerRoutine;
+ volatile ULONG IpiFrozen;
UCHAR PrcbPad3[40];
- ULONG RequestSummary;
- struct _KPRCB *SignalDone;
+ volatile ULONG RequestSummary;
+ volatile struct _KPRCB *SignalDone;
UCHAR PrcbPad4[56];
struct _KDPC_DATA DpcData[2];
PVOID DpcStack;
ULONG MaximumDpcQueueDepth;
ULONG DpcRequestRate;
ULONG MinimumDpcRate;
- UCHAR DpcInterruptRequested;
- UCHAR DpcThreadRequested;
- UCHAR DpcRoutineActive;
- UCHAR DpcThreadActive;
+ volatile UCHAR DpcInterruptRequested;
+ volatile UCHAR DpcThreadRequested;
+ volatile UCHAR DpcRoutineActive;
+ volatile UCHAR DpcThreadActive;
ULONG PrcbLock;
ULONG DpcLastCount;
- ULONG TimerHand;
- ULONG TimerRequest;
+ volatile ULONG TimerHand;
+ volatile ULONG TimerRequest;
PVOID DpcThread;
- struct _KEVENT *DpcEvent;
+ KEVENT DpcEvent;
UCHAR ThreadDpcEnable;
- BOOLEAN QuantumEnd;
+ volatile BOOLEAN QuantumEnd;
UCHAR PrcbPad50;
- UCHAR IdleSchedule;
- ULONG DpcSetEventRequest;
+ 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;
- struct _KDPC* CallDpc;
+ 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 SelectNextLast;
+ 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;
- LONG MmPageFaultCount;
- LONG MmCopyOnWriteCount;
- LONG MmTransitionCount;
- LONG MmCacheTransitionCount;
- LONG MmDemandZeroCount;
- LONG MmPageReadCount;
- LONG MmPageReadIoCount;
- LONG MmCacheReadCount;
- LONG MmCacheIoCount;
- LONG MmDirtyPagesWriteCount;
- LONG MmDirtyWriteIoCount;
- LONG MmMappedPagesWriteCount;
- LONG MmMappedWriteIoCount;
+ 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;
- LARGE_INTEGER IsrTime;
+ 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;
//
//
typedef struct _KIPCR
{
- USHORT MinorVersion;\r
- USHORT MajorVersion;\r
- PKINTERRUPT_ROUTINE InterruptRoutine[MAXIMUM_VECTOR];\r
- ULONG PcrPage2;\r
- ULONG Kseg0Top;\r
+ USHORT MinorVersion;
+ USHORT MajorVersion;
+ PKINTERRUPT_ROUTINE InterruptRoutine[MAXIMUM_VECTOR];
+ ULONG PcrPage2;
+ ULONG Kseg0Top;
ULONG Spare7[30];
- ULONG FirstLevelDcacheSize;\r
- ULONG FirstLevelDcacheFillSize;\r
- ULONG FirstLevelIcacheSize;\r
- ULONG FirstLevelIcacheFillSize;\r
- ULONG SecondLevelDcacheSize;\r
- ULONG SecondLevelDcacheFillSize;\r
- ULONG SecondLevelIcacheSize;\r
+ ULONG FirstLevelDcacheSize;
+ ULONG FirstLevelDcacheFillSize;
+ ULONG FirstLevelIcacheSize;
+ ULONG FirstLevelIcacheFillSize;
+ ULONG SecondLevelDcacheSize;
+ ULONG SecondLevelDcacheFillSize;
+ ULONG SecondLevelIcacheSize;
ULONG SecondLevelIcacheFillSize;
struct _KPRCB *Prcb;
PVOID Teb;
- ULONG DcacheAlignment;\r
+ ULONG DcacheAlignment;
ULONG DcacheFillSize;
- ULONG IcacheAlignment;\r
+ ULONG IcacheAlignment;
ULONG IcacheFillSize;
- ULONG ProcessorVersion;\r
+ ULONG ProcessorVersion;
ULONG ProcessorRevision;
- ULONG ProfileInterval;\r
- ULONG ProfileCount;\r
- ULONG StallExecutionCount;\r
+ ULONG ProfileInterval;
+ ULONG ProfileCount;
+ ULONG StallExecutionCount;
ULONG StallScaleFactor;
ULONG Spare;
- union\r
- {\r
- ULONG CachePolicy;\r
- struct\r
- {\r
- UCHAR IcacheMode;\r
- UCHAR DcacheMode;\r
- USHORT ModeSpare;\r
- };\r
- };\r
- UCHAR IrqlMask[32];\r
+ union
+ {
+ ULONG CachePolicy;
+ struct
+ {
+ UCHAR IcacheMode;
+ UCHAR DcacheMode;
+ USHORT ModeSpare;
+ };
+ };
+ UCHAR IrqlMask[32];
UCHAR IrqlTable[9];
- UCHAR CurrentIrql;\r
- CCHAR Number;\r
- KAFFINITY SetMember;\r
- ULONG ReservedVectors;\r
- struct _KTHREAD *CurrentThread;\r
- ULONG AlignedCachePolicy;\r
- union\r
- {\r
- ULONG SoftwareInterrupt;\r
- struct\r
- {\r
- UCHAR ApcInterrupt;\r
- UCHAR DispatchInterrupt;\r
- UCHAR Spare4;\r
- UCHAR Spare5;\r
- };\r
- };\r
- KAFFINITY NotMember;\r
- ULONG SystemReserved[16];\r
- ULONG HalReserved[16];\r
- ULONG FirstLevelActive;\r
- ULONG SystemServiceDispatchStart;\r
- ULONG SystemServiceDispatchEnd;\r
- ULONG InterruptStack;\r
- ULONG QuantumEnd;\r
- PVOID InitialStack;\r
- PVOID PanicStack;\r
- ULONG BadVaddr;\r
- PVOID StackLimit;\r
- PVOID SavedStackLimit;\r
- ULONG SavedV0;\r
- ULONG SavedV1;\r
- UCHAR DebugActive;\r
- UCHAR Spare6[3];\r
- ULONG GprSave[6];\r
- ULONG SiR0;\r
- ULONG SiR2;\r
- ULONG SiR3;\r
- ULONG SiR4;\r
- ULONG SiR5;\r
- ULONG Spare0;\r
- ULONG Spare8;\r
- ULONG PgDirRa;\r
- ULONG OnInterruptStack;\r
+ UCHAR CurrentIrql;
+ CCHAR Number;
+ KAFFINITY SetMember;
+ ULONG ReservedVectors;
+ struct _KTHREAD *CurrentThread;
+ ULONG AlignedCachePolicy;
+ union
+ {
+ ULONG SoftwareInterrupt;
+ struct
+ {
+ UCHAR ApcInterrupt;
+ UCHAR DispatchInterrupt;
+ UCHAR Spare4;
+ UCHAR Spare5;
+ };
+ };
+ KAFFINITY NotMember;
+ ULONG SystemReserved[16];
+ ULONG HalReserved[16];
+ ULONG FirstLevelActive;
+ ULONG SystemServiceDispatchStart;
+ ULONG SystemServiceDispatchEnd;
+ ULONG InterruptStack;
+ ULONG QuantumEnd;
+ PVOID InitialStack;
+ PVOID PanicStack;
+ ULONG BadVaddr;
+ PVOID StackLimit;
+ PVOID SavedStackLimit;
+ ULONG SavedV0;
+ ULONG SavedV1;
+ UCHAR DebugActive;
+ UCHAR Spare6[3];
+ ULONG GprSave[6];
+ ULONG SiR0;
+ ULONG SiR2;
+ ULONG SiR3;
+ ULONG SiR4;
+ ULONG SiR5;
+ ULONG Spare0;
+ ULONG Spare8;
+ ULONG PgDirRa;
+ ULONG OnInterruptStack;
ULONG SavedInitialStack;
} KIPCR, *PKIPCR;
#pragma pack(pop)
//
// TSS Definition
//
-typedef struct _KTSS, KTSS, *PKTSS;
+typedef struct _KTSS {
+} KTSS, *PKTSS;
//
// PowerPC Exception Frame
//
typedef struct _KEXCEPTION_FRAME
{
- ULONG Fill1;\r
- ULONG Gpr13;\r
- ULONG Gpr14;\r
- ULONG Gpr15;\r
- ULONG Gpr16;\r
- ULONG Gpr17;\r
- ULONG Gpr18;\r
- ULONG Gpr19;\r
- ULONG Gpr20;\r
- ULONG Gpr21;\r
- ULONG Gpr22;\r
- ULONG Gpr23;\r
- ULONG Gpr24;\r
- ULONG Gpr25;\r
- ULONG Gpr26;\r
- ULONG Gpr27;\r
- ULONG Gpr28;\r
- ULONG Gpr29;\r
- ULONG Gpr30;\r
- ULONG Gpr31;\r
- DOUBLE Fpr14;\r
- DOUBLE Fpr15;\r
- DOUBLE Fpr16;\r
- DOUBLE Fpr17;\r
- DOUBLE Fpr18;\r
- DOUBLE Fpr19;\r
- DOUBLE Fpr20;\r
- DOUBLE Fpr21;\r
- DOUBLE Fpr22;\r
- DOUBLE Fpr23;\r
- DOUBLE Fpr24;\r
- DOUBLE Fpr25;\r
- DOUBLE Fpr26;\r
- DOUBLE Fpr27;\r
- DOUBLE Fpr28;\r
- DOUBLE Fpr29;\r
- DOUBLE Fpr30;\r
+ ULONG Fill1;
+ ULONG Gpr13;
+ ULONG Gpr14;
+ ULONG Gpr15;
+ ULONG Gpr16;
+ ULONG Gpr17;
+ ULONG Gpr18;
+ ULONG Gpr19;
+ ULONG Gpr20;
+ ULONG Gpr21;
+ ULONG Gpr22;
+ ULONG Gpr23;
+ ULONG Gpr24;
+ ULONG Gpr25;
+ ULONG Gpr26;
+ ULONG Gpr27;
+ ULONG Gpr28;
+ ULONG Gpr29;
+ ULONG Gpr30;
+ ULONG Gpr31;
+ DOUBLE Fpr14;
+ DOUBLE Fpr15;
+ DOUBLE Fpr16;
+ DOUBLE Fpr17;
+ DOUBLE Fpr18;
+ DOUBLE Fpr19;
+ DOUBLE Fpr20;
+ DOUBLE Fpr21;
+ DOUBLE Fpr22;
+ DOUBLE Fpr23;
+ DOUBLE Fpr24;
+ DOUBLE Fpr25;
+ DOUBLE Fpr26;
+ DOUBLE Fpr27;
+ DOUBLE Fpr28;
+ DOUBLE Fpr29;
+ DOUBLE Fpr30;
DOUBLE Fpr31;
} KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;