]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'master' of http://www.denx.de/git/u-boot
authorJon Loeliger <jdl@freescale.com>
Tue, 19 Sep 2006 13:51:24 +0000 (08:51 -0500)
committerJon Loeliger <jdl@freescale.com>
Tue, 19 Sep 2006 13:51:24 +0000 (08:51 -0500)
Conflicts:

board/stxxtc/Makefile

14 files changed:
1  2 
MAINTAINERS
Makefile
README
board/cds/mpc8541cds/Makefile
board/cds/mpc8548cds/Makefile
board/cds/mpc8555cds/Makefile
board/stxxtc/Makefile
common/Makefile
drivers/Makefile
include/asm-ppc/processor.h
include/asm-ppc/u-boot.h
include/common.h
lib_ppc/board.c
tools/mkimage.c

diff --combined MAINTAINERS
index bf3705b2b77c780a1311293b09940747a5489743,42627196f8653f5389d7229e2ef60bae09690266..18b23a21ffffb2e54d766e89039846618d735df0
@@@ -218,8 -218,6 +218,8 @@@ Jon Loeliger <jdl@freescale.com
        MPC8541CDS              MPC8541
        MPC8555CDS              MPC8555
  
 +      MPC8641HPCN             MPC8641D
 +
  Dan Malek <dan@embeddededge.com>
  
        STxGP3                  MPC85xx
@@@ -287,6 -285,7 +287,7 @@@ Stefan Roese <sr@denx.de
        ocotea                  PPC440GX
        p3p440                  PPC440GP
        pcs440ep                PPC440EP
+       sequoia                 PPC440EPx
        sycamore                PPC405GPr
        walnut                  PPC405GP
        yellowstone             PPC440GR
@@@ -320,6 -319,11 +321,11 @@@ Rune Torgersen <runet@innovsys.com
  
        MPC8266ADS              MPC8266
  
+ David Updegraff <dave@cray.com>
+       CRAYL1                  PPC4xx
  Josef Wagner <Wagner@Microsys.de>
  
        CPC45                   MPC8245
@@@ -349,7 -353,6 +355,6 @@@ Unknown / orphaned boards
        RPXClassic              MPC8xx
        RPXlite                 MPC8xx
  
-       CRAYL1                  PPC4xx
        ERIC                    PPC4xx
  
        MOUSSE                  MPC824x
diff --combined Makefile
index 8cc2664c430ca54e7c66a64ccfe54c199ff26d15,ccf7f9f88fc65bf6c7fdc2d7d662e402604ff583..c0621f68697f5bcf47c044c24f718aa8afdfa932
+++ b/Makefile
@@@ -26,7 -26,7 +26,7 @@@ PATCHLEVEL = 
  SUBLEVEL = 4
  EXTRAVERSION =
  U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
- VERSION_FILE = include/version_autogenerated.h
+ VERSION_FILE = $(obj)include/version_autogenerated.h
  
  HOSTARCH := $(shell uname -m | \
        sed -e s/i.86/i386/ \
@@@ -44,15 -44,79 +44,79 @@@ export     HOSTARCH HOSTO
  # Deal with colliding definitions from tcsh etc.
  VENDOR=
  
+ #########################################################################
+ #
+ # U-boot build supports producing a object files to the separate external
+ # directory. Two use cases are supported:
+ #
+ # 1) Add O= to the make command line
+ # 'make O=/tmp/build all'
+ #
+ # 2) Set environement variable BUILD_DIR to point to the desired location
+ # 'export BUILD_DIR=/tmp/build'
+ # 'make'
+ #
+ # The second approach can also be used with a MAKEALL script
+ # 'export BUILD_DIR=/tmp/build'
+ # './MAKEALL'
+ #
+ # Command line 'O=' setting overrides BUILD_DIR environent variable.
+ #
+ # When none of the above methods is used the local build is performed and
+ # the object files are placed in the source directory.
+ #
+ ifdef O
+ ifeq ("$(origin O)", "command line")
+ BUILD_DIR := $(O)
+ endif
+ endif
+ ifneq ($(BUILD_DIR),)
+ saved-output := $(BUILD_DIR)
+ # Attempt to create a output directory.
+ $(shell [ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR})
+ # Verify if it was successful.
+ BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd)
+ $(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist))
+ endif # ifneq ($(BUILD_DIR),)
+ OBJTREE               := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
+ SRCTREE               := $(CURDIR)
+ TOPDIR                := $(SRCTREE)
+ LNDIR         := $(OBJTREE)
+ export        TOPDIR SRCTREE OBJTREE
+ MKCONFIG      := $(SRCTREE)/mkconfig
+ export MKCONFIG
+ ifneq ($(OBJTREE),$(SRCTREE))
+ REMOTE_BUILD  := 1
+ export REMOTE_BUILD
+ endif
+ # $(obj) and (src) are defined in config.mk but here in main Makefile
+ # we also need them before config.mk is included which is the case for
+ # some targets like unconfig, clean, clobber, distclean, etc.
+ ifneq ($(OBJTREE),$(SRCTREE))
+ obj := $(OBJTREE)/
+ src := $(SRCTREE)/
+ else
+ obj :=
+ src :=
+ endif
+ export obj src
  #########################################################################
  
- TOPDIR        := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
- export        TOPDIR
+ ifeq ($(OBJTREE)/include/config.mk,$(wildcard $(OBJTREE)/include/config.mk))
  
- ifeq (include/config.mk,$(wildcard include/config.mk))
  # load ARCH, BOARD, and CPU configuration
- include include/config.mk
+ include $(OBJTREE)/include/config.mk
  export        ARCH CPU BOARD VENDOR SOC
  ifndef CROSS_COMPILE
  ifeq ($(HOSTARCH),ppc)
  CROSS_COMPILE =
@@@ -96,7 -160,6 +160,6 @@@ export      CROSS_COMPIL
  # load other configuration
  include $(TOPDIR)/config.mk
  
  #########################################################################
  # U-Boot objects....order is important (i.e. start must be first)
  
@@@ -114,14 -177,13 +177,16 @@@ endi
  ifeq ($(CPU),mpc85xx)
  OBJS += cpu/$(CPU)/resetvec.o
  endif
 +ifeq ($(CPU),mpc86xx)
 +OBJS += cpu/$(CPU)/resetvec.o
 +endif
  ifeq ($(CPU),bf533)
  OBJS += cpu/$(CPU)/start1.o   cpu/$(CPU)/interrupt.o  cpu/$(CPU)/cache.o
  OBJS += cpu/$(CPU)/cplbhdlr.o cpu/$(CPU)/cplbmgr.o    cpu/$(CPU)/flush.o
  endif
  
+ OBJS := $(addprefix $(obj),$(OBJS))
  LIBS  = lib_generic/libgeneric.a
  LIBS += board/$(BOARDDIR)/lib$(BOARD).a
  LIBS += cpu/$(CPU)/lib$(CPU).a
@@@ -142,12 -204,13 +207,13 @@@ LIBS += drivers/sk98lin/libsk98lin.
  LIBS += post/libpost.a post/cpu/libcpu.a
  LIBS += common/libcommon.a
  LIBS += $(BOARDLIBS)
+ LIBS := $(addprefix $(obj),$(LIBS))
  .PHONY : $(LIBS)
  
  # Add GCC lib
  PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
  
  # The "tools" are needed early, so put this first
  # Don't include stuff already done in $(LIBS)
  SUBDIRS       = tools \
          post/cpu
  .PHONY : $(SUBDIRS)
  
+ ifeq ($(CONFIG_NAND_U_BOOT),y)
+ NAND_SPL = nand_spl
+ U_BOOT_NAND = $(obj)u-boot-nand.bin
+ endif
+ __OBJS := $(subst $(obj),,$(OBJS))
+ __LIBS := $(subst $(obj),,$(LIBS))
  #########################################################################
  #########################################################################
  
- ALL = u-boot.srec u-boot.bin System.map
+ ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND)
  
  all:          $(ALL)
  
u-boot.hex:   u-boot
$(obj)u-boot.hex:     $(obj)u-boot
                $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@
  
u-boot.srec:  u-boot
$(obj)u-boot.srec:    $(obj)u-boot
                $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@
  
u-boot.bin:   u-boot
$(obj)u-boot.bin:     $(obj)u-boot
                $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
  
u-boot.img:   u-boot.bin
$(obj)u-boot.img:     $(obj)u-boot.bin
                ./tools/mkimage -A $(ARCH) -T firmware -C none \
                -a $(TEXT_BASE) -e 0 \
                -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
                        sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \
                -d $< $@
  
u-boot.dis:   u-boot
$(obj)u-boot.dis:     $(obj)u-boot
                $(OBJDUMP) -d $< > $@
  
u-boot:               depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
$(obj)u-boot:         depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
                UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed  -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
-               $(LD) $(LDFLAGS) $$UNDEF_SYM $(OBJS) \
-                       --start-group $(LIBS) --end-group $(PLATFORM_LIBS) \
+               cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
+                       --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
                        -Map u-boot.map -o u-boot
  
+ $(OBJS):
+               $(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@))
  $(LIBS):
-               $(MAKE) -C `dirname $@`
+               $(MAKE) -C $(dir $(subst $(obj),,$@))
  
  $(SUBDIRS):
                $(MAKE) -C $@ all
  
+ $(NAND_SPL):  version
+               $(MAKE) -C nand_spl all
+ $(U_BOOT_NAND):       $(NAND_SPL) $(obj)u-boot.bin
+               cat nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
  version:
                @echo -n "#define U_BOOT_VERSION \"U-Boot " > $(VERSION_FILE); \
                echo -n "$(U_BOOT_VERSION)" >> $(VERSION_FILE); \
                echo "\"" >> $(VERSION_FILE)
  
  gdbtools:
-               $(MAKE) -C tools/gdb || exit 1
+               $(MAKE) -C tools/gdb all || exit 1
+ updater:
+               $(MAKE) -C tools/updater all || exit 1
+ env:
+               $(MAKE) -C tools/env all || exit 1
  
  depend dep:
-               @for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir .depend ; done
+               for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir _depend ; done
  
