From 808c4954bfe48da4068c540d667ad379b55a5155 Mon Sep 17 00:00:00 2001 From: bellard Date: Sun, 19 Dec 2004 23:33:47 +0000 Subject: [PATCH] big endian ARM support (Lennert Buytenhek) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1180 c046a42c-6fe2-441c-8c8c-71466251a162 --- .cvsignore | 1 + Changelog | 1 + Makefile.target | 10 +++++++++- configure | 15 +++++++++++---- qemu-binfmt-conf.sh | 1 + 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.cvsignore b/.cvsignore index 42bc1c7544..e7ca915324 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,4 +1,5 @@ arm-user +armeb-user config-host.* dyngen i386 diff --git a/Changelog b/Changelog index eada6316e3..7e16de6383 100644 --- a/Changelog +++ b/Changelog @@ -7,6 +7,7 @@ version 0.6.2: - 'pidfile' option - .dmg disk image format support (Johannes Schindelin) - keymaps support (initial patch by Johannes Schindelin) + - big endian ARM support (Lennert Buytenhek) version 0.6.1: diff --git a/Makefile.target b/Makefile.target index edf76cffbe..933692977e 100644 --- a/Makefile.target +++ b/Makefile.target @@ -13,7 +13,15 @@ LIBS= HELPER_CFLAGS=$(CFLAGS) DYNGEN=../dyngen$(EXESUF) # user emulator name -QEMU_USER=qemu-$(TARGET_ARCH) +ifeq ($(TARGET_ARCH),arm) + ifeq ($(TARGET_WORDS_BIGENDIAN),yes) + QEMU_USER=qemu-armeb + else + QEMU_USER=qemu-arm + endif +else + QEMU_USER=qemu-$(TARGET_ARCH) +endif # system emulator name ifdef CONFIG_SOFTMMU ifeq ($(TARGET_ARCH), i386) diff --git a/configure b/configure index bf7e0bf27d..8d34921e4c 100755 --- a/configure +++ b/configure @@ -27,11 +27,14 @@ ar="ar" make="make" strip="strip" cpu=`uname -m` -target_list="i386-user i386 i386-softmmu arm-user sparc-user ppc-user ppc-softmmu sparc-softmmu" +target_list="i386-user i386 i386-softmmu arm-user armeb-user sparc-user ppc-user ppc-softmmu sparc-softmmu" case "$cpu" in i386|i486|i586|i686|i86pc|BePC) cpu="i386" ;; + armv4b) + cpu="armv4b" + ;; armv4l) cpu="armv4l" ;; @@ -205,7 +208,7 @@ fi else # if cross compiling, cannot launch a program, so make a static guess -if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k"; then +if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then bigendian="yes" fi @@ -383,6 +386,9 @@ if test "$cpu" = "i386" ; then elif test "$cpu" = "amd64" ; then echo "ARCH=amd64" >> $config_mak echo "#define HOST_AMD64 1" >> $config_h +elif test "$cpu" = "armv4b" ; then + echo "ARCH=arm" >> $config_mak + echo "#define HOST_ARM 1" >> $config_h elif test "$cpu" = "armv4l" ; then echo "ARCH=arm" >> $config_mak echo "#define HOST_ARM 1" >> $config_h @@ -482,6 +488,7 @@ config_mak=$target_dir/config.mak config_h=$target_dir/config.h target_cpu=`echo $target | cut -d '-' -f 1` target_bigendian="no" +[ "$target_cpu" = "armeb" ] && target_bigendian=yes [ "$target_cpu" = "sparc" ] && target_bigendian=yes [ "$target_cpu" = "ppc" ] && target_bigendian=yes target_softmmu="no" @@ -496,7 +503,7 @@ fi #echo "Creating $config_mak, $config_h and $target_dir/Makefile" mkdir -p $target_dir -if test "$target" = "arm-user" ; then +if test "$target" = "arm-user" -o "$target" = "armeb-user" ; then mkdir -p $target_dir/nwfpe fi if test "$target_user_only" = "no" ; then @@ -519,7 +526,7 @@ if test "$target_cpu" = "i386" ; then echo "TARGET_ARCH=i386" >> $config_mak echo "#define TARGET_ARCH \"i386\"" >> $config_h echo "#define TARGET_I386 1" >> $config_h -elif test "$target_cpu" = "arm" ; then +elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then echo "TARGET_ARCH=arm" >> $config_mak echo "#define TARGET_ARCH \"arm\"" >> $config_h echo "#define TARGET_ARM 1" >> $config_h diff --git a/qemu-binfmt-conf.sh b/qemu-binfmt-conf.sh index e5acc474aa..ff09fc4f9a 100644 --- a/qemu-binfmt-conf.sh +++ b/qemu-binfmt-conf.sh @@ -25,6 +25,7 @@ if [ $cpu != "i386" ] ; then fi if [ $cpu != "arm" ] ; then echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff\xff:/usr/local/bin/qemu-arm:' > /proc/sys/fs/binfmt_misc/register + echo ':armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/usr/local/bin/qemu-armeb:' > /proc/sys/fs/binfmt_misc/register fi if [ $cpu != "sparc" ] ; then echo ':sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff\xff:/usr/local/bin/qemu-sparc:' > /proc/sys/fs/binfmt_misc/register