aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/timekeeping_internal.h
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2016-01-25 10:46:21 -0800
committerTony Lindgren <tony@atomide.com>2016-01-25 10:46:21 -0800
commit7e3b1207705c10ada363bbc7d0235730ce1f5b79 (patch)
treecd1eb567acb4e72c1bdfbe8b59746c73b8627ee5 /kernel/time/timekeeping_internal.h
parent143c6fe3a415edf2dde3f507b3a00998b4c4001e (diff)
parent20437f79f6627a31752f422688a6047c25cefcf1 (diff)
downloadlinux-7e3b1207705c10ada363bbc7d0235730ce1f5b79.tar.gz
Merge branch 'enable-devices' into omap-for-v4.5/fixes
Diffstat (limited to 'kernel/time/timekeeping_internal.h')
-rw-r--r--kernel/time/timekeeping_internal.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/time/timekeeping_internal.h b/kernel/time/timekeeping_internal.h
index 4ea005a7f9da..5be76270ec4a 100644
--- a/kernel/time/timekeeping_internal.h
+++ b/kernel/time/timekeeping_internal.h
@@ -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;
- 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
static inline cycle_t clocksource_delta(cycle_t now, cycle_t last, cycle_t mask)
@@ -26,4 +30,6 @@ static inline cycle_t clocksource_delta(cycle_t now, cycle_t last, cycle_t mask)
}
#endif
+extern time64_t __ktime_get_real_seconds(void);
+
#endif /* _TIMEKEEPING_INTERNAL_H */