]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - Makefile
Release U-Boot 1.1.6
[karo-tx-uboot.git] / Makefile
index 7de890e74c6868499c1bf0489d8d889e235cce2a..a282342235621e578cf9725f10616abd7efa9a33 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
+# published by the Free Software Foundatio; either version 2 of
 # the License, or (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful,
 
 VERSION = 1
 PATCHLEVEL = 1
-SUBLEVEL = 4
+SUBLEVEL = 6
 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/ \
@@ -45,14 +45,78 @@ export      HOSTARCH HOSTOS
 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
 
-TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
-export TOPDIR
+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
+
+#########################################################################
+
+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 =
@@ -88,6 +152,9 @@ endif
 ifeq ($(ARCH),blackfin)
 CROSS_COMPILE = bfin-elf-
 endif
+ifeq ($(ARCH),avr32)
+CROSS_COMPILE = avr32-
+endif
 endif
 endif
 
@@ -96,7 +163,6 @@ export       CROSS_COMPILE
 # load other configuration
 include $(TOPDIR)/config.mk
 
-
 #########################################################################
 # U-Boot objects....order is important (i.e. start must be first)
 
@@ -122,6 +188,8 @@ 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 +210,13 @@ LIBS += drivers/sk98lin/libsk98lin.a
 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 \
@@ -156,44 +225,61 @@ 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/board/$(BOARDDIR) all
+
+$(U_BOOT_NAND):        $(NAND_SPL) $(obj)u-boot.bin
+               cat $(obj)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); \
@@ -202,41 +288,56 @@ version:
                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
 
+.PHONY : CHANGELOG
+CHANGELOG:
+       git log --no-merges U-Boot-1_1_5.. | \
+       unexpand -a | sed -e 's/\s\s*$$//' > $@
+
 #########################################################################
 
 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
@@ -247,29 +348,29 @@ unconfig:
 #########################################################################
 
 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,152 +382,221 @@ 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
+
+v38b_config: unconfig
+       @./mkconfig -a V38B ppc mpc5xxx v38b
 
 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_lowboot_config: unconfig
