Revert "Revived GUEST_BASE support for usermode emulation targets."
authorRiku Voipio <riku.voipio@nokia.com>
Mon, 20 Apr 2009 14:11:51 +0000 (17:11 +0300)
committerRiku Voipio <riku.voipio@nokia.com>
Mon, 20 Apr 2009 14:11:51 +0000 (17:11 +0300)
This reverts commit 2d2bfb213eb1baabb111e64b0a6d936d5909faa7.

Conflicts:

configure
debian/changelog
linux-user/main.c

configure
cpu-all.h
linux-user/elfload.c
linux-user/main.c
linux-user/qemu.h
linux-user/syscall.c
tcg/i386/tcg-target.c
tcg/x86_64/tcg-target.c

index aa65930..9b7b999 100755 (executable)
--- a/configure
+++ b/configure
@@ -177,7 +177,6 @@ softmmu="yes"
 linux_user="no"
 darwin_user="no"
 bsd_user="no"
-guest_base="no"
 build_docs="no"
 uname_release=""
 curses="yes"
@@ -441,8 +440,6 @@ for opt do
   ;;
   --enable-bsd-user) bsd_user="yes"
   ;;
-  --enable-guest-base) guest_base="yes"
-  ;;
   --enable-uname-release=*) uname_release="$optarg"
   ;;
   --sparc_cpu=*)
@@ -586,8 +583,6 @@ echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
 echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
 echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
 echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
-echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
-echo "                           emulation targets"
 echo "  --fmod-lib               path to FMOD library"
 echo "  --fmod-inc               path to FMOD includes"
 echo "  --oss-lib                path to OSS library"
@@ -1124,7 +1119,7 @@ EOF
   fi
 fi
 
-##########################################
+#
 # Check for xxxat() functions when we are building linux-user
 # emulator.  This is done because older glibc versions don't
 # have syscall stubs for these implemented.  In that case we
@@ -1192,9 +1187,9 @@ else
   binsuffix="/bin"
 fi
 
-echo "Install prefix     $prefix"
-echo "BIOS directory     $prefix$datasuffix"
-echo "binary directory   $prefix$binsuffix"
+echo "Install prefix    $prefix"
+echo "BIOS directory    $prefix$datasuffix"
+echo "binary directory  $prefix$binsuffix"
 if test "$mingw32" = "no" ; then
 echo "Manual directory  $prefix$mansuffix"
 echo "ELF interp prefix $interp_prefix"
@@ -1215,22 +1210,22 @@ echo "profiler          $profiler"
 echo "static build      $static"
 echo "-Werror enabled   $werror"
 if test "$darwin" = "yes" ; then
-    echo "Cocoa support      $cocoa"
+    echo "Cocoa support     $cocoa"
 fi
-echo "SDL support        $sdl"
+echo "SDL support       $sdl"
 if test "$sdl" != "no" ; then
-    echo "SDL static link    $sdl_static"
-fi
-echo "curses support     $curses"
-echo "atfile support     $atfile"
-echo "mingw32 support    $mingw32"
-echo "Audio drivers      $audio_drv_list"
-echo "Extra audio cards  $audio_card_list"
-echo "Mixer emulation    $mixemu"
-echo "VNC TLS support    $vnc_tls"
+    echo "SDL static link   $sdl_static"
+fi
+echo "curses support    $curses"
+echo "atfile support    $atfile"
+echo "mingw32 support   $mingw32"
+echo "Audio drivers     $audio_drv_list"
+echo "Extra audio cards $audio_card_list"
+echo "Mixer emulation   $mixemu"
+echo "VNC TLS support   $vnc_tls"
 if test "$vnc_tls" = "yes" ; then
-    echo "    TLS CFLAGS     $vnc_tls_cflags"
-    echo "    TLS LIBS       $vnc_tls_libs"
+    echo "    TLS CFLAGS    $vnc_tls_cflags"
+    echo "    TLS LIBS      $vnc_tls_libs"
 fi
 echo "VNC SASL support  $vnc_sasl"
 if test "$vnc_sasl" = "yes" ; then
