From fb0752b5f584b27cb332011f26caaf4b3ee3185c Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Fri, 18 Apr 2025 01:09:07 +0300 Subject: [PATCH] [NTDLL][KERNEL32] Use native math on 64 bit instead of intrinsic magic --- dll/ntdll/rtl/libsupp.c | 9 +++++++-- dll/win32/kernel32/kernel32_vista/GetTickCount64.c | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dll/ntdll/rtl/libsupp.c b/dll/ntdll/rtl/libsupp.c index 5599c7f6501..69abce8f536 100644 --- a/dll/ntdll/rtl/libsupp.c +++ b/dll/ntdll/rtl/libsupp.c @@ -1225,10 +1225,15 @@ RtlGetTickCount(VOID) TickCount = KiReadSystemTime(&SharedUserData->TickCount); +#ifdef _WIN64 + return (TickCount.QuadPart * SharedUserData->TickCountMultiplier) >> 24; +#else + ULONG TickCountMultiplier = SharedUserData->TickCountMultiplier; return (ULONG)((UInt32x32To64(TickCount.LowPart, - SharedUserData->TickCountMultiplier) >> 24) + + TickCountMultiplier) >> 24) + UInt32x32To64((TickCount.HighPart << 8) & 0xFFFFFFFF, - SharedUserData->TickCountMultiplier)); + TickCountMultiplier)); +#endif } /* EOF */ diff --git a/dll/win32/kernel32/kernel32_vista/GetTickCount64.c b/dll/win32/kernel32/kernel32_vista/GetTickCount64.c index bc185143721..202578b2c34 100644 --- a/dll/win32/kernel32/kernel32_vista/GetTickCount64.c +++ b/dll/win32/kernel32/kernel32_vista/GetTickCount64.c @@ -12,7 +12,11 @@ GetTickCount64(VOID) TickCount = KiReadSystemTime(&SharedUserData->TickCount); +#ifdef _WIN64 + return (TickCount.QuadPart * SharedUserData->TickCountMultiplier) >> 24; +#else ULONG TickCountMultiplier = SharedUserData->TickCountMultiplier; return (UInt32x32To64(TickCount.LowPart, TickCountMultiplier) >> 24) + (UInt32x32To64(TickCount.HighPart, TickCountMultiplier) << 8); +#endif }