mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-11 12:00:38 +02:00
18 lines
480 B
Diff
18 lines
480 B
Diff
|
time: prevent the loop in timespec_add_ns() from being optimised away
|
||
|
|
||
|
Since some architectures don't support __udivdi3().
|
||
|
|
||
|
--- a/include/linux/time.h
|
||
|
+++ b/include/linux/time.h
|
||
|
@@ -170,6 +170,10 @@ static inline void timespec_add_ns(struc
|
||
|
{
|
||
|
ns += a->tv_nsec;
|
||
|
while(unlikely(ns >= NSEC_PER_SEC)) {
|
||
|
+ /* The following asm() prevents the compiler from
|
||
|
+ * optimising this loop into a modulo operation. */
|
||
|
+ asm("" : "+r"(ns));
|
||
|
+
|
||
|
ns -= NSEC_PER_SEC;
|
||
|
a->tv_sec++;
|
||
|
}
|