- tags:
-               ctags -w `find $(SUBDIRS) include \
+ tags ctags:
+               ctags -w -o $(OBJTREE)/ctags `find $(SUBDIRS) include \
                                lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \
                                fs/cramfs fs/fat fs/fdos fs/jffs2 \
                                net disk rtc dtt drivers drivers/sk98lin common \
                        \( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`
  
  etags:
-               etags -a `find $(SUBDIRS) include \
+               etags -a -o $(OBJTREE)/etags `find $(SUBDIRS) include \
                                lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \
                                fs/cramfs fs/fat fs/fdos fs/jffs2 \
                                net disk rtc dtt drivers drivers/sk98lin common \
                        \( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`
  
System.map:   u-boot
$(obj)System.map:     $(obj)u-boot
                @$(NM) $< | \
                grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
-               sort > System.map
+               sort > $(obj)System.map
  
  #########################################################################
  else
- all install u-boot u-boot.srec depend dep:
+ all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
+ $(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
+ $(SUBDIRS) version gdbtools updater env depend \
+ dep tags ctags etags $(obj)System.map:
        @echo "System not configured - see README" >&2
        @ exit 1
  endif
  #########################################################################
  
  unconfig:
-       @rm -f include/config.h include/config.mk board/*/config.tmp
+       @rm -f $(obj)include/config.h $(obj)include/config.mk \
+               $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp
  
  #========================================================================
  # PowerPC
  #########################################################################
  
  canmb_config: unconfig
-       @./mkconfig -a canmb ppc mpc5xxx canmb
+       @$(MKCONFIG) -a canmb ppc mpc5xxx canmb
  
  cmi_mpc5xx_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc5xx cmi
+       @$(MKCONFIG) $(@:_config=) ppc mpc5xx cmi
  
  PATI_config:          unconfig
-       @./mkconfig $(@:_config=) ppc mpc5xx pati mpl
+       @$(MKCONFIG) $(@:_config=) ppc mpc5xx pati mpl
  
  #########################################################################
  ## MPC5xxx Systems
  #########################################################################
  
  aev_config: unconfig
-       @./mkconfig -a aev ppc mpc5xxx tqm5200
+       @$(MKCONFIG) -a aev ppc mpc5xxx tqm5200
  
  BC3450_config:        unconfig
-       @./mkconfig -a BC3450 ppc mpc5xxx bc3450
+       @$(MKCONFIG) -a BC3450 ppc mpc5xxx bc3450
  
  cpci5200_config:  unconfig
-       @./mkconfig -a cpci5200  ppc mpc5xxx cpci5200 esd
+       @$(MKCONFIG) -a cpci5200  ppc mpc5xxx cpci5200 esd
  
  hmi1001_config:         unconfig
-       @./mkconfig hmi1001 ppc mpc5xxx hmi1001
+       @$(MKCONFIG) hmi1001 ppc mpc5xxx hmi1001
  
  Lite5200_config                               \
  Lite5200_LOWBOOT_config                       \
@@@ -281,144 -371,176 +374,176 @@@ icecube_5200_DDR_config              
  icecube_5200_DDR_LOWBOOT_config       \
  icecube_5200_DDR_LOWBOOT08_config     \
  icecube_5100_config:                  unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/icecube
+       @ >$(obj)include/config.h
        @[ -z "$(findstring LOWBOOT_,$@)" ] || \
                { if [ "$(findstring DDR,$@)" ] ; \
-                       then echo "TEXT_BASE = 0xFF800000" >board/icecube/config.tmp ; \
-                       else echo "TEXT_BASE = 0xFF000000" >board/icecube/config.tmp ; \
+                       then echo "TEXT_BASE = 0xFF800000" >$(obj)board/icecube/config.tmp ; \
+                       else echo "TEXT_BASE = 0xFF000000" >$(obj)board/icecube/config.tmp ; \
                  fi ; \
                  echo "... with LOWBOOT configuration" ; \
                }
        @[ -z "$(findstring LOWBOOT08,$@)" ] || \
-               { echo "TEXT_BASE = 0xFF800000" >board/icecube/config.tmp ; \
+               { echo "TEXT_BASE = 0xFF800000" >$(obj)board/icecube/config.tmp ; \
                  echo "... with 8 MB flash only" ; \
                  echo "... with LOWBOOT configuration" ; \
                }
        @[ -z "$(findstring DDR,$@)" ] || \
-               { echo "#define CONFIG_MPC5200_DDR"     >>include/config.h ; \
+               { echo "#define CONFIG_MPC5200_DDR"     >>$(obj)include/config.h ; \
                  echo "... DDR memory revision" ; \
                }
        @[ -z "$(findstring 5200,$@)" ] || \
-               { echo "#define CONFIG_MPC5200"         >>include/config.h ; \
+               { echo "#define CONFIG_MPC5200"         >>$(obj)include/config.h ; \
                  echo "... with MPC5200 processor" ; \
                }
        @[ -z "$(findstring 5100,$@)" ] || \
-               { echo "#define CONFIG_MGT5100"         >>include/config.h ; \
+               { echo "#define CONFIG_MGT5100"         >>$(obj)include/config.h ; \
                  echo "... with MGT5100 processor" ; \
                }
-       @./mkconfig -a IceCube ppc mpc5xxx icecube
+       @$(MKCONFIG) -a IceCube ppc mpc5xxx icecube
  
  inka4x0_config:       unconfig
-       @./mkconfig inka4x0 ppc mpc5xxx inka4x0
+       @$(MKCONFIG) inka4x0 ppc mpc5xxx inka4x0
  
  lite5200b_config      \
  lite5200b_LOWBOOT_config:     unconfig
-       @ >include/config.h
-       @ echo "#define CONFIG_MPC5200_DDR"     >>include/config.h
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/icecube
+       @ >$(obj)include/config.h
+       @ echo "#define CONFIG_MPC5200_DDR"     >>$(obj)include/config.h
        @ echo "... DDR memory revision"
-       @ echo "#define CONFIG_MPC5200"         >>include/config.h
-       @ echo "#define CONFIG_LITE5200B"       >>include/config.h
+       @ echo "#define CONFIG_MPC5200"         >>$(obj)include/config.h
+       @ echo "#define CONFIG_LITE5200B"       >>$(obj)include/config.h
        @[ -z "$(findstring LOWBOOT_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFF000000" >board/icecube/config.tmp ; \
+               { echo "TEXT_BASE = 0xFF000000" >$(obj)board/icecube/config.tmp ; \
                  echo "... with LOWBOOT configuration" ; \
                }
        @ echo "... with MPC5200B processor"
-       @./mkconfig -a IceCube  ppc mpc5xxx icecube
+       @$(MKCONFIG) -a IceCube  ppc mpc5xxx icecube
  
  mcc200_config \
- mcc200_SDRAM  \
- mcc200_highboot       \
- mcc200_COM12  \
- mcc200_highboot_SDRAM:        unconfig
-       @ >include/config.h
+ mcc200_SDRAM_config   \
+ mcc200_highboot_config        \
+ mcc200_COM12_config   \
+ mcc200_COM12_SDRAM_config     \
+ mcc200_COM12_highboot_config  \
+ mcc200_COM12_highboot_SDRAM_config    \
+ mcc200_highboot_SDRAM_config  \
+ prs200_config \
+ prs200_DDR_config     \
+ prs200_highboot_config        \
+ prs200_highboot_DDR_config:   unconfig
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/mcc200
+       @ >$(obj)include/config.h
        @[ -n "$(findstring highboot,$@)" ] || \
                { echo "... with lowboot configuration" ; \
                }
        @[ -z "$(findstring highboot,$@)" ] || \
-               { echo "TEXT_BASE = 0xFFF00000" >board/mcc200/config.tmp ; \
+               { echo "TEXT_BASE = 0xFFF00000" >$(obj)board/mcc200/config.tmp ; \
                  echo "... with highboot configuration" ; \
                }
        @[ -n "$(findstring _SDRAM,$@)" ] || \
-               { echo "... with DDR" ; \
+               { if [ -n "$(findstring mcc200,$@)" ]; \
+                 then \
+                       echo "... with DDR" ; \
+                 else \
+                       if [ -n "$(findstring _DDR,$@)" ];\
+                       then \
+                               echo "... with DDR" ; \
+                       else \
+                               echo "#define CONFIG_MCC200_SDRAM" >>$(obj)include/config.h ;\
+                               echo "... with SDRAM" ; \
+                       fi; \
+                 fi; \
                }
        @[ -z "$(findstring _SDRAM,$@)" ] || \
-               { echo "#define CONFIG_MCC200_SDRAM"    >>include/config.h ; \
+               { echo "#define CONFIG_MCC200_SDRAM"    >>$(obj)include/config.h ; \
                  echo "... with SDRAM" ; \
                }
        @[ -z "$(findstring COM12,$@)" ] || \
-               { echo "#define CONFIG_CONSOLE_COM12"   >>include/config.h ; \
+               { echo "#define CONFIG_CONSOLE_COM12"   >>$(obj)include/config.h ; \
                  echo "... with console on COM12" ; \
                }
-       @./mkconfig -a mcc200 ppc mpc5xxx mcc200
+       @[ -z "$(findstring prs200,$@)" ] || \
+               { echo "#define CONFIG_PRS200"  >>$(obj)include/config.h ;\
+               }
+       @$(MKCONFIG) -n $@ -a mcc200 ppc mpc5xxx mcc200
  
  o2dnt_config:
-       @./mkconfig o2dnt ppc mpc5xxx o2dnt
+       @$(MKCONFIG) o2dnt ppc mpc5xxx o2dnt
  
  pf5200_config:  unconfig
-       @./mkconfig pf5200  ppc mpc5xxx pf5200 esd
+       @$(MKCONFIG) pf5200  ppc mpc5xxx pf5200 esd
  
  PM520_config \
  PM520_DDR_config \
  PM520_ROMBOOT_config \
  PM520_ROMBOOT_DDR_config:     unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring DDR,$@)" ] || \
-               { echo "#define CONFIG_MPC5200_DDR"     >>include/config.h ; \
+               { echo "#define CONFIG_MPC5200_DDR"     >>$(obj)include/config.h ; \
                  echo "... DDR memory revision" ; \
                }
        @[ -z "$(findstring ROMBOOT,$@)" ] || \
-               { echo "#define CONFIG_BOOT_ROM" >>include/config.h ; \
+               { echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
                  echo "... booting from 8-bit flash" ; \
                }
-       @./mkconfig -a PM520 ppc mpc5xxx pm520
+       @$(MKCONFIG) -a PM520 ppc mpc5xxx pm520
  
  smmaco4_config: unconfig
-       @./mkconfig -a smmaco4 ppc mpc5xxx tqm5200
+       @$(MKCONFIG) -a smmaco4 ppc mpc5xxx tqm5200
  
  spieval_config:       unconfig
-       @./mkconfig -a spieval ppc mpc5xxx tqm5200
+       @$(MKCONFIG) -a spieval ppc mpc5xxx tqm5200
  
  TB5200_B_config \
  TB5200_config:        unconfig
+       @mkdir -p $(obj)include
        @[ -z "$(findstring _B,$@)" ] || \
-               { echo "#define CONFIG_TQM5200_B"       >>include/config.h ; \
+               { echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
                  echo "... with MPC5200B processor" ; \
                }
-       @./mkconfig -n $@ -a TB5200 ppc mpc5xxx tqm5200
+       @$(MKCONFIG) -n $@ -a TB5200 ppc mpc5xxx tqm5200
  
  MINI5200_config       \
  EVAL5200_config       \
  TOP5200_config:       unconfig
-       @ echo "#define CONFIG_$(@:_config=) 1" >include/config.h
-       @./mkconfig -n $@ -a TOP5200 ppc mpc5xxx top5200 emk
+       @mkdir -p $(obj)include
+       @ echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
+       @$(MKCONFIG) -n $@ -a TOP5200 ppc mpc5xxx top5200 emk
  
  Total5100_config              \
  Total5200_config              \
  Total5200_lowboot_config      \
  Total5200_Rev2_config         \
  Total5200_Rev2_lowboot_config:        unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/total5200
+       @ >$(obj)include/config.h
        @[ -z "$(findstring 5100,$@)" ] || \
-               { echo "#define CONFIG_MGT5100"         >>include/config.h ; \
+               { echo "#define CONFIG_MGT5100"         >>$(obj)include/config.h ; \
                  echo "... with MGT5100 processor" ; \
                }
        @[ -z "$(findstring 5200,$@)" ] || \
-               { echo "#define CONFIG_MPC5200"         >>include/config.h ; \
+               { echo "#define CONFIG_MPC5200"         >>$(obj)include/config.h ; \
                  echo "... with MPC5200 processor" ; \
                }
        @[ -n "$(findstring Rev,$@)" ] || \
-               { echo "#define CONFIG_TOTAL5200_REV 1" >>include/config.h ; \
+               { echo "#define CONFIG_TOTAL5200_REV 1" >>$(obj)include/config.h ; \
                  echo "... revision 1 board" ; \
                }
        @[ -z "$(findstring Rev2_,$@)" ] || \
-               { echo "#define CONFIG_TOTAL5200_REV 2" >>include/config.h ; \
+               { echo "#define CONFIG_TOTAL5200_REV 2" >>$(obj)include/config.h ; \
                  echo "... revision 2 board" ; \
                }
        @[ -z "$(findstring lowboot_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFE000000" >board/total5200/config.tmp ; \
+               { echo "TEXT_BASE = 0xFE000000" >$(obj)board/total5200/config.tmp ; \
                  echo "... with lowboot configuration" ; \
                }
-       @./mkconfig -a Total5200 ppc mpc5xxx total5200
+       @$(MKCONFIG) -a Total5200 ppc mpc5xxx total5200
  
  cam5200_config \
  fo300_config \
@@@ -429,36 -551,38 +554,38 @@@ TQM5200_B_config 
  TQM5200_B_HIGHBOOT_config \
  TQM5200_config        \
  TQM5200_STK100_config:        unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/tqm5200
+       @ >$(obj)include/config.h
        @[ -z "$(findstring cam5200,$@)" ] || \
-               { echo "#define CONFIG_CAM5200" >>include/config.h ; \
-                 echo "#define CONFIG_TQM5200S"        >>include/config.h ; \
-                 echo "#define CONFIG_TQM5200_B"       >>include/config.h ; \
+               { echo "#define CONFIG_CAM5200" >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_TQM5200S"        >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
                  echo "... TQM5200S on Cam5200" ; \
                }
        @[ -z "$(findstring fo300,$@)" ] || \
-               { echo "#define CONFIG_FO300"   >>include/config.h ; \
+               { echo "#define CONFIG_FO300"   >>$(obj)include/config.h ; \
                  echo "... TQM5200 on FO300" ; \
                }
        @[ -z "$(findstring MiniFAP,$@)" ] || \
-               { echo "#define CONFIG_MINIFAP" >>include/config.h ; \
+               { echo "#define CONFIG_MINIFAP" >>$(obj)include/config.h ; \
                  echo "... TQM5200_AC on MiniFAP" ; \
                }
        @[ -z "$(findstring STK100,$@)" ] || \
-               { echo "#define CONFIG_STK52XX_REV100"  >>include/config.h ; \
+               { echo "#define CONFIG_STK52XX_REV100"  >>$(obj)include/config.h ; \
                  echo "... on a STK52XX.100 base board" ; \
                }
        @[ -z "$(findstring TQM5200_B,$@)" ] || \
-               { echo "#define CONFIG_TQM5200_B"       >>include/config.h ; \
+               { echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
                }
        @[ -z "$(findstring TQM5200S,$@)" ] || \
-               { echo "#define CONFIG_TQM5200S"        >>include/config.h ; \
-                 echo "#define CONFIG_TQM5200_B"       >>include/config.h ; \
+               { echo "#define CONFIG_TQM5200S"        >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
                }
        @[ -z "$(findstring HIGHBOOT,$@)" ] || \
-               { echo "TEXT_BASE = 0xFFF00000" >board/tqm5200/config.tmp ; \
+               { echo "TEXT_BASE = 0xFFF00000" >$(obj)board/tqm5200/config.tmp ; \
                }
-       @./mkconfig -n $@ -a TQM5200 ppc mpc5xxx tqm5200
+       @$(MKCONFIG) -n $@ -a TQM5200 ppc mpc5xxx tqm5200
  
  #########################################################################
  ## MPC8xx Systems
@@@ -468,9 -592,10 +595,10 @@@ Adder_config    
  Adder87x_config \
  AdderII_config  \
        :               unconfig
+       @mkdir -p $(obj)include
        $(if $(findstring AdderII,$@), \
-       @echo "#define CONFIG_MPC852T" > include/config.h)
-       @./mkconfig -a Adder ppc mpc8xx adder
+       @echo "#define CONFIG_MPC852T" > $(obj)include/config.h)
+       @$(MKCONFIG) -a Adder ppc mpc8xx adder
  
  ADS860_config     \
  FADS823_config    \
@@@ -478,154 -603,160 +606,160 @@@ FADS850SAR_config 
  MPC86xADS_config  \
  MPC885ADS_config  \
  FADS860T_config:      unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx fads
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx fads
  
  AMX860_config :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx amx860 westel
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx amx860 westel
  
  c2mon_config:         unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx c2mon
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx c2mon
  
  CCM_config:           unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx CCM siemens
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx CCM siemens
  
  cogent_mpc8xx_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx cogent
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx cogent
  
  ELPT860_config:               unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx elpt860 LEOX
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx elpt860 LEOX
  
  EP88x_config:         unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx ep88x
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx ep88x
  
  ESTEEM192E_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx esteem192e
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx esteem192e
  
  ETX094_config :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx etx094
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx etx094
  
  FLAGADM_config:       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx flagadm
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx flagadm
  
  xtract_GEN860T = $(subst _SC,,$(subst _config,,$1))
  
  GEN860T_SC_config     \
  GEN860T_config: unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _SC,$@)" ] || \
-               { echo "#define CONFIG_SC" >>include/config.h ; \
+               { echo "#define CONFIG_SC" >>$(obj)include/config.h ; \
                  echo "With reduced H/W feature set (SC)..." ; \
                }
-       @./mkconfig -a $(call xtract_GEN860T,$@) ppc mpc8xx gen860t
+       @$(MKCONFIG) -a $(call xtract_GEN860T,$@) ppc mpc8xx gen860t
  
  GENIETV_config:       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx genietv
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx genietv
  
  GTH_config:   unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx gth
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx gth
  
  hermes_config :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx hermes
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx hermes
  
  HMI10_config  :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx tqm8xx
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx tqm8xx
  
  IAD210_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx IAD210 siemens
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx IAD210 siemens
  
  xtract_ICU862 = $(subst _100MHz,,$(subst _config,,$1))
  
  ICU862_100MHz_config  \
  ICU862_config: unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _100MHz,$@)" ] || \
-               { echo "#define CONFIG_100MHz"  >>include/config.h ; \
+               { echo "#define CONFIG_100MHz"  >>$(obj)include/config.h ; \
                  echo "... with 100MHz system clock" ; \
                }
-       @./mkconfig -a $(call xtract_ICU862,$@) ppc mpc8xx icu862
+       @$(MKCONFIG) -a $(call xtract_ICU862,$@) ppc mpc8xx icu862
  
  IP860_config  :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx ip860
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx ip860
  
  IVML24_256_config \
  IVML24_128_config \
  IVML24_config:        unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring IVML24_config,$@)" ] || \
-                { echo "#define CONFIG_IVML24_16M"     >>include/config.h ; \
+                { echo "#define CONFIG_IVML24_16M"     >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring IVML24_128_config,$@)" ] || \
-                { echo "#define CONFIG_IVML24_32M"     >>include/config.h ; \
+                { echo "#define CONFIG_IVML24_32M"     >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring IVML24_256_config,$@)" ] || \
-                { echo "#define CONFIG_IVML24_64M"     >>include/config.h ; \
+                { echo "#define CONFIG_IVML24_64M"     >>$(obj)include/config.h ; \
                 }
-       @./mkconfig -a IVML24 ppc mpc8xx ivm
+       @$(MKCONFIG) -a IVML24 ppc mpc8xx ivm
  
  IVMS8_256_config \
  IVMS8_128_config \
  IVMS8_config: unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring IVMS8_config,$@)" ] || \
-                { echo "#define CONFIG_IVMS8_16M"      >>include/config.h ; \
+                { echo "#define CONFIG_IVMS8_16M"      >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring IVMS8_128_config,$@)" ] || \
-                { echo "#define CONFIG_IVMS8_32M"      >>include/config.h ; \
+                { echo "#define CONFIG_IVMS8_32M"      >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring IVMS8_256_config,$@)" ] || \
-                { echo "#define CONFIG_IVMS8_64M"      >>include/config.h ; \
+                { echo "#define CONFIG_IVMS8_64M"      >>$(obj)include/config.h ; \
                 }
-       @./mkconfig -a IVMS8 ppc mpc8xx ivm
+       @$(MKCONFIG) -a IVMS8 ppc mpc8xx ivm
  
  KUP4K_config  :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx kup4k kup
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx kup4k kup
  
  KUP4X_config    :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx kup4x kup
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx kup4x kup
  
  LANTEC_config :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx lantec
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx lantec
  
  lwmon_config:         unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx lwmon
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx lwmon
  
  MBX_config    \
  MBX860T_config:       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx mbx8xx
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx mbx8xx
  
  MHPC_config:          unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx mhpc eltec
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx mhpc eltec
  
  MVS1_config :         unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx mvs1
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx mvs1
  
  xtract_NETVIA = $(subst _V2,,$(subst _config,,$1))
  
  NETVIA_V2_config \
  NETVIA_config:                unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring NETVIA_config,$@)" ] || \
-                { echo "#define CONFIG_NETVIA_VERSION 1" >>include/config.h ; \
+                { echo "#define CONFIG_NETVIA_VERSION 1" >>$(obj)include/config.h ; \
                  echo "... Version 1" ; \
                 }
        @[ -z "$(findstring NETVIA_V2_config,$@)" ] || \
-                { echo "#define CONFIG_NETVIA_VERSION 2" >>include/config.h ; \
+                { echo "#define CONFIG_NETVIA_VERSION 2" >>$(obj)include/config.h ; \
                  echo "... Version 2" ; \
                 }
-       @./mkconfig -a $(call xtract_NETVIA,$@) ppc mpc8xx netvia
+       @$(MKCONFIG) -a $(call xtract_NETVIA,$@) ppc mpc8xx netvia
  
  xtract_NETPHONE = $(subst _V2,,$(subst _config,,$1))
  
  NETPHONE_V2_config \
  NETPHONE_config:      unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring NETPHONE_config,$@)" ] || \
-                { echo "#define CONFIG_NETPHONE_VERSION 1" >>include/config.h ; \
+                { echo "#define CONFIG_NETPHONE_VERSION 1" >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring NETPHONE_V2_config,$@)" ] || \
-                { echo "#define CONFIG_NETPHONE_VERSION 2" >>include/config.h ; \
+                { echo "#define CONFIG_NETPHONE_VERSION 2" >>$(obj)include/config.h ; \
                 }
-       @./mkconfig -a $(call xtract_NETPHONE,$@) ppc mpc8xx netphone
+       @$(MKCONFIG) -a $(call xtract_NETPHONE,$@) ppc mpc8xx netphone
  
  xtract_NETTA = $(subst _SWAPHOOK,,$(subst _6412,,$(subst _ISDN,,$(subst _config,,$1))))
  
@@@ -637,85 -768,88 +771,88 @@@ NETTA_ISDN_6412_config 
  NETTA_ISDN_config \
  NETTA_6412_config \
  NETTA_config:         unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring ISDN_,$@)" ] || \
-                { echo "#define CONFIG_NETTA_ISDN 1" >>include/config.h ; \
+                { echo "#define CONFIG_NETTA_ISDN 1" >>$(obj)include/config.h ; \
                 }
        @[ -n "$(findstring ISDN_,$@)" ] || \
-                { echo "#undef CONFIG_NETTA_ISDN" >>include/config.h ; \
+                { echo "#undef CONFIG_NETTA_ISDN" >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring 6412_,$@)" ] || \
-                { echo "#define CONFIG_NETTA_6412 1" >>include/config.h ; \
+                { echo "#define CONFIG_NETTA_6412 1" >>$(obj)include/config.h ; \
                 }
        @[ -n "$(findstring 6412_,$@)" ] || \
-                { echo "#undef CONFIG_NETTA_6412" >>include/config.h ; \
+                { echo "#undef CONFIG_NETTA_6412" >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring SWAPHOOK_,$@)" ] || \
-                { echo "#define CONFIG_NETTA_SWAPHOOK 1" >>include/config.h ; \
+                { echo "#define CONFIG_NETTA_SWAPHOOK 1" >>$(obj)include/config.h ; \
                 }
        @[ -n "$(findstring SWAPHOOK_,$@)" ] || \
-                { echo "#undef CONFIG_NETTA_SWAPHOOK" >>include/config.h ; \
+                { echo "#undef CONFIG_NETTA_SWAPHOOK" >>$(obj)include/config.h ; \
                 }
-       @./mkconfig -a $(call xtract_NETTA,$@) ppc mpc8xx netta
+       @$(MKCONFIG) -a $(call xtract_NETTA,$@) ppc mpc8xx netta
  
  xtract_NETTA2 = $(subst _V2,,$(subst _config,,$1))
  
  NETTA2_V2_config \
  NETTA2_config:                unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring NETTA2_config,$@)" ] || \
-                { echo "#define CONFIG_NETTA2_VERSION 1" >>include/config.h ; \
+                { echo "#define CONFIG_NETTA2_VERSION 1" >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring NETTA2_V2_config,$@)" ] || \
-                { echo "#define CONFIG_NETTA2_VERSION 2" >>include/config.h ; \
+                { echo "#define CONFIG_NETTA2_VERSION 2" >>$(obj)include/config.h ; \
                 }
-       @./mkconfig -a $(call xtract_NETTA2,$@) ppc mpc8xx netta2
+       @$(MKCONFIG) -a $(call xtract_NETTA2,$@) ppc mpc8xx netta2
  
  NC650_Rev1_config \
  NC650_Rev2_config \
  CP850_config: unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring CP850,$@)" ] || \
-                { echo "#define CONFIG_CP850 1" >>include/config.h ; \
-                  echo "#define CONFIG_IDS852_REV2 1" >>include/config.h ; \
+                { echo "#define CONFIG_CP850 1" >>$(obj)include/config.h ; \
+                  echo "#define CONFIG_IDS852_REV2 1" >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring Rev1,$@)" ] || \
-                { echo "#define CONFIG_IDS852_REV1 1" >>include/config.h ; \
+                { echo "#define CONFIG_IDS852_REV1 1" >>$(obj)include/config.h ; \
                 }
        @[ -z "$(findstring Rev2,$@)" ] || \
-                { echo "#define CONFIG_IDS852_REV2 1" >>include/config.h ; \
+                { echo "#define CONFIG_IDS852_REV2 1" >>$(obj)include/config.h ; \
                 }
-       @./mkconfig -a NC650 ppc mpc8xx nc650
+       @$(MKCONFIG) -a NC650 ppc mpc8xx nc650
  
  NX823_config:         unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx nx823
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx nx823
  
  pcu_e_config:         unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx pcu_e siemens
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx pcu_e siemens
  
  QS850_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx qs850 snmc
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs850 snmc
  
  QS823_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx qs850 snmc
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs850 snmc
  
  QS860T_config:        unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx qs860t snmc
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs860t snmc
  
  quantum_config:       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx quantum
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx quantum
  
  R360MPI_config:       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx r360mpi
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx r360mpi
  
  RBC823_config:        unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx rbc823
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx rbc823
  
  RPXClassic_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx RPXClassic
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx RPXClassic
  
  RPXlite_config:               unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx RPXlite
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx RPXlite
  
  RPXlite_DW_64_config                  \
  RPXlite_DW_LCD_config                 \
@@@ -725,55 -859,56 +862,56 @@@ RPXlite_DW_NVRAM_64_config      
  RPXlite_DW_NVRAM_LCD_config   \
  RPXlite_DW_NVRAM_64_LCD_config  \
  RPXlite_DW_config:         unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _64,$@)" ] || \
-               { echo "#define RPXlite_64MHz"          >>include/config.h ; \
+               { echo "#define RPXlite_64MHz"          >>$(obj)include/config.h ; \
                  echo "... with 64MHz system clock ..."; \
                }
        @[ -z "$(findstring _LCD,$@)" ] || \
-               { echo "#define CONFIG_LCD"             >>include/config.h ; \
-                 echo "#define CONFIG_NEC_NL6448BC20"  >>include/config.h ; \
+               { echo "#define CONFIG_LCD"             >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_NEC_NL6448BC20"  >>$(obj)include/config.h ; \
                  echo "... with LCD display ..."; \
                }
        @[ -z "$(findstring _NVRAM,$@)" ] || \
-               { echo "#define  CFG_ENV_IS_IN_NVRAM"   >>include/config.h ; \
+               { echo "#define  CFG_ENV_IS_IN_NVRAM"   >>$(obj)include/config.h ; \
                  echo "... with ENV in NVRAM ..."; \
                }
-       @./mkconfig -a RPXlite_DW ppc mpc8xx RPXlite_dw
+       @$(MKCONFIG) -a RPXlite_DW ppc mpc8xx RPXlite_dw
  
  rmu_config:   unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx rmu
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx rmu
  
  RRvision_config:      unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx RRvision
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx RRvision
  
  RRvision_LCD_config:  unconfig
-       @echo "#define CONFIG_LCD" >include/config.h
-       @echo "#define CONFIG_SHARP_LQ104V7DS01" >>include/config.h
-       @./mkconfig -a RRvision ppc mpc8xx RRvision
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_LCD" >$(obj)include/config.h
+       @echo "#define CONFIG_SHARP_LQ104V7DS01" >>$(obj)include/config.h
+       @$(MKCONFIG) -a RRvision ppc mpc8xx RRvision
  
  SM850_config  :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx tqm8xx
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx tqm8xx
  
  spc1920_config:
-       @./mkconfig $(@:_config=) ppc mpc8xx spc1920
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx spc1920
  
  SPD823TS_config:      unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx spd8xx
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx spd8xx
  
  stxxtc_config:        unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx stxxtc
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx stxxtc
  
  svm_sc8xx_config:     unconfig
-       @ >include/config.h
-       @./mkconfig $(@:_config=) ppc mpc8xx svm_sc8xx
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx svm_sc8xx
  
  SXNI855T_config:      unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx sixnet
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx sixnet
  
  # EMK MPC8xx based modules
  TOP860_config:                unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx top860 emk
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx top860 emk
  
  # Play some tricks for configuration selection
  # Only 855 and 860 boards may come with FEC
@@@ -797,31 -932,35 +935,35 @@@ TQM862M_config          
  TQM866M_config                \
  TQM885D_config                \
  virtlab2_config:      unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _LCD,$@)" ] || \
-               { echo "#define CONFIG_LCD"             >>include/config.h ; \
-                 echo "#define CONFIG_NEC_NL6448BC20"  >>include/config.h ; \
+               { echo "#define CONFIG_LCD"             >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_NEC_NL6448BC20"  >>$(obj)include/config.h ; \
                  echo "... with LCD display" ; \
                }
-       @./mkconfig -a $(call xtract_8xx,$@) ppc mpc8xx tqm8xx
+       @$(MKCONFIG) -a $(call xtract_8xx,$@) ppc mpc8xx tqm8xx
  
  TTTech_config:        unconfig
-       @echo "#define CONFIG_LCD" >include/config.h
-       @echo "#define CONFIG_SHARP_LQ104V7DS01" >>include/config.h
-       @./mkconfig -a TQM823L ppc mpc8xx tqm8xx
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_LCD" >$(obj)include/config.h
+       @echo "#define CONFIG_SHARP_LQ104V7DS01" >>$(obj)include/config.h
+       @$(MKCONFIG) -a TQM823L ppc mpc8xx tqm8xx
  
  uc100_config  :       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8xx uc100
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx uc100
  
  v37_config:   unconfig
-       @echo "#define CONFIG_LCD" >include/config.h
-       @echo "#define CONFIG_SHARP_LQ084V1DG21" >>include/config.h
-       @./mkconfig $(@:_config=) ppc mpc8xx v37
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_LCD" >$(obj)include/config.h
+       @echo "#define CONFIG_SHARP_LQ084V1DG21" >>$(obj)include/config.h
+       @$(MKCONFIG) $(@:_config=) ppc mpc8xx v37
  
  wtk_config:   unconfig
-       @echo "#define CONFIG_LCD" >include/config.h
-       @echo "#define CONFIG_SHARP_LQ065T9DR51U" >>include/config.h
-       @./mkconfig -a TQM823L ppc mpc8xx tqm8xx
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_LCD" >$(obj)include/config.h
+       @echo "#define CONFIG_SHARP_LQ065T9DR51U" >>$(obj)include/config.h
+       @$(MKCONFIG) -a TQM823L ppc mpc8xx tqm8xx
  
  #########################################################################
  ## PPC4xx Systems
  xtract_4xx = $(subst _25,,$(subst _33,,$(subst _BA,,$(subst _ME,,$(subst _HI,,$(subst _config,,$1))))))
  
  ADCIOP_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx adciop esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx adciop esd
  
  AP1000_config:unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx ap1000 amirix
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ap1000 amirix
  
  APC405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx apc405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx apc405 esd
  
  AR405_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx ar405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ar405 esd
  
  ASH405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx ash405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ash405 esd
  
  bamboo_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx bamboo amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx bamboo amcc
  
  bubinga_config:       unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx bubinga amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx bubinga amcc
  
  CANBT_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx canbt esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx canbt esd
  
  CATcenter_config      \
  CATcenter_25_config   \
  CATcenter_33_config:  unconfig
-       @ echo "/* CATcenter uses PPChameleon Model ME */"  > include/config.h
-       @ echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 1" >> include/config.h
+       @mkdir -p $(obj)include
+       @ echo "/* CATcenter uses PPChameleon Model ME */"  > $(obj)include/config.h
+       @ echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 1" >> $(obj)include/config.h
        @[ -z "$(findstring _25,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_CLK_25" >>include/config.h ; \
+               { echo "#define CONFIG_PPCHAMELEON_CLK_25" >> $(obj)include/config.h ; \
                  echo "SysClk = 25MHz" ; \
                }
        @[ -z "$(findstring _33,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_CLK_33" >>include/config.h ; \
+               { echo "#define CONFIG_PPCHAMELEON_CLK_33" >> $(obj)include/config.h ; \
                  echo "SysClk = 33MHz" ; \
                }
-       @./mkconfig -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
+       @$(MKCONFIG) -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
  
  CPCI2DP_config:       unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx cpci2dp esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci2dp esd
  
  CPCI405_config        \
  CPCI4052_config       \
  CPCI405DT_config      \
  CPCI405AB_config:     unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx cpci405 esd
-       @echo "BOARD_REVISION = $(@:_config=)"  >>include/config.mk
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci405 esd
+       @echo "BOARD_REVISION = $(@:_config=)"  >> $(obj)include/config.mk
  
  CPCI440_config:       unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx cpci440 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci440 esd
  
  CPCIISER4_config:     unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx cpciiser4 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpciiser4 esd
  
  CRAYL1_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx L1 cray
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx L1 cray
  
  csb272_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx csb272
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx csb272
  
  csb472_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx csb472
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx csb472
  
  DASA_SIM_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx dasa_sim esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx dasa_sim esd
  
  DP405_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx dp405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx dp405 esd
  
  DU405_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx du405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx du405 esd
  
  ebony_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx ebony amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ebony amcc
  
  ERIC_config:  unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx eric
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx eric
  
  EXBITGEN_config:      unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx exbitgen
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx exbitgen
  
  G2000_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx g2000
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx g2000
  
  HH405_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx hh405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx hh405 esd
  
  HUB405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx hub405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx hub405 esd
  
  JSE_config:   unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx jse
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx jse
  
  KAREF_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx karef sandburst
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx karef sandburst
  
  luan_config:  unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx luan amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx luan amcc
  
  METROBOX_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx metrobox sandburst
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx metrobox sandburst
  
  MIP405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx mip405 mpl
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx mip405 mpl
  
  MIP405T_config:       unconfig
-       @echo "#define CONFIG_MIP405T" >include/config.h
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_MIP405T" >$(obj)include/config.h
        @echo "Enable subset config for MIP405T"
-       @./mkconfig -a MIP405 ppc ppc4xx mip405 mpl
+       @$(MKCONFIG) -a MIP405 ppc ppc4xx mip405 mpl
  
  ML2_config:   unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx ml2
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml2
  
  ml300_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx ml300 xilinx
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml300 xilinx
  
  ocotea_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx ocotea amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocotea amcc
  
  OCRTC_config          \
  ORSG_config:  unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx ocrtc esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocrtc esd
  
  p3p440_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx p3p440 prodrive
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx p3p440 prodrive
  
  PCI405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx pci405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pci405 esd
  
  pcs440ep_config:      unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx pcs440ep
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pcs440ep
  
  PIP405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx pip405 mpl
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pip405 mpl
  
  PLU405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx plu405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx plu405 esd
  
  PMC405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx pmc405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pmc405 esd
  
  PPChameleonEVB_config         \
  PPChameleonEVB_BA_25_config   \
@@@ -977,66 -1118,78 +1121,78 @@@ PPChameleonEVB_HI_25_config   
  PPChameleonEVB_BA_33_config   \
  PPChameleonEVB_ME_33_config   \
  PPChameleonEVB_HI_33_config:  unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring EVB_BA,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 0" >>include/config.h ; \
+               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 0" >>$(obj)include/config.h ; \
                  echo "... BASIC model" ; \
                }
        @[ -z "$(findstring EVB_ME,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 1" >>include/config.h ; \
+               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 1" >>$(obj)include/config.h ; \
                  echo "... MEDIUM model" ; \
                }
        @[ -z "$(findstring EVB_HI,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 2" >>include/config.h ; \
+               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 2" >>$(obj)include/config.h ; \
                  echo "... HIGH-END model" ; \
                }
        @[ -z "$(findstring _25,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_CLK_25" >>include/config.h ; \
+               { echo "#define CONFIG_PPCHAMELEON_CLK_25" >>$(obj)include/config.h ; \
                  echo "SysClk = 25MHz" ; \
                }
        @[ -z "$(findstring _33,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_CLK_33" >>include/config.h ; \
+               { echo "#define CONFIG_PPCHAMELEON_CLK_33" >>$(obj)include/config.h ; \
                  echo "SysClk = 33MHz" ; \
                }
-       @./mkconfig -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
+       @$(MKCONFIG) -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
  
  sbc405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx sbc405
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx sbc405
+ sequoia_config:       unconfig
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx sequoia amcc
+ sequoia_nand_config:  unconfig
+       @ln -s board/amcc/sequoia/Makefile nand_spl/Makefile
+       @echo "#define CONFIG_NAND_U_BOOT" >include/config.h
+       @echo "Compile NAND boot image for sequoia"
+       @$(MKCONFIG) -a sequoia ppc ppc4xx sequoia amcc
+       @echo "TEXT_BASE = 0x01000000" >board/amcc/sequoia/config.tmp
+       @echo "CONFIG_NAND_U_BOOT = y" >> include/config.mk
  
  sycamore_config:      unconfig
        @echo "Configuring for sycamore board as subset of walnut..."
-       @./mkconfig -a walnut ppc ppc4xx walnut amcc
+       @$(MKCONFIG) -a walnut ppc ppc4xx walnut amcc
  
  VOH405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx voh405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx voh405 esd
  
  VOM405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx vom405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx vom405 esd
  
  CMS700_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx cms700 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cms700 esd
  
  W7OLMC_config \
  W7OLMG_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx w7o
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx w7o
  
  walnut_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx walnut amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx walnut amcc
  
  WUH405_config:        unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx wuh405 esd
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx wuh405 esd
  
  XPEDITE1K_config:     unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx xpedite1k
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx xpedite1k
  
  yosemite_config:      unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx yosemite amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx yosemite amcc
  
  yellowstone_config:   unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx yellowstone amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx yellowstone amcc
  
  yucca_config: unconfig
-       @./mkconfig $(@:_config=) ppc ppc4xx yucca amcc
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx yucca amcc
  
  #########################################################################
  ## MPC8220 Systems
  
  Alaska8220_config     \
  Yukon8220_config:     unconfig
-       @./mkconfig $(@:_config=) ppc mpc8220 alaska
+       @$(MKCONFIG) $(@:_config=) ppc mpc8220 alaska
  
  sorcery_config:               unconfig
-       @./mkconfig $(@:_config=) ppc mpc8220 sorcery
+       @$(MKCONFIG) $(@:_config=) ppc mpc8220 sorcery
  
  #########################################################################
  ## MPC824x Systems
  xtract_82xx = $(subst _BIGFLASH,,$(subst _ROMBOOT,,$(subst _L2,,$(subst _266MHz,,$(subst _300MHz,,$(subst _config,,$1))))))
  
  A3000_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x a3000
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x a3000
  
  barco_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x barco
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x barco
  
  BMW_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x bmw
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x bmw
  
  CPC45_config  \
  CPC45_ROMBOOT_config: unconfig
-       @./mkconfig $(call xtract_82xx,$@) ppc mpc824x cpc45
-       @cd ./include ;                         \
+       @$(MKCONFIG) $(call xtract_82xx,$@) ppc mpc824x cpc45
+       @cd $(obj)include ;                             \
        if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
                echo "CONFIG_BOOT_ROM = y" >> config.mk ; \
                echo "... booting from 8-bit flash" ; \
        echo "export CONFIG_BOOT_ROM" >> config.mk;
  
  CU824_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x cu824
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x cu824
  
  debris_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x debris etin
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x debris etin
  
  eXalion_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x eXalion
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x eXalion
  
  HIDDEN_DRAGON_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x hidden_dragon
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x hidden_dragon
  
  kvme080_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x kvme080 etin
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x kvme080 etin
  
  MOUSSE_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x mousse
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x mousse
  
  MUSENKI_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x musenki
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x musenki
  
  MVBLUE_config:        unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x mvblue
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x mvblue
  
  OXC_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x oxc
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x oxc
  
  PN62_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x pn62
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x pn62
  
  Sandpoint8240_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x sandpoint
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x sandpoint
  
  Sandpoint8245_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x sandpoint
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x sandpoint
  
  sbc8240_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x sbc8240
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x sbc8240
  
  SL8245_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x sl8245
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x sl8245
  
  utx8245_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc824x utx8245
+       @$(MKCONFIG) $(@:_config=) ppc mpc824x utx8245
  
  #########################################################################
  ## MPC8260 Systems
  #########################################################################
  
  atc_config:   unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 atc
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 atc
  
  cogent_mpc8260_config:        unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 cogent
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 cogent
  
  CPU86_config  \
  CPU86_ROMBOOT_config: unconfig
-       @./mkconfig $(call xtract_82xx,$@) ppc mpc8260 cpu86
-       @cd ./include ;                         \
+       @$(MKCONFIG) $(call xtract_82xx,$@) ppc mpc8260 cpu86
+       @cd $(obj)include ;                             \
        if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
                echo "CONFIG_BOOT_ROM = y" >> config.mk ; \
                echo "... booting from 8-bit flash" ; \
  
  CPU87_config  \
  CPU87_ROMBOOT_config: unconfig
-       @./mkconfig $(call xtract_82xx,$@) ppc mpc8260 cpu87
-       @cd ./include ;                         \
+       @$(MKCONFIG) $(call xtract_82xx,$@) ppc mpc8260 cpu87
+       @cd $(obj)include ;                             \
        if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
                echo "CONFIG_BOOT_ROM = y" >> config.mk ; \
                echo "... booting from 8-bit flash" ; \
  
  ep8248_config \
  ep8248E_config        :       unconfig
-       @./mkconfig ep8248 ppc mpc8260 ep8248
+       @$(MKCONFIG) ep8248 ppc mpc8260 ep8248
  
  ep8260_config:        unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 ep8260
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 ep8260
  
  gw8260_config:        unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 gw8260
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 gw8260
  
  hymod_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 hymod
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 hymod
  
  IDS8247_config:       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 ids8247
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 ids8247
  
  IPHASE4539_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 iphase4539
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 iphase4539
  
  ISPAN_config          \
  ISPAN_REVB_config:    unconfig
+       @mkdir -p $(obj)include
        @if [ "$(findstring _REVB_,$@)" ] ; then \
-               echo "#define CFG_REV_B" > include/config.h ; \
+               echo "#define CFG_REV_B" > $(obj)include/config.h ; \
        fi
-       @./mkconfig -a ISPAN ppc mpc8260 ispan
+       @$(MKCONFIG) -a ISPAN ppc mpc8260 ispan
  
  MPC8260ADS_config     \
  MPC8260ADS_lowboot_config     \
@@@ -1200,21 -1354,23 +1357,23 @@@ PQ2FADS-ZU_lowboot_config    
  PQ2FADS-ZU_66MHz_config       \
  PQ2FADS-ZU_66MHz_lowboot_config       \
        :               unconfig
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/mpc8260ads
        $(if $(findstring PQ2FADS,$@), \
-       @echo "#define CONFIG_ADSTYPE CFG_PQ2FADS" > include/config.h, \
-       @echo "#define CONFIG_ADSTYPE CFG_"$(subst MPC,,$(word 1,$(subst _, ,$@))) > include/config.h)
+       @echo "#define CONFIG_ADSTYPE CFG_PQ2FADS" > $(obj)include/config.h, \
+       @echo "#define CONFIG_ADSTYPE CFG_"$(subst MPC,,$(word 1,$(subst _, ,$@))) > $(obj)include/config.h)
        $(if $(findstring MHz,$@), \
-       @echo "#define CONFIG_8260_CLKIN" $(subst MHz,,$(word 2,$(subst _, ,$@)))"000000" >> include/config.h, \
+       @echo "#define CONFIG_8260_CLKIN" $(subst MHz,,$(word 2,$(subst _, ,$@)))"000000" >> $(obj)include/config.h, \
        $(if $(findstring VR,$@), \
-       @echo "#define CONFIG_8260_CLKIN 66000000" >> include/config.h))
+       @echo "#define CONFIG_8260_CLKIN 66000000" >> $(obj)include/config.h))
        @[ -z "$(findstring lowboot_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFF800000" >board/mpc8260ads/config.tmp ; \
+               { echo "TEXT_BASE = 0xFF800000" >$(obj)board/mpc8260ads/config.tmp ; \
                  echo "... with lowboot configuration" ; \
                }
-       @./mkconfig -a MPC8260ADS ppc mpc8260 mpc8260ads
+       @$(MKCONFIG) -a MPC8260ADS ppc mpc8260 mpc8260ads
  
  MPC8266ADS_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 mpc8266ads
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 mpc8266ads
  
  # PM825/PM826 default configuration:  small (= 8 MB) Flash / boot from 64-bit flash
  PM825_config  \
@@@ -1225,71 -1381,76 +1384,76 @@@ PM826_config 
  PM826_ROMBOOT_config  \
  PM826_BIGFLASH_config \
  PM826_ROMBOOT_BIGFLASH_config:        unconfig
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/pm826
        @if [ "$(findstring PM825_,$@)" ] ; then \
-               echo "#define CONFIG_PCI"       >include/config.h ; \
+               echo "#define CONFIG_PCI"       >$(obj)include/config.h ; \
        else \
-               >include/config.h ; \
+               >$(obj)include/config.h ; \
        fi
        @if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
                echo "... booting from 8-bit flash" ; \
-               echo "#define CONFIG_BOOT_ROM" >>include/config.h ; \
-               echo "TEXT_BASE = 0xFF800000" >board/pm826/config.tmp ; \
+               echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
+               echo "TEXT_BASE = 0xFF800000" >$(obj)board/pm826/config.tmp ; \
                if [ "$(findstring _BIGFLASH_,$@)" ] ; then \
                        echo "... with 32 MB Flash" ; \
-                       echo "#define CONFIG_FLASH_32MB" >>include/config.h ; \
+                       echo "#define CONFIG_FLASH_32MB" >>$(obj)include/config.h ; \
                fi; \
        else \
                echo "... booting from 64-bit flash" ; \
                if [ "$(findstring _BIGFLASH_,$@)" ] ; then \
                        echo "... with 32 MB Flash" ; \
-                       echo "#define CONFIG_FLASH_32MB" >>include/config.h ; \
-                       echo "TEXT_BASE = 0x40000000" >board/pm826/config.tmp ; \
+                       echo "#define CONFIG_FLASH_32MB" >>$(obj)include/config.h ; \
+                       echo "TEXT_BASE = 0x40000000" >$(obj)board/pm826/config.tmp ; \
                else \
-                       echo "TEXT_BASE = 0xFF000000" >board/pm826/config.tmp ; \
+                       echo "TEXT_BASE = 0xFF000000" >$(obj)board/pm826/config.tmp ; \
                fi; \
        fi
-       @./mkconfig -a PM826 ppc mpc8260 pm826
+       @$(MKCONFIG) -a PM826 ppc mpc8260 pm826
  
  PM828_config  \
  PM828_PCI_config      \
  PM828_ROMBOOT_config  \
  PM828_ROMBOOT_PCI_config:     unconfig
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/pm826
        @if [ "$(findstring _PCI_,$@)" ] ; then \
-               echo "#define CONFIG_PCI"  >>include/config.h ; \
+               echo "#define CONFIG_PCI"  >>$(obj)include/config.h ; \
                echo "... with PCI enabled" ; \
        else \
-               >include/config.h ; \
+               >$(obj)include/config.h ; \
        fi
        @if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
                echo "... booting from 8-bit flash" ; \
-               echo "#define CONFIG_BOOT_ROM" >>include/config.h ; \
-               echo "TEXT_BASE = 0xFF800000" >board/pm826/config.tmp ; \
+               echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
+               echo "TEXT_BASE = 0xFF800000" >$(obj)board/pm826/config.tmp ; \
        fi
-       @./mkconfig -a PM828 ppc mpc8260 pm828
+       @$(MKCONFIG) -a PM828 ppc mpc8260 pm828
  
  ppmc8260_config:      unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 ppmc8260
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 ppmc8260
  
  Rattler8248_config    \
  Rattler_config:               unconfig
+       @mkdir -p $(obj)include
        $(if $(findstring 8248,$@), \
-       @echo "#define CONFIG_MPC8248" > include/config.h)
-       @./mkconfig -a Rattler ppc mpc8260 rattler
+       @echo "#define CONFIG_MPC8248" > $(obj)include/config.h)
+       @$(MKCONFIG) -a Rattler ppc mpc8260 rattler
  
  RPXsuper_config:      unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 rpxsuper
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 rpxsuper
  
  rsdproto_config:      unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 rsdproto
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 rsdproto
  
  sacsng_config:        unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 sacsng
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 sacsng
  
  sbc8260_config:       unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 sbc8260
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 sbc8260
  
  SCM_config:           unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 SCM siemens
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 SCM siemens
  
  TQM8255_AA_config \
  TQM8260_AA_config \
@@@ -1302,6 -1463,7 +1466,7 @@@ TQM8260_AG_config 
  TQM8260_AH_config \
  TQM8260_AI_config \
  TQM8265_AA_config:  unconfig
+       @mkdir -p $(obj)include
        @case "$@" in \
        TQM8255_AA_config) CTYPE=MPC8255; CFREQ=300; CACHE=no;  BMODE=8260;;  \
        TQM8260_AA_config) CTYPE=MPC8260; CFREQ=200; CACHE=no;  BMODE=8260;; \
        TQM8260_AI_config) CTYPE=MPC8260; CFREQ=300; CACHE=no;  BMODE=60x;;  \
        TQM8265_AA_config) CTYPE=MPC8265; CFREQ=300; CACHE=no;  BMODE=60x;;  \
        esac; \
