SHA256
1
0
forked from pool/qemu
qemu/qemu-cvs-mmap-amd64.patch

52 lines
1.9 KiB
Diff

Index: qemu/linux-user/mmap.c
================================================================================
--- qemu/linux-user/mmap.c
+++ qemu/linux-user/mmap.c
@@ -27,6 +27,10 @@
#include "qemu.h"
+#if !defined(MAP_32BIT)
+#define MAP_32BIT 0
+#endif
+
//#define DEBUG_MMAP
/* NOTE: all the constants are the HOST ones, but addresses are target. */
@@ -119,7 +123,7 @@
if (prot1 == 0) {
/* no page was there, so we allocate one */
void *p = mmap(host_start, qemu_host_page_size, prot,
- flags | MAP_ANONYMOUS, -1, 0);
+ flags | MAP_ANONYMOUS | MAP_32BIT, -1, 0);
if (p == MAP_FAILED)
return -1;
prot1 = prot;
@@ -251,7 +255,7 @@
host_len = HOST_PAGE_ALIGN(host_len + qemu_host_page_size
- qemu_real_host_page_size);
p = mmap(real_start ? g2h(real_start) : NULL,
- host_len, prot, flags, fd, host_offset);
+ host_len, prot, flags | MAP_32BIT, fd, host_offset);
if (p == MAP_FAILED)
return -1;
@@ -277,7 +281,7 @@
} else {
/* if not fixed, no need to do anything */
void *p = mmap(real_start ? g2h(real_start) : NULL,
- host_len, prot, flags, fd, host_offset);
+ host_len, prot, flags | MAP_32BIT, fd, host_offset);
if (p == MAP_FAILED)
return -1;
/* update start so that it points to the file position at 'offset' */
@@ -434,7 +438,7 @@
unsigned long host_addr;
/* XXX: use 5 args syscall */
- host_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags);
+ host_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags | MAP_32BIT);
if (host_addr == -1)
return -1;
new_addr = h2g(host_addr);