|
@@ -17,7 +17,11 @@ static inline cycle_t clocksource_delta(cycle_t now, cycle_t last, cycle_t mask)
|
|
{
|
|
{
|
|
cycle_t ret = (now - last) & mask;
|
|
cycle_t ret = (now - last) & mask;
|
|
|
|
|
|
- return (s64) ret > 0 ? ret : 0;
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Prevent time going backwards by checking the MSB of mask in
|
|
|
|
+ * the result. If set, return 0.
|
|
|
|
+ */
|
|
|
|
+ return ret & ~(mask >> 1) ? 0 : ret;
|
|
}
|
|
}
|
|
#else
|
|
#else
|
|
static inline cycle_t clocksource_delta(cycle_t now, cycle_t last, cycle_t mask)
|
|
static inline cycle_t clocksource_delta(cycle_t now, cycle_t last, cycle_t mask)
|