@@ -1238,20 +1233,19 @@ if test "$vnc_sasl" = "yes" ; then
     echo "    SASL LIBS      $vnc_sasl_libs"
 fi
 if test -n "$sparc_cpu"; then
-    echo "Target Sparc Arch  $sparc_cpu"
+    echo "Target Sparc Arch $sparc_cpu"
 fi
-echo "kqemu support      $kqemu"
-echo "brlapi support     $brlapi"
-echo "Documentation      $build_docs"
+echo "kqemu support     $kqemu"
+echo "brlapi support    $brlapi"
+echo "Documentation     $build_docs"
 [ ! -z "$uname_release" ] && \
-echo "uname -r           $uname_release"
-echo "NPTL support       $nptl"
-echo "vde support        $vde"
-echo "AIO support        $aio"
-echo "Install blobs      $blobs"
-echo "KVM support        $kvm"
-echo "fdt support        $fdt"
-echo "GUEST_BASE support $guest_base"
+echo "uname -r          $uname_release"
+echo "NPTL support      $nptl"
+echo "vde support       $vde"
+echo "AIO support       $aio"
+echo "Install blobs     $blobs"
+echo "KVM support       $kvm"
+echo "fdt support       $fdt"
 
 if test $sdl_too_old = "yes"; then
 echo "-> Your SDL version is too old - please upgrade to have SDL support"
@@ -1898,9 +1892,6 @@ if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
   echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
   echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
 fi
-if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
-  echo "#define CONFIG_USE_GUEST_BASE 1" >> $config_h
-fi
 if test "$target_bsd_user" = "yes" ; then
   echo "CONFIG_BSD_USER=yes" >> $config_mak
   echo "#define CONFIG_BSD_USER 1" >> $config_h
index 0e6efae..366f47e 100644 (file)
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -629,12 +629,8 @@ static inline void stfq_be_p(void *ptr, float64 v)
 /* On some host systems the guest address space is reserved on the host.
  * This allows the guest address space to be offset to a convenient location.
  */
-#if defined(CONFIG_USE_GUEST_BASE)
-extern unsigned long guest_base;
-#define GUEST_BASE guest_base
-#else
+//#define GUEST_BASE 0x20000000
 #define GUEST_BASE 0
-#endif
 
 /* All direct uses of g2h and h2g need to go away for usermode softmmu.  */
 #define g2h(x) ((void *)((unsigned long)(x) + GUEST_BASE))
