From bb8885c1d7db94d197de6715eee4e5fad063ff16 Mon Sep 17 00:00:00 2001 From: Sir Richard Date: Wed, 24 Nov 2010 15:18:24 +0000 Subject: [PATCH] [PSDK/NDK]: Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM. svn path=/trunk/; revision=49773 --- reactos/include/ndk/arm/ketypes.h | 7 ++++++- reactos/include/reactos/arm/armddk.h | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/reactos/include/ndk/arm/ketypes.h b/reactos/include/ndk/arm/ketypes.h index bbf85af50cb..feb0c16c6dc 100644 --- a/reactos/include/ndk/arm/ketypes.h +++ b/reactos/include/ndk/arm/ketypes.h @@ -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]; diff --git a/reactos/include/reactos/arm/armddk.h b/reactos/include/reactos/arm/armddk.h index ad235b0b56b..95ef6537572 100644 --- a/reactos/include/reactos/arm/armddk.h +++ b/reactos/include/reactos/arm/armddk.h @@ -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 //