changeset 311:a791ca629d9c

Upgrade to toybox-0.0.5 and linux-2.6.25-rc7. Remove use of perl in the kernel build. Use new toybox cp. Yank busybox diff (which breaks building i686 on 2.6.25).
author Rob Landley <rob@landley.net>
date Sat, 29 Mar 2008 19:06:29 -0500
parents 3a1ae92d6f6a
children dd28934bb0c9
files download.sh host-tools.sh mini-native.sh sources/config-busybox sources/configs/armv5l sources/patches/linux-2.6.25-rc1-noperl.patch
diffstat 6 files changed, 916 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/download.sh	Thu Mar 27 21:54:27 2008 -0500
+++ b/download.sh	Sat Mar 29 19:06:29 2008 -0500
@@ -22,8 +22,8 @@
 # then cut and paste the sha1 from the output and run it again to confirm.
 
 # Required for cross compile toolchain
-URL=http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.4.tar.bz2 \
-SHA1=bb63192d1ab7d7edbac78b716d7b8acb06ae5e72 \
+URL=http://kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.25-rc7.tar.bz2 \
+SHA1=419579c4f1f0383c0b663edb7fc7ebfbb93422b6 \
 download &&
 
 URL=http://www.uclibc.org/downloads/uClibc-0.9.29.tar.bz2 \
@@ -45,8 +45,8 @@
 SHA1=e29c6e151050f8b5ac5d680b99483df522606143 \
 download &&
 
-URL=http://landley.net/code/toybox/downloads/toybox-0.0.4.tar.bz2 \
-SHA1=fe7c094097c57778f2ee357a95f8099d4d6cbf59 \
+URL=http://landley.net/code/toybox/downloads/toybox-0.0.5.tar.bz2 \
+SHA1=af5a8b49a84b40d0979a63d7220f000d54d19f41 \
 download &&
 
 # Ye olde emulator
--- a/host-tools.sh	Thu Mar 27 21:54:27 2008 -0500
+++ b/host-tools.sh	Sat Mar 29 19:06:29 2008 -0500
@@ -19,15 +19,27 @@
 
 # The first seven are from packages already in mini-native.
 # The last six need to be added to toybox.  (The build breaks if we use
-# the busybox versions.)
+# the busybox-1.2.2 versions.)
 
-for i in ar as nm cc gcc make ld   bzip2 cp find install od sort
+for i in ar as nm cc gcc make ld   bzip2 find install od sort diff
 do
   [ ! -f "${HOSTTOOLS}/$i" ] && (ln -s `which $i` "${HOSTTOOLS}/$i" || dienow)
 done
 
-# Yes this is an old version of busybox.  We're gradually replacing busybox
-# with toybox, one command at a time.
+# Build toybox
+if [ -z "$(which toybox)" ]
+then
+  setupfor toybox &&
+  make defconfig &&
+  make install_flat PREFIX="${HOSTTOOLS}" &&
+  cd ..
+
+  cleanup toybox
+fi
+
+# Yes this is an old version of busybox.  (It's the last version I released
+# as busybox maintainer.)  We're gradually replacing busybox with toybox, one
+# command at a time.
 
 # Build busybox
 if [ -z "$(which busybox)" ]
@@ -49,22 +61,10 @@
   cleanup busybox
 fi
 
-# Build toybox
-if [ -z "$(which toybox)" ]
-then
-  setupfor toybox &&
-  make defconfig &&
-  make &&
-  make instlist &&
-  make install_flat PREFIX="${HOSTTOOLS}" &&
-  cd ..
-
-  cleanup toybox
-fi
-
 # This is optionally used by mini-native to accelerate native builds when
 # running under qemu.  It's not used to build mini-native, or to build
-# the cross compiler.
+# the cross compiler, but it needs to be on the host system in order to
+# use the distcc acceleration trick.
 
 # Build distcc
 if [ -z "$(which distcc)" ]
@@ -113,9 +113,11 @@
 #
 #cleanup squashfs
 
-# we can't reliably build qemu because who knows what gcc version the host
-# has?  so until qemu is fixed to build with an arbitrary c compiler,
-# just test for its' existence and warn.
+# we can't reliably build qemu because it needs a specific gcc version (3.x,
+# won't work with 4.x), and who knows what gcc version the host
+# has?  So until qemu is fixed to build with an arbitrary c compiler,
+# just test for its' existence and warn.  (All the build uses it for is
+# a quick sanity test on the cross compiler anyway.)
 
 temp="qemu-${qemu_test}"
 [ -z "$qemu_test" ] && temp=qemu
--- a/mini-native.sh	Thu Mar 27 21:54:27 2008 -0500
+++ b/mini-native.sh	Sat Mar 29 19:06:29 2008 -0500
@@ -44,6 +44,16 @@
 
 cleanup uClibc
 
+# Build and install toybox
+
+setupfor toybox
+make defconfig &&
+make install_flat PREFIX="${TOOLS}"/bin CROSS="${ARCH}-" &&
+rm "${TOOLS}"/bin/sh &&  # Bash won't install if this exists.
+cd ..
+
+cleanup toybox
+
 # Build and install busybox
 
 setupfor busybox
--- a/sources/config-busybox	Thu Mar 27 21:54:27 2008 -0500
+++ b/sources/config-busybox	Sat Mar 29 19:06:29 2008 -0500
@@ -128,10 +128,10 @@
 CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
 CONFIG_FEATURE_DD_IBS_OBS=y
 # CONFIG_DF is not set
-CONFIG_DIFF=y
-CONFIG_FEATURE_DIFF_BINARY=y
-CONFIG_FEATURE_DIFF_DIR=y
-CONFIG_FEATURE_DIFF_MINIMAL=y
+# CONFIG_DIFF is not set
+# CONFIG_FEATURE_DIFF_BINARY is not set
+# CONFIG_FEATURE_DIFF_DIR is not set
+# CONFIG_FEATURE_DIFF_MINIMAL is not set
 # CONFIG_DIRNAME is not set
 # CONFIG_DOS2UNIX is not set
 # CONFIG_UNIX2DOS is not set
--- a/sources/configs/armv5l	Thu Mar 27 21:54:27 2008 -0500
+++ b/sources/configs/armv5l	Sat Mar 29 19:06:29 2008 -0500
@@ -119,6 +119,4 @@
 CONFIG_EXT2_FS=y
 CONFIG_TMPFS=y
 CONFIG_MAGIC_SYSRQ=y
-#CONFIG_N_HDLC=y
-#CONFIG_FIRMWARE_EDID=y
 EOF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sources/patches/linux-2.6.25-rc1-noperl.patch	Sat Mar 29 19:06:29 2008 -0500
