div128_by_32() used to be called from outside time.c in the old days
but since v2.6.15 it hasn't been used outside time.c

$ git grep div128_by_32 v2.6.14
v2.6.14:arch/ppc64/kernel/iSeries_setup.c:      div128_by_32(1024 * 1024, 0, 
tb_ticks_per_sec, &divres);
v2.6.14:arch/ppc64/kernel/pmac_time.c:  div128_by_32( 1024*1024, 0, 
tb_ticks_per_sec, &divres );
v2.6.14:arch/ppc64/kernel/time.c:                               div128_by_32( 
XSEC_PER_SEC, 0, tb_ticks_per_sec, &divres );
v2.6.14:arch/ppc64/kernel/time.c:       div128_by_32(1024*1024, 0, 
tb_ticks_per_sec, &divres);
v2.6.14:arch/ppc64/kernel/time.c:       div128_by_32(1000000000, 0, 
tb_ticks_per_sec, &res);
v2.6.14:arch/ppc64/kernel/time.c:       div128_by_32( 1024*1024, 0, 
new_tb_ticks_per_sec, &divres );
v2.6.14:arch/ppc64/kernel/time.c:void div128_by_32( unsigned long 
dividend_high, unsigned long dividend_low,
v2.6.14:include/asm-ppc64/time.h:void div128_by_32( unsigned long 
dividend_high, unsigned long dividend_low,

$ git grep div128_by_32 v2.6.15
v2.6.15:arch/powerpc/kernel/time.c:                             div128_by_32( 
XSEC_PER_SEC, 0, tb_ticks_per_sec, &divres );
v2.6.15:arch/powerpc/kernel/time.c:     div128_by_32(1024*1024, 0, 
tb_ticks_per_sec, &res);
v2.6.15:arch/powerpc/kernel/time.c:     div128_by_32(1000000000, 0, 
tb_ticks_per_sec, &res);
v2.6.15:arch/powerpc/kernel/time.c:     div128_by_32(1024*1024, 0, 
new_tb_ticks_per_sec, &divres);
v2.6.15:arch/powerpc/kernel/time.c:void div128_by_32(u64 dividend_high, u64 
dividend_low,
v2.6.15:include/asm-powerpc/time.h:extern void div128_by_32(u64 dividend_high, 
u64 dividend_low,

Move it above its only caller which is time_init() and define it
static and __init.

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
 arch/powerpc/include/asm/time.h |  3 --
 arch/powerpc/kernel/time.c      | 65 ++++++++++++++++-----------------
 2 files changed, 32 insertions(+), 36 deletions(-)

diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h
index 9bdd8080299b..f8885586efaf 100644
--- a/arch/powerpc/include/asm/time.h
+++ b/arch/powerpc/include/asm/time.h
@@ -89,9 +89,6 @@ static inline unsigned long tb_ticks_since(unsigned long 
tstamp)
 #define mulhdu(x, y)   mul_u64_u64_shr(x, y, 64)
 #endif
 
-extern void div128_by_32(u64 dividend_high, u64 dividend_low,
-                        unsigned divisor, struct div_result *dr);
-
 extern void secondary_cpu_time_init(void);
 extern void __init time_init(void);
 
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 0727332ad86f..0be53642501b 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -901,6 +901,38 @@ void secondary_cpu_time_init(void)
        register_decrementer_clockevent(smp_processor_id());
 }
 
+/*
+ * Divide a 128-bit dividend by a 32-bit divisor, leaving a 128 bit
+ * result.
+ */
+static __init void div128_by_32(u64 dividend_high, u64 dividend_low,
+                               unsigned int divisor, struct div_result *dr)
+{
+       unsigned long a, b, c, d;
+       unsigned long w, x, y, z;
+       u64 ra, rb, rc;
+
+       a = dividend_high >> 32;
+       b = dividend_high & 0xffffffff;
+       c = dividend_low >> 32;
+       d = dividend_low & 0xffffffff;
+
+       w = a / divisor;
+       ra = ((u64)(a - (w * divisor)) << 32) + b;
+
+       rb = ((u64)do_div(ra, divisor) << 32) + c;
+       x = ra;
+
+       rc = ((u64)do_div(rb, divisor) << 32) + d;
+       y = rb;
+
+       do_div(rc, divisor);
+       z = rc;
+
+       dr->result_high = ((u64)w << 32) + x;
+       dr->result_low  = ((u64)y << 32) + z;
+}
+
 /* This function is only called on the boot processor */
 void __init time_init(void)
 {
@@ -974,39 +1006,6 @@ void __init time_init(void)
        enable_sched_clock_irqtime();
 }
 
-/*
- * Divide a 128-bit dividend by a 32-bit divisor, leaving a 128 bit
- * result.
- */
-void div128_by_32(u64 dividend_high, u64 dividend_low,
-                 unsigned divisor, struct div_result *dr)
-{
-       unsigned long a, b, c, d;
-       unsigned long w, x, y, z;
-       u64 ra, rb, rc;
-
-       a = dividend_high >> 32;
-       b = dividend_high & 0xffffffff;
-       c = dividend_low >> 32;
-       d = dividend_low & 0xffffffff;
-
-       w = a / divisor;
-       ra = ((u64)(a - (w * divisor)) << 32) + b;
-
-       rb = ((u64) do_div(ra, divisor) << 32) + c;
-       x = ra;
-
-       rc = ((u64) do_div(rb, divisor) << 32) + d;
-       y = rb;
-
-       do_div(rc, divisor);
-       z = rc;
-
-       dr->result_high = ((u64)w << 32) + x;
-       dr->result_low  = ((u64)y << 32) + z;
-
-}
-
 /* We don't need to calibrate delay, we use the CPU timebase for that */
 void calibrate_delay(void)
 {
-- 
2.47.0


Reply via email to