Author: sir_richard
Date: Wed Nov 24 15:18:24 2010
New Revision: 49773
URL:
http://svn.reactos.org/svn/reactos?rev=49773&view=rev
Log:
[PSDK/NDK]: Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM.
Modified:
trunk/reactos/include/ndk/arm/ketypes.h
trunk/reactos/include/reactos/arm/armddk.h
Modified: trunk/reactos/include/ndk/arm/ketypes.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/arm/ketypes.h?…
==============================================================================
--- trunk/reactos/include/ndk/arm/ketypes.h [iso-8859-1] (original)
+++ trunk/reactos/include/ndk/arm/ketypes.h [iso-8859-1] Wed Nov 24 15:18:24 2010
@@ -473,8 +473,13 @@
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];
Modified: trunk/reactos/include/reactos/arm/armddk.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/arm/armddk…
==============================================================================
--- trunk/reactos/include/reactos/arm/armddk.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/arm/armddk.h [iso-8859-1] Wed Nov 24 15:18:24 2010
@@ -173,6 +173,12 @@
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 @@
);
#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
//