lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <200802152010.05505.rob@landley.net>
Date:	Fri, 15 Feb 2008 20:10:04 -0600
From:	Rob Landley <rob@...dley.net>
To:	linux-kernel@...r.kernel.org
Cc:	miltonm@....com, hpa@...or.com, Sam Ravnborg <sam@...nborg.org>,
	Andrew Morton <akpm@...ux-foundation.org>
Subject: [PATCH] Remove the new perl dependency from build.

From: Rob Landley <rob@...dley.net>

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@...dley.net>
---

 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@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