@@ -901,6 +901,38 @@ void secondary_cpu_time_init(void)
901901 register_decrementer_clockevent (smp_processor_id ());
902902}
903903
904+ /*
905+ * Divide a 128-bit dividend by a 32-bit divisor, leaving a 128 bit
906+ * result.
907+ */
908+ static __init void div128_by_32 (u64 dividend_high , u64 dividend_low ,
909+ unsigned int divisor , struct div_result * dr )
910+ {
911+ unsigned long a , b , c , d ;
912+ unsigned long w , x , y , z ;
913+ u64 ra , rb , rc ;
914+
915+ a = dividend_high >> 32 ;
916+ b = dividend_high & 0xffffffff ;
917+ c = dividend_low >> 32 ;
918+ d = dividend_low & 0xffffffff ;
919+
920+ w = a / divisor ;
921+ ra = ((u64 )(a - (w * divisor )) << 32 ) + b ;
922+
923+ rb = ((u64 )do_div (ra , divisor ) << 32 ) + c ;
924+ x = ra ;
925+
926+ rc = ((u64 )do_div (rb , divisor ) << 32 ) + d ;
927+ y = rb ;
928+
929+ do_div (rc , divisor );
930+ z = rc ;
931+
932+ dr -> result_high = ((u64 )w << 32 ) + x ;
933+ dr -> result_low = ((u64 )y << 32 ) + z ;
934+ }
935+
904936/* This function is only called on the boot processor */
905937void __init time_init (void )
906938{
@@ -974,39 +1006,6 @@ void __init time_init(void)
9741006 enable_sched_clock_irqtime ();
9751007}
9761008
977- /*
978- * Divide a 128-bit dividend by a 32-bit divisor, leaving a 128 bit
979- * result.
980- */
981- void div128_by_32 (u64 dividend_high , u64 dividend_low ,
982- unsigned divisor , struct div_result * dr )
983- {
984- unsigned long a , b , c , d ;
985- unsigned long w , x , y , z ;
986- u64 ra , rb , rc ;
987-
988- a = dividend_high >> 32 ;
989- b = dividend_high & 0xffffffff ;
990- c = dividend_low >> 32 ;
991- d = dividend_low & 0xffffffff ;
992-
993- w = a / divisor ;
994- ra = ((u64 )(a - (w * divisor )) << 32 ) + b ;
995-
996- rb = ((u64 ) do_div (ra , divisor ) << 32 ) + c ;
997- x = ra ;
998-
999- rc = ((u64 ) do_div (rb , divisor ) << 32 ) + d ;
1000- y = rb ;
1001-
1002- do_div (rc , divisor );
1003- z = rc ;
1004-
1005- dr -> result_high = ((u64 )w << 32 ) + x ;
1006- dr -> result_low = ((u64 )y << 32 ) + z ;
1007-
1008- }
1009-
10101009/* We don't need to calibrate delay, we use the CPU timebase for that */
10111010void calibrate_delay (void )
10121011{
0 commit comments