]> git.proxmox.com Git - qemu.git/commitdiff
MIPS64 configurations.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 1 Apr 2007 11:16:48 +0000 (11:16 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 1 Apr 2007 11:16:48 +0000 (11:16 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2564 c046a42c-6fe2-441c-8c8c-71466251a162

.cvsignore
Makefile
Makefile.target
configure
target-mips/op_helper.c

index ae68e450c83e627062b30d0068a2962fa37697e0..5277a1d7d1d9b29008dc2ba95e4127577e93edaf 100644 (file)
@@ -29,6 +29,10 @@ mips-softmmu
 mipsel-softmmu
 mips-linux-user
 mipsel-linux-user
+mips64-softmmu
+mips64el-softmmu
+mips64-linux-user
+mips64el-linux-user
 m68k-linux-user
 .gdbinit
 sh4-linux-user
index 9b9a32d0c826538a0862c71eb46cfb668e5e6763..60e3ec1978a521570c40d885be1041e6958e3497 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -141,6 +141,8 @@ tarbin:
        $(bindir)/qemu-system-x86_64 \
        $(bindir)/qemu-system-mips \
        $(bindir)/qemu-system-mipsel \
+       $(bindir)/qemu-system-mips64 \
+       $(bindir)/qemu-system-mips64el \
        $(bindir)/qemu-system-arm \
        $(bindir)/qemu-i386 \
         $(bindir)/qemu-arm \
index b52656434f4def70fd508c041c9d9178404cb775..3d221babb8f40ef3a2875d493fc746caff017c1e 100644 (file)
@@ -4,6 +4,9 @@ TARGET_BASE_ARCH:=$(TARGET_ARCH)
 ifeq ($(TARGET_ARCH), x86_64)
 TARGET_BASE_ARCH:=i386
 endif
+ifeq ($(TARGET_ARCH), mips64)
+TARGET_BASE_ARCH:=mips
+endif
 ifeq ($(TARGET_ARCH), ppc64)
 TARGET_BASE_ARCH:=ppc
 endif
@@ -44,6 +47,11 @@ ifeq ($(TARGET_ARCH),mips)
     TARGET_ARCH2=mipsel
   endif
 endif
+ifeq ($(TARGET_ARCH),mips64)
+  ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
+    TARGET_ARCH2=mips64el
+  endif
+endif
 QEMU_USER=qemu-$(TARGET_ARCH2)
 # system emulator name
 ifdef CONFIG_SOFTMMU
@@ -170,7 +178,19 @@ BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
 endif
 
 ifeq ($(ARCH),mips)
+ifeq ($(WORDS_BIGENDIAN),yes)
+BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
+else
+BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
+endif
+endif
+
+ifeq ($(ARCH),mips64)
+ifeq ($(WORDS_BIGENDIAN),yes)
 BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
+else
+BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
+endif
 endif
 
 ifeq ($(CONFIG_DARWIN),yes)
@@ -258,7 +278,7 @@ ifeq ($(TARGET_BASE_ARCH), ppc)
 LIBOBJS+= op_helper.o helper.o
 endif
 
-ifeq ($(TARGET_ARCH), mips)
+ifeq ($(TARGET_BASE_ARCH), mips)
 LIBOBJS+= op_helper.o helper.o
 endif
 
@@ -295,7 +315,7 @@ endif
 ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
 LIBOBJS+=ppc-dis.o
 endif
-ifeq ($(findstring mips, $(TARGET_ARCH) $(ARCH)),mips)
+ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
 LIBOBJS+=mips-dis.o
 endif
 ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
@@ -387,7 +407,7 @@ VL_OBJS+= ppc_prep.o ppc_chrp.o cuda.o adb.o openpic.o heathrow_pic.o mixeng.o
 VL_OBJS+= grackle_pci.o prep_pci.o unin_pci.o
 CPPFLAGS += -DHAS_AUDIO
 endif
-ifeq ($(TARGET_ARCH), mips)
+ifeq ($(TARGET_BASE_ARCH), mips)
 VL_OBJS+= mips_r4k.o mips_malta.o mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o
 VL_OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
 VL_OBJS+= piix_pci.o parallel.o mixeng.o cirrus_vga.o $(SOUND_HW) $(AUDIODRV)
@@ -554,10 +574,11 @@ op_helper.o: op_helper_mem.h
 translate.o: translate.c translate_init.c
 endif
 
-ifeq ($(TARGET_ARCH), mips)
-op.o: op.c op_template.c fop_template.c op_mem.c
-op_helper.o: op_helper_mem.c
-translate.o: translate.c translate_init.c
+ifeq ($(TARGET_BASE_ARCH), mips)
+helper.o: cpu.h exec-all.h
+op.o: op_template.c fop_template.c op_mem.c exec.h
+op_helper.o: op_helper_mem.c exec.h softmmu_template.h
+translate.o: translate_init.c exec-all.h disas.h
 endif
 
 loader.o: loader.c elf_ops.h
index 63f327e91f7c87e64a8452828617052f18add081..7754774d617cc122db7a7fd65cdff4eb5f82177f 100755 (executable)
--- a/configure
+++ b/configure
@@ -50,6 +50,9 @@ case "$cpu" in
   mips)
     cpu="mips"
   ;;
+  mips64)
+    cpu="mips64"
+  ;;
   s390)
     cpu="s390"
   ;;
@@ -418,7 +421,7 @@ fi
 if test -z "$target_list" ; then
 # these targets are portable
     if [ "$softmmu" = "yes" ] ; then
-        target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu ppc64-softmmu"
+        target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc64-softmmu"
     fi
 # the following are Linux specific
     if [ "$linux_user" = "yes" ] ; then
@@ -457,7 +460,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" -o "$cpu" = "armv4b"; then
+if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "mips64" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
     bigendian="yes"
 fi
 
@@ -675,6 +678,9 @@ elif test "$cpu" = "powerpc" ; then
 elif test "$cpu" = "mips" ; then
   echo "ARCH=mips" >> $config_mak
   echo "#define HOST_MIPS 1" >> $config_h
+elif test "$cpu" = "mips64" ; then
+  echo "ARCH=mips64" >> $config_mak
+  echo "#define HOST_MIPS64 1" >> $config_h
 elif test "$cpu" = "s390" ; then
   echo "ARCH=s390" >> $config_mak
   echo "#define HOST_S390 1" >> $config_h
@@ -801,6 +807,7 @@ target_bigendian="no"
 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
 [ "$target_cpu" = "mips" ] && target_bigendian=yes
+[ "$target_cpu" = "mips64" ] && target_bigendian=yes
 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
 target_softmmu="no"
@@ -903,6 +910,13 @@ elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
   echo "#define TARGET_MIPS 1" >> $config_h
   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
+elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
+  echo "TARGET_ARCH=mips64" >> $config_mak
+  echo "#define TARGET_ARCH \"mips64\"" >> $config_h
+  echo "#define TARGET_MIPS 1" >> $config_h
+  echo "#define TARGET_MIPS64 1" >> $config_h
+  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
+  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
   echo "TARGET_ARCH=sh4" >> $config_mak
   echo "#define TARGET_ARCH \"sh4\"" >> $config_h
index f9748fc16bc64c0095cced15bac8855ccbed847b..fb70f51e868e03a71f8b7ceb0bcaf15334593bee 100644 (file)
@@ -336,8 +336,6 @@ void do_mtc0_status_irqraise_debug(void)
     fprintf(logfile, "Raise pending IRQs\n");
 }
 
-#include "softfloat.h"
-
 void fpu_handle_exception(void)
 {
 #ifdef CONFIG_SOFTFLOAT