From 4ac2915fe49359c4bee629bb6217fe6972b7a347 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Sun, 4 Dec 2005 17:09:48 +0000 Subject: [PATCH] - Update PPC definitions. - Add Art to contributors. svn path=/trunk/; revision=19877 --- reactos/include/ndk/powerpc/ketypes.h | 312 +++++++++++++++++++------- reactos/include/ndk/powerpc/mmtypes.h | 3 +- reactos/include/ndk/readme.txt | 1 + 3 files changed, 234 insertions(+), 82 deletions(-) diff --git a/reactos/include/ndk/powerpc/ketypes.h b/reactos/include/ndk/powerpc/ketypes.h index a897bbbd92b..739fb7ae854 100644 --- a/reactos/include/ndk/powerpc/ketypes.h +++ b/reactos/include/ndk/powerpc/ketypes.h @@ -37,32 +37,75 @@ Author: // typedef struct _KTRAP_FRAME { - ULONG R[32]; - ULONG SRR0, SRR1; - ULONG LR, CTR; + PVOID TrapFrame; + UCHAR OldIrql; + UCHAR PreviousMode; + UCHAR SavedApcStateIndex; + UCHAR SavedKernelApcDisable; + UCHAR ExceptionRecord[ROUND_UP(sizeof(EXCEPTION_RECORD), 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; // // 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 { @@ -76,9 +119,50 @@ typedef struct _DESCRIPTOR // typedef struct _KSPECIAL_REGISTERS { - ULONG MSR, SDR0, SDR1; - ULONG BATU[4], BATL[4]; - ULONG SR[8]; + 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; // @@ -229,73 +313,141 @@ typedef struct _KPRCB // 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; + USHORT MajorVersion; + PKINTERRUPT_ROUTINE InterruptRoutine[MAXIMUM_VECTOR]; + ULONG PcrPage2; + ULONG Kseg0Top; + ULONG Spare7[30]; + ULONG FirstLevelDcacheSize; + ULONG FirstLevelDcacheFillSize; + ULONG FirstLevelIcacheSize; + ULONG FirstLevelIcacheFillSize; + ULONG SecondLevelDcacheSize; + ULONG SecondLevelDcacheFillSize; + ULONG SecondLevelIcacheSize; + ULONG SecondLevelIcacheFillSize; + struct _KPRCB *Prcb; + PVOID Teb; + ULONG DcacheAlignment; + ULONG DcacheFillSize; + ULONG IcacheAlignment; + ULONG IcacheFillSize; + ULONG ProcessorVersion; + ULONG ProcessorRevision; + ULONG ProfileInterval; + ULONG ProfileCount; + ULONG StallExecutionCount; + ULONG StallScaleFactor; + ULONG Spare; + union + { + ULONG CachePolicy; + struct + { + UCHAR IcacheMode; + UCHAR DcacheMode; + USHORT ModeSpare; + }; + }; + UCHAR IrqlMask[32]; + UCHAR IrqlTable[9]; + 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 _KiIoAccessMap -{ - UCHAR DirectionMap[32]; - UCHAR IoMap[8196]; -} KIIO_ACCESS_MAP; - -#include -typedef struct _KTSS -{ - USHORT Backlink; - USHORT Reserved0; - - KTRAP_FRAME Registers; - - KIIO_ACCESS_MAP IoMaps[1]; - UCHAR IntDirectionMap[32]; -} KTSS, *PKTSS; -#include +typedef struct _KTSS, KTSS, *PKTSS; // // PowerPC Exception Frame // -typedef struct _KEXCEPTION_FRAME { - +typedef struct _KEXCEPTION_FRAME +{ + 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; #endif diff --git a/reactos/include/ndk/powerpc/mmtypes.h b/reactos/include/ndk/powerpc/mmtypes.h index e988dda5dc9..c3eb927be71 100644 --- a/reactos/include/ndk/powerpc/mmtypes.h +++ b/reactos/include/ndk/powerpc/mmtypes.h @@ -1,7 +1,6 @@ /*++ NDK Version: 0095 Copyright (c) Alex Ionescu. All rights reserved. -Modified for PowerPC by Art Yerkes Header Name: @@ -13,7 +12,7 @@ Abstract: Author: - Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004 + Art Yerkes (ayerkes@speakeasy.net) 04-Dec-2005 --*/ diff --git a/reactos/include/ndk/readme.txt b/reactos/include/ndk/readme.txt index acff107a641..57813e35fd3 100644 --- a/reactos/include/ndk/readme.txt +++ b/reactos/include/ndk/readme.txt @@ -90,6 +90,7 @@ located through the Internet or purchased or licensed for lawful use. Additionally, the following people contributed to the NDK: +- Art Yerkes - Eric Kohl - Filip Navara - Steven Edwards -- 2.17.1