diff --git a/arch/arm/arm/src/los_hw_tick.c b/arch/arm/arm/src/los_hw_tick.c index b53bdfa265023fef35844de9e021bf65e000bbf4..20a84862beb618150c807b476eb20227288e27c6 100644 --- a/arch/arm/arm/src/los_hw_tick.c +++ b/arch/arm/arm/src/los_hw_tick.c @@ -65,10 +65,8 @@ LITE_OS_SEC_TEXT_MINOR VOID LOS_GetCpuCycle(UINT32 *highCnt, UINT32 *lowCnt) LITE_OS_SEC_TEXT_MINOR UINT64 LOS_CurrNanosec(VOID) { - DOUBLE nanos; - - nanos = (DOUBLE)HalClockGetCycles() * OS_SYS_NS_PER_SECOND / g_sysClock; - return (UINT64)nanos; + UINT64 cycle = HalClockGetCycles(); + return (cycle / g_sysClock) * OS_SYS_NS_PER_SECOND + (cycle % g_sysClock) * OS_SYS_NS_PER_SECOND / g_sysClock; } LITE_OS_SEC_TEXT_MINOR VOID LOS_Udelay(UINT32 usecs)