-       >include/config.h ; \
+       >$(obj)include/config.h ; \
        if [ "$${CTYPE}" != "MPC8260" ] ; then \
-               echo "#define CONFIG_$${CTYPE}" >>include/config.h ; \
+               echo "#define CONFIG_$${CTYPE}" >>$(obj)include/config.h ; \
        fi; \
-       echo "#define CONFIG_$${CFREQ}MHz"      >>include/config.h ; \
+       echo "#define CONFIG_$${CFREQ}MHz"      >>$(obj)include/config.h ; \
        echo "... with $${CFREQ}MHz system clock" ; \
        if [ "$${CACHE}" == "yes" ] ; then \
-               echo "#define CONFIG_L2_CACHE"  >>include/config.h ; \
+               echo "#define CONFIG_L2_CACHE"  >>$(obj)include/config.h ; \
                echo "... with L2 Cache support" ; \
        else \
-               echo "#undef CONFIG_L2_CACHE"   >>include/config.h ; \
+               echo "#undef CONFIG_L2_CACHE"   >>$(obj)include/config.h ; \
                echo "... without L2 Cache support" ; \
        fi; \
        if [ "$${BMODE}" == "60x" ] ; then \
-               echo "#define CONFIG_BUSMODE_60x" >>include/config.h ; \
+               echo "#define CONFIG_BUSMODE_60x" >>$(obj)include/config.h ; \
                echo "... with 60x Bus Mode" ; \
        else \
