diff --git a/src/system/kernel/arch/arm/arch_timer_generic.cpp b/src/system/kernel/arch/arm/arch_timer_generic.cpp index f9d574db9d..7fb3a97059 100644 --- a/src/system/kernel/arch/arm/arch_timer_generic.cpp +++ b/src/system/kernel/arch/arm/arch_timer_generic.cpp @@ -35,7 +35,7 @@ get_counter(void) void ARMGenericTimer::SetTimeout(bigtime_t timeout) { - uint32_t timeout_ticks = timeout * fTimerFrequency / 1000000; + uint32_t timeout_ticks = timeout * fTimerFrequencyMHz; asm volatile ("ISB\n" "MCR p15, 0, %0, c14, c2, 0" : : "r"(timeout_ticks)); @@ -58,7 +58,7 @@ ARMGenericTimer::Clear() bigtime_t ARMGenericTimer::Time() { - return get_counter() / fTimerFrequency; + return get_counter() / fTimerFrequencyMHz; } @@ -85,6 +85,7 @@ ARMGenericTimer::ARMGenericTimer() &ARMGenericTimer::_InterruptWrapper, this, 0); fTimerFrequency = get_counter_freq(); + fTimerFrequencyMHz = fTimerFrequency / 1000000; } diff --git a/src/system/kernel/arch/arm/arch_timer_generic.h b/src/system/kernel/arch/arm/arch_timer_generic.h index 7d1e66234a..26cb71b114 100644 --- a/src/system/kernel/arch/arm/arch_timer_generic.h +++ b/src/system/kernel/arch/arm/arch_timer_generic.h @@ -30,6 +30,7 @@ private: int32 HandleInterrupt(); uint32_t fTimerFrequency; + uint32_t fTimerFrequencyMHz; }; #endif /* ARCH_ARM_TIMER_GENERIC_H */