microblaze: Clear top bit from cnt32_to_63
authorMichal Simek <monstr@monstr.eu>
Fri, 23 Sep 2011 07:52:24 +0000 (09:52 +0200)
committerMichal Simek <monstr@monstr.eu>
Fri, 14 Oct 2011 10:24:20 +0000 (12:24 +0200)
Top bit is used as garbage and it must be clear
explicitly.
It is causing the problem with soft lookup code
because it checks delays which are long when
top bit is setup.

Signed-off-by: Michal Simek <monstr@monstr.eu>
arch/microblaze/kernel/timer.c

index e5550ce4e0eb783f5e6a4f29e7526c1cf3cbc6b0..af74b1113aabb32fb3849a952109ffba07eacdcf 100644 (file)
@@ -308,7 +308,8 @@ unsigned long long notrace sched_clock(void)
 {
        if (timer_initialized) {
                struct clocksource *cs = &clocksource_microblaze;
-               cycle_t cyc = cnt32_to_63(cs->read(NULL));
+
+               cycle_t cyc = cnt32_to_63(cs->read(NULL)) & LLONG_MAX;
                return clocksource_cyc2ns(cyc, cs->mult, cs->shift);
        }
        return 0;