[PSDK/NDK]: Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount...
authorSir Richard <sir_richard@svn.reactos.org>
Wed, 24 Nov 2010 15:18:24 +0000 (15:18 +0000)
committerSir Richard <sir_richard@svn.reactos.org>
Wed, 24 Nov 2010 15:18:24 +0000 (15:18 +0000)
svn path=/trunk/; revision=49773

reactos/include/ndk/arm/ketypes.h
reactos/include/reactos/arm/armddk.h

index bbf85af..feb0c16 100644 (file)
@@ -473,8 +473,13 @@ typedef struct _KIPCR
     ULONG StallScaleFactor;
     UCHAR SpareUnused;
     UCHAR Number;
+    UCHAR Spare0;
+    UCHAR SecondLevelCacheAssociativity;
+    ULONG VdmAlert;
+    ULONG KernelReserved[14];
+    ULONG SecondLevelCacheSize;
+    ULONG HalReserved[16];  
     // arm part
-    UCHAR Spare0[2];
     UCHAR IrqlMask[32];
     ULONG IrqlTable[32];
     PKINTERRUPT_ROUTINE InterruptRoutine[32];
index ad235b0..95ef653 100644 (file)
@@ -173,6 +173,12 @@ typedef struct _KPCR
     ULONG StallScaleFactor;
     UCHAR SpareUnused;
     UCHAR Number;
+    UCHAR Spare0;
+    UCHAR SecondLevelCacheAssociativity;
+    ULONG VdmAlert;
+    ULONG KernelReserved[14];
+    ULONG SecondLevelCacheSize;
+    ULONG HalReserved[16];
 } KPCR, *PKPCR;
 
 //
@@ -260,6 +266,26 @@ HalSweepIcache(
 );
 #endif
 
+FORCEINLINE
+VOID
+_KeQueryTickCount(
+  OUT PLARGE_INTEGER CurrentCount)
+{
+  for (;;) {
+#ifdef NONAMELESSUNION
+    CurrentCount->s.HighPart = KeTickCount.High1Time;
+    CurrentCount->s.LowPart = KeTickCount.LowPart;
+    if (CurrentCount->s.HighPart == KeTickCount.High2Time) break;
+#else
+    CurrentCount->HighPart = KeTickCount.High1Time;
+    CurrentCount->LowPart = KeTickCount.LowPart;
+    if (CurrentCount->HighPart == KeTickCount.High2Time) break;
+#endif
+    YieldProcessor();
+  }
+}
+#define KeQueryTickCount(CurrentCount) _KeQueryTickCount(CurrentCount)
+
 //
 // Intrinsics
 //