summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2011-09-05 11:43:44 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2011-09-05 11:43:44 +0200
commitbae9b65aca99c5ae417a714dc3b2aff2b6dcbac5 (patch)
treef44bd8c26a934527264c329efba755d8aebb144c
parentc98300f10374e5069c473a3a0387e674d939e8e0 (diff)
parent40c2b2f6a83e9cca14567e855fc75a8d1ef78f28 (diff)
Merge branch 'master' of git+ssh://openadk.org/git/openadk
-rw-r--r--Config.in1
-rw-r--r--mk/image.mk2
-rw-r--r--package/base-files/Makefile3
-rw-r--r--package/boost/Makefile162
-rw-r--r--package/libgcc/Makefile2
-rwxr-xr-xscripts/create-image.sh10
-rw-r--r--target/arch.lst1
-rw-r--r--target/arm/Makefile34
-rw-r--r--target/arm/sys-available/qemu-arm10
-rw-r--r--target/config/Config.in35
-rw-r--r--target/config/Config.in.arch.choice6
-rw-r--r--target/config/Config.in.arch.default4
-rw-r--r--target/config/Config.in.system.choice1
-rw-r--r--target/linux/Config.in1
-rw-r--r--target/linux/config/Config.in.block3
-rw-r--r--target/linux/config/Config.in.kernel3
-rw-r--r--target/linux/config/Config.in.netdevice10
-rw-r--r--target/linux/config/Config.in.serial15
-rw-r--r--target/linux/config/Config.in.spi4
-rw-r--r--target/linux/config/Config.in.systems12
-rw-r--r--target/sh/Config.in9
-rw-r--r--target/sh/Makefile36
-rw-r--r--target/sh/kernel.config1817
-rw-r--r--target/sh/sys-available/qemu-sh10
-rw-r--r--target/sh/sys-available/toolchain-sh9
-rw-r--r--target/sh/target.mk5
-rw-r--r--target/sh/uclibc.config247
-rw-r--r--toolchain/uClibc/patches/uClibc-0.9.32-use-arch-pt-initfini_c.patch39
28 files changed, 2482 insertions, 9 deletions
diff --git a/Config.in b/Config.in
index ebbd05dc3..241f7b850 100644
--- a/Config.in
+++ b/Config.in
@@ -24,6 +24,7 @@ config ADK_CHOOSE_TARGET_SYSTEM
default y if ADK_CHOOSE_TARGET_SYSTEM_PPC64
default y if ADK_CHOOSE_TARGET_SYSTEM_SPARC
default y if ADK_CHOOSE_TARGET_SYSTEM_SPARC64
+ default y if ADK_CHOOSE_TARGET_SYSTEM_SH
default y if ADK_CHOOSE_TARGET_SYSTEM_X86
default y if ADK_CHOOSE_TARGET_SYSTEM_X86_64
default n
diff --git a/mk/image.mk b/mk/image.mk
index 185164c22..78b18e716 100644
--- a/mk/image.mk
+++ b/mk/image.mk
@@ -95,7 +95,7 @@ ${BIN_DIR}/${INITRAMFS}: ${TARGET_DIR}
cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | \
sed "s#\(.*\)#:0:0::::::\1#" | sort | \
${TOOLS_DIR}/cpio -o -C512 -Hnewc -P | \
- lzma -9 >$@ 2>/dev/null
+ xz -C crc32 >$@ 2>/dev/null
${BUILD_DIR}/${INITRAMFS_PIGGYBACK}: ${TARGET_DIR}
${SED} 's/.*CONFIG_(BLK_DEV_INITRD|INITRAMFS_SOURCE).*//' \
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 28fb34348..4cc7e970a 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -64,6 +64,9 @@ endif
cat ./files/inittab.serial >> $(IDIR_BASE_FILES)/etc/inittab
test -z $(ADK_RUNTIME_CONSOLE_BOTH) || \
cat ./files/inittab.vga >> $(IDIR_BASE_FILES)/etc/inittab
+ifeq ($(ADK_TARGET_QEMU_ARM_MODEL_VERSATILE),y)
+ $(SED) 's#ttyS#ttyAMA#g' $(IDIR_BASE_FILES)/etc/inittab
+endif
$(SED) 's#@SPEED@#$(ADK_RUNTIME_CONSOLE_SERIAL_SPEED)#' $(IDIR_BASE_FILES)/etc/inittab
test -z $(ADK_RUNTIME_HOSTNAME) || \
echo $(ADK_RUNTIME_HOSTNAME) > $(IDIR_BASE_FILES)/etc/hostname; \
diff --git a/package/boost/Makefile b/package/boost/Makefile
new file mode 100644
index 000000000..45c18e08e
--- /dev/null
+++ b/package/boost/Makefile
@@ -0,0 +1,162 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${TOPDIR}/rules.mk
+
+PKG_NAME:= boost
+PKG_VERSION:= 1_47_0
+PKG_RELEASE:= 1
+PKG_MD5SUM:= ff180a5276bec773a7625cac7e2288e8
+PKG_DESCR:= boost C++ library
+PKG_SECTION:= libs
+PKG_URL:= http://www.boost.org/
+PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=boost/}
+DISTFILES:= boost_1_47_0.tar.gz
+WRKDIST= ${WRKDIR}/${PKG_NAME}_${PKG_VERSION}
+
+PKG_SUBPKGS:= BOOST BOOST_DEV
+PKGSD_BOOST_DEV:= boost header files
+PKGSC_BOOST_DEV:= devel
+
+PKG_CHOICES_BOOST:= STATIC SHARED BOTH
+PKGCD_STATIC:= install static libs
+PKGCD_SHARED:= install shared libs
+PKGCD_BOTH:= install static and shared libs
+
+PKG_FLAVOURS_BOOST:= date_time graph graph_parallel iostreams math program_options python regex serialization signals system test thread wave
+
+PKGFD_date_time:= with date-time
+PKGFD_python:= with Python
+PKGFB_python:= python
+PKGFS_python:= python
+PKGFD_iostreams:= with iostreams
+PKGFD_graph:= with graph
+PKGFD_graph_parallel:= with graph_parallel
+PKGFD_math:= with math
+PKGFD_program_options:= with program_options
+PKGFD_regex:= with regex
+PKGFD_serialization:= with serialization
+PKGFD_signals:= with signals
+PKGFD_system:= with system
+PKGFD_test:= with test
+PKGFD_thread:= with thread
+PKGFD_wave:= with wave
+
+include ${TOPDIR}/mk/package.mk
+
+$(eval $(call PKG_template,BOOST,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+$(eval $(call PKG_template,BOOST_DEV,boost-dev,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_BOOST_DEV},${PKGSC_BOOST_DEV}))
+
+CONFIG_STYLE:= manual
+BUILD_STYLE:= manual
+INSTALL_STYLE:= manual
+
+CONFIGURE_ARGS += \
+ --target=$(GNU_TARGET_NAME) \
+ --host=$(GNU_TARGET_NAME) \
+ --build=$(GNU_HOST_NAME) \
+ --prefix=${WRKINST}/usr \
+
+ifneq (${ADK_PACKAGE_BOOST_IOSTREAMS},)
+ CONFIGURE_ARGS += -sNO_BZIP2=1 -sZLIB_INCLUDE=${STAGING_DIR}/usr/include -sZLIB_LIBPATH=${STAGING_DIR}/usr/lib
+else
+ CONFIGURE_ARGS += --without-iostreams
+endif
+ifeq (${ADK_PACKAGE_BOOST_DATE_TIME},)
+ CONFIGURE_ARGS+=--without-date_time
+endif
+ifeq (${ADK_PACKAGE_BOOST_PYTHON},)
+ CONFIGURE_ARGS+=--without-python
+endif
+ifeq (${ADK_PACKAGE_BOOST_GRAPH},)
+ CONFIGURE_ARGS+=--without-graph
+endif
+ifeq (${ADK_PACKAGE_BOOST_math},)
+ CONFIGURE_ARGS+=--without-math
+endif
+ifeq (${ADK_PACKAGE_BOOST_PROGRAM_OPTIONS},)
+ CONFIGURE_ARGS+=--without-program_options
+endif
+ifeq (${ADK_PACKAGE_BOOST_REGEX},)
+ CONFIGURE_ARGS+=--without-regex
+endif
+ifeq (${ADK_PACKAGE_BOOST_SERIALIZATION},)
+ CONFIGURE_ARGS+=--without-serialization
+endif
+ifeq (${ADK_PACKAGE_BOOST_SIGNALS},)
+ CONFIGURE_ARGS+=--without-signals
+endif
+ifeq (${ADK_PACKAGE_BOOST_SYSTEM},)
+ CONFIGURE_ARGS+=--without-system
+endif
+ifeq (${ADK_PACKAGE_BOOST_TEST},)
+ CONFIGURE_ARGS+=--without-test
+endif
+ifeq (${ADK_PACKAGE_BOOST_THREAD},)
+ CONFIGURE_ARGS+=--without-thread
+endif
+ifeq (${ADK_PACKAGE_BOOST_WAVE},)
+ CONFIGURE_ARGS+=--without-wave
+endif
+
+# some variables for build
+GPP_PATH:= ${STAGING_HOST_DIR}/bin/${GNU_TARGET_NAME}-g++
+GPP_VERSION:= "`${GPP_PATH} -v 2>&1 | tail -1 | awk '{print $$3}'`"
+BJAM_PATH:= "`find ${WRKBUILD} -type f -name "bjam"`"
+PYTHON_PATH:= ${STAGING_TARGET_DIR}/usr/bin/python
+PYTHON_INCLUDE:= "`find ${STAGING_TARGET_DIR}/usr/include/ -maxdepth 1 -type d -name "python*" | head -1`"
+PYTHON_LIB:= "`find ${STAGING_TARGET_DIR}/usr/lib/ -maxdepth 1 -type d -name "python*" | head -1`"
+USER_JAM:= ${WRKBUILD}/tools/build/v2/user-config.jam
+
+pre-build:
+ @echo "build bjam..."
+ cd $(WRKBUILD)/tools/build/v2/engine; ./build.sh gcc
+
+do-build:
+ @echo "build boost library..."
+# remove exisiting using gcc line from user.jam
+ ${SED} "/^using gcc/d" ${USER_JAM}
+# add using gcc line with determined options to user.jam
+ echo "using gcc : ${GPP_VERSION} : ${GPP_PATH} ;" >> ${USER_JAM};
+
+# remove exisiting using python line from user.jam
+ ${SED} "/^using python/d" ${USER_JAM}
+ifneq (${ADK_PACKAGE_BOOST_PYTHON},)
+# add using python line with determined options to user.jam
+ echo "using python : ${PYTHON_VERSION} : ${PYTHON_PATH} : ${PYTHON_INCLUDE} : ${PYTHON_LIB} ;" >> ${USER_JAM};
+endif
+
+# run bjam to build boost
+ ( cd ${WRKBUILD}; \
+ ${BJAM_PATH} \
+ -sBUILD=release \
+ --toolset=gcc-${GPP_VERSION} \
+ --build-type=minimal \
+ --layout=versioned \
+ --disable-long-double \
+ --without-mpi \
+ ${CONFIGURE_ARGS} \
+ install \
+ )
+
+
+boost-install:
+ ${INSTALL_DIR} ${IDIR_BOOST}/usr/lib
+ifneq (${ADK_PACKAGE_BOOST_SHARED},)
+ ${CP} ${WRKINST}/usr/lib/*.so* ${IDIR_BOOST}/usr/lib
+endif
+ifneq (${ADK_PACKAGE_BOOST_STATIC},)
+ ${CP} ${WRKINST}/usr/lib/*.a ${IDIR_BOOST}/usr/lib
+endif
+ifneq (${ADK_PACKAGE_BOOST_BOTH},)
+ ${CP} ${WRKINST}/usr/lib/*.a ${IDIR_BOOST}/usr/lib
+ ${CP} ${WRKINST}/usr/lib/*.so* ${IDIR_BOOST}/usr/lib
+endif
+
+
+boost-dev-install:
+ ${INSTALL_DIR} ${IDIR_BOOST_DEV}/usr/include
+ ${CP} ${WRKINST}/usr/include/* ${IDIR_BOOST_DEV}/usr/include
+
+
+include ${TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/libgcc/Makefile b/package/libgcc/Makefile
index 55f9e5b90..353c5cc32 100644
--- a/package/libgcc/Makefile
+++ b/package/libgcc/Makefile
@@ -11,6 +11,8 @@ PKG_DFLT_LIBGCC:= y if !ADK_TOOLCHAIN_ONLY
NO_DISTFILES:= 1
+PKG_ARCH_DEPENDS:= !sh
+
include ${TOPDIR}/mk/package.mk
$(eval $(call PKG_template,LIBGCC,libgcc,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
diff --git a/scripts/create-image.sh b/scripts/create-image.sh
index f3e03eced..2b5b34bc9 100755
--- a/scripts/create-image.sh
+++ b/scripts/create-image.sh
@@ -79,11 +79,13 @@ printf "Creating filesystem $filesystem\n"
printf "Create partition and filesystem\n"
$parted -s $1 mklabel msdos
-$parted -s $1 mkpart primary ext2 0 98%
+$parted -s $1 -- mkpart primary ext2 0 -0
$parted -s $1 set 1 boot on
-dd if=$1 of=mbr bs=16384 count=1 2>/dev/null
-dd if=$1 skip=16384 of=$1.new 2>/dev/null
+offset=$(parted $1 unit b print | tail -2 | head -1 | cut -f 1 --delimit="B" | cut -c 9-)
+
+dd if=$1 of=mbr bs=$offset count=1 2>/dev/null
+dd if=$1 skip=$offset of=$1.new 2>/dev/null
if [ "$filesystem" = "ext2" -o "$filesystem" = "ext3" -o "$filesystem" = "ext4" ];then
mkfsopts=-F
@@ -105,7 +107,7 @@ rm mbr
tmp=$(mktemp -d)
-mount -o loop,offset=16384 -t $filesystem $1 $tmp
+mount -o loop,offset=$offset -t $filesystem $1 $tmp
if [ -z $initramfs ];then
printf "Extracting install archive\n"
diff --git a/target/arch.lst b/target/arch.lst
index a5c2da7ec..b4eca2828 100644
--- a/target/arch.lst
+++ b/target/arch.lst
@@ -5,5 +5,6 @@ ppc
ppc64
sparc
sparc64
+sh
x86
x86_64
diff --git a/target/arm/Makefile b/target/arm/Makefile
index dbf955a81..50ea0b85a 100644
--- a/target/arm/Makefile
+++ b/target/arm/Makefile
@@ -7,9 +7,18 @@ include $(TOPDIR)/mk/modules.mk
include $(TOPDIR)/mk/kernel-build.mk
include $(TOPDIR)/mk/image.mk
+ZKERNEL:=$(LINUX_DIR)/arch/arm/boot/zImage
KERNEL:=$(LINUX_DIR)/vmlinux
LOADADDR:=0x20008000
+ifeq ($(ADK_TARGET_QEMU_ARM_MODEL_SPITZ),y)
+MACH:=spitz
+endif
+ifeq ($(ADK_TARGET_QEMU_ARM_MODEL_VERSATILE),y)
+MACH:=versatilepb
+NET:=-net user,hostfwd=tcp::2222-:22 -net nic,model=smc91c111
+endif
+
tools-compile:
$(MAKE) -C ../tools/uboot-mkimage
@@ -38,25 +47,44 @@ imageinstall: kernel-install $(BIN_DIR)/$(ROOTFSTARBALL)
endif
ifeq ($(ADK_TARGET_FS),archive)
imageinstall: $(BIN_DIR)/$(ROOTFSTARBALL)
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
+ @cp $(ZKERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+else
@cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+endif
@echo 'The kernel file is: $(BIN_DIR)/${TARGET_KERNEL}'
@echo "The RootFS tarball is: $(BIN_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
@echo "Use following command to create a QEMU Image:"
@echo "sudo ./scripts/create-image.sh -f $(ADK_TARGET_ROOTFS) qemu-${CPU_ARCH}.img $(BIN_DIR)/$(ROOTFSTARBALL)"
@echo "Start qemu with following options:"
- @echo 'qemu-system-arm -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) -hda qemu-${CPU_ARCH}.img -append "root=/dev/hda1"'
+ @echo 'qemu-system-arm -M $(MACH) -nographic $(NET) -kernel $(BIN_DIR)/$(TARGET_KERNEL) -hda qemu-${CPU_ARCH}.img'
+endif
endif
ifeq ($(ADK_TARGET_FS),initramfs)
imageinstall: $(BIN_DIR)/$(INITRAMFS)
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
+ @cp $(ZKERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+else
@cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+endif
@echo 'The kernel file is: $(BIN_DIR)/${TARGET_KERNEL}'
@echo 'The initramfs image is: ${BIN_DIR}/${INITRAMFS}'
- @echo 'qemu-system-arm -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) -initrd ${BIN_DIR}/${INITRAMFS}'
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-arm -M $(MACH) -nographic $(NET) -kernel $(BIN_DIR)/$(TARGET_KERNEL) -initrd ${BIN_DIR}/${INITRAMFS}'
+endif
endif
ifeq ($(ADK_TARGET_FS),initramfs-piggyback)
imageinstall: ${BUILD_DIR}/${INITRAMFS_PIGGYBACK} createinitramfs
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
+ @cp $(ZKERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+else
@cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+endif
@echo 'The kernel+initramfs file is: $(BIN_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM),y)
@echo "Start qemu with following command line:"
- @echo 'qemu-system-arm -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL)'
+ @echo 'qemu-system-arm -M $(MACH) -nographic $(NET) -kernel $(BIN_DIR)/$(TARGET_KERNEL)'
+endif
endif
diff --git a/target/arm/sys-available/qemu-arm b/target/arm/sys-available/qemu-arm
new file mode 100644
index 000000000..1e62f2abb
--- /dev/null
+++ b/target/arm/sys-available/qemu-arm
@@ -0,0 +1,10 @@
+config ADK_TARGET_SYSTEM_QEMU_ARM
+ bool "Qemu Emulator"
+ select ADK_arm
+ select ADK_qemu_arm
+ select ADK_little
+ select ADK_EABI
+ select ADK_TARGET_NO_FPU
+ select ADK_HARDWARE_QEMU
+ help
+ Support for Qemu Emulator (arm).
diff --git a/target/config/Config.in b/target/config/Config.in
index 382925436..a6719eb52 100644
--- a/target/config/Config.in
+++ b/target/config/Config.in
@@ -74,6 +74,29 @@ config ADK_TARGET_ABI_N64
endchoice
# submodel support
+#
+choice
+prompt "Qemu ARM Emulation"
+depends on ADK_TARGET_SYSTEM_QEMU_ARM
+
+config ADK_TARGET_QEMU_ARM_MODEL_SPITZ
+ boolean "Xscale PXA270 Spitz PDA"
+ select ADK_KERNEL_ARCH_PXA
+ select ADK_KERNEL_PXA_SHARPSL
+ select ADK_KERNEL_MACH_SPITZ
+ select ADK_KERNEL_SPI_PXA2XX
+
+config ADK_TARGET_QEMU_ARM_MODEL_VERSATILE
+ boolean "ARM Ltd. Versatile"
+ select ADK_KERNEL_ARCH_VERSATILE
+ select ADK_KERNEL_PCI
+ select ADK_KERNEL_BLOCK
+ select ADK_KERNEL_SCSI
+ select ADK_KERNEL_BLK_DEV_SD
+ select ADK_KERNEL_SCSI_SYM53C8XX_2
+
+endchoice
+
choice
prompt "Foxboard LX Model"
depends on ADK_TARGET_SYSTEM_FOXBOARD_LX
@@ -241,6 +264,9 @@ config ADK_CPU_CRIS_V10
config ADK_CPU_CRIS_V32
boolean
+config ADK_CPU_SH4
+ boolean
+
config ADK_CPU_SPARC_V8
boolean
@@ -300,6 +326,7 @@ config ADK_TARGET_CPU_ARCH
default "arm" if ADK_LINUX_ARM && ADK_little
default "armeb" if ADK_LINUX_ARM && ADK_big
default "sparc" if ADK_LINUX_SPARC
+ default "sh" if ADK_LINUX_SH
default "cris" if ADK_CPU_CRIS_V10
default "crisv32" if ADK_CPU_CRIS_V32
default "ppc" if ADK_CPU_PPC
@@ -343,10 +370,14 @@ config ADK_TARGET_CMDLINE
default "console=ttyS0,115200 console=tty0 geodewdt.nowayout=1" if ADK_TARGET_SYSTEM_PCENGINES_ALIX1C
default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_IBM_X40
default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_INTEL_ATOM
- default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_QEMU_X86
+ default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_QEMU_I686
+ default "console=ttyS0,115200 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_SPITZ
+ default "console=ttyAMA0 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_VERSATILE
+ default "console=tty0" if ADK_TARGET_SYSTEM_QEMU_SH
default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D13
default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D2
default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_FOXBOARD_LX
+ default "console=tty0" if ADK_TARGET_SYSTEM_QEMU_SH
default ""
# c library
@@ -457,6 +488,7 @@ config ADK_TARGET_ROOTFS_INITRAMFS
ADK_LINUX_X86_64 || \
ADK_LINUX_NATIVE
select ADK_KERNEL_BLK_DEV_INITRD
+ select ADK_KERNEL_RD_XZ
help
create an read-only initramfs system.
@@ -501,6 +533,7 @@ config ADK_TARGET_ROOTFS_NFSROOT
select ADK_KERNEL_NFS_COMMON
select ADK_KERNEL_IP_PNP
select ADK_KERNEL_IP_PNP_DHCP
+ depends on !ADK_HARDWARE_QEMU
help
Root filesystem mounted via NFS. (DHCP)
diff --git a/target/config/Config.in.arch.choice b/target/config/Config.in.arch.choice
index 092a0297d..380f84b5d 100644
--- a/target/config/Config.in.arch.choice
+++ b/target/config/Config.in.arch.choice
@@ -56,6 +56,12 @@ config ADK_LINUX_SPARC64
help
Support for sparc64 systems.
+config ADK_LINUX_SH
+ bool "superh system"
+ select ADK_sh
+ help
+ Support for superh systems.
+
config ADK_LINUX_X86
bool "x86 system"
select ADK_x86
diff --git a/target/config/Config.in.arch.default b/target/config/Config.in.arch.default
index cbe8b6ddc..5590b2bbd 100644
--- a/target/config/Config.in.arch.default
+++ b/target/config/Config.in.arch.default
@@ -35,6 +35,9 @@ config ADK_sparc
config ADK_sparc64
bool
+config ADK_sh
+ bool
+
config ADK_x86_64
bool
@@ -54,6 +57,7 @@ config ADK_TARGET_ARCH
default "ppc64" if ADK_ppc64
default "sparc" if ADK_sparc
default "sparc64" if ADK_sparc64
+ default "sh" if ADK_sh
default "x86" if ADK_x86
default "x86_64" if ADK_x86_64
default "native" if ADK_native
diff --git a/target/config/Config.in.system.choice b/target/config/Config.in.system.choice
index 597d8054a..222b28aba 100644
--- a/target/config/Config.in.system.choice
+++ b/target/config/Config.in.system.choice
@@ -5,5 +5,6 @@ source "target/ppc/Config.in"
source "target/ppc64/Config.in"
source "target/sparc/Config.in"
source "target/sparc64/Config.in"
+source "target/sh/Config.in"
source "target/x86/Config.in"
source "target/x86_64/Config.in"
diff --git a/target/linux/Config.in b/target/linux/Config.in
index 7b52a3003..1b78cecb5 100644
--- a/target/linux/Config.in
+++ b/target/linux/Config.in
@@ -20,6 +20,7 @@ source target/linux/config/Config.in.misc
source target/linux/config/Config.in.mips
source target/linux/config/Config.in.lib
source target/linux/config/Config.in.pm
+source target/linux/config/Config.in.serial
source target/linux/config/Config.in.spi
source target/linux/config/Config.in.kvm
source target/linux/config/Config.in.debug
diff --git a/target/linux/config/Config.in.block b/target/linux/config/Config.in.block
index fdafb06b0..fe4c0a9c8 100644
--- a/target/linux/config/Config.in.block
+++ b/target/linux/config/Config.in.block
@@ -62,6 +62,9 @@ config ADK_KERNEL_MMC
config ADK_KERNEL_MMC_BLOCK
boolean
+config ADK_KERNEL_SCSI_SYM53C8XX_2
+ boolean
+
config ADK_KERNEL_MMC_AT91
boolean
select ADK_KERNEL_BLOCK
diff --git a/target/linux/config/Config.in.kernel b/target/linux/config/Config.in.kernel
index 696f7afc9..1791a624a 100644
--- a/target/linux/config/Config.in.kernel
+++ b/target/linux/config/Config.in.kernel
@@ -85,3 +85,6 @@ config ADK_KERNEL_NFS_COMMON
config ADK_KERNEL_SUNRPC
boolean
+
+config ADK_KERNEL_PCI
+ boolean
diff --git a/target/linux/config/Config.in.netdevice b/target/linux/config/Config.in.netdevice
index 2f9b87200..b615156f9 100644
--- a/target/linux/config/Config.in.netdevice
+++ b/target/linux/config/Config.in.netdevice
@@ -22,6 +22,16 @@ config ADK_KERNEL_NETDEV_1000
config ADK_KERNEL_VIA_RHINE_MMIO
boolean
+config ADK_KERNEL_SMC91X
+ boolean
+ select ADK_KERNEL_NETDEVICES
+ select ADK_KERNEL_NET_ETHERNET
+ select ADK_KERNEL_NET_PCI
+ select ADK_KERNEL_MII
+ default y if ADK_TARGET_QEMU_ARM_MODEL_VERSATILE
+ default n
+ help
+
config ADK_KERNEL_CPMAC
boolean
select ADK_KERNEL_NETDEVICES
diff --git a/target/linux/config/Config.in.serial b/target/linux/config/Config.in.serial
new file mode 100644
index 000000000..adc25312d
--- /dev/null
+++ b/target/linux/config/Config.in.serial
@@ -0,0 +1,15 @@
+config ADK_KERNEL_SERIAL_PXA
+ boolean
+ default y if ADK_TARGET_QEMU_ARM_MODEL_SPITZ
+
+config ADK_KERNEL_SERIAL_PXA_CONSOLE
+ boolean
+ default y if ADK_TARGET_QEMU_ARM_MODEL_SPITZ
+
+config ADK_KERNEL_SERIAL_AMBA_PL011
+ boolean
+ default y if ADK_TARGET_QEMU_ARM_MODEL_VERSATILE
+
+config ADK_KERNEL_SERIAL_AMBA_PL011_CONSOLE
+ boolean
+ default y if ADK_TARGET_QEMU_ARM_MODEL_VERSATILE
diff --git a/target/linux/config/Config.in.spi b/target/linux/config/Config.in.spi
index a141f8231..73db5e86d 100644
--- a/target/linux/config/Config.in.spi
+++ b/target/linux/config/Config.in.spi
@@ -12,3 +12,7 @@ config ADK_KERNEL_SPI_RB4XX
config ADK_KERNEL_SPI_RB4XX_CPLD
select ADK_KERNEL_SPI
boolean
+
+config ADK_KERNEL_SPI_PXA2XX
+ select ADK_KERNEL_SPI
+ boolean
diff --git a/target/linux/config/Config.in.systems b/target/linux/config/Config.in.systems
index 5c420eb2b..3e64caddc 100644
--- a/target/linux/config/Config.in.systems
+++ b/target/linux/config/Config.in.systems
@@ -35,6 +35,18 @@ config ADK_KERNEL_LEMOTE_MACH2F
boolean
# arm systems
+config ADK_KERNEL_ARCH_VERSATILE
+ boolean
+
+config ADK_KERNEL_ARCH_PXA
+ boolean
+
+config ADK_KERNEL_PXA_SHARPSL
+ boolean
+
+config ADK_KERNEL_MACH_SPITZ
+ boolean
+
config ADK_KERNEL_ARCH_AT91
boolean
diff --git a/target/sh/Config.in b/target/sh/Config.in
new file mode 100644
index 000000000..4dfe7ba09
--- /dev/null
+++ b/target/sh/Config.in
@@ -0,0 +1,9 @@
+choice
+depends on ADK_LINUX_SH && !ADK_CHOOSE_TARGET_ARCH
+prompt "Target system"
+
+config ADK_CHOOSE_TARGET_SYSTEM_SH
+ boolean "Choose target system"
+
+source "target/sh/Config.in.systems"
+endchoice
diff --git a/target/sh/Makefile b/target/sh/Makefile
new file mode 100644
index 000000000..63a237839
--- /dev/null
+++ b/target/sh/Makefile
@@ -0,0 +1,36 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(TOPDIR)/rules.mk
+include $(TOPDIR)/mk/kernel.mk
+include $(TOPDIR)/mk/modules.mk
+include $(TOPDIR)/mk/kernel-build.mk
+include $(TOPDIR)/mk/image.mk
+
+KERNEL:=$(LINUX_DIR)/arch/sh/boot/zImage
+
+ifeq ($(ADK_TARGET_FS),archive)
+imageinstall: $(BIN_DIR)/$(ROOTFSTARBALL)
+ @cp $(KERNEL) $(BIN_DIR)/${TARGET_KERNEL}
+ @echo 'The kernel file is: $(BIN_DIR)/${TARGET_KERNEL}'
+ @echo "The RootFS tarball is: $(BIN_DIR)/$(ROOTFSTARBALL)"
+endif
+ifeq ($(ADK_TARGET_FS),initramfs)
+imageinstall: $(BIN_DIR)/$(INITRAMFS)
+ @cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+ @echo 'The kernel file is: $(BIN_DIR)/${TARGET_KERNEL}'
+ @echo 'The initramfs image is: ${BIN_DIR}/${INITRAMFS}'
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_SH),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-sh4 -M r2d -kernel $(BIN_DIR)/$(TARGET_KERNEL) -initrd ${BIN_DIR}/${INITRAMFS}'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfs-piggyback)
+imageinstall: ${BUILD_DIR}/${INITRAMFS_PIGGYBACK} createinitramfs
+ @cp $(KERNEL) $(BIN_DIR)/${TARGET_KERNEL}
+ @echo 'The kernel+initramfs file is: $(BIN_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_SH),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-sh4 -M r2d -kernel $(BIN_DIR)/$(TARGET_KERNEL)'
+endif
+endif
diff --git a/target/sh/kernel.config b/target/sh/kernel.config
new file mode 100644
index 000000000..a1578e62b
--- /dev/null
+++ b/target/sh/kernel.config
@@ -0,0 +1,1817 @@
+#
+# Automatically generated make config: don't edit
+# Linux/sh 2.6.39 Kernel Configuration
+# Fri Sep 2 16:00:15 2011
+#
+CONFIG_SUPERH=y
+CONFIG_SUPERH32=y
+# CONFIG_SUPERH64 is not set
+CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_FIND_BIT_LE=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_IRQ_PER_CPU=y
+# CONFIG_GENERIC_GPIO is not set
+CONFIG_GENERIC_CLOCKEVENTS=y
+# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_SYS_SUPPORTS_PCI=y
+CONFIG_SYS_SUPPORTS_TMU=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_ARCH_NO_VIRT_TO_BUS=y
+CONFIG_ARCH_HAS_DEFAULT_IDLE=y
+CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_IO_TRAPPED=y
+CONFIG_DMA_NONCOHERENT=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+CONFIG_HAVE_IRQ_WORK=y
+CONFIG_IRQ_WORK=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_BZIP2 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_FHANDLE is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HAVE_SPARSE_IRQ=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_SPARSE_IRQ=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TINY_RCU=y
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_TREE_RCU_TRACE is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EXPERT=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_EMBEDDED=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_PERF_COUNTERS is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_COMPAT_BRK=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+# CONFIG_MODULE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is