index ea012e0..6de30f4 100644 (file)
@@ -1337,30 +1337,6 @@ int load_elf_binary(struct linux_binprm * bprm, struct target_pt_regs * regs,
     info->mmap = 0;
     elf_entry = (abi_ulong) elf_ex.e_entry;
 
-#if defined(CONFIG_USE_GUEST_BASE)
-    /*
-     * In case where user has not explicitly set the guest_base, we
-     * probe here that should we set it automatically.
-     */
-    if (guest_base == 0) {
-        /*
-         * Go through ELF program header table and find out whether
-        * any of the segments drop below our current mmap_min_addr and
-         * in that case set guest_base to corresponding address.
-         */
-        for (i = 0, elf_ppnt = elf_phdata; i < elf_ex.e_phnum;
-            i++, elf_ppnt++) {
-            if (elf_ppnt->p_type != PT_LOAD)
-                continue;
-            if (HOST_PAGE_ALIGN(elf_ppnt->p_vaddr) < mmap_min_addr) {
-                guest_base = HOST_PAGE_ALIGN(mmap_min_addr);
-                qemu_log("setting guest_base=0x%lx\n", guest_base);
-                break;
-            }
-        }
-    }
-#endif /* CONFIG_USE_GUEST_BASE */
-
     /* Do this so that we can load the interpreter, if need be.  We will
        change some of these later */
     info->rss = 0;
index d901d9c..8be0b3c 100644 (file)
 
 #define DEBUG_LOGFILE "/tmp/qemu.log"
 
-const char *exec_path;
-
-#if defined(CONFIG_USE_GUEST_BASE)
-unsigned long mmap_min_addr = 0;
-unsigned long guest_base = 0;
-#endif
+char *exec_path;
 
 int singlestep;
 
@@ -2221,9 +2216,6 @@ static void usage(void)
            "-E var=value      sets/modifies targets environment variable(s)\n"
            "-U var            unsets targets environment variable(s)\n"
            "-0 argv0          forces target process argv[0] to be argv0\n"
-#if defined(CONFIG_USE_GUEST_BASE)
-           "-B address        set guest_base address to address\n"
-#endif
            "\n"
            "Debug options:\n"
            "-d options   activate log (logfile=%s)\n"
@@ -2234,22 +2226,12 @@ static void usage(void)
            "Environment variables:\n"
            "QEMU_STRACE       Print system calls and arguments similar to the\n"
            "                  'strace' program.  Enable by setting to any value.\n"
-           "\n"
            "You can use -E and -U options to set/unset environment variables\n"
            "for target process.  It is possible to provide several variables\n"
            "by repeating the option.  For example:\n"
            "    -E var1=val2 -E var2=val2 -U LD_PRELOAD -U LD_DEBUG\n"
            "Note that if you provide several changes to single variable\n"
            "last change will stay in effect.\n"
-#if defined(CONFIG_USE_GUEST_BASE)
-           "\n"
-           "You can use -B option to load target binary into different\n"
-           "address that is specified in elf headers.  This can be useful\n"
-           "when target binary would be loaded to low addresses and\n"
-           "/proc/sys/vm/mmap_min_addr is set to higher.  For example\n"
-           "     qemu-" TARGET_ARCH " -B 0x100000 ...\n"
-           "loads target binary starting from the first meg.\n"
-#endif
            ,
            TARGET_ARCH,
            interp_prefix,
@@ -2275,7 +2257,7 @@ void init_task_state(TaskState *ts)
  
 int main(int argc, char **argv, char **envp)
 {
-    const char *filename = NULL;
+    char *filename = NULL;
     const char *cpu_model;
     struct target_pt_regs regs1, *regs = &regs1;
     struct image_info info1, *info = &info1;
@@ -2390,10 +2372,6 @@ int main(int argc, char **argv, char **envp)
 #endif
                 exit(1);
             }
-#if defined(CONFIG_USE_GUEST_BASE)
-        } else if (!strcmp(r, "B")) {
-           guest_base = strtol(argv[optind++], NULL, 0);
-#endif
         } else if (!strcmp(r, "drop-ld-preload")) {
             drop_ld_preload = 1;
         } else if (!strcmp(r, "keep-ld-preload")) {
@@ -2478,36 +2456,6 @@ int main(int argc, char **argv, char **envp)
     target_environ = envlist_to_environ(envlist, NULL);
     envlist_free(envlist);
 
-#if defined(CONFIG_USE_GUEST_BASE)
-    /*
-     * Now that page sizes are configured in cpu_init() we can do
-     * proper page alignment for guest_base.
-     */
-    guest_base = HOST_PAGE_ALIGN(guest_base);
-
-    /*
-     * Read in mmap_min_addr kernel parameter and check
-     * whether it is set to some value > 0.  This value is used
-     * later on when doing mmap(2)s to calculate where guest_base
-     * is to set, if needed.
-     *
-     * When user has explicitly set the quest base, we skip this
-     * test.
-     */
-    if (guest_base == 0) {
-        FILE *fp;
-
-        if ((fp = fopen("/proc/sys/vm/mmap_min_addr", "r")) != NULL) {
-            unsigned long tmp;
-            if (fscanf(fp, "%lu", &tmp) == 1) {
-                mmap_min_addr = tmp;
-                qemu_log("kernel mmap_min_addr=%lu\n", mmap_min_addr);
-            }
-            fclose(fp);
-        }
-    }
-#endif /* CONFIG_USE_GUEST_BASE */
-
     /*
      * Prepare copy of argv vector for target.
      */
@@ -2548,18 +2496,6 @@ int main(int argc, char **argv, char **envp)
     free(target_environ);
 
     if (qemu_log_enabled()) {
-#if defined(CONFIG_USE_GUEST_BASE)
-        if (guest_base > 0) {
-            qemu_log("guest_base is set to 0x%lx\n", guest_base);
-            qemu_log(
-                "==========================================================\n"
-                "Note that all target addresses below are given in target\n"
-                "address space which is different from host by guest_base.\n"
-                "For example: target address 0x%x becomes 0x%x and so on.\n"
-                "==========================================================\n",
-                (uintptr_t)0x8000, (uintptr_t)g2h(0x8000));
-        }
-#endif
         log_page_dump();
 
         qemu_log("start_brk   0x" TARGET_ABI_FMT_lx "\n", info->start_brk);
index a881780..94ae333 100644 (file)
@@ -123,12 +123,9 @@ typedef struct TaskState {
     uint8_t stack[0];
 } __attribute__((aligned(16))) TaskState;
 
-extern const char *exec_path;
+extern char *exec_path;
 void init_task_state(TaskState *ts);
 extern const char *qemu_uname_release;
-#if defined(CONFIG_USE_GUEST_BASE)
-extern unsigned long mmap_min_addr;
-#endif
 
 /* ??? See if we can avoid exposing so much of the loader internals.  */
 /*
index 4846906..f0d2a91 100644 (file)
@@ -2592,8 +2592,6 @@ static inline abi_long do_shmat(int shmid, abi_ulong shmaddr, int shmflg,
         }
     }
 
-    *raddr = h2g(*raddr);
-
     mmap_unlock();
     return 0;
 }
index 7cb51b5..e0fd434 100644 (file)
@@ -560,12 +560,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
     /* add x(r1), r0 */
     tcg_out_modrm_offset(s, 0x03, r0, r1, offsetof(CPUTLBEntry, addend) - 
                          offsetof(CPUTLBEntry, addr_read));
-#elif defined(CONFIG_USE_GUEST_BASE)
-    /*
-     * Add guest_base to all loads.
-     */
-    tcg_out_mov(s, r0, addr_reg);    /* movl addr_reg, r0 */
-    tcg_out_addi(s, r0, GUEST_BASE); /* addl $GUEST_BASE, r0 */
 #else
     r0 = addr_reg;
 #endif
@@ -800,12 +794,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
     /* add x(r1), r0 */
     tcg_out_modrm_offset(s, 0x03, r0, r1, offsetof(CPUTLBEntry, addend) - 
                          offsetof(CPUTLBEntry, addr_write));
-#elif defined(CONFIG_USE_GUEST_BASE)
-    /*
-     * Add guest_base to all stores.
-     */
-    tcg_out_mov(s, r0, addr_reg);    /* movl addr_reg, r0 */
-    tcg_out_addi(s, r0, GUEST_BASE); /* addl $GUEST_BASE, r0 */
 #else
     r0 = addr_reg;
 #endif
index f467cb0..5378e85 100644 (file)
@@ -604,12 +604,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
     /* add x(r1), r0 */
     tcg_out_modrm_offset(s, 0x03 | P_REXW, r0, r1, offsetof(CPUTLBEntry, addend) - 
                          offsetof(CPUTLBEntry, addr_read));
-#elif defined(CONFIG_USE_GUEST_BASE)
-    /*
-     * Add guest_base to all loads.
-     */
-    tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); /* movq addr_reg, r0 */
-    tcg_out_addi(s, r0, GUEST_BASE);             /* addq $GUEST_BASE, r0 */
 #else
     r0 = addr_reg;
 #endif    
@@ -781,12 +775,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
     /* add x(r1), r0 */
     tcg_out_modrm_offset(s, 0x03 | P_REXW, r0, r1, offsetof(CPUTLBEntry, addend) - 
                          offsetof(CPUTLBEntry, addr_write));
-#elif defined(CONFIG_USE_GUEST_BASE)
-    /*
-     * Add guest_base to all stores.
-     */
-    tcg_out_modrm(s, 0x8b | rexw, r0, addr_reg); /* movq addr_reg, r0 */
-    tcg_out_addi(s, r0, GUEST_BASE);             /* addq $GUEST_BASE, r0 */
 #else
     r0 = addr_reg;
 #endif