bk://linux-sam.bkbits.net/kbuild
rmk+lkml@arm.linux.org.uk|ChangeSet|20041026223612|60877 rmk+lkml

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/10/27 00:36:12+02:00 rmk+lkml@arm.linux.org.uk 
#   arm: Fix ARM kernel build with permitted binutils versions
#   
#   All ARM binutils versions post 2.11.90 contains an extra "feature" which
#   interferes with the kernel in various ways - extra "mapping symbols"
#   in the ELF symbol table '$a', '$t' and '$d'.  This causes two problems:
#   
#   1. Since '$a' symbols have the same value as function names, this
#      causes anything which uses the kallsyms infrastructure to report
#      wrong values.
#   2. programs which parse System.map do not expect symbols to start with
#      '$'.
#   
#   Signed-off-by: Russell King <rmk@arm.linux.org.uk>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
#   
#   ===== kernel/module.c 1.120 vs edited =====
# 
# scripts/mksysmap
#   2004/10/08 17:39:39+02:00 rmk+lkml@arm.linux.org.uk +1 -1
#   arm: Fix ARM kernel build with permitted binutils versions
# 
# scripts/kallsyms.c
#   2004/10/08 17:34:20+02:00 rmk+lkml@arm.linux.org.uk +13 -1
#   arm: Fix ARM kernel build with permitted binutils versions
# 
# kernel/module.c
#   2004/10/08 17:34:19+02:00 rmk+lkml@arm.linux.org.uk +14 -2
#   arm: Fix ARM kernel build with permitted binutils versions
# 
# ChangeSet
#   2004/10/27 00:29:10+02:00 juhl-lkml@dif.dk 
#   kconfig: Small spelling fix for MODULE_SRCVERSION_ALL Kconfig
#   
#   Here's a trivial patch fixing a small spelling error in init/Kconfig in
#   the description of MODULE_SRCVERSION_ALL
#   
#   Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# init/Kconfig
#   2004/10/24 17:41:12+02:00 juhl-lkml@dif.dk +1 -1
#   kconfig: Small spelling fix for MODULE_SRCVERSION_ALL Kconfig
# 
# ChangeSet
#   2004/10/27 00:27:31+02:00 trini@kernel.crashing.org 
#   kbuild: warning fixes on Solaris 9
#   
#   The following set of patches is based loosely on the patches that
#   Jean-Christophe Dubois came up with for 2.6.7.  Where as the original
#   patches added a number of casts to unsigned char, I went the route of
#   making the chars be explicitly signed.  I honestly don't know which
#   route is better to go down.  Doing this is the bulk of the patch.  Out
#   of the rest of the odds 'n ends is that on Solaris, Elf32_Word is a
#   ulong, which means all of the printf's are unhappy (uint format, ulong
#   arg) for most of the typedefs.
#   
#   Signed-off-by: Tom Rini <trini@kernel.crashing.org>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# scripts/mod/sumversion.c
#   2004/10/27 00:22:41+02:00 trini@kernel.crashing.org +4 -4
#   kbuild: warning fixes on Solaris 9
# 
# scripts/mod/modpost.c
#   2004/10/27 00:22:13+02:00 trini@kernel.crashing.org +1 -1
#   kbuild: warning fixes on Solaris 9
# 
# scripts/mod/file2alias.c
#   2004/10/27 00:22:12+02:00 trini@kernel.crashing.org +12 -7
#   kbuild: warning fixes on Solaris 9
# 
# scripts/kconfig/symbol.c
#   2004/10/27 00:22:08+02:00 trini@kernel.crashing.org +1 -1
#   kbuild: warning fixes on Solaris 9
# 
# scripts/kconfig/mconf.c
#   2004/10/27 00:22:09+02:00 trini@kernel.crashing.org +2 -2
#   kbuild: warning fixes on Solaris 9
# 
# scripts/kconfig/confdata.c
#   2004/10/27 00:22:10+02:00 trini@kernel.crashing.org +3 -3
#   kbuild: warning fixes on Solaris 9
# 
# scripts/kconfig/conf.c
#   2004/10/27 00:22:04+02:00 trini@kernel.crashing.org +3 -3
#   kbuild: warning fixes on Solaris 9
# 
# scripts/conmakehash.c
#   2004/10/27 00:22:06+02:00 trini@kernel.crashing.org +1 -1
#   kbuild: warning fixes on Solaris 9
# 
# scripts/basic/split-include.c
#   2004/10/27 00:22:06+02:00 trini@kernel.crashing.org +1 -1
#   kbuild: warning fixes on Solaris 9
# 
# scripts/basic/fixdep.c
#   2004/10/27 00:22:09+02:00 trini@kernel.crashing.org +5 -5
#   kbuild: warning fixes on Solaris 9
# 
# scripts/basic/docproc.c
#   2004/10/27 00:22:07+02:00 trini@kernel.crashing.org +7 -7
#   kbuild: warning fixes on Solaris 9
# 
# arch/ppc/boot/utils/mkbugboot.c
#   2004/10/27 00:22:03+02:00 trini@kernel.crashing.org +1 -1
#   kbuild: warning fixes on Solaris 9
# 
# ChangeSet
#   2004/10/27 00:07:03+02:00 sam@mars.ravnborg.org 
#   kbuild/usr: initramfs list fixed and simplified
#   
#   Moving logic to scripts/gen_initramfs_list.sh make a nice cleanup in
#   usr/Makefile.
#   A new initramfs image will be generated if the initramfs_list file changes.
#   This patch also fixes the bug with make O=..
#   
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# usr/Makefile
#   2004/10/27 00:06:46+02:00 sam@mars.ravnborg.org +9 -20
#   Simplify - logic moved to gen_initramfs_list.sh script
# 
# scripts/gen_initramfs_list.sh
#   2004/10/27 00:06:46+02:00 sam@mars.ravnborg.org +35 -16
#   Moved logic to this file.
#   It now handles both dirs, files and no input given.
#   For invalid input print error and boild out.
# 
# scripts/Makefile.lib
#   2004/10/27 00:06:46+02:00 sam@mars.ravnborg.org +27 -0
#   Added filechk - copy from top level Makefile
# 
# BitKeeper/etc/ignore
#   2004/10/27 00:06:24+02:00 sam@mars.ravnborg.org +1 -0
#   added usr/initramfs_list
# 
# BitKeeper/deleted/.del-initramfs_list~e02c62efaa478389
#   2004/10/27 00:02:17+02:00 sam@mars.ravnborg.org +0 -0
#   Delete: usr/initramfs_list
# 
# ChangeSet
#   2004/10/26 21:50:54+02:00 sam@mars.ravnborg.org 
#   Merge bk://linux-sam.bkbits.net/kbuild
#   into mars.ravnborg.org:/home/sam/bk/to-linus
# 
# lib/Kconfig.debug
#   2004/10/26 21:50:45+02:00 sam@mars.ravnborg.org +0 -0
#   Auto merged
# 
# init/Kconfig
#   2004/10/26 21:50:44+02:00 sam@mars.ravnborg.org +0 -0
#   Auto merged
# 
# arch/i386/Makefile
#   2004/10/26 21:50:44+02:00 sam@mars.ravnborg.org +0 -0
#   Auto merged
# 
# Makefile
#   2004/10/26 21:50:44+02:00 sam@mars.ravnborg.org +0 -0
#   Auto merged
# 
# Documentation/DocBook/Makefile
#   2004/10/26 21:50:44+02:00 sam@mars.ravnborg.org +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/10/17 11:48:59+02:00 vda@port.imtp.ilyichevsk.odessa.ua 
#   kbuild: make gcc -align options .config-settable
#   
#   With all alignment options set to 1 (minimum alignment),
#   I've got 5% smaller vmlinux compared to one built with
#   default code alignment.
#   Original implementation altered to use cc-option-align by sam.
#   
#   From: Denis Vlasenko <vda@port.imtp.ilyichevsk.odessa.ua>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# init/Kconfig
#   2004/10/17 02:03:21+02:00 vda@port.imtp.ilyichevsk.odessa.ua +37 -0
#   kbuild: make gcc -align options .config-settable
# 
# Makefile
#   2004/10/17 11:44:55+02:00 vda@port.imtp.ilyichevsk.odessa.ua +7 -0
#   kbuild: make gcc -align options .config-settable
# 
# ChangeSet
#   2004/10/17 11:41:54+02:00 sam@mars.ravnborg.org 
#   kbuild: Add cc-option-align
#   
#   gcc version >= 3.00 shifted from -malign-* to -falign-*. $(cc-option-align) will
#   based on current gcc version specify the right prefix for the align option.
#   Documented in Documentation/makefiles.txt
#   
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# arch/i386/Makefile
#   2004/10/17 11:41:36+02:00 sam@mars.ravnborg.org +1 -1
#   Use cc-option-align from top-level Makefile
# 
# Makefile
#   2004/10/17 11:41:36+02:00 sam@mars.ravnborg.org +5 -0
#   Introduced cc-option-align
# 
# Documentation/kbuild/makefiles.txt
#   2004/10/17 11:41:36+02:00 sam@mars.ravnborg.org +15 -0
#   Documented cc-option-align
# 
# ChangeSet
#   2004/10/17 02:01:07+02:00 sam@mars.ravnborg.org 
#   kbuild: explicit enable framepointer
#   
#   Newer gcc versions automatically turns on -fomit-frame-pointer when
#   -O2 is specified thus breaking CONFIG_FRAME_POINTER option.
#   Explicitly specifying -fno-omit-frame-pointer fixes it.
#   
#   From: Tejun Heo <tj@home-tj.org>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# Makefile
#   2004/10/17 02:00:48+02:00 sam@mars.ravnborg.org +3 -1
#   Newer gcc versions automatically turns on -fomit-frame-pointer when
#   -O2 is specified thus breaking CONFIG_FRAME_POINTER option.
#   Explicitly specifying -fno-omit-frame-pointer fixes it.
# 
# ChangeSet
#   2004/10/17 01:55:32+02:00 sam@mars.ravnborg.org 
#   kbuild: use two double-quotes for localversion
#   
#   Modifies LOCALVERSION definition such that it uses
#   patsubst instead of subst to remove surrounding double quotes from
#   CONFIG_LOCALVERSION.  This helps syntax-highlighting editors.
#   
#   From: Tejun Heo <tj@home-tj.org>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# Makefile
#   2004/10/17 01:55:11+02:00 sam@mars.ravnborg.org +1 -1
#   Use two double qutes so editors do not get confused
# 
# ChangeSet
#   2004/10/17 01:17:08+02:00 sam@mars.ravnborg.org 
#   kbuild: Create Makefile in output dir for *config targets
#   
#   Upon request from Andi Kleen the Makefile is now created for *config
#   targets also. So the MAkefile in the output directory is present when
#   it is expected (after kernel configuration).
#   Also tell user the Makefile is generated.
#   
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# Makefile
#   2004/10/17 01:16:51+02:00 sam@mars.ravnborg.org +19 -14
#   Create a Makefile in output directory for *config targets and
#   tell user a Makefile is generated.
# 
# ChangeSet
#   2004/10/16 23:51:27+02:00 trini@kernel.crashing.org 
#   kbuild: fix 'htmldocs' and friends with O=
#   
#   The following patch fixes up 'htmldocs' and related to work when
#   trees are being built with O=.  I fixed it all up by passing the srctree
#   as an env-var to docproc (and thus what it calls) and then pull that out
#   when needed.
#   
#   Signed-off-by: Tom Rini <trini@kernel.crashing.org>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# scripts/kernel-doc
#   2004/10/16 02:00:00+02:00 trini@kernel.crashing.org +1 -1
#   kbuild: fix 'htmldocs' and friends with O=
# 
# scripts/basic/docproc.c
#   2004/10/16 02:00:00+02:00 trini@kernel.crashing.org +15 -4
#   kbuild: fix 'htmldocs' and friends with O=
# 
# Documentation/DocBook/Makefile
#   2004/10/16 02:00:00+02:00 trini@kernel.crashing.org +5 -2
#   kbuild: fix 'htmldocs' and friends with O=
# 
# ChangeSet
#   2004/10/16 23:48:22+02:00 agruen@suse.de 
#   kbuild: Allow install of external modules to custom path
#   
#   Currently, a ``make modules_install'' for an external module will
#   install that module into /lib/modules/$(uname -r)/extra. Allow to
#   override this default by specifying INSTALL_MOD_DIR.
#   
#   Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# scripts/Makefile.modinst
#   2004/10/16 02:00:00+02:00 agruen@suse.de +4 -1
#   kbuild: Allow install of external modules to custom path
# 
# ChangeSet
#   2004/10/16 23:26:48+02:00 rddunlap@osdl.org 
#   kconfig: OVERRIDE: save kernel version in .config file
#   
#   Omit .config file timestamp in the file if the environment variable
#   "KCONFIG_NOTIMESTAMP" exists and is non-null.
#   
#   Signed-off-by: Randy Dunlap <rddunlap@osdl.org>
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# scripts/kconfig/confdata.c
#   2004/09/17 18:31:23+02:00 rddunlap@osdl.org +12 -4
#   kconfig: OVERRIDE: save kernel version in .config file
# 
# ChangeSet
#   2004/10/16 23:03:11+02:00 vda@port.imtp.ilyichevsk.odessa.ua 
#   kconfig.debug: mention that DEBUG_SLAB can slow down machine quite a bit
#   
#   I experienced x3 slowdown due to this option being set.
#   
#   Please add this small warning to DEBUG_SLAB help text.
#   
#   Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
# 
# lib/Kconfig.debug
#   2004/09/16 13:19:28+02:00 vda@port.imtp.ilyichevsk.odessa.ua +1 -1
#   kconfig.debug: mention that DEBUG_SLAB can slow down machine quite a bit
# 
diff -Nru a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
--- a/Documentation/DocBook/Makefile	2004-10-26 19:09:59 -07:00
+++ b/Documentation/DocBook/Makefile	2004-10-26 19:09:59 -07:00
@@ -58,14 +58,14 @@
 # The following rules are used to generate the .sgml documentation
 # required to generate the final targets. (ps, pdf, html).
 quiet_cmd_docproc = DOCPROC $@
