Module: xenomai-head Branch: master Commit: 2442425ef628583485ece62cd637c1e6be500514 URL: http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=2442425ef628583485ece62cd637c1e6be500514
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Wed May 25 21:27:00 2011 +0200 arm hal: fix timer programmation calibration On machines where it is real fast, we may obtain falsely negative durations. --- ksrc/arch/arm/hal.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ksrc/arch/arm/hal.c b/ksrc/arch/arm/hal.c index 31606c1..4794c4c 100644 --- a/ksrc/arch/arm/hal.c +++ b/ksrc/arch/arm/hal.c @@ -100,8 +100,9 @@ unsigned long rthal_timer_calibrate(void) { unsigned long long start, end, sum = 0, sum_sq = 0; volatile unsigned const_delay = 0xffffffff; - unsigned int delay = const_delay, diff; unsigned long result, flags, tsc_lat; + unsigned int delay = const_delay; + long long diff; int i, j; flags = rthal_critical_enter(NULL); @@ -131,8 +132,10 @@ unsigned long rthal_timer_calibrate(void) barrier(); rthal_read_tsc(end); diff = end - start - tsc_lat; - sum += diff; - sum_sq += diff * diff; + if (diff > 0) { + sum += diff; + sum_sq += diff * diff; + } } } _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git