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 | |||
