1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
--- 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);
|