diff options
author | Paul Mackerras <paulus@samba.org> | 2005-10-22 00:55:23 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-10-22 00:55:23 -0400 |
commit | a5b518ed314bfd25ea5e433ce09f8b27080023db (patch) | |
tree | 777d0f9202136dcff484121ad7673eb65d099567 /arch/powerpc/kernel/time.c | |
parent | e2b5530698cbe8148577b24097eaefcd835ac9ca (diff) |
ppc64/powerpc: Fix time initialization on SMP systems
This moves smp_space_timers from arch/ppc64/kernel/smp.c to
arch/powerpc/kernel/time.c and makes it initialize last_jiffy[]
instead of paca[].next_jiffy_update_tb, since last_jiffy[] is
now what the time code uses. It also declares smp_space_timers
in include/asm-powerpc/time.h and gets rid of an ifdef in
div128_by_32.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/time.c')
-rw-r--r-- | arch/powerpc/kernel/time.c | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index 3e722370113b..b635c7de6698 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
@@ -458,7 +458,7 @@ void wakeup_decrementer(void) | |||
458 | per_cpu(last_jiffy, i) = tb_last_stamp; | 458 | per_cpu(last_jiffy, i) = tb_last_stamp; |
459 | } | 459 | } |
460 | 460 | ||
461 | #ifdef CONFIG_SMPxxx | 461 | #ifdef CONFIG_SMP |
462 | void __init smp_space_timers(unsigned int max_cpus) | 462 | void __init smp_space_timers(unsigned int max_cpus) |
463 | { | 463 | { |
464 | int i; | 464 | int i; |
@@ -948,16 +948,6 @@ void div128_by_32(u64 dividend_high, u64 dividend_low, | |||
948 | w = a / divisor; | 948 | w = a / divisor; |
949 | ra = ((u64)(a - (w * divisor)) << 32) + b; | 949 | ra = ((u64)(a - (w * divisor)) << 32) + b; |
950 | 950 | ||
951 | #ifdef CONFIG_PPC64 | ||
952 | x = ra / divisor; | ||
953 | rb = ((ra - (x * divisor)) << 32) + c; | ||
954 | |||
955 | y = rb / divisor; | ||
956 | rc = ((rb - (y * divisor)) << 32) + d; | ||
957 | |||
958 | z = rc / divisor; | ||
959 | #else | ||
960 | /* for 32-bit, use do_div from div64.h */ | ||
961 | rb = ((u64) do_div(ra, divisor) << 32) + c; | 951 | rb = ((u64) do_div(ra, divisor) << 32) + c; |
962 | x = ra; | 952 | x = ra; |
963 | 953 | ||
@@ -966,10 +956,8 @@ void div128_by_32(u64 dividend_high, u64 dividend_low, | |||
966 | 956 | ||
967 | do_div(rc, divisor); | 957 | do_div(rc, divisor); |
968 | z = rc; | 958 | z = rc; |
969 | #endif | ||
970 | 959 | ||
971 | dr->result_high = ((u64)w << 32) + x; | 960 | dr->result_high = ((u64)w << 32) + x; |
972 | dr->result_low = ((u64)y << 32) + z; | 961 | dr->result_low = ((u64)y << 32) + z; |
973 | 962 | ||
974 | } | 963 | } |
975 | |||