//
typedef struct _KTRAP_FRAME
{
- ULONG R[32];
- ULONG SRR0, SRR1;
- ULONG LR, CTR;
+ 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
+ ULONG Dr7;
} KTRAP_FRAME, *PKTRAP_FRAME;
//
// Page Table Entry Definition
//
-// I'll use the same table format
-//
-typedef struct _SOFTWARE_PTE_PPC
+typedef struct _HARDWARE_PTE_PPC
{
- 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;
-} SOFTWARE_PTE_X86, *PSOFTWARE_PTE_PPC;
+ ULONG Dirty:2;
+ ULONG Valid:1;
+ ULONG GuardedStorage:1;
+ ULONG MemoryCoherence:1;
+ ULONG CacheDisable:1;
+ ULONG WriteThrough:1;
+ ULONG Change:1;
+ ULONG Reference:1;
+ ULONG Write:1;
+ ULONG CopyOnWrite:1;
+ ULONG rsvd1:1;
+ ULONG PageFrameNumber:20;
+} HARDWARE_PTE_PPC, *PHARDWARE_PTE_PPC;
typedef struct _DESCRIPTOR
{
//
typedef struct _KSPECIAL_REGISTERS
{
- ULONG MSR, SDR0, SDR1;
- ULONG BATU[4], BATL[4];
- ULONG SR[8];
+ 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 Reserved[9];
} KSPECIAL_REGISTERS, *PKSPECIAL_REGISTERS;
//
//
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; /* 1C */
- struct _KPRCB *Prcb; /* 20 */
- KIRQL Irql; /* 24 */
- ULONG IRR; /* 28 */
- ULONG IrrActive; /* 2C */
- ULONG IDR; /* 30 */
- PVOID KdVersionBlock; /* 34 */
- struct _KTSS *TSS; /* 40 */
- USHORT MajorVersion; /* 44 */
- USHORT MinorVersion; /* 46 */
- KAFFINITY SetMember; /* 48 */
- ULONG StallScaleFactor; /* 4C */
- UCHAR SparedUnused; /* 50 */
- UCHAR Number; /* 51 */
- UCHAR Reserved; /* 52 */
- UCHAR L2CacheAssociativity; /* 53 */
- ULONG VdmAlert; /* 54 */
- ULONG KernelReserved[14]; /* 58 */
- ULONG L2CacheSize; /* 90 */
- ULONG HalReserved[16]; /* 94 */
- ULONG InterruptMode; /* D4 */
- UCHAR KernelReserved2[0x48]; /* D8 */
- KPRCB PrcbData; /* 120 */
+ USHORT MinorVersion;\r
+ USHORT MajorVersion;\r
+ PKINTERRUPT_ROUTINE InterruptRoutine[MAXIMUM_VECTOR];\r
+ ULONG PcrPage2;\r
+ ULONG Kseg0Top;\r
+ 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 SecondLevelIcacheFillSize;
+ struct _KPRCB *Prcb;
+ PVOID Teb;
+ ULONG DcacheAlignment;\r
+ ULONG DcacheFillSize;
+ ULONG IcacheAlignment;\r
+ ULONG IcacheFillSize;
+ ULONG ProcessorVersion;\r
+ ULONG ProcessorRevision;
+ ULONG ProfileInterval;\r
+ ULONG ProfileCount;\r
+ ULONG StallExecutionCount;\r
+ 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
+ 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
+ ULONG SavedInitialStack;
} KIPCR, *PKIPCR;
#pragma pack(pop)
//
// TSS Definition
//
-typedef struct _KiIoAccessMap
-{
- UCHAR DirectionMap[32];
- UCHAR IoMap[8196];
-} KIIO_ACCESS_MAP;
-
-#include <pshpack1.h>
-typedef struct _KTSS
-{
- USHORT Backlink;
- USHORT Reserved0;
-
- KTRAP_FRAME Registers;
-
- KIIO_ACCESS_MAP IoMaps[1];
- UCHAR IntDirectionMap[32];
-} KTSS, *PKTSS;
-#include <poppack.h>
+typedef struct _KTSS, KTSS, *PKTSS;
//
// PowerPC Exception Frame
//
-typedef struct _KEXCEPTION_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
+ DOUBLE Fpr31;
} KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
#endif