@@ -0,0 +1,875 @@
+diff -ru linux-2.6.25-rc1/kernel/timeconst.pl linux-2.6.25-new/kernel/timeconst.pl
+--- linux-2.6.25-rc1/kernel/timeconst.pl	2008-02-10 16:18:14.000000000 -0600
++++ linux-2.6.25-new/kernel/timeconst.pl	2008-02-15 17:52:02.000000000 -0600
+@@ -11,210 +11,10 @@
+ #
+ 
+ #
+-# Usage: timeconst.pl HZ > timeconst.h
++# Usage: timeconst.pl HZ... > timeconst.h
+ #
+ 
+-# Precomputed values for systems without Math::BigInt
+-# Generated by:
+ # timeconst.pl --can 24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 1200
+-%canned_values = (
+-	24 => [
+-		'0xa6aaaaab','0x2aaaaaa',26,
+-		'0xa6aaaaaaaaaaaaab','0x2aaaaaaaaaaaaaa',58,
+-		125,3,
+-		'0xc49ba5e4','0x1fbe76c8b4',37,
+-		'0xc49ba5e353f7ceda','0x1fbe76c8b439581062',69,
+-		3,125,
+-		'0xa2c2aaab','0xaaaa',16,
+-		'0xa2c2aaaaaaaaaaab','0xaaaaaaaaaaaa',48,
+-		125000,3,
+-		'0xc9539b89','0x7fffbce4217d',47,
+-		'0xc9539b8887229e91','0x7fffbce4217d2849cb25',79,
+-		3,125000,
+-	], 32 => [
+-		'0xfa000000','0x6000000',27,
+-		'0xfa00000000000000','0x600000000000000',59,
+-		125,4,
+-		'0x83126e98','0xfdf3b645a',36,
+-		'0x83126e978d4fdf3c','0xfdf3b645a1cac0831',68,
+-		4,125,
+-		'0xf4240000','0x0',17,
+-		'0xf424000000000000','0x0',49,
+-		31250,1,
+-		'0x8637bd06','0x3fff79c842fa',46,
+-		'0x8637bd05af6c69b6','0x3fff79c842fa5093964a',78,
+-		1,31250,
+-	], 48 => [
+-		'0xa6aaaaab','0x6aaaaaa',27,
+-		'0xa6aaaaaaaaaaaaab','0x6aaaaaaaaaaaaaa',59,
+-		125,6,
+-		'0xc49ba5e4','0xfdf3b645a',36,
+-		'0xc49ba5e353f7ceda','0xfdf3b645a1cac0831',68,
+-		6,125,
+-		'0xa2c2aaab','0x15555',17,
+-		'0xa2c2aaaaaaaaaaab','0x1555555555555',49,
+-		62500,3,
+-		'0xc9539b89','0x3fffbce4217d',46,
+-		'0xc9539b8887229e91','0x3fffbce4217d2849cb25',78,
+-		3,62500,
+-	], 64 => [
+-		'0xfa000000','0xe000000',28,
+-		'0xfa00000000000000','0xe00000000000000',60,
+-		125,8,
+-		'0x83126e98','0x7ef9db22d',35,
+-		'0x83126e978d4fdf3c','0x7ef9db22d0e560418',67,
+-		8,125,
+-		'0xf4240000','0x0',18,
+-		'0xf424000000000000','0x0',50,
+-		15625,1,
+-		'0x8637bd06','0x1fff79c842fa',45,
+-		'0x8637bd05af6c69b6','0x1fff79c842fa5093964a',77,
+-		1,15625,
+-	], 100 => [
+-		'0xa0000000','0x0',28,
+-		'0xa000000000000000','0x0',60,
+-		10,1,
+-		'0xcccccccd','0x733333333',35,
+-		'0xcccccccccccccccd','0x73333333333333333',67,
+-		1,10,
+-		'0x9c400000','0x0',18,
+-		'0x9c40000000000000','0x0',50,
+-		10000,1,
+-		'0xd1b71759','0x1fff2e48e8a7',45,
+-		'0xd1b71758e219652c','0x1fff2e48e8a71de69ad4',77,
+-		1,10000,
+-	], 122 => [
+-		'0x8325c53f','0xfbcda3a',28,
+-		'0x8325c53ef368eb05','0xfbcda3ac10c9714',60,
+-		500,61,
+-		'0xf9db22d1','0x7fbe76c8b',35,
+-		'0xf9db22d0e560418a','0x7fbe76c8b43958106',67,
+-		61,500,
+-		'0x8012e2a0','0x3ef36',18,
+-		'0x8012e29f79b47583','0x3ef368eb04325',50,
+-		500000,61,
+-		'0xffda4053','0x1ffffbce4217',45,
+-		'0xffda4052d666a983','0x1ffffbce4217d2849cb2',77,
+-		61,500000,
+-	], 128 => [
+-		'0xfa000000','0x1e000000',29,
+-		'0xfa00000000000000','0x1e00000000000000',61,
+-		125,16,
+-		'0x83126e98','0x3f7ced916',34,
+-		'0x83126e978d4fdf3c','0x3f7ced916872b020c',66,
+-		16,125,
+-		'0xf4240000','0x40000',19,
+-		'0xf424000000000000','0x4000000000000',51,
+-		15625,2,
+-		'0x8637bd06','0xfffbce4217d',44,
+-		'0x8637bd05af6c69b6','0xfffbce4217d2849cb25',76,
+-		2,15625,
+-	], 200 => [
+-		'0xa0000000','0x0',29,
+-		'0xa000000000000000','0x0',61,
+-		5,1,
+-		'0xcccccccd','0x333333333',34,
+-		'0xcccccccccccccccd','0x33333333333333333',66,
+-		1,5,
+-		'0x9c400000','0x0',19,
+-		'0x9c40000000000000','0x0',51,
+-		5000,1,
+-		'0xd1b71759','0xfff2e48e8a7',44,
+-		'0xd1b71758e219652c','0xfff2e48e8a71de69ad4',76,
+-		1,5000,
+-	], 250 => [
+-		'0x80000000','0x0',29,
+-		'0x8000000000000000','0x0',61,
+-		4,1,
+-		'0x80000000','0x180000000',33,
+-		'0x8000000000000000','0x18000000000000000',65,
+-		1,4,
+-		'0xfa000000','0x0',20,
+-		'0xfa00000000000000','0x0',52,
+-		4000,1,
+-		'0x83126e98','0x7ff7ced9168',43,
+-		'0x83126e978d4fdf3c','0x7ff7ced916872b020c4',75,
+-		1,4000,
+-	], 256 => [
+-		'0xfa000000','0x3e000000',30,
+-		'0xfa00000000000000','0x3e00000000000000',62,
+-		125,32,
+-		'0x83126e98','0x1fbe76c8b',33,
+-		'0x83126e978d4fdf3c','0x1fbe76c8b43958106',65,
+-		32,125,
+-		'0xf4240000','0xc0000',20,
+-		'0xf424000000000000','0xc000000000000',52,
+-		15625,4,
+-		'0x8637bd06','0x7ffde7210be',43,
+-		'0x8637bd05af6c69b6','0x7ffde7210be9424e592',75,
+-		4,15625,
+-	], 300 => [
+-		'0xd5555556','0x2aaaaaaa',30,
+-		'0xd555555555555556','0x2aaaaaaaaaaaaaaa',62,
+-		10,3,
+-		'0x9999999a','0x1cccccccc',33,
+-		'0x999999999999999a','0x1cccccccccccccccc',65,
+-		3,10,
+-		'0xd0555556','0xaaaaa',20,
+-		'0xd055555555555556','0xaaaaaaaaaaaaa',52,
+-		10000,3,
+-		'0x9d495183','0x7ffcb923a29',43,
+-		'0x9d495182a9930be1','0x7ffcb923a29c779a6b5',75,
+-		3,10000,
+-	], 512 => [
+-		'0xfa000000','0x7e000000',31,
+-		'0xfa00000000000000','0x7e00000000000000',63,
+-		125,64,
+-		'0x83126e98','0xfdf3b645',32,
+-		'0x83126e978d4fdf3c','0xfdf3b645a1cac083',64,
+-		64,125,
+-		'0xf4240000','0x1c0000',21,
+-		'0xf424000000000000','0x1c000000000000',53,
+-		15625,8,
+-		'0x8637bd06','0x3ffef39085f',42,
+-		'0x8637bd05af6c69b6','0x3ffef39085f4a1272c9',74,
+-		8,15625,
+-	], 1000 => [
+-		'0x80000000','0x0',31,
+-		'0x8000000000000000','0x0',63,
+-		1,1,
+-		'0x80000000','0x0',31,
+-		'0x8000000000000000','0x0',63,
+-		1,1,
+-		'0xfa000000','0x0',22,
+-		'0xfa00000000000000','0x0',54,
+-		1000,1,
+-		'0x83126e98','0x1ff7ced9168',41,
+-		'0x83126e978d4fdf3c','0x1ff7ced916872b020c4',73,
+-		1,1000,
+-	], 1024 => [
+-		'0xfa000000','0xfe000000',32,
+-		'0xfa00000000000000','0xfe00000000000000',64,
+-		125,128,
+-		'0x83126e98','0x7ef9db22',31,
+-		'0x83126e978d4fdf3c','0x7ef9db22d0e56041',63,
+-		128,125,
+-		'0xf4240000','0x3c0000',22,
+-		'0xf424000000000000','0x3c000000000000',54,
+-		15625,16,
+-		'0x8637bd06','0x1fff79c842f',41,
+-		'0x8637bd05af6c69b6','0x1fff79c842fa5093964',73,
+-		16,15625,
+-	], 1200 => [
+-		'0xd5555556','0xd5555555',32,
+-		'0xd555555555555556','0xd555555555555555',64,
+-		5,6,
+-		'0x9999999a','0x66666666',31,
+-		'0x999999999999999a','0x6666666666666666',63,
+-		6,5,
+-		'0xd0555556','0x2aaaaa',22,
+-		'0xd055555555555556','0x2aaaaaaaaaaaaa',54,
+-		2500,3,
+-		'0x9d495183','0x1ffcb923a29',41,
+-		'0x9d495182a9930be1','0x1ffcb923a29c779a6b5',73,
+-		3,2500,
+-	]
+-);
+ 
+ $has_bigint = eval 'use Math::BigInt qw(bgcd); 1;';
+ 
+@@ -305,8 +105,7 @@
+ 	my $s, $m, $a, $g;
+ 
+ 	if (!$has_bigint) {
+-		die "$0: HZ == $hz not canned and ".
+-		    "Math::BigInt not available\n";
++		die "$0: Math::BigInt not available\n";
+ 	}
+ 
+ 	# MSEC conversions
+@@ -323,19 +122,7 @@
+ 	my($hz, @val) = @_;
+ 	my $pfx, $bit, $suf, $s, $m, $a;
+ 
+-	print "/* Automatically generated by kernel/timeconst.pl */\n";
+-	print "/* Conversion constants for HZ == $hz */\n";
+-	print "\n";
+-	print "#ifndef KERNEL_TIMECONST_H\n";
+-	print "#define KERNEL_TIMECONST_H\n";
+-	print "\n";
+-
+-	print "#include <linux/param.h>\n";
+-
+-	print "\n";
+-	print "#if HZ != $hz\n";
+-	print "#error \"kernel/timeconst.h has the wrong HZ value!\"\n";
+-	print "#endif\n";
++	print "HZ == $hz\n";
+ 	print "\n";
+ 
+ 	foreach $pfx ('HZ_TO_MSEC','MSEC_TO_HZ',
+@@ -352,51 +139,37 @@
+ 		}
+ 	}
+ 
+-	print "\n";
+-	print "#endif /* KERNEL_TIMECONST_H */\n";
++	print "\n#elif "
+ }
+ 
+-($hz) = @ARGV;
++#($hz) = @ARGV;
+ 
+-# Use this to generate the %canned_values structure
+-if ($hz eq '--can') {
+-	shift(@ARGV);
+-	@hzlist = sort {$a <=> $b} (@ARGV);
+-
+-	print "# Precomputed values for systems without Math::BigInt\n";
+-	print "# Generated by:\n";
+-	print "# timeconst.pl --can ", join(' ', @hzlist), "\n";
+-	print "\%canned_values = (\n";
+-	my $pf = "\t";
+-	foreach $hz (@hzlist) {
+-		my @values = compute_values($hz);
+-		print "$pf$hz => [\n";
+-		while (scalar(@values)) {
+-			my $bit;
+-			foreach $bit (32, 64) {
+-				my $m = shift(@values);
+-				my $a = shift(@values);
+-				my $s = shift(@values);
+-				print "\t\t\'",$m,"\',\'",$a,"\',",$s,",\n";
+-			}
+-			my $n = shift(@values);
+-			my $d = shift(@values);
+-			print "\t\t",$n,',',$d,",\n";
+-		}
+-		print "\t]";
+-		$pf = ', ';
+-	}
+-	print "\n);\n";
+-} else {
+-	$hz += 0;			# Force to number
++print "/* Automatically generated by kernel/timeconst.pl */\n";
++print "/* Conversion constants for HZ */\n";
++print "\n";
++print "#ifndef KERNEL_TIMECONST_H\n";
++print "#define KERNEL_TIMECONST_H\n";
++print "\n";
++
++print "#include <linux/param.h>\n";
++
++print "#if ";
++
++foreach $hz (@ARGV)
++{
++	#$hz += 0;			# Force to number
+ 	if ($hz < 1) {
+ 		die "Usage: $0 HZ\n";
+ 	}
+ 
+-	@val = @{$canned_values{$hz}};
+-	if (!defined(@val)) {
+-		@val = compute_values($hz);
+-	}
++	@val = compute_values($hz);
+ 	output($hz, @val);
+ }
++
++print "1\n";
++print "#error \"kernel/timeconst.h has unknown HZ value!\"\n";
++print "#endif\n";
++print "\n";
++print "#endif /* KERNEL_TIMECONST_H */\n";
++
+ exit 0;
+--- /dev/null	2007-10-16 17:06:33.000000000 -0500
++++ linux-new/kernel/timeconst.h	2008-02-15 18:39:01.000000000 -0600
+@@ -0,0 +1,537 @@
++/* Automatically generated by kernel/timeconst.pl */
++/* Conversion constants for HZ */
++
++#ifndef KERNEL_TIMECONST_H
++#define KERNEL_TIMECONST_H
++
++#include <linux/param.h>
++#if HZ == 24
++
++#define HZ_TO_MSEC_MUL32        0xa6aaaaab
++#define HZ_TO_MSEC_ADJ32        0x2aaaaaa
++#define HZ_TO_MSEC_SHR32        26
++#define HZ_TO_MSEC_MUL64        0xa6aaaaaaaaaaaaab
++#define HZ_TO_MSEC_ADJ64        0x2aaaaaaaaaaaaaa
++#define HZ_TO_MSEC_SHR64        58
++#define HZ_TO_MSEC_NUM          125
++#define HZ_TO_MSEC_DEN          3
++#define MSEC_TO_HZ_MUL32        0xc49ba5e4
++#define MSEC_TO_HZ_ADJ32        0x1fbe76c8b4
++#define MSEC_TO_HZ_SHR32        37
++#define MSEC_TO_HZ_MUL64        0xc49ba5e353f7ceda
++#define MSEC_TO_HZ_ADJ64        0x1fbe76c8b439581062
++#define MSEC_TO_HZ_SHR64        69
++#define MSEC_TO_HZ_NUM          3
++#define MSEC_TO_HZ_DEN          125
++#define HZ_TO_USEC_MUL32        0xa2c2aaab
++#define HZ_TO_USEC_ADJ32        0xaaaa
++#define HZ_TO_USEC_SHR32        16
++#define HZ_TO_USEC_MUL64        0xa2c2aaaaaaaaaaab
++#define HZ_TO_USEC_ADJ64        0xaaaaaaaaaaaa
++#define HZ_TO_USEC_SHR64        48
++#define HZ_TO_USEC_NUM          125000
++#define HZ_TO_USEC_DEN          3
++#define USEC_TO_HZ_MUL32        0xc9539b89
++#define USEC_TO_HZ_ADJ32        0x7fffbce4217d
++#define USEC_TO_HZ_SHR32        47
++#define USEC_TO_HZ_MUL64        0xc9539b8887229e91
++#define USEC_TO_HZ_ADJ64        0x7fffbce4217d2849cb25
++#define USEC_TO_HZ_SHR64        79
++#define USEC_TO_HZ_NUM          3
++#define USEC_TO_HZ_DEN          125000
++
++#elif HZ == 32
++
++#define HZ_TO_MSEC_MUL32        0xfa000000
++#define HZ_TO_MSEC_ADJ32        0x6000000
++#define HZ_TO_MSEC_SHR32        27
++#define HZ_TO_MSEC_MUL64        0xfa00000000000000
++#define HZ_TO_MSEC_ADJ64        0x600000000000000
++#define HZ_TO_MSEC_SHR64        59
++#define HZ_TO_MSEC_NUM          125
++#define HZ_TO_MSEC_DEN          4
++#define MSEC_TO_HZ_MUL32        0x83126e98
++#define MSEC_TO_HZ_ADJ32        0xfdf3b645a
++#define MSEC_TO_HZ_SHR32        36
++#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
++#define MSEC_TO_HZ_ADJ64        0xfdf3b645a1cac0831
++#define MSEC_TO_HZ_SHR64        68
++#define MSEC_TO_HZ_NUM          4
++#define MSEC_TO_HZ_DEN          125
++#define HZ_TO_USEC_MUL32        0xf4240000
++#define HZ_TO_USEC_ADJ32        0x0
++#define HZ_TO_USEC_SHR32        17
++#define HZ_TO_USEC_MUL64        0xf424000000000000
++#define HZ_TO_USEC_ADJ64        0x0
++#define HZ_TO_USEC_SHR64        49
++#define HZ_TO_USEC_NUM          31250
++#define HZ_TO_USEC_DEN          1
++#define USEC_TO_HZ_MUL32        0x8637bd06
++#define USEC_TO_HZ_ADJ32        0x3fff79c842fa
++#define USEC_TO_HZ_SHR32        46
++#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
++#define USEC_TO_HZ_ADJ64        0x3fff79c842fa5093964a
++#define USEC_TO_HZ_SHR64        78
++#define USEC_TO_HZ_NUM          1
++#define USEC_TO_HZ_DEN          31250
++
++#elif HZ == 48
++
++#define HZ_TO_MSEC_MUL32        0xa6aaaaab
++#define HZ_TO_MSEC_ADJ32        0x6aaaaaa
++#define HZ_TO_MSEC_SHR32        27
++#define HZ_TO_MSEC_MUL64        0xa6aaaaaaaaaaaaab
++#define HZ_TO_MSEC_ADJ64        0x6aaaaaaaaaaaaaa
++#define HZ_TO_MSEC_SHR64        59
++#define HZ_TO_MSEC_NUM          125
++#define HZ_TO_MSEC_DEN          6
++#define MSEC_TO_HZ_MUL32        0xc49ba5e4
++#define MSEC_TO_HZ_ADJ32        0xfdf3b645a
++#define MSEC_TO_HZ_SHR32        36
++#define MSEC_TO_HZ_MUL64        0xc49ba5e353f7ceda
++#define MSEC_TO_HZ_ADJ64        0xfdf3b645a1cac0831
++#define MSEC_TO_HZ_SHR64        68
++#define MSEC_TO_HZ_NUM          6
++#define MSEC_TO_HZ_DEN          125
++#define HZ_TO_USEC_MUL32        0xa2c2aaab
++#define HZ_TO_USEC_ADJ32        0x15555
++#define HZ_TO_USEC_SHR32        17
++#define HZ_TO_USEC_MUL64        0xa2c2aaaaaaaaaaab
++#define HZ_TO_USEC_ADJ64        0x1555555555555
++#define HZ_TO_USEC_SHR64        49
++#define HZ_TO_USEC_NUM          62500
++#define HZ_TO_USEC_DEN          3
++#define USEC_TO_HZ_MUL32        0xc9539b89
++#define USEC_TO_HZ_ADJ32        0x3fffbce4217d
++#define USEC_TO_HZ_SHR32        46
++#define USEC_TO_HZ_MUL64        0xc9539b8887229e91
++#define USEC_TO_HZ_ADJ64        0x3fffbce4217d2849cb25
++#define USEC_TO_HZ_SHR64        78
++#define USEC_TO_HZ_NUM          3
++#define USEC_TO_HZ_DEN          62500
++
++#elif HZ == 64
++
++#define HZ_TO_MSEC_MUL32        0xfa000000
++#define HZ_TO_MSEC_ADJ32        0xe000000
++#define HZ_TO_MSEC_SHR32        28
++#define HZ_TO_MSEC_MUL64        0xfa00000000000000
++#define HZ_TO_MSEC_ADJ64        0xe00000000000000
++#define HZ_TO_MSEC_SHR64        60
++#define HZ_TO_MSEC_NUM          125
++#define HZ_TO_MSEC_DEN          8
++#define MSEC_TO_HZ_MUL32        0x83126e98
++#define MSEC_TO_HZ_ADJ32        0x7ef9db22d
++#define MSEC_TO_HZ_SHR32        35
++#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
++#define MSEC_TO_HZ_ADJ64        0x7ef9db22d0e560418
++#define MSEC_TO_HZ_SHR64        67
++#define MSEC_TO_HZ_NUM          8
++#define MSEC_TO_HZ_DEN          125
++#define HZ_TO_USEC_MUL32        0xf4240000
++#define HZ_TO_USEC_ADJ32        0x0
++#define HZ_TO_USEC_SHR32        18
++#define HZ_TO_USEC_MUL64        0xf424000000000000
++#define HZ_TO_USEC_ADJ64        0x0
++#define HZ_TO_USEC_SHR64        50
++#define HZ_TO_USEC_NUM          15625
++#define HZ_TO_USEC_DEN          1
++#define USEC_TO_HZ_MUL32        0x8637bd06
++#define USEC_TO_HZ_ADJ32        0x1fff79c842fa
++#define USEC_TO_HZ_SHR32        45
++#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
++#define USEC_TO_HZ_ADJ64        0x1fff79c842fa5093964a
++#define USEC_TO_HZ_SHR64        77
++#define USEC_TO_HZ_NUM          1
++#define USEC_TO_HZ_DEN          15625
++
++#elif HZ == 100
++
++#define HZ_TO_MSEC_MUL32        0xa0000000
++#define HZ_TO_MSEC_ADJ32        0x0
++#define HZ_TO_MSEC_SHR32        28
++#define HZ_TO_MSEC_MUL64        0xa000000000000000
++#define HZ_TO_MSEC_ADJ64        0x0
++#define HZ_TO_MSEC_SHR64        60
++#define HZ_TO_MSEC_NUM          10
++#define HZ_TO_MSEC_DEN          1
++#define MSEC_TO_HZ_MUL32        0xcccccccd
++#define MSEC_TO_HZ_ADJ32        0x733333333
++#define MSEC_TO_HZ_SHR32        35
++#define MSEC_TO_HZ_MUL64        0xcccccccccccccccd
++#define MSEC_TO_HZ_ADJ64        0x73333333333333333
++#define MSEC_TO_HZ_SHR64        67
++#define MSEC_TO_HZ_NUM          1
++#define MSEC_TO_HZ_DEN          10
++#define HZ_TO_USEC_MUL32        0x9c400000
++#define HZ_TO_USEC_ADJ32        0x0
++#define HZ_TO_USEC_SHR32        18
++#define HZ_TO_USEC_MUL64        0x9c40000000000000
++#define HZ_TO_USEC_ADJ64        0x0
++#define HZ_TO_USEC_SHR64        50
++#define HZ_TO_USEC_NUM          10000
++#define HZ_TO_USEC_DEN          1
++#define USEC_TO_HZ_MUL32        0xd1b71759
++#define USEC_TO_HZ_ADJ32        0x1fff2e48e8a7
++#define USEC_TO_HZ_SHR32        45
++#define USEC_TO_HZ_MUL64        0xd1b71758e219652c
++#define USEC_TO_HZ_ADJ64        0x1fff2e48e8a71de69ad4
++#define USEC_TO_HZ_SHR64        77
++#define USEC_TO_HZ_NUM          1
++#define USEC_TO_HZ_DEN          10000
++
++#elif HZ == 122
++
++#define HZ_TO_MSEC_MUL32        0x8325c53f
++#define HZ_TO_MSEC_ADJ32        0xfbcda3a
++#define HZ_TO_MSEC_SHR32        28
++#define HZ_TO_MSEC_MUL64        0x8325c53ef368eb05
++#define HZ_TO_MSEC_ADJ64        0xfbcda3ac10c9714
++#define HZ_TO_MSEC_SHR64        60
++#define HZ_TO_MSEC_NUM          500
++#define HZ_TO_MSEC_DEN          61
++#define MSEC_TO_HZ_MUL32        0xf9db22d1
++#define MSEC_TO_HZ_ADJ32        0x7fbe76c8b
++#define MSEC_TO_HZ_SHR32        35
++#define MSEC_TO_HZ_MUL64        0xf9db22d0e560418a
++#define MSEC_TO_HZ_ADJ64        0x7fbe76c8b43958106
++#define MSEC_TO_HZ_SHR64        67
++#define MSEC_TO_HZ_NUM          61
++#define MSEC_TO_HZ_DEN          500
++#define HZ_TO_USEC_MUL32        0x8012e2a0
++#define HZ_TO_USEC_ADJ32        0x3ef36
++#define HZ_TO_USEC_SHR32        18
++#define HZ_TO_USEC_MUL64        0x8012e29f79b47583
++#define HZ_TO_USEC_ADJ64        0x3ef368eb04325
++#define HZ_TO_USEC_SHR64        50
++#define HZ_TO_USEC_NUM          500000
++#define HZ_TO_USEC_DEN          61
++#define USEC_TO_HZ_MUL32        0xffda4053
++#define USEC_TO_HZ_ADJ32        0x1ffffbce4217
++#define USEC_TO_HZ_SHR32        45
++#define USEC_TO_HZ_MUL64        0xffda4052d666a983
++#define USEC_TO_HZ_ADJ64        0x1ffffbce4217d2849cb2
++#define USEC_TO_HZ_SHR64        77
++#define USEC_TO_HZ_NUM          61
++#define USEC_TO_HZ_DEN          500000
++
++#elif HZ == 128
++
++#define HZ_TO_MSEC_MUL32        0xfa000000
++#define HZ_TO_MSEC_ADJ32        0x1e000000
++#define HZ_TO_MSEC_SHR32        29
++#define HZ_TO_MSEC_MUL64        0xfa00000000000000
++#define HZ_TO_MSEC_ADJ64        0x1e00000000000000
++#define HZ_TO_MSEC_SHR64        61
++#define HZ_TO_MSEC_NUM          125
++#define HZ_TO_MSEC_DEN          16
++#define MSEC_TO_HZ_MUL32        0x83126e98
++#define MSEC_TO_HZ_ADJ32        0x3f7ced916
++#define MSEC_TO_HZ_SHR32        34
++#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
++#define MSEC_TO_HZ_ADJ64        0x3f7ced916872b020c
++#define MSEC_TO_HZ_SHR64        66
++#define MSEC_TO_HZ_NUM          16
++#define MSEC_TO_HZ_DEN          125
++#define HZ_TO_USEC_MUL32        0xf4240000
++#define HZ_TO_USEC_ADJ32        0x40000
++#define HZ_TO_USEC_SHR32        19
++#define HZ_TO_USEC_MUL64        0xf424000000000000
++#define HZ_TO_USEC_ADJ64        0x4000000000000
++#define HZ_TO_USEC_SHR64        51
++#define HZ_TO_USEC_NUM          15625
++#define HZ_TO_USEC_DEN          2
++#define USEC_TO_HZ_MUL32        0x8637bd06
++#define USEC_TO_HZ_ADJ32        0xfffbce4217d
++#define USEC_TO_HZ_SHR32        44
++#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
++#define USEC_TO_HZ_ADJ64        0xfffbce4217d2849cb25
++#define USEC_TO_HZ_SHR64        76
++#define USEC_TO_HZ_NUM          2
++#define USEC_TO_HZ_DEN          15625
++
++#elif HZ == 200
++
++#define HZ_TO_MSEC_MUL32        0xa0000000
++#define HZ_TO_MSEC_ADJ32        0x0
++#define HZ_TO_MSEC_SHR32        29
++#define HZ_TO_MSEC_MUL64        0xa000000000000000
++#define HZ_TO_MSEC_ADJ64        0x0
++#define HZ_TO_MSEC_SHR64        61
++#define HZ_TO_MSEC_NUM          5
++#define HZ_TO_MSEC_DEN          1
++#define MSEC_TO_HZ_MUL32        0xcccccccd
++#define MSEC_TO_HZ_ADJ32        0x333333333
++#define MSEC_TO_HZ_SHR32        34
++#define MSEC_TO_HZ_MUL64        0xcccccccccccccccd
++#define MSEC_TO_HZ_ADJ64        0x33333333333333333
++#define MSEC_TO_HZ_SHR64        66
++#define MSEC_TO_HZ_NUM          1
++#define MSEC_TO_HZ_DEN          5
++#define HZ_TO_USEC_MUL32        0x9c400000
++#define HZ_TO_USEC_ADJ32        0x0
++#define HZ_TO_USEC_SHR32        19
++#define HZ_TO_USEC_MUL64        0x9c40000000000000
++#define HZ_TO_USEC_ADJ64        0x0
++#define HZ_TO_USEC_SHR64        51
++#define HZ_TO_USEC_NUM          5000
++#define HZ_TO_USEC_DEN          1
++#define USEC_TO_HZ_MUL32        0xd1b71759
++#define USEC_TO_HZ_ADJ32        0xfff2e48e8a7
++#define USEC_TO_HZ_SHR32        44
++#define USEC_TO_HZ_MUL64        0xd1b71758e219652c
++#define USEC_TO_HZ_ADJ64        0xfff2e48e8a71de69ad4
++#define USEC_TO_HZ_SHR64        76
++#define USEC_TO_HZ_NUM          1
++#define USEC_TO_HZ_DEN          5000
++
++#elif HZ == 250
++
++#define HZ_TO_MSEC_MUL32        0x80000000
++#define HZ_TO_MSEC_ADJ32        0x0
++#define HZ_TO_MSEC_SHR32        29
++#define HZ_TO_MSEC_MUL64        0x8000000000000000
++#define HZ_TO_MSEC_ADJ64        0x0
++#define HZ_TO_MSEC_SHR64        61
++#define HZ_TO_MSEC_NUM          4
++#define HZ_TO_MSEC_DEN          1
++#define MSEC_TO_HZ_MUL32        0x80000000
++#define MSEC_TO_HZ_ADJ32        0x180000000
++#define MSEC_TO_HZ_SHR32        33
++#define MSEC_TO_HZ_MUL64        0x8000000000000000
++#define MSEC_TO_HZ_ADJ64        0x18000000000000000
++#define MSEC_TO_HZ_SHR64        65
++#define MSEC_TO_HZ_NUM          1
++#define MSEC_TO_HZ_DEN          4
++#define HZ_TO_USEC_MUL32        0xfa000000
++#define HZ_TO_USEC_ADJ32        0x0
++#define HZ_TO_USEC_SHR32        20
++#define HZ_TO_USEC_MUL64        0xfa00000000000000
++#define HZ_TO_USEC_ADJ64        0x0
++#define HZ_TO_USEC_SHR64        52
++#define HZ_TO_USEC_NUM          4000
++#define HZ_TO_USEC_DEN          1
++#define USEC_TO_HZ_MUL32        0x83126e98
++#define USEC_TO_HZ_ADJ32        0x7ff7ced9168
++#define USEC_TO_HZ_SHR32        43
++#define USEC_TO_HZ_MUL64        0x83126e978d4fdf3c
++#define USEC_TO_HZ_ADJ64        0x7ff7ced916872b020c4
++#define USEC_TO_HZ_SHR64        75
++#define USEC_TO_HZ_NUM          1
++#define USEC_TO_HZ_DEN          4000
++
++#elif HZ == 256
++
++#define HZ_TO_MSEC_MUL32        0xfa000000
++#define HZ_TO_MSEC_ADJ32        0x3e000000
++#define HZ_TO_MSEC_SHR32        30
++#define HZ_TO_MSEC_MUL64        0xfa00000000000000
++#define HZ_TO_MSEC_ADJ64        0x3e00000000000000
++#define HZ_TO_MSEC_SHR64        62
++#define HZ_TO_MSEC_NUM          125
++#define HZ_TO_MSEC_DEN          32
++#define MSEC_TO_HZ_MUL32        0x83126e98
++#define MSEC_TO_HZ_ADJ32        0x1fbe76c8b
++#define MSEC_TO_HZ_SHR32        33
++#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
++#define MSEC_TO_HZ_ADJ64        0x1fbe76c8b43958106
++#define MSEC_TO_HZ_SHR64        65
++#define MSEC_TO_HZ_NUM          32
++#define MSEC_TO_HZ_DEN          125
++#define HZ_TO_USEC_MUL32        0xf4240000
++#define HZ_TO_USEC_ADJ32        0xc0000
++#define HZ_TO_USEC_SHR32        20
++#define HZ_TO_USEC_MUL64        0xf424000000000000
++#define HZ_TO_USEC_ADJ64        0xc000000000000
++#define HZ_TO_USEC_SHR64        52
++#define HZ_TO_USEC_NUM          15625
++#define HZ_TO_USEC_DEN          4
++#define USEC_TO_HZ_MUL32        0x8637bd06
++#define USEC_TO_HZ_ADJ32        0x7ffde7210be
++#define USEC_TO_HZ_SHR32        43
++#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
++#define USEC_TO_HZ_ADJ64        0x7ffde7210be9424e592
++#define USEC_TO_HZ_SHR64        75
++#define USEC_TO_HZ_NUM          4
++#define USEC_TO_HZ_DEN          15625
++
++#elif HZ == 300
++
++#define HZ_TO_MSEC_MUL32        0xd5555556
++#define HZ_TO_MSEC_ADJ32        0x2aaaaaaa
++#define HZ_TO_MSEC_SHR32        30
++#define HZ_TO_MSEC_MUL64        0xd555555555555556
++#define HZ_TO_MSEC_ADJ64        0x2aaaaaaaaaaaaaaa
++#define HZ_TO_MSEC_SHR64        62
++#define HZ_TO_MSEC_NUM          10
++#define HZ_TO_MSEC_DEN          3
++#define MSEC_TO_HZ_MUL32        0x9999999a
++#define MSEC_TO_HZ_ADJ32        0x1cccccccc
++#define MSEC_TO_HZ_SHR32        33
++#define MSEC_TO_HZ_MUL64        0x999999999999999a
++#define MSEC_TO_HZ_ADJ64        0x1cccccccccccccccc
++#define MSEC_TO_HZ_SHR64        65
++#define MSEC_TO_HZ_NUM          3
++#define MSEC_TO_HZ_DEN          10
++#define HZ_TO_USEC_MUL32        0xd0555556
++#define HZ_TO_USEC_ADJ32        0xaaaaa
++#define HZ_TO_USEC_SHR32        20
++#define HZ_TO_USEC_MUL64        0xd055555555555556
++#define HZ_TO_USEC_ADJ64        0xaaaaaaaaaaaaa
++#define HZ_TO_USEC_SHR64        52
++#define HZ_TO_USEC_NUM          10000
++#define HZ_TO_USEC_DEN          3
++#define USEC_TO_HZ_MUL32        0x9d495183
++#define USEC_TO_HZ_ADJ32        0x7ffcb923a29
++#define USEC_TO_HZ_SHR32        43
++#define USEC_TO_HZ_MUL64        0x9d495182a9930be1
++#define USEC_TO_HZ_ADJ64        0x7ffcb923a29c779a6b5
++#define USEC_TO_HZ_SHR64        75
++#define USEC_TO_HZ_NUM          3
++#define USEC_TO_HZ_DEN          10000
++
++#elif HZ == 512
++
++#define HZ_TO_MSEC_MUL32        0xfa000000
++#define HZ_TO_MSEC_ADJ32        0x7e000000
++#define HZ_TO_MSEC_SHR32        31
++#define HZ_TO_MSEC_MUL64        0xfa00000000000000
++#define HZ_TO_MSEC_ADJ64        0x7e00000000000000
++#define HZ_TO_MSEC_SHR64        63
++#define HZ_TO_MSEC_NUM          125
++#define HZ_TO_MSEC_DEN          64
++#define MSEC_TO_HZ_MUL32        0x83126e98
++#define MSEC_TO_HZ_ADJ32        0xfdf3b645
++#define MSEC_TO_HZ_SHR32        32
++#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
++#define MSEC_TO_HZ_ADJ64        0xfdf3b645a1cac083
++#define MSEC_TO_HZ_SHR64        64
++#define MSEC_TO_HZ_NUM          64
++#define MSEC_TO_HZ_DEN          125
++#define HZ_TO_USEC_MUL32        0xf4240000
++#define HZ_TO_USEC_ADJ32        0x1c0000
++#define HZ_TO_USEC_SHR32        21
++#define HZ_TO_USEC_MUL64        0xf424000000000000
++#define HZ_TO_USEC_ADJ64        0x1c000000000000
++#define HZ_TO_USEC_SHR64        53
++#define HZ_TO_USEC_NUM          15625
++#define HZ_TO_USEC_DEN          8
++#define USEC_TO_HZ_MUL32        0x8637bd06
++#define USEC_TO_HZ_ADJ32        0x3ffef39085f
++#define USEC_TO_HZ_SHR32        42
++#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
++#define USEC_TO_HZ_ADJ64        0x3ffef39085f4a1272c9
++#define USEC_TO_HZ_SHR64        74
++#define USEC_TO_HZ_NUM          8
++#define USEC_TO_HZ_DEN          15625
++
++#elif HZ == 1000
++
++#define HZ_TO_MSEC_MUL32        0x80000000
++#define HZ_TO_MSEC_ADJ32        0x0
++#define HZ_TO_MSEC_SHR32        31
++#define HZ_TO_MSEC_MUL64        0x8000000000000000
++#define HZ_TO_MSEC_ADJ64        0x0
++#define HZ_TO_MSEC_SHR64        63
++#define HZ_TO_MSEC_NUM          1
++#define HZ_TO_MSEC_DEN          1
++#define MSEC_TO_HZ_MUL32        0x80000000
++#define MSEC_TO_HZ_ADJ32        0x0
++#define MSEC_TO_HZ_SHR32        31
++#define MSEC_TO_HZ_MUL64        0x8000000000000000
++#define MSEC_TO_HZ_ADJ64        0x0
++#define MSEC_TO_HZ_SHR64        63
++#define MSEC_TO_HZ_NUM          1
++#define MSEC_TO_HZ_DEN          1
++#define HZ_TO_USEC_MUL32        0xfa000000
++#define HZ_TO_USEC_ADJ32        0x0
++#define HZ_TO_USEC_SHR32        22
++#define HZ_TO_USEC_MUL64        0xfa00000000000000
++#define HZ_TO_USEC_ADJ64        0x0
++#define HZ_TO_USEC_SHR64        54
++#define HZ_TO_USEC_NUM          1000
++#define HZ_TO_USEC_DEN          1
++#define USEC_TO_HZ_MUL32        0x83126e98
++#define USEC_TO_HZ_ADJ32        0x1ff7ced9168
++#define USEC_TO_HZ_SHR32        41
++#define USEC_TO_HZ_MUL64        0x83126e978d4fdf3c
++#define USEC_TO_HZ_ADJ64        0x1ff7ced916872b020c4
++#define USEC_TO_HZ_SHR64        73
++#define USEC_TO_HZ_NUM          1
++#define USEC_TO_HZ_DEN          1000
++
++#elif HZ == 1024
++
++#define HZ_TO_MSEC_MUL32        0xfa000000
++#define HZ_TO_MSEC_ADJ32        0xfe000000
++#define HZ_TO_MSEC_SHR32        32
++#define HZ_TO_MSEC_MUL64        0xfa00000000000000
++#define HZ_TO_MSEC_ADJ64        0xfe00000000000000
++#define HZ_TO_MSEC_SHR64        64
++#define HZ_TO_MSEC_NUM          125
++#define HZ_TO_MSEC_DEN          128
++#define MSEC_TO_HZ_MUL32        0x83126e98
++#define MSEC_TO_HZ_ADJ32        0x7ef9db22
++#define MSEC_TO_HZ_SHR32        31
++#define MSEC_TO_HZ_MUL64        0x83126e978d4fdf3c
++#define MSEC_TO_HZ_ADJ64        0x7ef9db22d0e56041
++#define MSEC_TO_HZ_SHR64        63
++#define MSEC_TO_HZ_NUM          128
++#define MSEC_TO_HZ_DEN          125
++#define HZ_TO_USEC_MUL32        0xf4240000
++#define HZ_TO_USEC_ADJ32        0x3c0000
++#define HZ_TO_USEC_SHR32        22
++#define HZ_TO_USEC_MUL64        0xf424000000000000
++#define HZ_TO_USEC_ADJ64        0x3c000000000000
++#define HZ_TO_USEC_SHR64        54
++#define HZ_TO_USEC_NUM          15625
++#define HZ_TO_USEC_DEN          16
++#define USEC_TO_HZ_MUL32        0x8637bd06
++#define USEC_TO_HZ_ADJ32        0x1fff79c842f
++#define USEC_TO_HZ_SHR32        41
++#define USEC_TO_HZ_MUL64        0x8637bd05af6c69b6
++#define USEC_TO_HZ_ADJ64        0x1fff79c842fa5093964
++#define USEC_TO_HZ_SHR64        73
++#define USEC_TO_HZ_NUM          16
++#define USEC_TO_HZ_DEN          15625
++
++#elif HZ == 1200
++
++#define HZ_TO_MSEC_MUL32        0xd5555556
++#define HZ_TO_MSEC_ADJ32        0xd5555555
++#define HZ_TO_MSEC_SHR32        32
++#define HZ_TO_MSEC_MUL64        0xd555555555555556
++#define HZ_TO_MSEC_ADJ64        0xd555555555555555
++#define HZ_TO_MSEC_SHR64        64
++#define HZ_TO_MSEC_NUM          5
++#define HZ_TO_MSEC_DEN          6
++#define MSEC_TO_HZ_MUL32        0x9999999a
++#define MSEC_TO_HZ_ADJ32        0x66666666
++#define MSEC_TO_HZ_SHR32        31
++#define MSEC_TO_HZ_MUL64        0x999999999999999a
++#define MSEC_TO_HZ_ADJ64        0x6666666666666666
++#define MSEC_TO_HZ_SHR64        63
++#define MSEC_TO_HZ_NUM          6
++#define MSEC_TO_HZ_DEN          5
++#define HZ_TO_USEC_MUL32        0xd0555556
++#define HZ_TO_USEC_ADJ32        0x2aaaaa
++#define HZ_TO_USEC_SHR32        22
++#define HZ_TO_USEC_MUL64        0xd055555555555556
++#define HZ_TO_USEC_ADJ64        0x2aaaaaaaaaaaaa
++#define HZ_TO_USEC_SHR64        54
++#define HZ_TO_USEC_NUM          2500
++#define HZ_TO_USEC_DEN          3
++#define USEC_TO_HZ_MUL32        0x9d495183
++#define USEC_TO_HZ_ADJ32        0x1ffcb923a29
++#define USEC_TO_HZ_SHR32        41
++#define USEC_TO_HZ_MUL64        0x9d495182a9930be1
++#define USEC_TO_HZ_ADJ64        0x1ffcb923a29c779a6b5
++#define USEC_TO_HZ_SHR64        73
++#define USEC_TO_HZ_NUM          3
++#define USEC_TO_HZ_DEN          2500
++
++#elif 1
++#error "kernel/timeconst.h has unknown HZ value!"
++#endif
++
++#endif /* KERNEL_TIMECONST_H */
+--- linux/hg/kernel/Makefile	2008-02-08 19:06:59.000000000 -0600
++++ linux-new/kernel/Makefile	2008-02-15 19:32:08.000000000 -0600
+@@ -95,7 +95,7 @@
+ $(obj)/time.o: $(obj)/timeconst.h
+ 
+ quiet_cmd_timeconst  = TIMEC   $@
+-      cmd_timeconst  = $(PERL) $< $(CONFIG_HZ) > $@
+-targets += timeconst.h
+-$(obj)/timeconst.h: $(src)/timeconst.pl FORCE
++      cmd_timeconst  = $(PERL) $< \
++            24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 1200 > $@
++$(obj)/timeconst.h:
+ 	$(call if_changed,timeconst)