[NTDLL][KERNEL32] Use native math on 64 bit instead of intrinsic magic

This commit is contained in:
Timo Kreuzer
2025-04-18 01:09:07 +03:00
parent db47b59b11
commit fb0752b5f5
2 changed files with 11 additions and 2 deletions

View File

@@ -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 */

View File

@@ -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
}