-      cmd_docproc = $(DOCPROC) doc $< >$@
+      cmd_docproc = SRCTREE=$(srctree)/ $(DOCPROC) doc $< >$@
 define rule_docproc
 	set -e;								\
         $(if $($(quiet)cmd_$(1)),echo '  $($(quiet)cmd_$(1))';) 	\
         $(cmd_$(1)); 							\
         ( 								\
           echo 'cmd_$@ := $(cmd_$(1))'; 				\
-          echo $@: `$(DOCPROC) depend $<`; 				\
+          echo $@: `SRCTREE=$(srctree) $(DOCPROC) depend $<`; 		\
         ) > $(dir $@).$(notdir $@).cmd
 endef
 
@@ -129,6 +129,9 @@
 # Rule to generate man files - output is placed in the man subdirectory
 
 %.9:	%.sgml
+ifneq ($(KBUILD_SRC),)
+	$(Q)mkdir -p $(objtree)/Documentation/DocBook/man
+endif
 	$(SPLITMAN) $< $(objtree)/Documentation/DocBook/man "$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)"
 	$(MAKEMAN) convert $(objtree)/Documentation/DocBook/man $<
 
diff -Nru a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
--- a/Documentation/kbuild/makefiles.txt	2004-10-26 19:09:59 -07:00
+++ b/Documentation/kbuild/makefiles.txt	2004-10-26 19:09:59 -07:00
@@ -997,6 +997,21 @@
 	option. When $(biarch) equals to y the expanded variables $(aflags-y)
 	and $(cflags-y) will be assigned the values -a32 and -m32.
 
