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,
|
||||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue