Commit d2c19a05 authored by Dmitrii Golovanov's avatar Dmitrii Golovanov Committed by Fabio Baltieri
Browse files

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: default avatarDmitrii Golovanov <dmitrii.golovanov@intel.com>
parent 9fcb1740
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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)