+    cc-option-align
+	gcc version >= 3.0 shifted type of options used to speify
+	alignment of functions, loops etc. $(cc-option-align) whrn used
+	as prefix to the align options will select the right prefix:
+	gcc < 3.00
+		cc-option-align = -malign
+	gcc >= 3.00
+		cc-option-align = -falign
+	
+	Example:
+		CFLAGS += $(cc-option-align)-functions=4
+
+	In the above example the option -falign-functions=4 is used for
+	gcc >= 3.00. For gcc < 3.00 -malign-functions=4 is used.
+	
     cc-version
 	cc-version return a numerical version of the $(CC) compiler version.
 	The format is <major><minor> where both are two digits. So for example
diff -Nru a/Makefile b/Makefile
--- a/Makefile	2004-10-26 19:09:59 -07:00
+++ b/Makefile	2004-10-26 19:09:59 -07:00
@@ -157,7 +157,7 @@
 
 LOCALVERSION = $(subst $(space),, \
 	       $(shell cat /dev/null $(localversion-files)) \
-	       $(subst ",,$(CONFIG_LOCALVERSION)))
+	       $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(LOCALVERSION)
 
@@ -295,6 +295,11 @@
 cc-option-yn = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
                 > /dev/null 2>&1; then echo "y"; else echo "n"; fi;)
 
+# cc-option-align
+# Prefix align with either -falign or -malign
+cc-option-align = $(subst -functions=0,,\
+	$(call cc-option,-falign-functions=0,-malign-functions=0))
+
 # cc-version
 # Usage gcc-ver := $(call cc-version $(CC))
 cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \
@@ -379,6 +384,18 @@
 scripts_basic:
 	$(Q)$(MAKE) $(build)=scripts/basic
 
+.PHONY: outputmakefile
+# outputmakefile generate a Makefile to be placed in output directory, if
+# using a seperate output directory. This allows convinient use
+# of make in output directory
+outputmakefile:
+	$(Q)if /usr/bin/env test ! $(srctree) -ef $(objtree); then \
+	$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile              \
+	    $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)         \
+	    > $(objtree)/Makefile;                                 \
+	    echo '  GEN    $(objtree)/Makefile';                   \
+	fi
+
 # To make sure we do not include .config for any of the *config targets
 # catch them early, and hand them over to scripts/kconfig/Makefile
 # It is allowed to specify more targets when calling make, including