-               echo "#undef CONFIG_BUSMODE_60x"  >>include/config.h ; \
+               echo "#undef CONFIG_BUSMODE_60x"  >>$(obj)include/config.h ; \
                echo "... without 60x Bus Mode" ; \
        fi
-       @./mkconfig -a TQM8260 ppc mpc8260 tqm8260
+       @$(MKCONFIG) -a TQM8260 ppc mpc8260 tqm8260
  
  VoVPN-GW_66MHz_config \
  VoVPN-GW_100MHz_config:               unconfig
-       @echo "#define CONFIG_CLKIN_$(word 2,$(subst _, ,$@))" > include/config.h
-       @./mkconfig -a VoVPN-GW ppc mpc8260 vovpn-gw funkwerk
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_CLKIN_$(word 2,$(subst _, ,$@))" > $(obj)include/config.h
+       @$(MKCONFIG) -a VoVPN-GW ppc mpc8260 vovpn-gw funkwerk
  
  ZPC1900_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc8260 zpc1900
+       @$(MKCONFIG) $(@:_config=) ppc mpc8260 zpc1900
  
  #########################################################################
  ## Coldfire
  #########################################################################
  
  cobra5272_config :            unconfig
-       @./mkconfig $(@:_config=) m68k mcf52x2 cobra5272
+       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 cobra5272
  
  EB+MCF-EV123_config :         unconfig
-       @ >include/config.h
-       @echo "TEXT_BASE = 0xFFE00000"|tee board/BuS/EB+MCF-EV123/textbase.mk
-       @./mkconfig EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/BuS/EB+MCF-EV123
+       @ >$(obj)include/config.h
+       @echo "TEXT_BASE = 0xFFE00000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
+       @$(MKCONFIG) EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
  
  EB+MCF-EV123_internal_config :        unconfig
-       @ >include/config.h
-       @echo "TEXT_BASE = 0xF0000000"|tee board/BuS/EB+MCF-EV123/textbase.mk
-       @./mkconfig EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/BuS/EB+MCF-EV123
+       @ >$(obj)include/config.h
+       @echo "TEXT_BASE = 0xF0000000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
+       @$(MKCONFIG) EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
  
  M5271EVB_config :             unconfig
-       @./mkconfig $(@:_config=) m68k mcf52x2 m5271evb
+       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5271evb
  
  M5272C3_config :              unconfig
-       @./mkconfig $(@:_config=) m68k mcf52x2 m5272c3
+       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5272c3
  
  M5282EVB_config :             unconfig
-       @./mkconfig $(@:_config=) m68k mcf52x2 m5282evb
+       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5282evb
  
  TASREG_config :               unconfig
-       @./mkconfig $(@:_config=) m68k mcf52x2 tasreg esd
+       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 tasreg esd
  
  r5200_config :                unconfig
-       @./mkconfig $(@:_config=) m68k mcf52x2 r5200
+       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 r5200
  
  #########################################################################
  ## MPC83xx Systems
  #########################################################################
  
  MPC8349ADS_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc83xx mpc8349ads