-       @ >include/config.h
-       @[ -z "$(findstring lowboot_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFC000000" >board/mcc200/config.tmp ; \
-                 echo "... with lowboot configuration" ; \
+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" >$(obj)board/mcc200/config.tmp ; \
+                 echo "... with highboot configuration" ; \
+               }
+       @[ -n "$(findstring _SDRAM,$@)" ] || \
+               { 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"    >>$(obj)include/config.h ; \
+                 echo "... with SDRAM" ; \
+               }
+       @[ -z "$(findstring COM12,$@)" ] || \
+               { echo "#define CONFIG_CONSOLE_COM12"   >>$(obj)include/config.h ; \
+                 echo "... with console on COM12" ; \
                }
-       @./mkconfig 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
-       echo "#define CONFIG_CS_AUTOCONF">>include/config.h
-       echo "... with automatic CS configuration"
-       @./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"       >>$(obj)include/config.h ; \
+                 echo "... with MPC5200B processor" ; \
+               }
+       @$(MKCONFIG) -n $@ -a TB5200 ppc mpc5xxx tqm5200
 
 MINI5200_config        \
 EVAL5200_config        \
 TOP5200_config:        unconfig
-       @ echo "#define CONFIG_$(@:_config=) 1" >include/config.h
-       @./mkconfig -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
-
-TQM5200_auto_config    \
-TQM5200_AA_config      \
-TQM5200_AB_config      \
-TQM5200_AC_config      \
-MiniFAP_config:        unconfig
-       @ >include/config.h
+       @$(MKCONFIG) -a Total5200 ppc mpc5xxx total5200
+
+cam5200_config \
+fo300_config \
+MiniFAP_config \
+TQM5200S_config \
+TQM5200S_HIGHBOOT_config \
+TQM5200_B_config \
+TQM5200_B_HIGHBOOT_config \
+TQM5200_config \
+TQM5200_STK100_config: unconfig
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)board/tqm5200
+       @ >$(obj)include/config.h
+       @[ -z "$(findstring cam5200,$@)" ] || \
+               { 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"   >>$(obj)include/config.h ; \
+                 echo "... TQM5200 on FO300" ; \
+               }
        @[ -z "$(findstring MiniFAP,$@)" ] || \
-               { echo "#define CONFIG_MINIFAP" >>include/config.h ; \
-                 echo "#define CONFIG_TQM5200_AC"      >>include/config.h ; \
+               { echo "#define CONFIG_MINIFAP" >>$(obj)include/config.h ; \
                  echo "... TQM5200_AC on MiniFAP" ; \
                }
-       @[ -z "$(findstring AA,$@)" ] || \
-               { echo "#define CONFIG_TQM5200_AA"      >>include/config.h ; \
-                 echo "... with 4 MB Flash, 16 MB SDRAM, 32 kB EEPROM" ; \
+       @[ -z "$(findstring STK100,$@)" ] || \
+               { echo "#define CONFIG_STK52XX_REV100"  >>$(obj)include/config.h ; \
+                 echo "... on a STK52XX.100 base board" ; \
                }
-       @[ -z "$(findstring AB,$@)" ] || \
-               { echo "#define CONFIG_TQM5200_AB"      >>include/config.h ; \
-                 echo "... with 64 MB Flash, 64 MB SDRAM, 32 kB EEPROM, 512 kB SRAM" ; \
-                 echo "... with Graphics Controller"; \
+       @[ -z "$(findstring TQM5200_B,$@)" ] || \
+               { echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
                }
-       @[ -z "$(findstring AC,$@)" ] || \
-               { echo "#define CONFIG_TQM5200_AC"      >>include/config.h ; \
-                 echo "... with 4 MB Flash, 128 MB SDRAM" ; \
-                 echo "... with Graphics Controller"; \
+       @[ -z "$(findstring TQM5200S,$@)" ] || \
+               { echo "#define CONFIG_TQM5200S"        >>$(obj)include/config.h ; \
+                 echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
                }
-       @[ -z "$(findstring auto,$@)" ] || \
-               { echo "#define CONFIG_CS_AUTOCONF"     >>include/config.h ; \
-                 echo "... with automatic CS configuration" ; \
+       @[ -z "$(findstring HIGHBOOT,$@)" ] || \
+               { echo "TEXT_BASE = 0xFFF00000" >$(obj)board/tqm5200/config.tmp ; \
                }
-       @./mkconfig -a TQM5200 ppc mpc5xxx tqm5200
+       @$(MKCONFIG) -n $@ -a TQM5200 ppc mpc5xxx tqm5200
 
 #########################################################################
 ## MPC8xx Systems
@@ -436,9 +606,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    \
@@ -446,154 +617,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))))
 
@@ -605,85 +782,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          \
@@ -693,52 +873,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
 
 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
@@ -760,32 +944,37 @@ TQM855M_config            \
 TQM860M_config         \
 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
@@ -793,146 +982,148 @@ wtk_config:     unconfig
 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    \
@@ -941,63 +1132,98 @@ 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
+
+rainier_config:        unconfig
+       @mkdir -p $(obj)include
+       @echo "#define CONFIG_RAINIER" > $(obj)include/config.h
+       @echo "Configuring for rainier board as subset of sequoia..."
+       @$(MKCONFIG) -a sequoia ppc ppc4xx sequoia amcc
+
+rainier_nand_config:   unconfig
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)nand_spl
+       @mkdir -p $(obj)board/amcc/sequoia
+       @echo "#define CONFIG_RAINIER" > $(obj)include/config.h
+       @echo "Configuring for rainier board as subset of sequoia..."
+       @echo "#define CONFIG_NAND_U_BOOT" >> $(obj)include/config.h
+       @echo "Compile NAND boot image for sequoia"
+       @$(MKCONFIG) -a sequoia ppc ppc4xx sequoia amcc
+       @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/sequoia/config.tmp
+       @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
 
 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
+       @mkdir -p $(obj)include
+       @mkdir -p $(obj)nand_spl
+       @mkdir -p $(obj)board/amcc/sequoia
+       @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
+       @echo "Compile NAND boot image for sequoia"
+       @$(MKCONFIG) -a sequoia ppc ppc4xx sequoia amcc
+       @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/sequoia/config.tmp
+       @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)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
 
 #########################################################################
 ## MPC8220 Systems
@@ -1005,10 +1231,10 @@ yellowstone_config:     unconfig
 
 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
@@ -1016,18 +1242,18 @@ sorcery_config:         unconfig
 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" ; \
@@ -1038,61 +1264,64 @@ CPC45_ROMBOOT_config:   unconfig
        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
 
 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" ; \
@@ -1104,8 +1333,8 @@ CPU86_ROMBOOT_config: unconfig
 
 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" ; \
@@ -1117,29 +1346,33 @@ CPU87_ROMBOOT_config: unconfig
 
 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
+
+ep82xxm_config:        unconfig
+       @./mkconfig $(@:_config=) ppc mpc8260 ep82xxm
 
 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      \
@@ -1158,21 +1391,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   \
@@ -1183,71 +1418,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 \
@@ -1260,6 +1500,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;; \
@@ -1273,159 +1514,175 @@ TQM8265_AA_config:  unconfig
        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
 
-#========================================================================
-# M68K
-#========================================================================
 #########################################################################
 ## Coldfire
 #########################################################################
 
 cobra5272_config :             unconfig
-       @./mkconfig $(@:_config=) m68k mcf52x2 cobra5272
+       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 cobra5272
+
+EB+MCF-EV123_config :          unconfig
+       @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
+       @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
 
 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
-
-M5271EVB_config :              unconfig
-       @./mkconfig $(@:_config=) m68k mcf52x2 m5271evb
+       @$(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
@@ -1440,36 +1697,39 @@ MPC8641HPCN_config:    unconfig
 #########################################################################
 
 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
 
 #========================================================================
 # ARM
@@ -1479,19 +1739,19 @@ ZUMA_config:    unconfig
 #########################################################################
 
 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
@@ -1504,16 +1764,16 @@ xtract_omap1610xxx = $(subst _cs0boot,,$(subst _cs3boot,,$(subst _cs_autoboot,,$
 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
 
 
 ########################################################################
@@ -1543,34 +1803,35 @@ cp1026_config: unconfig
        @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 \
@@ -1580,69 +1841,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
 
 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
@@ -1654,109 +1922,120 @@ versatilepb_config :  unconfig
 
 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
+       @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
 
 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
@@ -1765,13 +2044,13 @@ omap2420h4_config :    unconfig
 ## 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
@@ -1786,63 +2065,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
@@ -1854,71 +2140,83 @@ purple_config :         unconfig
 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
+
+EP1S10_config : unconfig
+       @$(MKCONFIG)  EP1S10 nios2 nios2 ep1s10 altera
+
+EP1S40_config : unconfig
+       @$(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
@@ -1927,61 +2225,82 @@ PCI5441_config : unconfig
 ## 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
+
+#========================================================================
+# AVR32
+#========================================================================
+#########################################################################
+## AT32AP7xxx
+#########################################################################
+
+atstk1002_config       :       unconfig
+       @./mkconfig $(@:_config=) avr32 at32ap atstk1000 atmel at32ap7000
 
 #########################################################################
 #########################################################################
 #########################################################################
 
 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 $(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
+       rm -f $(obj)nand_spl/u-boot-spl $(obj)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
+       [ ! -d $(OBJTREE)/nand_spl ] || find $(obj)nand_spl -lname "*" -print | xargs rm -f
+
+ifeq ($(OBJTREE),$(SRCTREE))
 mrproper \
 distclean:     clobber unconfig
+else
+mrproper \
+distclean:     clobber unconfig
+       rm -rf $(OBJTREE)/*
+endif
 
 backup:
        F=`basename $(TOPDIR)` ; cd .. ; \