@@ -423,9 +440,9 @@
 # *config targets only - make sure prerequisites are updated, and descend
 # in scripts/kconfig to make the *config target
 
-config: scripts_basic FORCE
+config: scripts_basic outputmakefile FORCE
 	$(Q)$(MAKE) $(build)=scripts/kconfig $@
-%config: scripts_basic FORCE
+%config: scripts_basic outputmakefile FORCE
 	$(Q)$(MAKE) $(build)=scripts/kconfig $@
 
 else
@@ -486,7 +503,16 @@
 CFLAGS		+= -O2
 endif
 
-ifndef CONFIG_FRAME_POINTER
+#Add align options if CONFIG_CC_* is not equal to 0
+add-align = $(if $(filter-out 0,$($(1))),$(cc-option-align)$(2)=$($(1)))
+CFLAGS		+= $(call add-align,CONFIG_CC_ALIGN_FUNCTIONS,-functions)
+CFLAGS		+= $(call add-align,CONFIG_CC_ALIGN_LABELS,-labels)
+CFLAGS		+= $(call add-align,CONFIG_CC_ALIGN_LOOPS,-loops)
+CFLAGS		+= $(call add-align,CONFIG_CC_ALIGN_JUMPS,-jumps)
+
+ifdef CONFIG_FRAME_POINTER
+CFLAGS		+= -fno-omit-frame-pointer
+else
 CFLAGS		+= -fomit-frame-pointer
 endif
 
@@ -711,22 +737,12 @@
 
 .PHONY: prepare-all prepare prepare0 prepare1 prepare2
 
-# prepare 2 generate Makefile to be placed in output directory, if
-# using a seperate output directory. This allows convinient use
-# of make in output directory
-prepare2:
-	$(Q)if /usr/bin/env test ! $(srctree) -ef $(objtree); then \
-	$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile              \
-	    $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)         \
-	    > $(objtree)/Makefile;                                 \
-	fi
-
-# prepare1 is used to check if we are building in a separate output directory,
+# prepare2 is used to check if we are building in a separate output directory,
 # and if so do:
 # 1) Check that make has not been executed in the kernel src $(srctree)
 # 2) Create the include2 directory, used for the second asm symlink
 
-prepare1: prepare2
+prepare2:
 ifneq ($(KBUILD_SRC),)
 	@echo '  Using $(srctree) as source for kernel'
 	$(Q)if [ -h $(srctree)/include/asm -o -f $(srctree)/.config ]; then \
@@ -737,6 +753,9 @@
 	$(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
 	$(Q)ln -fsn $(srctree)/include/asm-$(ARCH) include2/asm
 endif
+
+# prepare1 creates a makefile if using a separate output directory
+prepare1: prepare2 outputmakefile
 
 prepare0: prepare1 include/linux/version.h include/asm include/config/MARKER
 ifneq ($(KBUILD_MODULES),)
diff -Nru a/arch/i386/Makefile b/arch/i386/Makefile
--- a/arch/i386/Makefile	2004-10-26 19:09:59 -07:00
+++ b/arch/i386/Makefile	2004-10-26 19:09:59 -07:00
@@ -25,7 +25,7 @@
 # prevent gcc from keeping the stack 16 byte aligned
 CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
 
-align := $(subst -functions=0,,$(call cc-option,-falign-functions=0,-malign-functions=0))
+align := $(cc-option-align)
 cflags-$(CONFIG_M386)		+= -march=i386
 cflags-$(CONFIG_M486)		+= -march=i486
 cflags-$(CONFIG_M586)		+= -march=i586
diff -Nru a/arch/ppc/boot/utils/mkbugboot.c b/arch/ppc/boot/utils/mkbugboot.c
--- a/arch/ppc/boot/utils/mkbugboot.c	2004-10-26 19:09:59 -07:00
+++ b/arch/ppc/boot/utils/mkbugboot.c	2004-10-26 19:09:59 -07:00
@@ -96,7 +96,7 @@
   uint8_t header_block[HEADER_SIZE];
   bug_boot_header_t *bbh = (bug_boot_header_t *)&header_block[0];
 
-  bzero(header_block, HEADER_SIZE);
+  memset(header_block, 0, HEADER_SIZE);
 
   /* Fill in the PPCBUG ROM boot header */
   strncpy(bbh->magic_word, "BOOT", 4);		/* PPCBUG magic word */
diff -Nru a/init/Kconfig b/init/Kconfig
--- a/init/Kconfig	2004-10-26 19:09:59 -07:00
+++ b/init/Kconfig	2004-10-26 19:09:59 -07:00
@@ -325,6 +325,43 @@
 	  option replaces shmem and tmpfs with the much simpler ramfs code,
 	  which may be appropriate on small systems without swap.
 
+config CC_ALIGN_FUNCTIONS
+	int "Function alignment"
+	default 0
+	help
+	  Align the start of functions to the next power-of-two greater than n,
+	  skipping up to n bytes.  For instance, 32 aligns functions
+	  to the next 32-byte boundary, but 24 would align to the next
+	  32-byte boundary only if this can be done by skipping 23 bytes or less.
+	  Zero means use compiler's default.
+
+config CC_ALIGN_LABELS
+	int "Label alignment"
+	default 0
+	help
+	  Align all branch targets to a power-of-two boundary, skipping
+	  up to n bytes like ALIGN_FUNCTIONS.  This option can easily
+	  make code slower, because it must insert dummy operations for
+	  when the branch target is reached in the usual flow of the code.
+	  Zero means use compiler's default.
+
+config CC_ALIGN_LOOPS
+	int "Loop alignment"
+	default 0
+	help
+	  Align loops to a power-of-two boundary, skipping up to n bytes.
+	  Zero means use compiler's default.
+
+config CC_ALIGN_JUMPS
+	int "Jump alignment"
+	default 0
+	help
+	  Align branch targets to a power-of-two boundary, for branch
+	  targets where the targets can only be reached by jumping,
+	  skipping up to n bytes like ALIGN_FUNCTIONS.  In this case,
+	  no dummy operations need be executed.
+	  Zero means use compiler's default.
+
 endmenu		# General setup
 
 config TINY_SHMEM
@@ -397,7 +434,7 @@
 	depends on MODULES
 	help
 	  Modules which contain a MODULE_VERSION get an extra "srcversion"
-	  field inserting into their modinfo section, which contains a
+	  field inserted into their modinfo section, which contains a
     	  sum of the source files which made it.  This helps maintainers
 	  see exactly which source was used to build a module (since
 	  others sometimes change the module source without updating
diff -Nru a/kernel/module.c b/kernel/module.c
--- a/kernel/module.c	2004-10-26 19:09:59 -07:00
+++ b/kernel/module.c	2004-10-26 19:09:59 -07:00
@@ -1834,6 +1834,16 @@
 }
 
 #ifdef CONFIG_KALLSYMS
+/*
+ * This ignores the intensely annoying "mapping symbols" found
+ * in ARM ELF files: $a, $t and $d.
+ */
+static inline int is_arm_mapping_symbol(const char *str)
+{
+	return str[0] == '$' && strchr("atd", str[1]) 
+	       && (str[2] == '\0' || str[2] == '.');
+}
+
 static const char *get_ksymbol(struct module *mod,
 			       unsigned long addr,
 			       unsigned long *size,
@@ -1858,11 +1868,13 @@
 		 * and inserted at a whim. */
 		if (mod->symtab[i].st_value <= addr
 		    && mod->symtab[i].st_value > mod->symtab[best].st_value
-		    && *(mod->strtab + mod->symtab[i].st_name) != '\0' )
+		    && *(mod->strtab + mod->symtab[i].st_name) != '\0'
+		    && !is_arm_mapping_symbol(mod->strtab + mod->symtab[i].st_name))
 			best = i;
 		if (mod->symtab[i].st_value > addr
 		    && mod->symtab[i].st_value < nextval
-		    && *(mod->strtab + mod->symtab[i].st_name) != '\0')
+		    && *(mod->strtab + mod->symtab[i].st_name) != '\0'
+		    && !is_arm_mapping_symbol(mod->strtab + mod->symtab[i].st_name))
 			nextval = mod->symtab[i].st_value;
 	}
 
