summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-12-19 23:33:47 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-12-19 23:33:47 +0000
commit808c4954bfe48da4068c540d667ad379b55a5155 (patch)
treebbe97242f93cf975a9cb0c9cc77d174e8ce3d969
parente80cfcfc8884400e826328b772971913a14d0f44 (diff)
downloadqemu-808c4954bfe48da4068c540d667ad379b55a5155.tar.gz
qemu-808c4954bfe48da4068c540d667ad379b55a5155.tar.bz2
qemu-808c4954bfe48da4068c540d667ad379b55a5155.zip
big endian ARM support (Lennert Buytenhek)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1180 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--.cvsignore1
-rw-r--r--Changelog1
-rw-r--r--Makefile.target10
-rwxr-xr-xconfigure15
-rw-r--r--qemu-binfmt-conf.sh1
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