[PATCH] Remove the new perl dependency from build.

From: Rob Landley
Date: Fri Feb 15 2008 - 21:11:29 EST


From: Rob Landley <rob@xxxxxxxxxxx>

Remove perl dependency introduced in 2.6.25-rc1, by shipping kernel/timeconst.h
with all the "canned" values so perl is only used to regenerate it if that
file is deleted.

Removed the special case "canned" logic from the perl script (it always requires
Math::bigint when it runs now). Moved the list of canned values into
kernel/Makefile. (It's already a selection menu in kconfig, so you can't
just feed arbitrary values into it anyway. If you add a new value to kconfig,
add it to kernel/Makefile as well and delete kernel/timeconst.h so the build
recreates it.)

Signed-off-by: Rob Landley <rob@xxxxxxxxxxx>
---

kernel/Makefile | 6
kernel/timeconst.h | 537 ++++++++++++++++++++++++++++++++++++++++++
kernel/timeconst.pl | 281 ++-------------------
3 files changed, 567 insertions(+), 257 deletions(-)

I have a build system that's been happily building kernels since 2.6.16,
which can't build 2.6.25-rc1:

> TIMEC kernel/timeconst.h
> /bin/sh: perl: not found
> make[1]: *** [kernel/timeconst.h] Error 127
> make: *** [kernel] Error 2
> make: *** Waiting for unfinished jobs....

Building the kernel has never required perl before, and it's a large change to
need to build perl on x86, arm, mips, powerpc, m68k, sh4, and so on to get a
native build environment that can compile a kernel, when I didn't need to do
this for 2.6.24 or any previous version.

For the record, a self-bootstrapping system (built from linux, busybox,
uClibc, binutils, gcc, make, and bash) requires the following commands to
natively recompile everything:

At absolute paths:
/bin/bash, /bin/sh, and /lib/ld-uClinux.so.0

In $PATH:
ar, as, awk, basename, cat, cc, chmod, chown, cmp, cp, cut, date, dd, diff,
dirname, echo, egrep, env, expr, find, gcc, grep, gzip, hostname, id,
install, ld, ln, ls, make, mkdir, mktemp, mv, nm, od, patch, pwd, readlink,
rm, rmdir, sed, sha1sum, sleep, sort, tail, tar, touch, tr, true, uname,
uniq, wc, which, whoami.

(It also needs some /dev stuff and shared libraries, of course. But no
bison, no lexx, and no perl.)

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)


--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/