arch: nios2: timing: Fix timing cycles rollover
Fix arch_timing_cycles_get() to prevent overflow on the clock rollover. The issue is observable on tests/benchmarks/wait_queues and tests/benchmarks/sched_queues with BENCHMARK_NUM_ITERATIONS is large enough, e.g. default 1000. Signed-off-by: Dmitrii Golovanov <dmitrii.golovanov@intel.com>
This commit is contained in:
parent
9fcb17400b
commit
d2c19a0535
1 changed files with 7 additions and 1 deletions
|
|
@ -41,7 +41,13 @@ timing_t arch_timing_counter_get(void)
|
||||||
uint64_t arch_timing_cycles_get(volatile timing_t *const start,
|
uint64_t arch_timing_cycles_get(volatile timing_t *const start,
|
||||||
volatile timing_t *const end)
|
volatile timing_t *const end)
|
||||||
{
|
{
|
||||||
return (*end - *start);
|
timing_t start_ = *start;
|
||||||
|
timing_t end_ = *end;
|
||||||
|
|
||||||
|
if (end_ >= start_) {
|
||||||
|
return (end_ - start_);
|
||||||
|
}
|
||||||
|
return (end_ + NIOS2_SUBTRACT_CLOCK_CYCLES(start_));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t arch_timing_freq_get(void)
|
uint64_t arch_timing_freq_get(void)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue