Fix the build by adding KDPC_DATA as a shared arch structure. Kind of a hack but I could not find another way to avoid the undelrying recursive dependencies that not doing this would cause. Also made an arch-specific fix to KPROCESS and wrote a little comment on it
Modified: trunk/reactos/include/ndk/arch/ketypes.h
Modified: trunk/reactos/include/ndk/ketypes.h

Modified: trunk/reactos/include/ndk/arch/ketypes.h
--- trunk/reactos/include/ndk/arch/ketypes.h	2005-07-05 21:17:01 UTC (rev 16438)
+++ trunk/reactos/include/ndk/arch/ketypes.h	2005-07-05 21:57:55 UTC (rev 16439)
@@ -9,6 +9,15 @@
 #ifndef _ARCH_KETYPES_H
 #define _ARCH_KETYPES_H
 
+/* Shared structure needed by Arch-specific headers */
+typedef struct _KDPC_DATA
+{
+    LIST_ENTRY  DpcListHead;
+    ULONG  DpcLock;
+    ULONG  DpcQueueDepth;
+    ULONG  DpcCount;
+} KDPC_DATA, *PKDPC_DATA;
+
 #ifdef _M_IX86
 #include <ndk/i386/ketypes.h>
 #else

Modified: trunk/reactos/include/ndk/ketypes.h
--- trunk/reactos/include/ndk/ketypes.h	2005-07-05 21:17:01 UTC (rev 16438)
+++ trunk/reactos/include/ndk/ketypes.h	2005-07-05 21:57:55 UTC (rev 16439)
@@ -15,6 +15,12 @@
 #include "mmtypes.h"
 #include <arc/arc.h>
 
+/* 
+ * Architecture-specific types 
+ * NB: Although KPROCESS is Arch-Specific,
+ * only some members are different and we will use #ifdef
+ * directly in the structure to avoid dependency-hell
+ */
 #include "arch/ketypes.h"
 
 /* CONSTANTS *****************************************************************/
@@ -57,23 +63,15 @@
     CurrentApcEnvironment
 } KAPC_ENVIRONMENT;
 
-typedef struct _KDPC_DATA
-{
-    LIST_ENTRY  DpcListHead;
-    ULONG  DpcLock;
-    ULONG  DpcQueueDepth;
-    ULONG  DpcCount;
-} KDPC_DATA, *PKDPC_DATA;
-
 /* We don't want to force NTIFS usage only for a single structure */
 #ifndef _NTIFS_
 typedef struct _KAPC_STATE
 {
-    LIST_ENTRY  ApcListHead[2];
-    PKPROCESS   Process;
-    BOOLEAN     KernelApcInProgress;
-    BOOLEAN     KernelApcPending;
-    BOOLEAN     UserApcPending;
+    LIST_ENTRY ApcListHead[2];
+    PKPROCESS Process;
+    BOOLEAN KernelApcInProgress;
+    BOOLEAN KernelApcPending;
+    BOOLEAN UserApcPending;
 } KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE;
 #endif
 
@@ -108,26 +106,26 @@
 
 typedef struct _KINTERRUPT
 {
-    CSHORT              Type;
-    CSHORT              Size;
-    LIST_ENTRY          InterruptListEntry;
-    PKSERVICE_ROUTINE   ServiceRoutine;
-    PVOID               ServiceContext;
-    KSPIN_LOCK          SpinLock;
-    ULONG               TickCount;
-    PKSPIN_LOCK         ActualLock;
-    PVOID               DispatchAddress;
-    ULONG               Vector;
-    KIRQL               Irql;
-    KIRQL               SynchronizeIrql;
-    BOOLEAN             FloatingSave;
-    BOOLEAN             Connected;
-    CHAR                Number;
-    UCHAR               ShareVector;
-    KINTERRUPT_MODE     Mode;
-    ULONG               ServiceCount;
-    ULONG               DispatchCount;
-    ULONG               DispatchCode[106];
+    CSHORT Type;
+    CSHORT Size;
+    LIST_ENTRY InterruptListEntry;
+    PKSERVICE_ROUTINE ServiceRoutine;
+    PVOID ServiceContext;
+    KSPIN_LOCK SpinLock;
+    ULONG TickCount;
+    PKSPIN_LOCK ActualLock;
+    PVOID DispatchAddress;
+    ULONG Vector;
+    KIRQL Irql;
+    KIRQL SynchronizeIrql;
+    BOOLEAN FloatingSave;
+    BOOLEAN Connected;
+    CHAR Number;
+    UCHAR ShareVector;
+    KINTERRUPT_MODE Mode;
+    ULONG ServiceCount;
+    ULONG DispatchCount;
+    ULONG DispatchCode[106];
 } KINTERRUPT, *PKINTERRUPT;
 
 typedef struct _KEVENT_PAIR
