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?r... ============================================================================== --- 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 //