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

Reply via email to