diff -Nru a/lib/Kconfig.debug b/lib/Kconfig.debug
--- a/lib/Kconfig.debug	2004-10-26 19:09:59 -07:00
+++ b/lib/Kconfig.debug	2004-10-26 19:09:59 -07:00
@@ -46,7 +46,7 @@
 	help
 	  Say Y here to have the kernel do limited verification on memory
 	  allocation as well as poisoning memory on free to catch use of freed
-	  memory.
+	  memory. This can make kmalloc/kfree-intensive workloads much slower.
 
 config DEBUG_SPINLOCK
 	bool "Spinlock debugging"
diff -Nru a/scripts/Makefile.lib b/scripts/Makefile.lib
--- a/scripts/Makefile.lib	2004-10-26 19:09:59 -07:00
+++ b/scripts/Makefile.lib	2004-10-26 19:09:59 -07:00
@@ -232,3 +232,30 @@
 # Usage:
 # $(Q)$(MAKE) $(build)=dir
 build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
+
+# filechk is used to check if the content of a generated file is updated.
+# Sample usage:
+# define filechk_sample
+#	echo $KERNELRELEASE
+# endef
+# version.h : Makefile
+#	$(call filechk,sample)
+# The rule defined shall write to stdout the content of the new file.
+# The existing file will be compared with the new one.
+# - If no file exist it is created
+# - If the content differ the new file is used
+# - If they are equal no change, and no timestamp update
+
+define filechk
+	$(Q)set -e;				\
+	echo '  CHK     $@';			\
+	mkdir -p $(dir $@);			\
+	$(filechk_$(1)) $(2) > $@.tmp;		\
+	if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
+		rm -f $@.tmp;			\
+	else					\
+		echo '  UPD     $@';		\
+		mv -f $@.tmp $@;		\
+	fi
+endef
+
diff -Nru a/scripts/Makefile.modinst b/scripts/Makefile.modinst
--- a/scripts/Makefile.modinst	2004-10-26 19:09:59 -07:00
+++ b/scripts/Makefile.modinst	2004-10-26 19:09:59 -07:00
@@ -19,7 +19,10 @@
 quiet_cmd_modules_install = INSTALL $@
       cmd_modules_install = mkdir -p $(2); cp $@ $(2)
 
-modinst_dir = $(MODLIB)/$(if $(filter ../% /%,$@),extra/,kernel/$(@D))
+# Modules built outside the kernel source tree go into extra by default
+INSTALL_MOD_DIR ?= extra
+
+modinst_dir = $(MODLIB)/$(if $(filter ../% /%,$@),$(INSTALL_MOD_DIR)/,kernel/$(@D))
 
 $(modules):
 	$(call cmd,modules_install,$(modinst_dir))
diff -Nru a/scripts/basic/docproc.c b/scripts/basic/docproc.c
--- a/scripts/basic/docproc.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/basic/docproc.c	2004-10-26 19:09:59 -07:00
@@ -52,7 +52,7 @@
 FILEONLY *externalfunctions;
 FILEONLY *symbolsonly;
 
-typedef void FILELINE(char * file, char * line);
+typedef void FILELINE(char * file, signed char * line);
 FILELINE * singlefunctions;
 FILELINE * entity_system;
 