+       @$(MKCONFIG) $(@:_config=) ppc mpc83xx mpc8349ads
  
  TQM834x_config:       unconfig
-       @./mkconfig $(@:_config=) ppc mpc83xx tqm834x
+       @$(MKCONFIG) $(@:_config=) ppc mpc83xx tqm834x
  
  MPC8349EMDS_config:   unconfig
-       @./mkconfig $(@:_config=) ppc mpc83xx mpc8349emds
+       @$(MKCONFIG) $(@:_config=) ppc mpc83xx mpc8349emds
  
  #########################################################################
  ## MPC85xx Systems
  #########################################################################
  
  MPC8540ADS_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc85xx mpc8540ads
+       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8540ads
  
  MPC8540EVAL_config \
  MPC8540EVAL_33_config \
  MPC8540EVAL_66_config \
  MPC8540EVAL_33_slave_config \
  MPC8540EVAL_66_slave_config:      unconfig
-       @echo "" >include/config.h ; \
+       @mkdir -p $(obj)include
+       @echo "" >$(obj)include/config.h ; \
        if [ "$(findstring _33_,$@)" ] ; then \
                echo -n "... 33 MHz PCI" ; \
        else \
-               echo "#define CONFIG_SYSCLK_66M" >>include/config.h ; \
+               echo "#define CONFIG_SYSCLK_66M" >>$(obj)include/config.h ; \
                echo -n "... 66 MHz PCI" ; \
        fi ; \
        if [ "$(findstring _slave_,$@)" ] ; then \
-               echo "#define CONFIG_PCI_SLAVE" >>include/config.h ; \
+               echo "#define CONFIG_PCI_SLAVE" >>$(obj)include/config.h ; \
                echo " slave" ; \
        else \
                echo " host" ; \
        fi
-       @./mkconfig -a MPC8540EVAL ppc mpc85xx mpc8540eval
+       @$(MKCONFIG) -a MPC8540EVAL ppc mpc85xx mpc8540eval
  
  MPC8560ADS_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc85xx mpc8560ads
+       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8560ads
  
  MPC8541CDS_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc85xx mpc8541cds cds
+       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8541cds cds
  
  MPC8548CDS_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc85xx mpc8548cds cds
+       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8548cds cds
  
  MPC8555CDS_config:    unconfig
-       @./mkconfig $(@:_config=) ppc mpc85xx mpc8555cds cds
+       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8555cds cds
  
  PM854_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc85xx pm854
+       @$(MKCONFIG) $(@:_config=) ppc mpc85xx pm854
  
  PM856_config: unconfig
-       @./mkconfig $(@:_config=) ppc mpc85xx pm856
+       @$(MKCONFIG) $(@:_config=) ppc mpc85xx pm856
  
  sbc8540_config \
  sbc8540_33_config \
  sbc8540_66_config:    unconfig
+       @mkdir -p $(obj)include
        @if [ "$(findstring _66_,$@)" ] ; then \
-               echo "#define CONFIG_PCI_66"    >>include/config.h ; \
+               echo "#define CONFIG_PCI_66"    >>$(obj)include/config.h ; \
                echo "... 66 MHz PCI" ; \
        else \
-               >include/config.h ; \
+               >$(obj)include/config.h ; \
                echo "... 33 MHz PCI" ; \
        fi
-       @./mkconfig -a SBC8540 ppc mpc85xx sbc8560
+       @$(MKCONFIG) -a SBC8540 ppc mpc85xx sbc8560
  
  sbc8560_config \
  sbc8560_33_config \
  sbc8560_66_config:      unconfig
+       @mkdir -p $(obj)include
        @if [ "$(findstring _66_,$@)" ] ; then \
-               echo "#define CONFIG_PCI_66"    >>include/config.h ; \
+               echo "#define CONFIG_PCI_66"    >>$(obj)include/config.h ; \
                echo "... 66 MHz PCI" ; \
        else \
-               >include/config.h ; \
+               >$(obj)include/config.h ; \
                echo "... 33 MHz PCI" ; \
        fi
-       @./mkconfig -a sbc8560 ppc mpc85xx sbc8560
+       @$(MKCONFIG) -a sbc8560 ppc mpc85xx sbc8560
  
  stxgp3_config:                unconfig
-       @./mkconfig $(@:_config=) ppc mpc85xx stxgp3
+       @$(MKCONFIG) $(@:_config=) ppc mpc85xx stxgp3
  
  TQM8540_config                \
  TQM8541_config                \
  TQM8555_config                \
  TQM8560_config:               unconfig
+       @mkdir -p $(obj)include
        @CTYPE=$(subst TQM,,$(@:_config=)); \
-       >include/config.h ; \
+       >$(obj)include/config.h ; \
        echo "... TQM"$${CTYPE}; \
-       echo "#define CONFIG_MPC$${CTYPE}">>include/config.h; \
-       echo "#define CONFIG_TQM$${CTYPE}">>include/config.h; \
-       echo "#define CONFIG_HOSTNAME tqm$${CTYPE}">>include/config.h; \
-       echo "#define CONFIG_BOARDNAME \"TQM$${CTYPE}\"">>include/config.h; \
-       echo "#define CFG_BOOTFILE \"bootfile=/tftpboot/tqm$${CTYPE}/uImage\0\"">>include/config.h
-       @./mkconfig -a TQM85xx ppc mpc85xx tqm85xx
+       echo "#define CONFIG_MPC$${CTYPE}">>$(obj)include/config.h; \
+       echo "#define CONFIG_TQM$${CTYPE}">>$(obj)include/config.h; \
+       echo "#define CONFIG_HOSTNAME tqm$${CTYPE}">>$(obj)include/config.h; \
+       echo "#define CONFIG_BOARDNAME \"TQM$${CTYPE}\"">>$(obj)include/config.h; \
+       echo "#define CFG_BOOTFILE \"bootfile=/tftpboot/tqm$${CTYPE}/uImage\0\"">>$(obj)include/config.h
+       @$(MKCONFIG) -a TQM85xx ppc mpc85xx tqm85xx
  
 +#########################################################################
 +## MPC86xx Systems
 +#########################################################################
 +
 +MPC8641HPCN_config:    unconfig
 +      @./mkconfig $(@:_config=) ppc mpc86xx mpc8641hpcn
 +
 +
  #########################################################################
  ## 74xx/7xx Systems
  #########################################################################
  
  AmigaOneG3SE_config:  unconfig
-       @./mkconfig $(@:_config=) ppc 74xx_7xx AmigaOneG3SE MAI
+       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx AmigaOneG3SE MAI
  
  BAB7xx_config: unconfig
-       @./mkconfig $(@:_config=) ppc 74xx_7xx bab7xx eltec
+       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx bab7xx eltec
  
  CPCI750_config:        unconfig
-       @./mkconfig CPCI750 ppc 74xx_7xx cpci750 esd
+       @$(MKCONFIG) CPCI750 ppc 74xx_7xx cpci750 esd
  
  DB64360_config:  unconfig
-       @./mkconfig DB64360 ppc 74xx_7xx db64360 Marvell
+       @$(MKCONFIG) DB64360 ppc 74xx_7xx db64360 Marvell
  
  DB64460_config:  unconfig
-       @./mkconfig DB64460 ppc 74xx_7xx db64460 Marvell
+       @$(MKCONFIG) DB64460 ppc 74xx_7xx db64460 Marvell
  
  ELPPC_config: unconfig
-       @./mkconfig $(@:_config=) ppc 74xx_7xx elppc eltec
+       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx elppc eltec
  
  EVB64260_config       \
  EVB64260_750CX_config:        unconfig
-       @./mkconfig EVB64260 ppc 74xx_7xx evb64260
+       @$(MKCONFIG) EVB64260 ppc 74xx_7xx evb64260
  
  P3G4_config: unconfig
-       @./mkconfig $(@:_config=) ppc 74xx_7xx evb64260
+       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260
  
  PCIPPC2_config \
  PCIPPC6_config: unconfig
-       @./mkconfig $(@:_config=) ppc 74xx_7xx pcippc2
+       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx pcippc2
  
  ZUMA_config:  unconfig
-       @./mkconfig $(@:_config=) ppc 74xx_7xx evb64260
+       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260
  
  ppmc7xx_config: unconfig
-       @./mkconfig $(@:_config=) ppc 74xx_7xx ppmc7xx
+       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx ppmc7xx
  
  #========================================================================
  # ARM
  #########################################################################
  
  assabet_config        :       unconfig
-       @./mkconfig $(@:_config=) arm sa1100 assabet
+       @$(MKCONFIG) $(@:_config=) arm sa1100 assabet
  
  dnp1110_config        :       unconfig
-       @./mkconfig $(@:_config=) arm sa1100 dnp1110
+       @$(MKCONFIG) $(@:_config=) arm sa1100 dnp1110
  
  gcplus_config :       unconfig
-       @./mkconfig $(@:_config=) arm sa1100 gcplus
+       @$(MKCONFIG) $(@:_config=) arm sa1100 gcplus
  
  lart_config   :       unconfig
-       @./mkconfig $(@:_config=) arm sa1100 lart
+       @$(MKCONFIG) $(@:_config=) arm sa1100 lart
  
  shannon_config        :       unconfig
-       @./mkconfig $(@:_config=) arm sa1100 shannon
+       @$(MKCONFIG) $(@:_config=) arm sa1100 shannon
  
  #########################################################################
  ## ARM92xT Systems