@@ -183,23 +181,14 @@
 
 typedef struct _KTHREAD
 {
-    /* For waiting on thread exit */
     DISPATCHER_HEADER DispatcherHeader;    /* 00 */
-
-    /* List of mutants owned by the thread */
     LIST_ENTRY        MutantListHead;      /* 10 */
     PVOID             InitialStack;        /* 18 */
     ULONG_PTR         StackLimit;          /* 1C */
-
-    /* Pointer to the thread's environment block in user memory */
     struct _TEB       *Teb;                /* 20 */
-
-    /* Pointer to the thread's TLS array */
     PVOID             TlsArray;            /* 24 */
     PVOID             KernelStack;         /* 28 */
     UCHAR             DebugActive;         /* 2C */
-
-    /* Thread state (one of THREAD_STATE_xxx constants below) */
     UCHAR             State;               /* 2D */
     BOOLEAN           Alerted[2];          /* 2E */
     UCHAR             Iopl;                /* 30 */
@@ -215,8 +204,8 @@
     UCHAR             WaitReason;          /* 57 */
     union                                  /* 58 */
     {
-        PKWAIT_BLOCK  WaitBlockList;      /* 58 */
-        PKGATE        GateObject;         /* 58 */
+        PKWAIT_BLOCK  WaitBlockList;       /* 58 */
+        PKGATE        GateObject;          /* 58 */
     };                                     /* 58 */
     LIST_ENTRY        WaitListEntry;       /* 5C */
     ULONG             WaitTime;            /* 64 */
@@ -230,10 +219,10 @@
     {
         struct
         {
-            USHORT KernelApcDisable;
-            USHORT SpecialApcDisable;
+            USHORT    KernelApcDisable;
+            USHORT    SpecialApcDisable;
         };
-        ULONG      CombinedApcDisable;     /* D0 */
+        ULONG         CombinedApcDisable;  /* D0 */
     };
     KAFFINITY         UserAffinity;        /* D4 */
     UCHAR             SystemAffinityActive;/* D8 */
@@ -278,23 +267,18 @@
 
 #include <poppack.h>
 
-/*
- * NAME:           KPROCESS
- * DESCRIPTION:    Internal Kernel Process Structure.
- * PORTABILITY:    Architecture Dependent.
- * KERNEL VERSION: 5.2
- * DOCUMENTATION:  http://reactos.com/wiki/index.php/KPROCESS
- */
 typedef struct _KPROCESS
 {
     DISPATCHER_HEADER     Header;                    /* 000 */
     LIST_ENTRY            ProfileListHead;           /* 010 */
     PHYSICAL_ADDRESS      DirectoryTableBase;        /* 018 */
+#if defined(_M_IX86)
     KGDTENTRY             LdtDescriptor;             /* 020 */
     KIDTENTRY             Int21Descriptor;           /* 028 */
     USHORT                IopmOffset;                /* 030 */
     UCHAR                 Iopl;                      /* 032 */
     UCHAR                 Unused;                    /* 033 */
+#endif
     ULONG                 ActiveProcessors;          /* 034 */
     ULONG                 KernelTime;                /* 038 */
     ULONG                 UserTime;                  /* 03C */