@@ -79,6 +79,7 @@
 {
 	pid_t pid;
 	int ret;
+	char real_filename[PATH_MAX + 1];
 	/* Make sure output generated so far are flushed */
 	fflush(stdout);
 	switch(pid=fork()) {
@@ -86,8 +87,13 @@
 			perror("fork");
 			exit(1);
 		case  0:
-			execvp(KERNELDOCPATH KERNELDOC, svec);
-			perror("exec " KERNELDOCPATH KERNELDOC);
+			memset(real_filename, 0, sizeof(real_filename));
+			strncat(real_filename, getenv("SRCTREE"), PATH_MAX);
+			strncat(real_filename, KERNELDOCPATH KERNELDOC,
+					PATH_MAX - strlen(real_filename));
+			execvp(real_filename, svec);
+			fprintf(stderr, "exec ");
+			perror(real_filename);
 			exit(1);
 		default:
 			waitpid(pid, &ret ,0);
@@ -142,9 +148,9 @@
  * Files are separated by tabs.
  */
 void adddep(char * file)		   { printf("\t%s", file); }
-void adddep2(char * file, char * line)     { line = line; adddep(file); }
+void adddep2(char * file, signed char * line)     { line = line; adddep(file); }
 void noaction(char * line)		   { line = line; }
-void noaction2(char * file, char * line)   { file = file; line = line; }
+void noaction2(char * file, signed char * line)   { file = file; line = line; }
 
 /* Echo the line without further action */
 void printline(char * line)               { printf("%s", line); }
@@ -160,16 +166,21 @@
 	struct symfile *sym;
 	char line[MAXLINESZ];
 	if (filename_exist(filename) == NULL) {
+		char real_filename[PATH_MAX + 1];
+		memset(real_filename, 0, sizeof(real_filename));
+		strncat(real_filename, getenv("SRCTREE"), PATH_MAX);
+		strncat(real_filename, filename,
+				PATH_MAX - strlen(real_filename));
 		sym = add_new_file(filename);
-		fp = fopen(filename, "r");
+		fp = fopen(real_filename, "r");
 		if (fp == NULL)
 		{
 			fprintf(stderr, "docproc: ");
-			perror(filename);
+			perror(real_filename);
 		}
 		while(fgets(line, MAXLINESZ, fp)) {
-			char *p;
-			char *e;
+			signed char *p;
+			signed char *e;
 			if (((p = strstr(line, "EXPORT_SYMBOL_GPL")) != 0) ||
                             ((p = strstr(line, "EXPORT_SYMBOL")) != 0)) {
 				/* Skip EXPORT_SYMBOL{_GPL} */
@@ -242,7 +253,7 @@
  * Call kernel-doc with the following parameters:
  * kernel-doc -docbook -function function1 [-function function2]
  */
-void singfunc(char * filename, char * line)
+void singfunc(char * filename, signed char * line)
 {
 	char *vec[200]; /* Enough for specific functions */
         int i, idx = 0;
@@ -279,7 +290,7 @@
 void parse_file(FILE *infile)
 {
 	char line[MAXLINESZ];
-	char * s;
+	signed char * s;
 	while(fgets(line, MAXLINESZ, infile)) {
 		if (line[0] == '!') {
 			s = line + 2;
diff -Nru a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
--- a/scripts/basic/fixdep.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/basic/fixdep.c	2004-10-26 19:09:59 -07:00
@@ -217,12 +217,12 @@
 	printf("    $(wildcard include/config/%s.h) \\\n", s);
 }
 
-void parse_config_file(char *map, size_t len)
+void parse_config_file(signed char *map, size_t len)
 {
 	int *end = (int *) (map + len);
 	/* start at +1, so that p can never be < map */
 	int *m   = (int *) map + 1;
-	char *p, *q;
+	signed char *p, *q;
 
 	for (; m < end; m++) {
 		if (*m == INT_CONF) { p = (char *) m  ; goto conf; }
@@ -291,9 +291,9 @@
 
 void parse_dep_file(void *map, size_t len)
 {
-	char *m = map;
-	char *end = m + len;
-	char *p;
+	signed char *m = map;
+	signed char *end = m + len;
+	signed char *p;
 	char s[PATH_MAX];
 
 	p = strchr(m, ':');
diff -Nru a/scripts/basic/split-include.c b/scripts/basic/split-include.c
--- a/scripts/basic/split-include.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/basic/split-include.c	2004-10-26 19:09:59 -07:00
@@ -104,7 +104,7 @@
     /* Read config lines. */
     while (fgets(line, buffer_size, fp_config))
     {
-	const char * str_config;
+	const signed char * str_config;
 	int is_same;
 	int itarget;
 
diff -Nru a/scripts/conmakehash.c b/scripts/conmakehash.c
--- a/scripts/conmakehash.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/conmakehash.c	2004-10-26 19:09:59 -07:00
@@ -33,7 +33,7 @@
 
 int getunicode(char **p0)
 {
-  char *p = *p0;
+  unsigned char *p = *p0;
 
   while (*p == ' ' || *p == '\t')
     p++;
diff -Nru a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh
--- a/scripts/gen_initramfs_list.sh	2004-10-26 19:09:59 -07:00
+++ b/scripts/gen_initramfs_list.sh	2004-10-26 19:09:59 -07:00
@@ -2,25 +2,26 @@
 # Copyright (C) Martin Schlemmer <azarah@nosferatu.za.org>
 # Released under the terms of the GNU GPL
 #
-# A script to generate newline separated entries (to stdout) from a directory's
-# contents suitable for use as a cpio_list for gen_init_cpio.
+# Generate a newline separated list of entries from the file/directory pointed
+# out by the environment variable: CONFIG_INITRAMFS_SOURCE
 #
-# Arguements: $1 -- the source directory
+# If CONFIG_INITRAMFS_SOURCE is non-existing then generate a small dummy file.
+#
+# The output is suitable for gen_init_cpio as found in usr/Makefile.
 #
 # TODO:  Add support for symlinks, sockets and pipes when gen_init_cpio
 #        supports them.
 
-usage() {
-	echo "Usage: $0 initramfs-source-dir"
-	exit 1
+simple_initramfs() {
+	cat <<-EOF
+		# This is a very simple initramfs
+
+		dir /dev 0755 0 0
+		nod /dev/console 0600 0 0 c 5 1
+		dir /root 0700 0 0
+	EOF
 }
 
-srcdir=$(echo "$1" | sed -e 's://*:/:g')
-
-if [ "$#" -gt 1 -o ! -d "${srcdir}" ]; then
-	usage
-fi
-
 filetype() {
 	local argv1="$1"
 
@@ -76,9 +77,27 @@
 	return 0
 }
 
-find "${srcdir}" -printf "%p %m %U %G\n" | \
-while read x; do
-	parse ${x}
-done
+if [ -z $1 ]; then
+	simple_initramfs
+elif [ -f $1 ]; then
+	cat $1
+elif [ -d $1 ]; then
+	srcdir=$(echo "$1" | sed -e 's://*:/:g')
+	dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" 2>/dev/null)
+
+	# If $dirlist is only one line, then the directory is empty
+	if [  "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then
+		echo "${dirlist}" | \
+		while read x; do
+			parse ${x}
+		done
+	else
+		# Failsafe in case directory is empty
+		simple_initramfs
+	fi
+else
+	echo "  $0: Cannot open '$1' (CONFIG_INITRAMFS_SOURCE)" >&2
+	exit 1
+fi
 
 exit 0
diff -Nru a/scripts/kallsyms.c b/scripts/kallsyms.c
--- a/scripts/kallsyms.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/kallsyms.c	2004-10-26 19:09:59 -07:00
@@ -97,6 +97,17 @@
 	exit(1);
 }
 
+/*
+ * This ignores the intensely annoying "mapping symbols" found
+ * in ARM ELF files: $a, $t and $d.
+ */
+static inline int
+is_arm_mapping_symbol(const char *str)
+{
+	return str[0] == '$' && strchr("atd", str[1])
+	       && (str[2] == '\0' || str[2] == '.');
+}
+
 static int
 read_symbol(FILE *in, struct sym_entry *s)
 {
@@ -121,7 +132,8 @@
 		_sinittext = s->addr;
 	else if (strcmp(str, "_einittext") == 0)
 		_einittext = s->addr;
-	else if (toupper(s->type) == 'A' || toupper(s->type) == 'U')
+	else if (toupper(s->type) == 'A' || toupper(s->type) == 'U' ||
+		 is_arm_mapping_symbol(str))
 		return -1;
 
 	/* include the type field in the symbol name, so that it gets
diff -Nru a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
--- a/scripts/kconfig/conf.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/kconfig/conf.c	2004-10-26 19:09:59 -07:00
@@ -31,14 +31,14 @@
 static int indent = 1;
 static int valid_stdin = 1;
 static int conf_cnt;
-static char line[128];
+static signed char line[128];
 static struct menu *rootEntry;
 
 static char nohelp_text[] = "Sorry, no help available for this option yet.\n";
 
-static void strip(char *str)
+static void strip(signed char *str)
 {
-	char *p = str;
+	signed char *p = str;
 	int l;
 
 	while ((isspace(*p)))
diff -Nru a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
--- a/scripts/kconfig/confdata.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/kconfig/confdata.c	2004-10-26 19:09:59 -07:00
@@ -27,10 +27,10 @@
 	NULL,
 };
 
-static char *conf_expand_value(const char *in)
+static char *conf_expand_value(const signed char *in)
 {
 	struct symbol *sym;
-	const char *src;
+	const signed char *src;
 	static char res_value[SYMBOL_MAXLENGTH];
 	char *dst, name[SYMBOL_MAXLENGTH];
 
@@ -270,6 +270,8 @@
 	int type, l;
 	const char *str;
 	time_t now;
+	int use_timestamp = 1;
+	char *env;
 
 	dirname[0] = 0;
 	if (name && name[0]) {
@@ -293,7 +295,7 @@
 	} else
 		basename = conf_def_filename;
 
-	sprintf(newname, "%s.tmpconfig.%d", dirname, getpid());
+	sprintf(newname, "%s.tmpconfig.%d", dirname, (int)getpid());
 	out = fopen(newname, "w");
 	if (!out)
 		return 1;
@@ -306,22 +308,28 @@
 	sym = sym_lookup("KERNELRELEASE", 0);
 	sym_calc_value(sym);
 	time(&now);
+	env = getenv("KCONFIG_NOTIMESTAMP");
+	if (env && *env)
+		use_timestamp = 0;
+
 	fprintf(out, "#\n"
 		     "# Automatically generated make config: don't edit\n"
 		     "# Linux kernel version: %s\n"
-		     "# %s"
+		     "%s%s"
 		     "#\n",
 		     sym_get_string_value(sym),
-		     ctime(&now));
+		     use_timestamp ? "# " : "",
+		     use_timestamp ? ctime(&now) : "");
 	if (out_h)
 		fprintf(out_h, "/*\n"
 			       " * Automatically generated C config: don't edit\n"
 			       " * Linux kernel version: %s\n"
-			       " * %s"
+			       "%s%s"
 			       " */\n"
 			       "#define AUTOCONF_INCLUDED\n",
 			       sym_get_string_value(sym),
-			       ctime(&now));
+			       use_timestamp ? " * " : "",
+			       use_timestamp ? ctime(&now) : "");
 
 	if (!sym_change_count)
 		sym_clear_all_valid();
diff -Nru a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
--- a/scripts/kconfig/mconf.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/kconfig/mconf.c	2004-10-26 19:09:59 -07:00
@@ -82,8 +82,8 @@
 	"leave this blank.\n"
 ;
 
-static char buf[4096], *bufptr = buf;
-static char input_buf[4096];
+static signed char buf[4096], *bufptr = buf;
+static signed char input_buf[4096];
 static char filename[PATH_MAX+1] = ".config";
 static char *args[1024], **argptr = args;
 static int indent;
diff -Nru a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c
--- a/scripts/kconfig/symbol.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/kconfig/symbol.c	2004-10-26 19:09:59 -07:00
@@ -421,7 +421,7 @@
 
 bool sym_string_valid(struct symbol *sym, const char *str)
 {
-	char ch;
+	signed char ch;
 
 	switch (sym->type) {
 	case S_STRING:
diff -Nru a/scripts/kernel-doc b/scripts/kernel-doc
--- a/scripts/kernel-doc	2004-10-26 19:09:59 -07:00
+++ b/scripts/kernel-doc	2004-10-26 19:09:59 -07:00
@@ -1531,7 +1531,7 @@
 }
 
 sub process_file($) {
-    my ($file) = @_;
+    my ($file) = "$ENV{'SRCTREE'}@_";
     my $identifier;
     my $func;
     my $initial_section_counter = $section_counter;
diff -Nru a/scripts/mksysmap b/scripts/mksysmap
--- a/scripts/mksysmap	2004-10-26 19:09:59 -07:00
+++ b/scripts/mksysmap	2004-10-26 19:09:59 -07:00
@@ -40,5 +40,5 @@
 # so we just ignore them to let readprofile continue to work.
 # (At least sparc64 has __crc_ in the middle).
 
-$NM -n $1 | grep -v '\( [aUw] \)\|\(__crc_\)' > $2
+$NM -n $1 | grep -v '\( [aUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2
 
diff -Nru a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
--- a/scripts/mod/file2alias.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/mod/file2alias.c	2004-10-26 19:09:59 -07:00
@@ -12,17 +12,22 @@
 
 #include "modpost.h"
 
-/* We use the ELF typedefs, since we can't rely on stdint.h being present. */
-
+/* We use the ELF typedefs for kernel_ulong_t but bite the bullet and
+ * use either stdint.h or inttypes.h for the rest. */
 #if KERNEL_ELFCLASS == ELFCLASS32
-typedef Elf32_Addr     kernel_ulong_t;
+typedef Elf32_Addr	kernel_ulong_t;
+#else
+typedef Elf64_Addr	kernel_ulong_t;
+#endif
+#ifdef __sun__
+#include <inttypes.h>
 #else
-typedef Elf64_Addr     kernel_ulong_t;
+#include <stdint.h>
 #endif
 
-typedef Elf32_Word     __u32;
-typedef Elf32_Half     __u16;
-typedef unsigned char  __u8;
+typedef uint32_t	__u32;
+typedef uint16_t	__u16;
+typedef unsigned char	__u8;
 
 /* Big exception to the "don't include kernel headers into userspace, which
  * even potentially has different endianness and word sizes, since 
diff -Nru a/scripts/mod/modpost.c b/scripts/mod/modpost.c
--- a/scripts/mod/modpost.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/mod/modpost.c	2004-10-26 19:09:59 -07:00
@@ -219,7 +219,7 @@
 	static char line[4096];
 	int skip = 1;
 	size_t len = 0;
-	char *p = (char *)file + *pos;
+	signed char *p = (char *)file + *pos;
 	char *s = line;
 
 	for (; *pos < size ; (*pos)++)
diff -Nru a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c
--- a/scripts/mod/sumversion.c	2004-10-26 19:09:59 -07:00
+++ b/scripts/mod/sumversion.c	2004-10-26 19:09:59 -07:00
@@ -252,9 +252,9 @@
 }
 
 /* FIXME: Handle .s files differently (eg. # starts comments) --RR */
-static int parse_file(const char *fname, struct md4_ctx *md)
+static int parse_file(const signed char *fname, struct md4_ctx *md)
 {
-	char *file;
+	signed char *file;
 	unsigned long i, len;
 
 	file = grab_file(fname, &len);
@@ -332,7 +332,7 @@
 	   Sum all files in the same dir or subdirs.
 	*/
 	while ((line = get_next_line(&pos, file, flen)) != NULL) {
-		char* p = line;
+		signed char* p = line;
 		if (strncmp(line, "deps_", sizeof("deps_")-1) == 0) {
 			check_files = 1;
 			continue;
@@ -456,7 +456,7 @@
 	close(fd);
 }
 
-static int strip_rcs_crap(char *version)
+static int strip_rcs_crap(signed char *version)
 {
 	unsigned int len, full_len;
 
diff -Nru a/usr/Makefile b/usr/Makefile
--- a/usr/Makefile	2004-10-26 19:09:59 -07:00
+++ b/usr/Makefile	2004-10-26 19:09:59 -07:00
@@ -3,7 +3,7 @@
 
 hostprogs-y  := gen_init_cpio
 
-clean-files := initramfs_data.cpio.gz
+clean-files := initramfs_data.cpio.gz initramfs_list
 
 # If you want a different list of files in the initramfs_data.cpio
 # then you can either overwrite the cpio_list in this directory
@@ -23,28 +23,17 @@
 # Commented out for now
 # initramfs-y := $(obj)/root/hello
 
-quiet_cmd_gen_list = GEN_INITRAMFS_LIST $@
-      cmd_gen_list = $(shell \
-        if test -f $(CONFIG_INITRAMFS_SOURCE); then \
-	  if [ $(CONFIG_INITRAMFS_SOURCE) != $@ ]; then \
-	    echo 'cp -f $(CONFIG_INITRAMFS_SOURCE) $@'; \
-	  else \
-	    echo 'echo Using shipped $@'; \
-	  fi; \
-	elif test -d $(CONFIG_INITRAMFS_SOURCE); then \
-	  echo 'scripts/gen_initramfs_list.sh $(CONFIG_INITRAMFS_SOURCE) > $@'; \
-	else \
-	  echo 'echo Using shipped $@'; \
-	fi)
-
-
-$(INITRAMFS_LIST): FORCE
-	$(call cmd,gen_list)
+filechk_initramfs_list = $(CONFIG_SHELL) \
+ $(srctree)/scripts/gen_initramfs_list.sh $(CONFIG_INITRAMFS_SOURCE)
+			   
+$(obj)/initramfs_list: FORCE
+	$(call filechk,initramfs_list)
 
 quiet_cmd_cpio = CPIO    $@
-      cmd_cpio = ./$< $(INITRAMFS_LIST) > $@
+      cmd_cpio = ./$< $(obj)/initramfs_list > $@
 
-$(obj)/initramfs_data.cpio: $(obj)/gen_init_cpio $(initramfs-y) $(INITRAMFS_LIST) FORCE
+$(obj)/initramfs_data.cpio: $(obj)/gen_init_cpio \
+                            $(initramfs-y) $(obj)/initramfs_list FORCE
 	$(call if_changed,cpio)
 
 targets += initramfs_data.cpio
diff -Nru a/usr/initramfs_list b/usr/initramfs_list
--- a/usr/initramfs_list	2004-10-26 19:09:59 -07:00
+++ /dev/null	Wed Dec 31 16:00:00 196900
@@ -1,5 +0,0 @@
-# This is a very simple initramfs - mostly preliminary for future expansion
-
-dir /dev 0755 0 0
-nod /dev/console 0600 0 0 c 5 1
-dir /root 0700 0 0
