aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/time.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-08 22:28:09 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-08 22:28:09 -0500
commitfbf07eac7bf21c262143194181bd97c5d18b8ceb (patch)
treec9228b7d272f1e39472da28032605ecd1860e688 /arch/powerpc/kernel/time.c
parent60d8ce2cd6c283132928c11f3fd57ff4187287e0 (diff)
parent8629ea2eaba8ca0de2e38ce1b4a825e16255976e (diff)
Merge branch 'timers-for-linus-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-for-linus-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: hrtimer: Fix /proc/timer_list regression itimers: Fix racy writes to cpu_itimer fields timekeeping: Fix clock_gettime vsyscall time warp
Diffstat (limited to 'arch/powerpc/kernel/time.c')
-rw-r--r--arch/powerpc/kernel/time.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index d18a7f04edec..674800b242d6 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -834,7 +834,8 @@ static cycle_t timebase_read(struct clocksource *cs)
834 return (cycle_t)get_tb(); 834 return (cycle_t)get_tb();
835} 835}
836 836
837void update_vsyscall(struct timespec *wall_time, struct clocksource *clock) 837void update_vsyscall(struct timespec *wall_time, struct clocksource *clock,
838 u32 mult)
838{ 839{
839 u64 t2x, stamp_xsec; 840 u64 t2x, stamp_xsec;
840 841
@@ -847,7 +848,7 @@ void update_vsyscall(struct timespec *wall_time, struct clocksource *clock)
847 848
848 /* XXX this assumes clock->shift == 22 */ 849 /* XXX this assumes clock->shift == 22 */
849 /* 4611686018 ~= 2^(20+64-22) / 1e9 */ 850 /* 4611686018 ~= 2^(20+64-22) / 1e9 */
850 t2x = (u64) clock->mult * 4611686018ULL; 851 t2x = (u64) mult * 4611686018ULL;
851 stamp_xsec = (u64) xtime.tv_nsec * XSEC_PER_SEC; 852 stamp_xsec = (u64) xtime.tv_nsec * XSEC_PER_SEC;
852 do_div(stamp_xsec, 1000000000); 853 do_div(stamp_xsec, 1000000000);
853 stamp_xsec += (u64) xtime.tv_sec * XSEC_PER_SEC; 854 stamp_xsec += (u64) xtime.tv_sec * XSEC_PER_SEC;