diff -r 73ea206103e6 -r 43365a9b78a3 kernel/eka/nkernsmp/x86/ncsched.cpp --- a/kernel/eka/nkernsmp/x86/ncsched.cpp Wed Jun 23 19:44:53 2010 +0300 +++ b/kernel/eka/nkernsmp/x86/ncsched.cpp Tue Jul 06 15:50:07 2010 +0300 @@ -99,11 +99,8 @@ { if (aT->iTime>0 && !aT->i_NThread_Initial) { - TUint32 remain32 = read_apic_reg(CURRCNT); - TUint64 x(remain32); - x *= TUint32(iSSX.iTimerPeriodM); - x += 1u<<(iSSX.iTimerPeriodS-1); - x >>= iSSX.iTimerPeriodS; + TUint32 x = read_apic_reg(CURRCNT); + iSSX.iTimerFreqRI.iI.Mult(x); aT->iTime = (TInt)x; } write_apic_reg(INITCNT, 0); @@ -128,13 +125,9 @@ aNew = iInitialThread; if (aNew->iTime>0) { - TUint32 remain32 = (TUint32)aNew->iTime; - TUint64 x(remain32); - x *= TUint32(iSSX.iTimerFreqM); - x += TUint64(0x80000000u)<>= (32+iSSX.iTimerFreqS); - write_apic_reg(LVTTMR, TIMESLICE_VECTOR); - write_apic_reg(INITCNT, (TUint32)x); + TUint32 x = (TUint32)aNew->iTime; + iSSX.iTimerFreqRI.iR.Mult(x); + write_apic_reg(INITCNT, x); } if (aNew!=aOld) {