include/linux/jiffies.h | 18 ++++-------------- kernel/ksyms.c | 3 +++ kernel/time.c | 15 ++++++++++++++- 3 files changed, 21 insertions(+), 15 deletions(-) diff -puN include/linux/jiffies.h~seqlock-fixes include/linux/jiffies.h --- 25/include/linux/jiffies.h~seqlock-fixes Thu Feb 6 16:51:05 2003 +++ 25-akpm/include/linux/jiffies.h Thu Feb 6 16:51:05 2003 @@ -15,24 +15,14 @@ extern u64 jiffies_64; extern unsigned long volatile jiffies; +#if (BITS_PER_LONG < 64) +u64 get_jiffies_64(void); +#else static inline u64 get_jiffies_64(void) { -#if BITS_PER_LONG < 64 - extern seqlock_t xtime_lock; - unsigned long seq; - u64 tmp; - - do { - seq = read_seqbegin(&xtime_lock); - tmp = jiffies_64; - } while (read_seqretry(&xtime_lock, seq)); - - return tmp; -#else return (u64)jiffies; -#endif } - +#endif /* * These inlines deal with timer wrapping correctly. You are diff -puN kernel/ksyms.c~seqlock-fixes kernel/ksyms.c --- 25/kernel/ksyms.c~seqlock-fixes Thu Feb 6 16:51:05 2003 +++ 25-akpm/kernel/ksyms.c Thu Feb 6 16:51:12 2003 @@ -489,6 +489,9 @@ EXPORT_SYMBOL(xtime); EXPORT_SYMBOL(xtime_lock); EXPORT_SYMBOL(do_gettimeofday); EXPORT_SYMBOL(do_settimeofday); +#if (BITS_PER_LONG < 64) +EXPORT_SYMBOL(get_jiffies_64); +#endif #ifdef CONFIG_DEBUG_SPINLOCK_SLEEP EXPORT_SYMBOL(__might_sleep); #endif diff -puN kernel/time.c~seqlock-fixes kernel/time.c --- 25/kernel/time.c~seqlock-fixes Thu Feb 6 16:51:05 2003 +++ 25-akpm/kernel/time.c Thu Feb 6 16:51:05 2003 @@ -27,7 +27,6 @@ #include #include #include - #include /* @@ -416,3 +415,17 @@ struct timespec current_kernel_time(void return now; } + +#if (BITS_PER_LONG < 64) +u64 get_jiffies_64(void) +{ + unsigned long seq; + u64 ret; + + do { + seq = read_seqbegin(&xtime_lock); + ret = jiffies_64; + } while (read_seqretry(&xtime_lock, seq)); + return ret; +} +#endif _