wdm.h: fix definition of 64bit SLIST_HEADER
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Thu, 21 May 2009 17:51:59 +0000 (17:51 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Thu, 21 May 2009 17:51:59 +0000 (17:51 +0000)
winnt.h: add 64bit SLIST_HEADER

svn path=/branches/ros-amd64-bringup/; revision=41030

reactos/include/ddk/wdm.h
reactos/include/psdk/winnt.h

index 6889a2c..ef23680 100644 (file)
@@ -393,7 +393,7 @@ InterlockedAdd64(
 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY\r
 \r
 #if defined(_WIN64)\r
-typedef union _SLIST_HEADER {\r
+typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {\r
     struct {\r
         ULONGLONG Alignment;\r
         ULONGLONG Region;\r
@@ -407,13 +407,13 @@ typedef union _SLIST_HEADER {
         ULONGLONG Reserved:59;\r
         ULONGLONG Region:3;\r
     } Header8;\r
+    struct {\r
         ULONGLONG Depth:16;\r
         ULONGLONG Sequence:48;\r
         ULONGLONG HeaderType:1;\r
         ULONGLONG Init:1;\r
         ULONGLONG Reserved:2;\r
         ULONGLONG NextEntry:60;\r
-    struct {\r
     } Header16;\r
 } SLIST_HEADER, *PSLIST_HEADER;\r
 #else\r
index b2f8e4d..60fedac 100644 (file)
@@ -3207,20 +3207,53 @@ typedef struct _SINGLE_LIST_ENTRY {
        struct _SINGLE_LIST_ENTRY *Next;
 } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY;
 
+//
+// Slist Header
+//
 #ifndef _SLIST_HEADER_
 #define _SLIST_HEADER_
+
 #define SLIST_ENTRY SINGLE_LIST_ENTRY
 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY
 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY
+
+#if defined(_WIN64)
+typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {
+    struct {
+        ULONGLONG Alignment;
+        ULONGLONG Region;
+    } DUMMYSTRUCTNAME;
+    struct {
+        ULONGLONG Depth:16;
+        ULONGLONG Sequence:9;
+        ULONGLONG NextEntry:39;
+        ULONGLONG HeaderType:1;
+        ULONGLONG Init:1;
+        ULONGLONG Reserved:59;
+        ULONGLONG Region:3;
+    } Header8;
+    struct {
+        ULONGLONG Depth:16;
+        ULONGLONG Sequence:48;
+        ULONGLONG HeaderType:1;
+        ULONGLONG Init:1;
+        ULONGLONG Reserved:2;
+        ULONGLONG NextEntry:60;
+    } Header16;
+} SLIST_HEADER, *PSLIST_HEADER;
+#else
 typedef union _SLIST_HEADER {
-       ULONGLONG Alignment;
-       _ANONYMOUS_STRUCT struct {
-               SLIST_ENTRY Next;
-               WORD Depth;
-               WORD Sequence;
-       } DUMMYSTRUCTNAME;
-} SLIST_HEADER,*PSLIST_HEADER;
-#endif /* !_SLIST_HEADER_ */
+    ULONGLONG Alignment;
+    struct {
+        SLIST_ENTRY Next;
+        USHORT Depth;
+        USHORT Sequence;
+    } DUMMYSTRUCTNAME;
+} SLIST_HEADER, *PSLIST_HEADER;
+#endif
+
+#endif /* _SLIST_HEADER_ */
+
 
 NTSYSAPI
 VOID