diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2014-06-15 10:05:13 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2014-06-15 10:05:46 +0200 |
commit | 47e410981184016a6ab4c58fdfc9449e2fd945e7 (patch) | |
tree | e279669cc8f7976f9e661fbebade152978e6f1c6 /target | |
parent | f7712ed524e8811fedee86d7b829c2f2e27dc38b (diff) |
add support for xtensa architecture, tested with qemu. thanks to Max Filippov for help
Diffstat (limited to 'target')
-rw-r--r-- | target/arch.lst | 1 | ||||
-rw-r--r-- | target/config/Config.in.cpu | 2 | ||||
-rw-r--r-- | target/config/Config.in.kernel | 1 | ||||
-rw-r--r-- | target/config/Config.in.libc.choice | 1 | ||||
-rw-r--r-- | target/config/Config.in.qemuopts | 2 | ||||
-rw-r--r-- | target/config/Config.in.target | 6 | ||||
-rw-r--r-- | target/xtensa/Config.in | 9 | ||||
-rw-r--r-- | target/xtensa/Makefile | 69 | ||||
-rw-r--r-- | target/xtensa/kernel/qemu-xtensa | 8 | ||||
-rw-r--r-- | target/xtensa/overlay/xtensa_dc232b.tar | bin | 0 -> 747520 bytes | |||
-rw-r--r-- | target/xtensa/systems/qemu-xtensa | 10 | ||||
-rw-r--r-- | target/xtensa/systems/toolchain-xtensa | 9 | ||||
-rw-r--r-- | target/xtensa/target.mk | 4 | ||||
-rw-r--r-- | target/xtensa/uclibc.config | 243 |
14 files changed, 361 insertions, 4 deletions
diff --git a/target/arch.lst b/target/arch.lst index e55da90c9..1166d9621 100644 --- a/target/arch.lst +++ b/target/arch.lst @@ -11,3 +11,4 @@ sparc64 sh x86 x86_64 +xtensa diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu index 56678b639..f757eb080 100644 --- a/target/config/Config.in.cpu +++ b/target/config/Config.in.cpu @@ -130,4 +130,4 @@ config ADK_TARGET_CPU_ARCH default "sh4eb" if ADK_LINUX_SH && ADK_big default "ppc" if ADK_CPU_PPC default "ppc64" if ADK_CPU_PPC64 - + default "xtensa" if ADK_LINUX_XTENSA diff --git a/target/config/Config.in.kernel b/target/config/Config.in.kernel index e767ba2c5..b88482486 100644 --- a/target/config/Config.in.kernel +++ b/target/config/Config.in.kernel @@ -47,6 +47,7 @@ config ADK_TARGET_KERNEL_MINICONFIG default "qemu-sparc64" if ADK_TARGET_SYSTEM_QEMU_SPARC64 default "qemu-x86" if ADK_TARGET_SYSTEM_QEMU_X86 default "qemu-x86_64" if ADK_TARGET_SYSTEM_QEMU_X86_64 + default "qemu-xtensa" if ADK_TARGET_SYSTEM_QEMU_XTENSA default "aranym-m68k" if ADK_TARGET_SYSTEM_ARANYM_M68K default "vbox-x86" if ADK_TARGET_SYSTEM_VBOX_X86 default "ibm-x40" if ADK_TARGET_SYSTEM_IBM_X40 diff --git a/target/config/Config.in.libc.choice b/target/config/Config.in.libc.choice index 9b31d1e7b..f62c94db5 100644 --- a/target/config/Config.in.libc.choice +++ b/target/config/Config.in.libc.choice @@ -9,6 +9,7 @@ config ADK_TARGET_LIB_GLIBC prompt "GNU C library" boolean select ADK_glibc + depends on !ADK_LINUX_XTENSA help http://www.gnu.org/libc diff --git a/target/config/Config.in.qemuopts b/target/config/Config.in.qemuopts index 0091c7c7d..f3f30bbb2 100644 --- a/target/config/Config.in.qemuopts +++ b/target/config/Config.in.qemuopts @@ -29,7 +29,7 @@ endchoice choice prompt "Qemu Emulation with storage device" -depends on ADK_TARGET_QEMU +depends on ADK_TARGET_QEMU && !ADK_TARGET_SYSTEM_QEMU_XTENSA default ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_ROOTFS_ARCHIVE default ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_ROOTFS_SQUASHFS default ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_ROOTFS_JFFS2 diff --git a/target/config/Config.in.target b/target/config/Config.in.target index 6994dc3cc..188fe6043 100644 --- a/target/config/Config.in.target +++ b/target/config/Config.in.target @@ -58,6 +58,7 @@ config ADK_TARGET_CMDLINE default "console=ttySC1" if ADK_TARGET_SYSTEM_QEMU_SH default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_QEMU_SPARC64 default "console=ttyS0,115200" if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64 + default "console=ttyS0,38400" if ADK_TARGET_SYSTEM_QEMU_XTENSA default "" choice @@ -76,9 +77,9 @@ config ADK_TARGET_ROOTFS_INITRAMFS ADK_LINUX_PPC || \ ADK_LINUX_SPARC || \ ADK_LINUX_X86 || \ - ADK_LINUX_X86_64 || \ - ADK_LINUX_NATIVE + ADK_LINUX_X86_64 depends on !ADK_TARGET_VBOX + depends on !ADK_TARGET_SYSTEM_QEMU_XTENSA depends on !ADK_TARGET_SYSTEM_RASPBERRY_PI depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB532 select ADK_KERNEL_BLK_DEV_INITRD @@ -183,6 +184,7 @@ config ADK_TARGET_ROOTFS_ISO config ADK_TARGET_ROOTFS_INITRAMFSARCHIVE boolean "Archive usable for initramfs creation" depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB532 + depends on !ADK_TARGET_SYSTEM_QEMU_XTENSA help Use this option if your planning to create a initramfs, useful for adk-test-framework. diff --git a/target/xtensa/Config.in b/target/xtensa/Config.in new file mode 100644 index 000000000..511328716 --- /dev/null +++ b/target/xtensa/Config.in @@ -0,0 +1,9 @@ +choice +depends on ADK_LINUX_XTENSA && !ADK_CHOOSE_TARGET_ARCH +prompt "Target system" + +config ADK_CHOOSE_TARGET_SYSTEM_XTENSA + boolean "Choose target system" + +source "target/xtensa/Config.in.systems" +endchoice diff --git a/target/xtensa/Makefile b/target/xtensa/Makefile new file mode 100644 index 000000000..9aecd3403 --- /dev/null +++ b/target/xtensa/Makefile @@ -0,0 +1,69 @@ +# 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/xtensa/boot/Image.elf + +QEMU_ARGS:=-M lx60 -cpu dc232b -monitor null +QEMU_ARGS+=${ADK_QEMU_ARGS} + +# target helper text +ifeq ($(ADK_TARGET_FS),archive) +targethelp: + @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)" +ifeq ($(ADK_TARGET_QEMU),y) + @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}' + @echo "Use following command to create a QEMU Image:" + @echo "./scripts/create.sh qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)" + @echo "Start qemu with following options:" + @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img' +endif +endif +ifeq ($(ADK_TARGET_FS),initramfs) +targethelp: + @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}' + @echo 'The initramfs image is: ${FW_DIR}/${INITRAMFS}' +ifeq ($(ADK_TARGET_QEMU),y) + @echo "Start qemu with following command line:" + @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) -initrd ${FW_DIR}/${INITRAMFS}' +endif +endif +ifeq ($(ADK_TARGET_FS),initramfsarchive) +targethelp: + @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}' + @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)" +endif +ifeq ($(ADK_TARGET_FS),initramfspiggyback) +targethelp: + @echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}' +ifeq ($(ADK_TARGET_QEMU),y) + @echo "Start qemu with following command line:" + @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)' +endif +endif + +# image creation and kernel install +kernel-strip: + $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL) + +kernel-install: kernel-strip + @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL} + +# filesystem specific targets +ifeq ($(ADK_TARGET_FS),archive) +imageinstall: $(FW_DIR)/$(ROOTFSTARBALL) targethelp +endif +ifeq ($(ADK_TARGET_FS),initramfs) +imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp +endif +ifeq ($(ADK_TARGET_FS),initramfsarchive) +imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp +endif +ifeq ($(ADK_TARGET_FS),initramfspiggyback) +imageinstall: createinitramfs targethelp +endif diff --git a/target/xtensa/kernel/qemu-xtensa b/target/xtensa/kernel/qemu-xtensa new file mode 100644 index 000000000..a34ea1db0 --- /dev/null +++ b/target/xtensa/kernel/qemu-xtensa @@ -0,0 +1,8 @@ +CONFIG_XTENSA=y +CONFIG_XTENSA_VARIANT_DC232B=y +CONFIG_XTENSA_UNALIGNED_USER=y +CONFIG_MATH_EMULATION=y +CONFIG_XTENSA_PLATFORM_XTFPGA=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y diff --git a/target/xtensa/overlay/xtensa_dc232b.tar b/target/xtensa/overlay/xtensa_dc232b.tar Binary files differnew file mode 100644 index 000000000..77080e07b --- /dev/null +++ b/target/xtensa/overlay/xtensa_dc232b.tar diff --git a/target/xtensa/systems/qemu-xtensa b/target/xtensa/systems/qemu-xtensa new file mode 100644 index 000000000..b40750069 --- /dev/null +++ b/target/xtensa/systems/qemu-xtensa @@ -0,0 +1,10 @@ +config ADK_TARGET_SYSTEM_QEMU_XTENSA + bool "Qemu Emulator" + select ADK_xtensa + select ADK_qemu_xtensa + select ADK_TARGET_QEMU + select ADK_TARGET_KERNEL_ZIMAGE + select ADK_HOST_NEED_MKIMAGE + help + Support for Qemu Emulator XTENSA architecture. + diff --git a/target/xtensa/systems/toolchain-xtensa b/target/xtensa/systems/toolchain-xtensa new file mode 100644 index 000000000..725e5d23f --- /dev/null +++ b/target/xtensa/systems/toolchain-xtensa @@ -0,0 +1,9 @@ +config ADK_TARGET_SYSTEM_TOOLCHAIN_XTENSA + bool "Toolchain only" + select ADK_xtensa + select ADK_toolchain_xtensa + select ADK_TARGET_TOOLCHAIN + select ADK_TARGET_PACKAGE_TXZ + help + XTENSA toolchain. + diff --git a/target/xtensa/target.mk b/target/xtensa/target.mk new file mode 100644 index 000000000..709b5aa5e --- /dev/null +++ b/target/xtensa/target.mk @@ -0,0 +1,4 @@ +include $(TOPDIR)/mk/kernel-ver.mk +ARCH:= xtensa +CPU_ARCH:= $(ADK_TARGET_CPU_ARCH) +TARGET_CFLAGS_ARCH:= $(ADK_TARGET_CFLAGS) diff --git a/target/xtensa/uclibc.config b/target/xtensa/uclibc.config new file mode 100644 index 000000000..ff0229e01 --- /dev/null +++ b/target/xtensa/uclibc.config @@ -0,0 +1,243 @@ +# +# Automatically generated file; DO NOT EDIT. +# uClibc 0.9.34-git C Library Configuration +# +# TARGET_alpha is not set +# TARGET_arc is not set +# TARGET_arm is not set +# TARGET_avr32 is not set +# TARGET_bfin is not set +# TARGET_c6x is not set +# TARGET_cris is not set +# TARGET_e1 is not set +# TARGET_frv is not set +# TARGET_h8300 is not set +# TARGET_hppa is not set +# TARGET_i386 is not set +# TARGET_i960 is not set +# TARGET_ia64 is not set +# TARGET_m68k is not set +# TARGET_metag is not set +# TARGET_microblaze is not set +# TARGET_mips is not set +# TARGET_nios is not set +# TARGET_nios2 is not set +# TARGET_powerpc is not set +# TARGET_sh is not set +# TARGET_sh64 is not set +# TARGET_sparc is not set +# TARGET_v850 is not set +# TARGET_vax is not set +# TARGET_x86_64 is not set +TARGET_xtensa=y + +# +# Target Architecture Features and Options +# +TARGET_ARCH="xtensa" +FORCE_OPTIONS_FOR_ARCH=y +TARGET_SUBARCH="" + +# +# Using ELF file format +# +ARCH_HAS_DEPRECATED_SYSCALLS=y +ARCH_HAS_MMU=y +ARCH_USE_MMU=y +UCLIBC_HAS_FLOATS=y +UCLIBC_HAS_FPU=y +DO_C99_MATH=y +# DO_XSI_MATH is not set +UCLIBC_HAS_FENV=yes +KERNEL_HEADERS="" +HAVE_DOT_CONFIG=y + +# +# General Library Settings +# +DOPIC=y +HAVE_SHARED=y +# FORCE_SHAREABLE_TEXT_SEGMENTS is not set +LDSO_LDD_SUPPORT=y +LDSO_CACHE_SUPPORT=y +# LDSO_PRELOAD_ENV_SUPPORT is not set +# LDSO_PRELOAD_FILE_SUPPORT is not set +LDSO_BASE_FILENAME="ld.so" +# LDSO_STANDALONE_SUPPORT is not set +# LDSO_PRELINK_SUPPORT is not set +# UCLIBC_STATIC_LDCONFIG is not set +LDSO_RUNPATH=y +LDSO_SAFE_RUNPATH=y +LDSO_SEARCH_INTERP_PATH=y +LDSO_LD_LIBRARY_PATH=y +LDSO_NO_CLEANUP=y +UCLIBC_CTOR_DTOR=y +# LDSO_GNU_HASH_SUPPORT is not set +# HAS_NO_THREADS is not set +# LINUXTHREADS_OLD is not set +# LINUXTHREADS_NEW is not set +UCLIBC_HAS_THREADS_NATIVE=yes +UCLIBC_HAS_THREADS=y +# PTHREADS_DEBUG_SUPPORT is not set +UCLIBC_HAS_SYSLOG=y +UCLIBC_HAS_LFS=y +# MALLOC is not set +# MALLOC_SIMPLE is not set +MALLOC_STANDARD=y +MALLOC_GLIBC_COMPAT=y +UCLIBC_HAS_OBSTACK=y +UCLIBC_DYNAMIC_ATEXIT=y +COMPAT_ATEXIT=y +# UCLIBC_SUSV2_LEGACY is not set +UCLIBC_SUSV3_LEGACY=y +# UCLIBC_SUSV3_LEGACY_MACROS is not set +UCLIBC_SUSV4_LEGACY=y +# UCLIBC_STRICT_HEADERS is not set +# UCLIBC_HAS_STUBS is not set +UCLIBC_HAS_SHADOW=y +UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y +UCLIBC_HAS___PROGNAME=y +UCLIBC_HAS_PTY=y +ASSUME_DEVPTS=y +UNIX98PTY_ONLY=y +UCLIBC_HAS_GETPT=y +UCLIBC_HAS_LIBUTIL=y +UCLIBC_HAS_TM_EXTENSIONS=y +UCLIBC_HAS_TZ_CACHING=y +UCLIBC_HAS_TZ_FILE=y +UCLIBC_HAS_TZ_FILE_READ_MANY=y +UCLIBC_TZ_FILE_PATH="/etc/TZ" +UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y + +# +# Advanced Library Settings +# +UCLIBC_PWD_BUFFER_SIZE=256 +UCLIBC_GRP_BUFFER_SIZE=256 + +# +# Support various families of functions +# +UCLIBC_LINUX_MODULE_26=y +# UCLIBC_LINUX_MODULE_24 is not set +UCLIBC_LINUX_SPECIFIC=y +UCLIBC_HAS_GNU_ERROR=y +UCLIBC_BSD_SPECIFIC=y +UCLIBC_HAS_BSD_ERR=y +# UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set +# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set +# UCLIBC_NTP_LEGACY is not set +# UCLIBC_SV4_DEPRECATED is not set +UCLIBC_HAS_REALTIME=y +UCLIBC_HAS_ADVANCED_REALTIME=y +UCLIBC_HAS_EPOLL=y +# UCLIBC_HAS_XATTR is not set +# UCLIBC_HAS_PROFILING is not set +UCLIBC_HAS_CRYPT_IMPL=y +# UCLIBC_HAS_SHA256_CRYPT_IMPL is not set +# UCLIBC_HAS_SHA512_CRYPT_IMPL is not set +UCLIBC_HAS_CRYPT=y +UCLIBC_HAS_NETWORK_SUPPORT=y +UCLIBC_HAS_SOCKET=y +UCLIBC_HAS_IPV4=y +UCLIBC_HAS_IPV6=y +UCLIBC_HAS_RPC=y +UCLIBC_HAS_FULL_RPC=y +UCLIBC_HAS_REENTRANT_RPC=y +UCLIBC_USE_NETLINK=y +UCLIBC_SUPPORT_AI_ADDRCONFIG=y +UCLIBC_HAS_BSD_RES_CLOSE=y +UCLIBC_HAS_COMPAT_RES_STATE=y +# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set +UCLIBC_HAS_RESOLVER_SUPPORT=y +UCLIBC_HAS_LIBRESOLV_STUB=y +UCLIBC_HAS_LIBNSL_STUB=y + +# +# String and Stdio Support +# +UCLIBC_HAS_STRING_GENERIC_OPT=y +UCLIBC_HAS_STRING_ARCH_OPT=y +UCLIBC_HAS_CTYPE_TABLES=y +UCLIBC_HAS_CTYPE_SIGNED=y +# UCLIBC_HAS_CTYPE_UNSAFE is not set +UCLIBC_HAS_CTYPE_CHECKED=y +# UCLIBC_HAS_CTYPE_ENFORCED is not set +UCLIBC_HAS_WCHAR=y +# UCLIBC_HAS_LOCALE is not set +UCLIBC_HAS_HEXADECIMAL_FLOATS=y +UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y +UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 +# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set +# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set +UCLIBC_HAS_STDIO_BUFSIZ_4096=y +# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set +UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y +# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set +# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set +# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set +UCLIBC_HAS_STDIO_GETC_MACRO=y +UCLIBC_HAS_STDIO_PUTC_MACRO=y +UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y +# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set +UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y +# UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE is not set +UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y +UCLIBC_HAS_PRINTF_M_SPEC=y +UCLIBC_HAS_ERRNO_MESSAGES=y +# UCLIBC_HAS_SYS_ERRLIST is not set +UCLIBC_HAS_SIGNUM_MESSAGES=y +# UCLIBC_HAS_SYS_SIGLIST is not set +UCLIBC_HAS_GNU_GETOPT=y +UCLIBC_HAS_GNU_GETSUBOPT=y + +# +# Big and Tall +# +UCLIBC_HAS_REGEX=y +# UCLIBC_HAS_REGEX_OLD is not set +UCLIBC_HAS_FNMATCH=y +# UCLIBC_HAS_FNMATCH_OLD is not set +UCLIBC_HAS_WORDEXP=y +UCLIBC_HAS_NFTW=y +UCLIBC_HAS_FTW=y +UCLIBC_HAS_FTS=y +UCLIBC_HAS_GLOB=y +UCLIBC_HAS_GNU_GLOB=y +UCLIBC_HAS_UTMPX=y + +# +# Library Installation Options +# +RUNTIME_PREFIX="/" +DEVEL_PREFIX="/usr/" +MULTILIB_DIR="lib" +HARDWIRED_ABSPATH=y + +# +# Security options +# +UCLIBC_HAS_ARC4RANDOM=y +# ARC4RANDOM_USES_NODEV is not set +# UCLIBC_HAS_SSP is not set +UCLIBC_BUILD_RELRO=y +UCLIBC_BUILD_NOW=y +UCLIBC_BUILD_NOEXECSTACK=y + +# +# Development/debugging options +# +CROSS_COMPILER_PREFIX="" +UCLIBC_EXTRA_CFLAGS="" +DODEBUG=y +# DOASSERTS is not set +# SUPPORT_LD_DEBUG is not set +# SUPPORT_LD_DEBUG_EARLY is not set +# UCLIBC_MALLOC_DEBUGGING is not set +# UCLIBC_HAS_BACKTRACE is not set +WARNINGS="-Wall" +EXTRA_WARNINGS=y +# DOMULTI is not set +# UCLIBC_MJN3_ONLY is not set |