···155155 timeElapsed = GetTickCount() - dwStartTime;
156156 if (timeElapsed < 1000)
157157 {
158158- /*
159159- * For whatever reason, x86 MSVC generates a ntdll!_allmul
160160- * call when using Int32x32To64(), instead of an imul
161161- * instruction. This leads the linker to error that _allmul
162162- * is missing, since we do not link against ntdll.
163163- * Everything is however OK with GCC...
164164- * We therefore use the __emul() intrinsic which does
165165- * the correct job.
166166- */
167167- DueTime.QuadPart = __emul(1000 - timeElapsed, -10000);
158158+ DueTime.QuadPart = Int32x32To64(1000 - timeElapsed, -10000);
168159 SetWaitableTimer(hTimer, &DueTime, 0, NULL, NULL, FALSE);
169160 dwWaitState = WaitForSingleObject(hTimer, INFINITE);
170161