aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2011-12-14 00:33:28 +0100
committerRiku Voipio <riku.voipio@linaro.org>2012-04-06 18:49:58 +0300
commit288e65b9eea0c9b3cbe21be46f3e24e4e8b2a090 (patch)
treea8c1be2ee4cebfe819352576ccf921a35a1ac352
parent59e9d91c7ae1b655997aec61c08eec1685414117 (diff)
linux-user: reserve 4GB of vmem for 32-on-64
When running 32-on-64 bit guests, we should always reserve as much virtual memory as we possibly can for the guest process, so it can never overlap with QEMU address space. Fortunately we already have the infrastructure for that. All that's missing is some sane default value to also make use of it! Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
-rw-r--r--linux-user/main.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/linux-user/main.c b/linux-user/main.c
index aa95db3a6d..23ad357b50 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -48,8 +48,19 @@ unsigned long mmap_min_addr;
#if defined(CONFIG_USE_GUEST_BASE)
unsigned long guest_base;
int have_guest_base;
+#if (TARGET_LONG_BITS == 32) && (HOST_LONG_BITS == 64)
+/*
+ * When running 32-on-64 we should make sure we can fit all of the possible
+ * guest address space into a contiguous chunk of virtual host memory.
+ *
+ * This way we will never overlap with our own libraries or binaries or stack
+ * or anything else that QEMU maps.
+ */
+unsigned long reserved_va = 0xf7000000;
+#else
unsigned long reserved_va;
#endif
+#endif
static void usage(void);