kernel/arm: fix system_time for generic timer
Change-Id: Ief7b0638f40ba5deee27f3551e8870bfb6216a4d Reviewed-on: https://review.haiku-os.org/c/haiku/+/5569 Tested-by: Commit checker robot <[email protected]> Reviewed-by: Fredrik Holmqvist <[email protected]>
This commit is contained in:
@@ -35,7 +35,7 @@ get_counter(void)
|
|||||||
void
|
void
|
||||||
ARMGenericTimer::SetTimeout(bigtime_t timeout)
|
ARMGenericTimer::SetTimeout(bigtime_t timeout)
|
||||||
{
|
{
|
||||||
uint32_t timeout_ticks = timeout * fTimerFrequency / 1000000;
|
uint32_t timeout_ticks = timeout * fTimerFrequencyMHz;
|
||||||
asm volatile ("ISB\n"
|
asm volatile ("ISB\n"
|
||||||
"MCR p15, 0, %0, c14, c2, 0"
|
"MCR p15, 0, %0, c14, c2, 0"
|
||||||
: : "r"(timeout_ticks));
|
: : "r"(timeout_ticks));
|
||||||
@@ -58,7 +58,7 @@ ARMGenericTimer::Clear()
|
|||||||
bigtime_t
|
bigtime_t
|
||||||
ARMGenericTimer::Time()
|
ARMGenericTimer::Time()
|
||||||
{
|
{
|
||||||
return get_counter() / fTimerFrequency;
|
return get_counter() / fTimerFrequencyMHz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -85,6 +85,7 @@ ARMGenericTimer::ARMGenericTimer()
|
|||||||
&ARMGenericTimer::_InterruptWrapper, this, 0);
|
&ARMGenericTimer::_InterruptWrapper, this, 0);
|
||||||
|
|
||||||
fTimerFrequency = get_counter_freq();
|
fTimerFrequency = get_counter_freq();
|
||||||
|
fTimerFrequencyMHz = fTimerFrequency / 1000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ private:
|
|||||||
int32 HandleInterrupt();
|
int32 HandleInterrupt();
|
||||||
|
|
||||||
uint32_t fTimerFrequency;
|
uint32_t fTimerFrequency;
|
||||||
|
uint32_t fTimerFrequencyMHz;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* ARCH_ARM_TIMER_GENERIC_H */
|
#endif /* ARCH_ARM_TIMER_GENERIC_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user