@@@ -1556,16 -1719,16 +1730,16 @@@ xtract_omap1610xxx = $(subst _cs0boot,,
  xtract_omap730p2 = $(subst _cs0boot,,$(subst _cs3boot,, $(subst _config,,$1)))
  
  at91rm9200dk_config   :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t at91rm9200dk NULL at91rm9200
+       @$(MKCONFIG) $(@:_config=) arm arm920t at91rm9200dk NULL at91rm9200
  
  cmc_pu2_config        :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t cmc_pu2 NULL at91rm9200
+       @$(MKCONFIG) $(@:_config=) arm arm920t cmc_pu2 NULL at91rm9200
  
  csb637_config :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t csb637 NULL at91rm9200
+       @$(MKCONFIG) $(@:_config=) arm arm920t csb637 NULL at91rm9200
  
  mp2usb_config :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t mp2usb NULL at91rm9200
+       @$(MKCONFIG) $(@:_config=) arm arm920t mp2usb NULL at91rm9200
  
  
  ########################################################################
@@@ -1595,34 -1758,35 +1769,35 @@@ cp1026_config: unconfi
        @board/integratorcp/split_by_variant.sh $@
  
  kb9202_config :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t kb9202 NULL at91rm9200
+       @$(MKCONFIG) $(@:_config=) arm arm920t kb9202 NULL at91rm9200
  
  lpd7a400_config \
  lpd7a404_config:      unconfig
-       @./mkconfig $(@:_config=) arm lh7a40x lpd7a40x
+       @$(MKCONFIG) $(@:_config=) arm lh7a40x lpd7a40x
  
  mx1ads_config :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t mx1ads NULL imx
+       @$(MKCONFIG) $(@:_config=) arm arm920t mx1ads NULL imx
  
  mx1fs2_config :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t mx1fs2 NULL imx
+       @$(MKCONFIG) $(@:_config=) arm arm920t mx1fs2 NULL imx
  
  netstar_32_config     \
  netstar_config:               unconfig
+       @mkdir -p $(obj)include
        @if [ "$(findstring _32_,$@)" ] ; then \
                echo "... 32MB SDRAM" ; \
-               echo "#define PHYS_SDRAM_1_SIZE SZ_32M" >>include/config.h ; \
+               echo "#define PHYS_SDRAM_1_SIZE SZ_32M" >>$(obj)include/config.h ; \
        else \
                echo "... 64MB SDRAM" ; \
-               echo "#define PHYS_SDRAM_1_SIZE SZ_64M" >>include/config.h ; \
+               echo "#define PHYS_SDRAM_1_SIZE SZ_64M" >>$(obj)include/config.h ; \
        fi
-       @./mkconfig -a netstar arm arm925t netstar
+       @$(MKCONFIG) -a netstar arm arm925t netstar
  
  omap1510inn_config :  unconfig
-       @./mkconfig $(@:_config=) arm arm925t omap1510inn
+       @$(MKCONFIG) $(@:_config=) arm arm925t omap1510inn
  
  omap5912osk_config :  unconfig
-       @./mkconfig $(@:_config=) arm arm926ejs omap5912osk NULL omap
+       @$(MKCONFIG) $(@:_config=) arm arm926ejs omap5912osk NULL omap
  
  omap1610inn_config \
  omap1610inn_cs0boot_config \
@@@ -1632,72 -1796,76 +1807,76 @@@ omap1610h2_config 
  omap1610h2_cs0boot_config \
  omap1610h2_cs3boot_config \
  omap1610h2_cs_autoboot_config:        unconfig
+       @mkdir -p $(obj)include
        @if [ "$(findstring _cs0boot_, $@)" ] ; then \
-               echo "#define CONFIG_CS0_BOOT" >> ./include/config.h ; \
+               echo "#define CONFIG_CS0_BOOT" >> .$(obj)/include/config.h ; \
                echo "... configured for CS0 boot"; \
        elif [ "$(findstring _cs_autoboot_, $@)" ] ; then \
-               echo "#define CONFIG_CS_AUTOBOOT" >> ./include/config.h ; \
+               echo "#define CONFIG_CS_AUTOBOOT" >> $(obj)./include/config.h ; \
                echo "... configured for CS_AUTO boot"; \
        else \
-               echo "#define CONFIG_CS3_BOOT" >> ./include/config.h ; \
+               echo "#define CONFIG_CS3_BOOT" >> $(obj)./include/config.h ; \
                echo "... configured for CS3 boot"; \
        fi;
-       @./mkconfig -a $(call xtract_omap1610xxx,$@) arm arm926ejs omap1610inn NULL omap
+       @$(MKCONFIG) -a $(call xtract_omap1610xxx,$@) arm arm926ejs omap1610inn NULL omap
  
  omap730p2_config \
  omap730p2_cs0boot_config \
  omap730p2_cs3boot_config :    unconfig
+       @mkdir -p $(obj)include
        @if [ "$(findstring _cs0boot_, $@)" ] ; then \
-               echo "#define CONFIG_CS0_BOOT" >> ./include/config.h ; \
+               echo "#define CONFIG_CS0_BOOT" >> $(obj)include/config.h ; \
                echo "... configured for CS0 boot"; \
        else \
-               echo "#define CONFIG_CS3_BOOT" >> ./include/config.h ; \
+               echo "#define CONFIG_CS3_BOOT" >> $(obj)include/config.h ; \
                echo "... configured for CS3 boot"; \
        fi;
-       @./mkconfig -a $(call xtract_omap730p2,$@) arm arm926ejs omap730p2 NULL omap
+       @$(MKCONFIG) -a $(call xtract_omap730p2,$@) arm arm926ejs omap730p2 NULL omap
  
  sbc2410x_config: unconfig
-       @./mkconfig $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
+       @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
  
  scb9328_config        :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t scb9328 NULL imx
+       @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
  
  smdk2400_config       :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t smdk2400 NULL s3c24x0
+       @$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0
  
  smdk2410_config       :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
+       @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
  
  SX1_config :          unconfig
-       @./mkconfig $(@:_config=) arm arm925t sx1
+       @$(MKCONFIG) $(@:_config=) arm arm925t sx1
  
  # TRAB default configuration: 8 MB Flash, 32 MB RAM
  trab_config \
  trab_bigram_config \
  trab_bigflash_config \
  trab_old_config:      unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/trab
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _bigram,$@)" ] || \
-               { echo "#define CONFIG_FLASH_8MB"  >>include/config.h ; \
-                 echo "#define CONFIG_RAM_32MB"   >>include/config.h ; \
+               { echo "#define CONFIG_FLASH_8MB"  >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_RAM_32MB"   >>$(obj)include/config.h ; \
                  echo "... with 8 MB Flash, 32 MB RAM" ; \
                }
        @[ -z "$(findstring _bigflash,$@)" ] || \
-               { echo "#define CONFIG_FLASH_16MB" >>include/config.h ; \
-                 echo "#define CONFIG_RAM_16MB"   >>include/config.h ; \
+               { echo "#define CONFIG_FLASH_16MB" >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_RAM_16MB"   >>$(obj)include/config.h ; \
                  echo "... with 16 MB Flash, 16 MB RAM" ; \
-                 echo "TEXT_BASE = 0x0CF40000" >board/trab/config.tmp ; \
+                 echo "TEXT_BASE = 0x0CF40000" >$(obj)board/trab/config.tmp ; \
                }
        @[ -z "$(findstring _old,$@)" ] || \
-               { echo "#define CONFIG_FLASH_8MB"  >>include/config.h ; \
-                 echo "#define CONFIG_RAM_16MB"   >>include/config.h ; \
+               { echo "#define CONFIG_FLASH_8MB"  >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_RAM_16MB"   >>$(obj)include/config.h ; \
                  echo "... with 8 MB Flash, 16 MB RAM" ; \
-                 echo "TEXT_BASE = 0x0CF40000" >board/trab/config.tmp ; \
+                 echo "TEXT_BASE = 0x0CF40000" >$(obj)board/trab/config.tmp ; \
                }
-       @./mkconfig -a $(call xtract_trab,$@) arm arm920t trab NULL s3c24x0
+       @$(MKCONFIG) -a $(call xtract_trab,$@) arm arm920t trab NULL s3c24x0
  
  VCMA9_config  :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t vcma9 mpl s3c24x0
+       @$(MKCONFIG) $(@:_config=) arm arm920t vcma9 mpl s3c24x0
  
  #========================================================================
  # ARM supplied Versatile development boards
@@@ -1709,117 -1877,120 +1888,120 @@@ versatilepb_config :      unconfi
  
  voiceblue_smallflash_config   \
  voiceblue_config:     unconfig
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/voiceblue
        @if [ "$(findstring _smallflash_,$@)" ] ; then \
                echo "... boot from lower flash bank" ; \
-               echo "#define VOICEBLUE_SMALL_FLASH" >>include/config.h ; \
-               echo "VOICEBLUE_SMALL_FLASH=y" >board/voiceblue/config.tmp ; \
+               echo "#define VOICEBLUE_SMALL_FLASH" >>$(obj)include/config.h ; \
+               echo "VOICEBLUE_SMALL_FLASH=y" >$(obj)board/voiceblue/config.tmp ; \
        else \
                echo "... boot from upper flash bank" ; \
-               >include/config.h ; \
-               echo "VOICEBLUE_SMALL_FLASH=n" >board/voiceblue/config.tmp ; \
+               >$(obj)include/config.h ; \
+               echo "VOICEBLUE_SMALL_FLASH=n" >$(obj)board/voiceblue/config.tmp ; \
        fi
-       @./mkconfig -a voiceblue arm arm925t voiceblue
+       @$(MKCONFIG) -a voiceblue arm arm925t voiceblue
  
  cm4008_config :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t cm4008 NULL ks8695
+       @$(MKCONFIG) $(@:_config=) arm arm920t cm4008 NULL ks8695
  
  cm41xx_config :       unconfig
-       @./mkconfig $(@:_config=) arm arm920t cm41xx NULL ks8695
+       @$(MKCONFIG) $(@:_config=) arm arm920t cm41xx NULL ks8695
  
  gth2_config           :       unconfig
-       @ >include/config.h
-       @echo "#define CONFIG_GTH2 1" >>include/config.h
-       @./mkconfig -a gth2 mips mips gth2
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
+       @echo "#define CONFIG_GTH2 1" >>$(obj)include/config.h
+       @$(MKCONFIG) -a gth2 mips mips gth2
  
  #########################################################################
  ## S3C44B0 Systems
  #########################################################################
  
  B2_config     :       unconfig
-       @./mkconfig $(@:_config=) arm s3c44b0 B2 dave
+       @$(MKCONFIG) $(@:_config=) arm s3c44b0 B2 dave
  
  #########################################################################
  ## ARM720T Systems
  #########################################################################
  
  armadillo_config:     unconfig
-       @./mkconfig $(@:_config=) arm arm720t armadillo
+       @$(MKCONFIG) $(@:_config=) arm arm720t armadillo
  
  ep7312_config :       unconfig
-       @./mkconfig $(@:_config=) arm arm720t ep7312
+       @$(MKCONFIG) $(@:_config=) arm arm720t ep7312
  
  impa7_config  :       unconfig
-       @./mkconfig $(@:_config=) arm arm720t impa7
+       @$(MKCONFIG) $(@:_config=) arm arm720t impa7
  
  modnet50_config :     unconfig
-       @./mkconfig $(@:_config=) arm arm720t modnet50
+       @$(MKCONFIG) $(@:_config=) arm arm720t modnet50
  
  evb4510_config :      unconfig
-       @./mkconfig $(@:_config=) arm arm720t evb4510
+       @$(MKCONFIG) $(@:_config=) arm arm720t evb4510
  
  #########################################################################
  ## XScale Systems
  #########################################################################
  
  adsvix_config :       unconfig
-       @./mkconfig $(@:_config=) arm pxa adsvix
+       @$(MKCONFIG) $(@:_config=) arm pxa adsvix
  
  cerf250_config :      unconfig
-       @./mkconfig $(@:_config=) arm pxa cerf250
+       @$(MKCONFIG) $(@:_config=) arm pxa cerf250
  
  cradle_config :       unconfig
-       @./mkconfig $(@:_config=) arm pxa cradle
+       @$(MKCONFIG) $(@:_config=) arm pxa cradle
  
  csb226_config :       unconfig
-       @./mkconfig $(@:_config=) arm pxa csb226
+       @$(MKCONFIG) $(@:_config=) arm pxa csb226
  
  delta_config :
-       @./mkconfig $(@:_config=) arm pxa delta
+       @$(MKCONFIG) $(@:_config=) arm pxa delta
  
  innokom_config        :       unconfig
-       @./mkconfig $(@:_config=) arm pxa innokom
+       @$(MKCONFIG) $(@:_config=) arm pxa innokom
  
  ixdp425_config        :       unconfig
-       @./mkconfig $(@:_config=) arm ixp ixdp425
+       @$(MKCONFIG) $(@:_config=) arm ixp ixdp425
  
  ixdpg425_config       :       unconfig
-       @./mkconfig $(@:_config=) arm ixp ixdp425
+       @$(MKCONFIG) $(@:_config=) arm ixp ixdp425
  
  lubbock_config        :       unconfig
-       @./mkconfig $(@:_config=) arm pxa lubbock
+       @$(MKCONFIG) $(@:_config=) arm pxa lubbock
  
  pleb2_config  :       unconfig
-       @./mkconfig $(@:_config=) arm pxa pleb2
+       @$(MKCONFIG) $(@:_config=) arm pxa pleb2
  
  logodl_config :       unconfig
-       @./mkconfig $(@:_config=) arm pxa logodl
+       @$(MKCONFIG) $(@:_config=) arm pxa logodl
  
  pdnb3_config  :       unconfig
-       @./mkconfig $(@:_config=) arm ixp pdnb3 prodrive
+       @$(MKCONFIG) $(@:_config=) arm ixp pdnb3 prodrive
  
  pxa255_idp_config:    unconfig
-       @./mkconfig $(@:_config=) arm pxa pxa255_idp
+       @$(MKCONFIG) $(@:_config=) arm pxa pxa255_idp
  
  wepep250_config       :       unconfig
-       @./mkconfig $(@:_config=) arm pxa wepep250
+       @$(MKCONFIG) $(@:_config=) arm pxa wepep250
  
  xaeniax_config        :       unconfig
-       @./mkconfig $(@:_config=) arm pxa xaeniax
+       @$(MKCONFIG) $(@:_config=) arm pxa xaeniax
  
  xm250_config  :       unconfig
-       @./mkconfig $(@:_config=) arm pxa xm250
+       @$(MKCONFIG) $(@:_config=) arm pxa xm250
  
  xsengine_config :     unconfig
-       @./mkconfig $(@:_config=) arm pxa xsengine
+       @$(MKCONFIG) $(@:_config=) arm pxa xsengine
  
  zylonite_config :
-       @./mkconfig $(@:_config=) arm pxa zylonite
+       @$(MKCONFIG) $(@:_config=) arm pxa zylonite
  
  #########################################################################
  ## ARM1136 Systems
  #########################################################################
  omap2420h4_config :    unconfig
-       @./mkconfig $(@:_config=) arm arm1136 omap2420h4
+       @$(MKCONFIG) $(@:_config=) arm arm1136 omap2420h4
  
  #========================================================================
  # i386
  ## AMD SC520 CDP
  #########################################################################
  sc520_cdp_config      :       unconfig
-       @./mkconfig $(@:_config=) i386 i386 sc520_cdp
+       @$(MKCONFIG) $(@:_config=) i386 i386 sc520_cdp
  
  sc520_spunk_config    :       unconfig
-       @./mkconfig $(@:_config=) i386 i386 sc520_spunk
+       @$(MKCONFIG) $(@:_config=) i386 i386 sc520_spunk
  
  sc520_spunk_rel_config        :       unconfig
-       @./mkconfig $(@:_config=) i386 i386 sc520_spunk
+       @$(MKCONFIG) $(@:_config=) i386 i386 sc520_spunk
  
  #========================================================================
  # MIPS
@@@ -1849,63 -2020,70 +2031,70 @@@ incaip_100MHz_config 
  incaip_133MHz_config  \
  incaip_150MHz_config  \
  incaip_config: unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _100MHz,$@)" ] || \
-               { echo "#define CPU_CLOCK_RATE 100000000" >>include/config.h ; \
+               { echo "#define CPU_CLOCK_RATE 100000000" >>$(obj)include/config.h ; \
                  echo "... with 100MHz system clock" ; \
                }
        @[ -z "$(findstring _133MHz,$@)" ] || \
-               { echo "#define CPU_CLOCK_RATE 133000000" >>include/config.h ; \
+               { echo "#define CPU_CLOCK_RATE 133000000" >>$(obj)include/config.h ; \
                  echo "... with 133MHz system clock" ; \
                }
        @[ -z "$(findstring _150MHz,$@)" ] || \
-               { echo "#define CPU_CLOCK_RATE 150000000" >>include/config.h ; \
+               { echo "#define CPU_CLOCK_RATE 150000000" >>$(obj)include/config.h ; \
                  echo "... with 150MHz system clock" ; \
                }
-       @./mkconfig -a $(call xtract_incaip,$@) mips mips incaip
+       @$(MKCONFIG) -a $(call xtract_incaip,$@) mips mips incaip
  
  tb0229_config: unconfig
-       @./mkconfig $(@:_config=) mips mips tb0229
+       @$(MKCONFIG) $(@:_config=) mips mips tb0229
  
  #########################################################################
  ## MIPS32 AU1X00
  #########################################################################
  dbau1000_config               :       unconfig
-       @ >include/config.h
-       @echo "#define CONFIG_DBAU1000 1" >>include/config.h
-       @./mkconfig -a dbau1x00 mips mips dbau1x00
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
+       @echo "#define CONFIG_DBAU1000 1" >>$(obj)include/config.h
+       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
  
  dbau1100_config               :       unconfig
-       @ >include/config.h
-       @echo "#define CONFIG_DBAU1100 1" >>include/config.h
-       @./mkconfig -a dbau1x00 mips mips dbau1x00
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
+       @echo "#define CONFIG_DBAU1100 1" >>$(obj)include/config.h
+       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
  
  dbau1500_config               :       unconfig
-       @ >include/config.h
-       @echo "#define CONFIG_DBAU1500 1" >>include/config.h
-       @./mkconfig -a dbau1x00 mips mips dbau1x00
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
+       @echo "#define CONFIG_DBAU1500 1" >>$(obj)include/config.h
+       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
  
  dbau1550_config               :       unconfig
-       @ >include/config.h
-       @echo "#define CONFIG_DBAU1550 1" >>include/config.h
-       @./mkconfig -a dbau1x00 mips mips dbau1x00
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
+       @echo "#define CONFIG_DBAU1550 1" >>$(obj)include/config.h
+       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
  
  dbau1550_el_config    :       unconfig
-       @ >include/config.h
-       @echo "#define CONFIG_DBAU1550 1" >>include/config.h
-       @./mkconfig -a dbau1x00 mips mips dbau1x00
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
+       @echo "#define CONFIG_DBAU1550 1" >>$(obj)include/config.h
+       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
  
  pb1000_config         :       unconfig
-       @ >include/config.h
-       @echo "#define CONFIG_PB1000 1" >>include/config.h
-       @./mkconfig -a pb1x00 mips mips pb1x00
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
+       @echo "#define CONFIG_PB1000 1" >>$(obj)include/config.h
+       @$(MKCONFIG) -a pb1x00 mips mips pb1x00
  
  #########################################################################
  ## MIPS64 5Kc
  #########################################################################
  
  purple_config :               unconfig
-       @./mkconfig $(@:_config=) mips mips purple
+       @$(MKCONFIG) $(@:_config=) mips mips purple
  
  #========================================================================
  # Nios
  DK1C20_safe_32_config         \
  DK1C20_standard_32_config     \
  DK1C20_config:        unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _safe_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_SAFE_32 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_SAFE_32 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'safe_32' configuration" ; \
                }
        @[ -z "$(findstring _standard_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'standard_32' configuration" ; \
                }
        @[ -z "$(findstring DK1C20_config,$@)" ] || \
-               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'standard_32' configuration (DEFAULT)" ; \
                }
-       @./mkconfig -a DK1C20 nios nios dk1c20 altera
+       @$(MKCONFIG) -a DK1C20 nios nios dk1c20 altera
  
  DK1S10_safe_32_config         \
  DK1S10_standard_32_config     \
  DK1S10_mtx_ldk_20_config      \
  DK1S10_config:        unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _safe_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_SAFE_32 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_SAFE_32 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'safe_32' configuration" ; \
                }
        @[ -z "$(findstring _standard_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'standard_32' configuration" ; \
                }
        @[ -z "$(findstring _mtx_ldk_20,$@)" ] || \
-               { echo "#define CONFIG_NIOS_MTX_LDK_20 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_MTX_LDK_20 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'mtx_ldk_20' configuration" ; \
                }
        @[ -z "$(findstring DK1S10_config,$@)" ] || \
-               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'standard_32' configuration (DEFAULT)" ; \
                }
-       @./mkconfig -a DK1S10 nios nios dk1s10 altera
+       @$(MKCONFIG) -a DK1S10 nios nios dk1s10 altera
  
  ADNPESC1_DNPEVA2_base_32_config       \
  ADNPESC1_base_32_config               \
  ADNPESC1_config: unconfig
-       @ >include/config.h
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
        @[ -z "$(findstring _DNPEVA2,$@)" ] || \
-               { echo "#define CONFIG_DNPEVA2 1" >>include/config.h ; \
+               { echo "#define CONFIG_DNPEVA2 1" >>$(obj)include/config.h ; \
                  echo "... DNP/EVA2 configuration" ; \
                }
        @[ -z "$(findstring _base_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_BASE_32 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_BASE_32 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'base_32' configuration" ; \
                }
        @[ -z "$(findstring ADNPESC1_config,$@)" ] || \
-               { echo "#define CONFIG_NIOS_BASE_32 1" >>include/config.h ; \
+               { echo "#define CONFIG_NIOS_BASE_32 1" >>$(obj)include/config.h ; \
                  echo "... NIOS 'base_32' configuration (DEFAULT)" ; \
                }
-       @./mkconfig -a ADNPESC1 nios nios adnpesc1 ssv
+       @$(MKCONFIG) -a ADNPESC1 nios nios adnpesc1 ssv
  
  #########################################################################
  ## Nios-II
  #########################################################################
  
  EP1C20_config : unconfig
-       @./mkconfig  EP1C20 nios2 nios2 ep1c20 altera
+       @$(MKCONFIG)  EP1C20 nios2 nios2 ep1c20 altera
  
  EP1S10_config : unconfig
-       @./mkconfig  EP1S10 nios2 nios2 ep1s10 altera
+       @$(MKCONFIG)  EP1S10 nios2 nios2 ep1s10 altera
  
  EP1S40_config : unconfig
-       @./mkconfig  EP1S40 nios2 nios2 ep1s40 altera
+       @$(MKCONFIG)  EP1S40 nios2 nios2 ep1s40 altera
  
  PK1C20_config : unconfig
-       @./mkconfig  PK1C20 nios2 nios2 pk1c20 psyent
+       @$(MKCONFIG)  PK1C20 nios2 nios2 pk1c20 psyent
  
  PCI5441_config : unconfig
-       @./mkconfig  PCI5441 nios2 nios2 pci5441 psyent
+       @$(MKCONFIG)  PCI5441 nios2 nios2 pci5441 psyent
  
  #========================================================================
  # MicroBlaze
  ## Microblaze
  #########################################################################
  suzaku_config:        unconfig
-       @ >include/config.h
-       @echo "#define CONFIG_SUZAKU 1" >> include/config.h
-       @./mkconfig -a $(@:_config=) microblaze microblaze suzaku AtmarkTechno
+       @mkdir -p $(obj)include
+       @ >$(obj)include/config.h
+       @echo "#define CONFIG_SUZAKU 1" >> $(obj)include/config.h
+       @$(MKCONFIG) -a $(@:_config=) microblaze microblaze suzaku AtmarkTechno
  
  #########################################################################
  ## Blackfin
  #########################################################################
  ezkit533_config       :       unconfig
-       @./mkconfig $(@:_config=) blackfin bf533 ezkit533
+       @$(MKCONFIG) $(@:_config=) blackfin bf533 ezkit533
  
  stamp_config  :       unconfig
-       @./mkconfig $(@:_config=) blackfin bf533 stamp
+       @$(MKCONFIG) $(@:_config=) blackfin bf533 stamp
  
  dspstamp_config       :       unconfig
-       @./mkconfig $(@:_config=) blackfin bf533 dsp_stamp
+       @$(MKCONFIG) $(@:_config=) blackfin bf533 dsp_stamp
  
  #########################################################################
  #########################################################################
  #########################################################################
  
  clean:
-       find . -type f \
+       find $(OBJTREE) -type f \
                \( -name 'core' -o -name '*.bak' -o -name '*~' \
                -o -name '*.o'  -o -name '*.a'  \) -print \
                | xargs rm -f
-       rm -f examples/hello_world examples/timer \
-             examples/eepro100_eeprom examples/sched \
-             examples/mem_to_mem_idma2intr examples/82559_eeprom \
-             examples/smc91111_eeprom \
-             examples/test_burst
-       rm -f tools/img2srec tools/mkimage tools/envcrc tools/gen_eth_addr
-       rm -f tools/mpc86x_clk tools/ncb
-       rm -f tools/easylogo/easylogo tools/bmp_logo
-       rm -f tools/gdb/astest tools/gdb/gdbcont tools/gdb/gdbsend
-       rm -f tools/env/fw_printenv tools/env/fw_setenv
-       rm -f board/cray/L1/bootscript.c board/cray/L1/bootscript.image
-       rm -f board/netstar/eeprom board/netstar/crcek
-       rm -f board/netstar/*.srec board/netstar/*.bin
-       rm -f board/trab/trab_fkt board/voiceblue/eeprom
-       rm -f board/integratorap/u-boot.lds board/integratorcp/u-boot.lds
-       rm -f include/bmp_logo.h
+       rm -f $(obj)examples/hello_world $(obj)examples/timer \
+             $(obj)examples/eepro100_eeprom $(obj)examples/sched \
+             $(obj)examples/mem_to_mem_idma2intr $(obj)examples/82559_eeprom \
+             $(obj)examples/smc91111_eeprom $(obj)examples/interrupt \
+             $(obj)examples/test_burst
+       rm -f $(obj)tools/img2srec $(obj)tools/mkimage $(obj)tools/envcrc \
+               $(obj)tools/gen_eth_addr
+       rm -f $(obj)tools/mpc86x_clk $(obj)tools/ncb
+       rm -f $(obj)tools/easylogo/easylogo $(obj)tools/bmp_logo
+       rm -f $(obj)tools/gdb/astest $(obj)tools/gdb/gdbcont $(obj)tools/gdb/gdbsend
+       rm -f $(obj)tools/env/fw_printenv $(obj)tools/env/fw_setenv
+       rm -f $(obj)board/cray/L1/bootscript.c $(obj)board/cray/L1/bootscript.image
+       rm -f $(obj)board/netstar/eeprom $(obj)board/netstar/crcek $(obj)board/netstar/crcit
+       rm -f $(obj)board/netstar/*.srec $(obj)board/netstar/*.bin
+       rm -f $(obj)board/trab/trab_fkt $(obj)board/voiceblue/eeprom
+       rm -f $(obj)board/integratorap/u-boot.lds $(obj)board/integratorcp/u-boot.lds
+       rm -f $(obj)include/bmp_logo.h
+       find nand_spl -lname "*" -print | xargs rm -f
+       rm -f nand_spl/u-boot-spl nand_spl/u-boot-spl.map
  
  clobber:      clean
-       find . -type f \( -name .depend \
+       find $(OBJTREE) -type f \( -name .depend \
                -o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \) \
                -print0 \
                | xargs -0 rm -f
-       rm -f $(OBJS) *.bak tags TAGS include/version_autogenerated.h
-       rm -fr *.*~
-       rm -f u-boot u-boot.map u-boot.hex $(ALL)
-       rm -f tools/crc32.c tools/environment.c tools/env/crc32.c
-       rm -f tools/inca-swap-bytes cpu/mpc824x/bedbug_603e.c
-       rm -f include/asm/proc include/asm/arch include/asm
+       rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS $(obj)include/version_autogenerated.h
+       rm -fr $(obj)*.*~
+       rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL)
+       rm -f $(obj)tools/crc32.c $(obj)tools/environment.c $(obj)tools/env/crc32.c
+       rm -f $(obj)tools/inca-swap-bytes $(obj)cpu/mpc824x/bedbug_603e.c
+       rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
+ ifeq ($(OBJTREE),$(SRCTREE))
  mrproper \
  distclean:    clobber unconfig
+ else
+ mrproper \
+ distclean:    clobber unconfig
+       rm -rf $(OBJTREE)/*
+ endif
  
  backup:
        F=`basename $(TOPDIR)` ; cd .. ; \
diff --combined README
index 621f3f3bd3fa9a4c82e76c06284fe9f796db09e5,a0949f0d9b19374c8fc7c174bff33295e5f93bf6..32a5d686921505e9aec29f0c36c610ca859278ad
--- 1/README
--- 2/README
+++ b/README
@@@ -447,11 -447,6 +447,11 @@@ The following options need to be config
                Board code has addition modification that it wants to make
                to the flat device tree before handing it off to the kernel
  
 +              CONFIG_OF_BOOT_CPU
 +
 +              This define fills in the correct boot cpu in the boot
 +              param header, the default value is zero if undefined.
 +
  - Serial Ports:
                CFG_PL010_SERIAL
  
@@@ -2328,6 -2323,26 +2328,26 @@@ images ready for download to / installa
  - "u-boot" is an image in ELF binary format
  - "u-boot.srec" is in Motorola S-Record format
  
+ By default the build is performed locally and the objects are saved
+ in the source directory. One of the two methods can be used to change
+ this behavior and build U-Boot to some external directory:
+ 1. Add O= to the make command line invocations:
+       make O=/tmp/build distclean
+       make O=/tmp/build NAME_config
+       make O=/tmp/build all
+ 2. Set environment variable BUILD_DIR to point to the desired location:
+       export BUILD_DIR=/tmp/build
+       make distclean
+       make NAME_config
+       make all
+ Note that the command line "O=" setting overrides the BUILD_DIR environment
+ variable.
  
  Please be aware that the Makefiles assume you are using GNU make, so
  for instance on NetBSD you might need to use "gmake" instead of
@@@ -2381,6 -2396,22 +2401,22 @@@ or to build on a native PowerPC system 
  
        CROSS_COMPILE=' ' MAKEALL
  
+ When using the MAKEALL script, the default behaviour is to build U-Boot
+ in the source directory. This location can be changed by setting the
+ BUILD_DIR environment variable. Also, for each target built, the MAKEALL
+ script saves two log files (<target>.ERR and <target>.MAKEALL) in the
+ <source dir>/LOG directory. This default location can be changed by
+ setting the MAKEALL_LOGDIR environment variable. For example:
+       export BUILD_DIR=/tmp/build
+       export MAKEALL_LOGDIR=/tmp/log
+       CROSS_COMPILE=ppc_8xx- MAKEALL
+ With the above settings build objects are saved in the /tmp/build, log
+ files are saved in the /tmp/log and the source tree remains clean during
+ the whole build process.
  See also "U-Boot Porting Guide" below.
  
  
@@@ -3024,55 -3055,6 +3060,55 @@@ format!) to the "bootm" command
  
        bash#
  
 +Boot Linux and pass a flat device tree:
 +-----------
 +
 +First, U-Boot must be compiled with the appropriate defines. See the section
 +titled "Linux Kernel Interface" above for a more in depth explanation. The
 +following is an example of how to start a kernel and pass an updated
 +flat device tree:
 +
 +=> print oftaddr
 +oftaddr=0x300000
 +=> print oft
 +oft=oftrees/mpc8540ads.dtb
 +=> tftp $oftaddr $oft
 +Speed: 1000, full duplex
 +Using TSEC0 device
 +TFTP from server 192.168.1.1; our IP address is 192.168.1.101
 +Filename 'oftrees/mpc8540ads.dtb'.
 +Load address: 0x300000
 +Loading: #
 +done
 +Bytes transferred = 4106 (100a hex)
 +=> tftp $loadaddr $bootfile
 +Speed: 1000, full duplex
 +Using TSEC0 device
 +TFTP from server 192.168.1.1; our IP address is 192.168.1.2
 +Filename 'uImage'.
 +Load address: 0x200000
 +Loading:############
 +done
 +Bytes transferred = 1029407 (fb51f hex)
 +=> print loadaddr
 +loadaddr=200000
 +=> print oftaddr
 +oftaddr=0x300000
 +=> bootm $loadaddr - $oftaddr
 +## Booting image at 00200000 ...
 +   Image Name:   Linux-2.6.17-dirty
 +   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
 +   Data Size:    1029343 Bytes = 1005.2 kB
 +   Load Address: 00000000
 +   Entry Point:  00000000
 +   Verifying Checksum ... OK
 +   Uncompressing Kernel Image ... OK
 +Booting using flat device tree at 0x300000
 +Using MPC85xx ADS machine description
 +Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=0Mb residual: 0Mb
 +[snip]
 +
 +
  More About U-Boot Image Types:
  ------------------------------
  
@@@ -3523,12 -3505,19 +3559,19 @@@ Coding Standards
  -----------------
  
  All contributions to U-Boot should conform to the Linux kernel
- coding style; see the file "Documentation/CodingStyle" in your Linux
- kernel source directory.
- Please note that U-Boot is implemented in C (and to some small parts
- in Assembler); no C++ is used, so please do not use C++ style
- comments (//) in your code.
+ coding style; see the file "Documentation/CodingStyle" and the script
+ "scripts/Lindent" in your Linux kernel source directory.  In sources
+ originating from U-Boot a style corresponding to "Lindent -pcs" (adding
+ spaces before parameters to function calls) is actually used.
+ Source files originating from a different project (for example the
+ MTD subsystem) are generally exempt from these guidelines and are not
+ reformated to ease subsequent migration to newer versions of those
+ sources.
+ Please note that U-Boot is implemented in C (and to some small parts in
+ Assembler); no C++ is used, so please do not use C++ style comments (//)
+ in your code.
  
  Please also stick to the following formatting rules:
  - remove any trailing white space
index d202281d454d3f27f6f2e32a8bb82bef83dfd29c,3f3a51721ad56354225fc85da116e2d14141eef3..9aad5d5fa092e8583e9dce45abb722a72754c89c
@@@ -1,6 -1,6 +1,6 @@@
  #
  # Copyright 2004 Freescale Semiconductor.
- # (C) Copyright 2001
+ # (C) Copyright 2001-2006
  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  #
  # See file CREDITS for list of people who contributed to this
  #
  
  include $(TOPDIR)/config.mk
+ ifneq ($(OBJTREE),$(SRCTREE))
+ $(shell mkdir -p $(obj)../common)
+ endif
  
- LIB   = lib$(BOARD).a
+ LIB   = $(obj)lib$(BOARD).a
  
OBJS  := $(BOARD).o \
COBJS := $(BOARD).o \
           ../common/cadmus.o \
 -         ../common/eeprom.o
 +         ../common/eeprom.o \
 +         ../common/ft_board.o \
 +         ../common/via.o
  
  SOBJS := init.o
  
- $(LIB):       $(OBJS) $(SOBJS)
+ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS  := $(addprefix $(obj),$(COBJS))
+ SOBJS := $(addprefix $(obj),$(SOBJS))
+ $(LIB):       $(obj).depend $(OBJS) $(SOBJS)
        $(AR) crv $@ $(OBJS)
  
  clean:
@@@ -45,9 -50,9 +52,9 @@@ distclean:    clea
  
  #########################################################################
  
- .depend:      Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-               $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+ # defines $(obj).depend target
+ include $(SRCTREE)/rules.mk
  
-include .depend
sinclude $(obj).depend
  
  #########################################################################
index d202281d454d3f27f6f2e32a8bb82bef83dfd29c,3f3a51721ad56354225fc85da116e2d14141eef3..9aad5d5fa092e8583e9dce45abb722a72754c89c
@@@ -1,6 -1,6 +1,6 @@@
  #
  # Copyright 2004 Freescale Semiconductor.
- # (C) Copyright 2001
+ # (C) Copyright 2001-2006
  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  #
  # See file CREDITS for list of people who contributed to this
  #
  
  include $(TOPDIR)/config.mk
+ ifneq ($(OBJTREE),$(SRCTREE))
+ $(shell mkdir -p $(obj)../common)
+ endif
  
- LIB   = lib$(BOARD).a
+ LIB   = $(obj)lib$(BOARD).a
  
OBJS  := $(BOARD).o \
COBJS := $(BOARD).o \
           ../common/cadmus.o \
 -         ../common/eeprom.o
 +         ../common/eeprom.o \
 +         ../common/ft_board.o \
 +         ../common/via.o
  
  SOBJS := init.o
  
- $(LIB):       $(OBJS) $(SOBJS)
+ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS  := $(addprefix $(obj),$(COBJS))
+ SOBJS := $(addprefix $(obj),$(SOBJS))
+ $(LIB):       $(obj).depend $(OBJS) $(SOBJS)
        $(AR) crv $@ $(OBJS)
  
  clean:
@@@ -45,9 -50,9 +52,9 @@@ distclean:    clea
  
  #########################################################################
  
- .depend:      Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-               $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+ # defines $(obj).depend target
+ include $(SRCTREE)/rules.mk
  
-include .depend
sinclude $(obj).depend
  
  #########################################################################
index d202281d454d3f27f6f2e32a8bb82bef83dfd29c,3f3a51721ad56354225fc85da116e2d14141eef3..9aad5d5fa092e8583e9dce45abb722a72754c89c
@@@ -1,6 -1,6 +1,6 @@@
  #
  # Copyright 2004 Freescale Semiconductor.
- # (C) Copyright 2001
+ # (C) Copyright 2001-2006
  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  #
  # See file CREDITS for list of people who contributed to this
  #
  
  include $(TOPDIR)/config.mk
+ ifneq ($(OBJTREE),$(SRCTREE))
+ $(shell mkdir -p $(obj)../common)
+ endif
  
- LIB   = lib$(BOARD).a
+ LIB   = $(obj)lib$(BOARD).a
  
OBJS  := $(BOARD).o \
COBJS := $(BOARD).o \
           ../common/cadmus.o \
 -         ../common/eeprom.o
 +         ../common/eeprom.o \
 +         ../common/ft_board.o \
 +         ../common/via.o
  
  SOBJS := init.o
  
- $(LIB):       $(OBJS) $(SOBJS)
+ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS  := $(addprefix $(obj),$(COBJS))
+ SOBJS := $(addprefix $(obj),$(SOBJS))
+ $(LIB):       $(obj).depend $(OBJS) $(SOBJS)
        $(AR) crv $@ $(OBJS)
  
  clean:
@@@ -45,9 -50,9 +52,9 @@@ distclean:    clea
  
  #########################################################################
  
- .depend:      Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-               $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+ # defines $(obj).depend target
+ include $(SRCTREE)/rules.mk
  
-include .depend
sinclude $(obj).depend
  
  #########################################################################
diff --combined board/stxxtc/Makefile
index 8c529a0611d101d868c380548d562a17edaecc23,807da06e6cfce4f1a6ec36acf44d7aa93b67f2e8..2951b96a210d26bf0b3a913bb0720f936a013873
@@@ -1,5 -1,5 +1,5 @@@
  #
- # (C) Copyright 2000-2004
+ # (C) Copyright 2000-2006
  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  #
  # See file CREDITS for list of people who contributed to this
  
  include $(TOPDIR)/config.mk
  
- LIB   = lib$(BOARD).a
+ LIB   = $(obj)lib$(BOARD).a
  
- OBJS  = $(BOARD).o
 -COBJS = $(BOARD).o oftree.o
++COBJS = $(BOARD).o
  
- $(LIB):       .depend $(OBJS)
+ SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS  := $(addprefix $(obj),$(COBJS))
+ SOBJS := $(addprefix $(obj),$(SOBJS))
+ $(LIB):       $(obj).depend $(OBJS)
        $(AR) crv $@ $(OBJS)
  
 -$(obj)%.dtb: $(src)%.dts
 -      dtc -f -V 0x10 -I dts -O dtb $< >$@
 -
 -$(obj)%.c: $(obj)%.dtb
 -      xxd -i $< \
 -         | sed -e "s/^unsigned char/const unsigned char/g" \
 -         | sed -e "s/^unsigned int/const unsigned int/g" > $@
 -
  #########################################################################
  
- .depend:      Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-               $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
+ # defines $(obj).depend target
+ include $(SRCTREE)/rules.mk
  
- sinclude .depend
+ sinclude $(obj).depend
  
  #########################################################################
diff --combined common/Makefile
index a62bc16e85d8032ef7c78573e577829f965867aa,d626fe4d4ba6ae2c8dbba9a56ef40a9d36f8cf35..5ff8f93503bc83e5145129f8d8fae5a32970daba
@@@ -1,5 -1,5 +1,5 @@@
  #
- # (C) Copyright 2004
+ # (C) Copyright 2004-2006
  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  #
  # See file CREDITS for list of people who contributed to this
@@@ -23,7 -23,7 +23,7 @@@
  
  include $(TOPDIR)/config.mk
  
- LIB   = libcommon.a
+ LIB   = $(obj)libcommon.a
  
  AOBJS =
  
@@@ -51,30 -51,31 +51,31 @@@ COBJS      = main.o ACEX1K.o altera.o bedbug
          memsize.o miiphybb.o miiphyutil.o \
          s_record.o serial.o soft_i2c.o soft_spi.o spartan2.o spartan3.o \
          usb.o usb_kbd.o usb_storage.o \
 -        virtex2.o xilinx.o crc16.o xyzModem.o
 +        virtex2.o xilinx.o crc16.o xyzModem.o cmd_mac.o
  
- OBJS  = $(AOBJS) $(COBJS)
+ SRCS  := $(AOBJS:.o=.S) $(COBJS:.o=.c)
+ OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
  
  CPPFLAGS += -I..
  
  all:  $(LIB) $(AOBJS)
  
- $(LIB): .depend $(OBJS)
+ $(LIB): $(obj).depend $(OBJS)
        $(AR) crv $@ $(OBJS)
  
environment.o: environment.c ../tools/envcrc
$(obj)environment.o: $(src)environment.c $(obj)../tools/envcrc
        $(CC) $(AFLAGS) -Wa,--no-warn \
-               -DENV_CRC=$(shell ../tools/envcrc) \
-               -c -o $@ environment.c
+               -DENV_CRC=$(shell $(obj)../tools/envcrc) \
+               -c -o $@ $(src)environment.c
  
- ../tools/envcrc:
$(obj)../tools/envcrc:
        $(MAKE) -C ../tools
  
  #########################################################################
  
- .depend:      Makefile $(AOBJS:.o=.S) $(COBJS:.o=.c)
-               $(CC) -M $(CFLAGS) $(AOBJS:.o=.S) $(COBJS:.o=.c) > $@
+ # defines $(obj).depend target
+ include $(SRCTREE)/rules.mk
  
- sinclude .depend
+ sinclude $(obj).depend
  
  #########################################################################
diff --combined drivers/Makefile
index 25e162249f4bd971af0aef62d00772e30cda1a8c,d0acf8e32f0e133f718335654f629d2b386724e5..960da424cc42526d48b5f1f8c638a67e1ce2307c
@@@ -1,5 -1,5 +1,5 @@@
  #
- # (C) Copyright 2000-2004
+ # (C) Copyright 2000-2006
  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  #
  # See file CREDITS for list of people who contributed to this
@@@ -25,9 -25,9 +25,9 @@@ include $(TOPDIR)/config.m
  
  # CFLAGS += -DET_DEBUG -DDEBUG
  
- LIB   = libdrivers.a
+ LIB   = $(obj)libdrivers.a
  
OBJS  = 3c589.o 5701rls.o ali512x.o \
COBJS = 3c589.o 5701rls.o ali512x.o \
          bcm570x.o bcm570x_autoneg.o cfb_console.o cfi_flash.o \
          cs8900.o ct69000.o dataflash.o dc2114x.o dm9000x.o \
          e1000.o eepro100.o \
@@@ -44,7 -44,7 +44,7 @@@
          serial.o serial_max3100.o \
          serial_pl010.o serial_pl011.o serial_xuartlite.o \
          sl811_usb.o sm501.o smc91111.o smiLynxEM.o \
 -        status_led.o sym53c8xx.o \
 +        status_led.o sym53c8xx.o ahci.o \
          ti_pci1410a.o tigon3.o tsec.o \
          usbdcore.o usbdcore_ep0.o usbdcore_omap1510.o usbtty.o \
          videomodes.o w83c553f.o \
          pxa_pcmcia.o mpc8xx_pcmcia.o tqm8xx_pcmcia.o  \
          rpx_pcmcia.o
  
+ SRCS  := $(COBJS:.o=.c)
+ OBJS  := $(addprefix $(obj),$(COBJS))
  all:  $(LIB)
  
- $(LIB): $(OBJS)
+ $(LIB): $(obj).depend $(OBJS)
        $(AR) crv $@ $(OBJS)
  
  #########################################################################
  
- .depend:      Makefile $(OBJS:.o=.c)
-               $(CC) -M $(CFLAGS) $(OBJS:.o=.c) > $@
+ # defines $(obj).depend target
+ include $(SRCTREE)/rules.mk
  
- sinclude .depend
+ sinclude $(obj).depend
  
  #########################################################################
index e52d4b998abfe3204dc8e5c736145b12b656a1d7,bbd3497c50e243d6e83241d9b53c7e2e6575def0..388dea430c44364b654a457735c2d8f08e852422
  #define SPRN_ICTC     0x3FB   /* Instruction Cache Throttling Control Reg */
  #define SPRN_IMISS    0x3D4   /* Instruction TLB Miss Register */
  #define SPRN_IMMR     0x27E   /* Internal Memory Map Register */
 +#define SPRN_LDSTCR   0x3F8   /* Load/Store Control Register */
  #define SPRN_L2CR     0x3F9   /* Level 2 Cache Control Regsiter */
  #define SPRN_LR               0x008   /* Link Register */
  #define SPRN_MBAR       0x137   /* System memory base address */
  #define SPRN_MCSR     0x23c   /* Machine Check Syndrome register */
  #define ESR_ST          0x00800000      /* Store Operation */
  
 +#if defined(CONFIG_MPC86xx)
 +#define SPRN_MSSCRO   0x3f6
 +#endif
 +
 +
  /* Short-hand versions for a number of the above SPRNs */
  
  #define CTR   SPRN_CTR        /* Counter Register */
  #define ICMP  SPRN_ICMP       /* Instruction TLB Compare Register */
  #define IMISS SPRN_IMISS      /* Instruction TLB Miss Register */
  #define IMMR  SPRN_IMMR       /* PPC 860/821 Internal Memory Map Register */
 +#define LDSTCR        SPRN_LDSTCR     /* Load/Store Control Register */
  #define L2CR  SPRN_L2CR       /* PPC 750 L2 control register */
  #define LR    SPRN_LR
  #define MBAR    SPRN_MBAR       /* System memory base address */
 -#if defined(CONFIG_E500)
 +#if defined(CONFIG_MPC86xx)
 +#define MSSCR0        SPRN_MSSCRO
 +#endif
 +#if defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
  #define PIR   SPRN_PIR
  #endif
  #define SVR   SPRN_SVR        /* System-On-Chip Version Register */
  #define CSRR0 SPRN_CSRR0
  #define CSRR1 SPRN_CSRR1
  #define IVPR  SPRN_IVPR
 -#define USPRG0        SPRN_USPRG0
 +#define USPRG0        SPRN_USPRG
  #define SPRG4R        SPRN_SPRG4R
  #define SPRG5R        SPRN_SPRG5R
  #define SPRG6R        SPRN_SPRG6R
  #define PVR_440EP_RC  0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */
  #define PVR_440GR_RA  0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */
  #define PVR_440GR_RB  0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */
+ #define PVR_440EPX1_RA  0x216218D0 /* 440EPX rev A with Security / Kasumi */
+ #define PVR_440EPX2_RA  0x216218D4 /* 440EPX rev A without Security / Kasumi */
+ #define PVR_440GRX1_RA  0x216218D8 /* 440GRX rev A with Security / Kasumi */
+ #define PVR_440GRX2_RA  0x216218DC /* 440GRX rev A without Security / Kasumi */
  #define PVR_440GX_RA  0x51B21850
  #define PVR_440GX_RB  0x51B21851
  #define PVR_440GX_RC  0x51B21892
  #define PVR_85xx_REV1 (PVR_85xx | 0x0010)
  #define PVR_85xx_REV2 (PVR_85xx | 0x0020)
  
 +#define PVR_86xx      0x80040000
 +#define PVR_86xx_REV1 (PVR_86xx | 0x0010)
  
  /*
   * For the 8xx processors, all of them report the same PVR family for
  #define SVR_VER(svr)  (((svr) >>  16) & 0xFFFF)       /* Version field */
  #define SVR_REV(svr)  (((svr) >>   0) & 0xFFFF)       /* Revison field */
  
 +#define SVR_SUBVER(svr)       (((svr) >>  8) & 0xFF)  /* Process/MFG sub-version */
 +
  #define SVR_FAM(svr)  (((svr) >> 20) & 0xFFF) /* Family field */
  #define SVR_MEM(svr)  (((svr) >> 16) & 0xF)   /* Member field */
  
  #define SVR_8541      0x807A
  #define SVR_8548      0x8031
  #define SVR_8548_E    0x8039
 +#define SVR_8641      0x8090
  
  
  /* I am just adding a single entry for 8260 boards.  I think we may be
diff --combined include/asm-ppc/u-boot.h
index f335cd856aa5311683b41e9e8c11bad2f68dbfd6,794a6d4974713e04953221c653d8c7ed7f4cc371..30b44e3d22822570758d53205ddaeb513331b00b
@@@ -45,7 -45,7 +45,7 @@@ typedef struct bd_info 
        unsigned long   bi_sramstart;   /* start of SRAM memory */
        unsigned long   bi_sramsize;    /* size  of SRAM memory */
  #if defined(CONFIG_5xx) || defined(CONFIG_8xx) || defined(CONFIG_8260) \
 -      || defined(CONFIG_E500)
 +      || defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
        unsigned long   bi_immr_base;   /* base of IMMR register */
  #endif
  #if defined(CONFIG_MPC5xxx)
  #endif
  
  #if defined(CONFIG_405GP) || defined(CONFIG_405EP) || defined (CONFIG_440GX) || \
-     defined(CONFIG_440EP) || defined(CONFIG_440GR)
+     defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
+     defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
        unsigned int    bi_opbfreq;             /* OPB clock in Hz */
        int             bi_iic_fast[2];         /* Use fast i2c mode */
  #endif
diff --combined include/common.h
index 8000dd01f3a6de87d9b785132bb7504a07fd05e9,bee2fb7022459e4d63f1bffe31b43a7a86221411..0cd0d4ca00336b6c8e1d716201f6eecc5f410646
@@@ -79,10 -79,6 +79,10 @@@ typedef volatile unsigned char      vu_char
  #endif
  #include <asm/immap_8260.h>
  #endif
 +#ifdef CONFIG_MPC86xx
 +#include <mpc86xx.h>
 +#include <asm/immap_86xx.h>
 +#endif
  #ifdef CONFIG_MPC85xx
  #include <mpc85xx.h>
  #include <asm/immap_85xx.h>
  #define debugX(level,fmt,args...)
  #endif        /* DEBUG */
  
+ #define BUG() do { \
+         printf("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \
+       panic("BUG!"); \
+ } while (0)
+ #define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0)
  typedef void (interrupt_handler_t)(void *);
  
  #include <asm/u-boot.h> /* boot information for Linux kernel */
@@@ -198,9 -200,6 +204,9 @@@ int        checkdram     (void)
  char *        strmhz(char *buf, long hz);
  int   last_stage_init(void);
  extern ulong monitor_flash_len;
 +#ifdef CFG_ID_EEPROM
 +int mac_read_from_eeprom(void);
 +#endif
  
  /* common/flash.c */
  void flash_perror (int);
@@@ -377,7 -376,6 +383,7 @@@ void       trap_init     (ulong)
      defined (CONFIG_74xx)     || \
      defined (CONFIG_MPC8220)  || \
      defined (CONFIG_MPC85xx)  || \
 +    defined (CONFIG_MPC86xx)  || \
      defined (CONFIG_MPC83XX)
  unsigned char in8(unsigned int);
  void          out8(unsigned int, unsigned char);
@@@ -466,10 -464,6 +472,10 @@@ ulong    get_bus_freq  (ulong)
  typedef MPC85xx_SYS_INFO sys_info_t;
  void  get_sys_info  ( sys_info_t * );
  #endif
 +#if defined(CONFIG_MPC86xx)
 +typedef MPC86xx_SYS_INFO sys_info_t;
 +void   get_sys_info  ( sys_info_t * );
 +#endif
  
  #if defined(CONFIG_4xx) || defined(CONFIG_IOP480)
  #  if defined(CONFIG_440)
@@@ -489,7 -483,7 +495,7 @@@ void       get_sys_info  ( sys_info_t * )
  #if defined(CONFIG_8xx) || defined(CONFIG_8260)
  void  cpu_init_f    (volatile immap_t *immr);
  #endif
 -#if defined(CONFIG_4xx) || defined(CONFIG_MPC85xx) || defined(CONFIG_MCF52x2)
 +#if defined(CONFIG_4xx) || defined(CONFIG_MPC85xx) || defined(CONFIG_MCF52x2) ||defined(CONFIG_MPC86xx)
  void  cpu_init_f    (void);
  #endif
  
diff --combined lib_ppc/board.c
index 71dae07d33254c60b2df4a68b9a922726d92d581,cf0e3fdf4b68a4556162a22ce087947832f911d0..46cea985e5d05fef35c5e2351d6b66017cc9936e
@@@ -504,7 -504,7 +504,7 @@@ void board_init_f (ulong bootflag
  #endif
  
  #if defined(CONFIG_8xx) || defined(CONFIG_8260) || defined(CONFIG_5xx) || \
 -    defined(CONFIG_E500)
 +    defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
        bd->bi_immr_base = CFG_IMMR;    /* base  of IMMR register     */
  #endif
  #if defined(CONFIG_MPC5xxx)
@@@ -763,6 -763,12 +763,12 @@@ void board_init_r (gd_t *id, ulong dest
        spi_init_r ();
  #endif
  
+ #if (CONFIG_COMMANDS & CFG_CMD_NAND)
+       WATCHDOG_RESET ();
+       puts ("NAND:  ");
+       nand_init();            /* go init the NAND */
+ #endif
        /* relocate environment function pointers etc. */
        env_relocate ();
  
        }
  #endif
  
 +#ifdef CFG_ID_EEPROM
 +      mac_read_from_eeprom();
 +#endif
 +
  #if defined(CONFIG_TQM8xxL) || defined(CONFIG_TQM8260) || \
      defined(CONFIG_CCM) || defined(CONFIG_KUP4K) || defined(CONFIG_KUP4X)
        load_sernum_ethaddr ();
        doc_init ();
  #endif
  
- #if (CONFIG_COMMANDS & CFG_CMD_NAND)
-       WATCHDOG_RESET ();
-       puts ("NAND:  ");
-       nand_init();            /* go init the NAND */
- #endif
  #if (CONFIG_COMMANDS & CFG_CMD_NET)
  #if defined(CONFIG_NET_MULTI)
        WATCHDOG_RESET ();
diff --combined tools/mkimage.c
index d6000e04bf533f10ed1dd01628d08797cb6a31ab,60aac79f234ba750c8169b245bd68a8fd6e87a64..ab41b3db6c94d9d7316f1c8b47a454ecccae2e52
@@@ -130,7 -130,6 +130,7 @@@ table_entry_t type_name[] = 
      { IH_TYPE_RAMDISK,    "ramdisk",    "RAMDisk Image",      },
      { IH_TYPE_SCRIPT,     "script",     "Script",             },
      { IH_TYPE_STANDALONE, "standalone", "Standalone Program", },
 +    { IH_TYPE_FLATDT,     "flat_dt",    "Flat Device Tree",   },
      { -1,                 "",           "",                   },
  };
  
@@@ -633,7 -632,7 +633,7 @@@ print_header (image_header_t *hdr
        if (hdr->ih_type == IH_TYPE_MULTI || hdr->ih_type == IH_TYPE_SCRIPT) {
                int i, ptrs;
                uint32_t pos;
-               unsigned long *len_ptr = (unsigned long *) (
+               uint32_t *len_ptr = (uint32_t *) (
                                        (unsigned long)hdr + sizeof(image_header_t)
                                );