--- qemu.orig/linux-user/mmap.c
+++ qemu/linux-user/mmap.c
@@ -29,6 +29,10 @@
 
 //#define DEBUG_MMAP
 
+#ifndef MAP_32BIT
+#define MAP_32BIT 0
+#endif
+
 /* NOTE: all the constants are the HOST ones, but addresses are target. */
 int target_mprotect(target_ulong start, target_ulong len, int prot)
 {
@@ -234,7 +238,7 @@
             host_offset = offset & qemu_host_page_mask;
             host_len = len + offset - host_offset;
             host_start = (long)mmap(real_start ? g2h(real_start) : NULL,
-                                    host_len, prot, flags, fd, host_offset);
+                                    host_len, prot, (flags | MAP_32BIT), fd, host_offset);
             if (host_start == -1)
                 return host_start;
             /* update start so that it points to the file position at 'offset' */
@@ -388,7 +392,7 @@
     int prot;
 
     /* XXX: use 5 args syscall */
-    new_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags);
+    new_addr = (long)mremap(g2h(old_addr), old_size, new_size, (flags | MAP_32BIT));
     if (new_addr == -1)
         return new_addr;
     new_addr = h2g(new_addr);
