qemu/linux-user
Luke Shumaker 2a53535af4 linux-user: init_guest_space: Try to make ARM space+commpage continuous
At a fixed distance after the usable memory that init_guest_space maps, for
32-bit ARM targets we also need to map a commpage.  The normal
init_guest_space logic doesn't keep this in mind when searching for an
address range.

If !host_start, then try to find a big continuous segment where we can put
both the usable memory and the commpage; we then munmap that segment and
set current_start to that address; and let the normal code mmap the usable
memory and the commpage separately.  That is: if we don't have hint of
where to start looking for memory, come up with one that is better than
NULL.  Depending on host_size and guest_start, there may or may not be a
gap between the usable memory and the commpage, so this is slightly more
restrictive than it needs to be; but it's only a hint, so that's OK.

We only do that for !host start, because if host_start, then either:
 - we got an address passed in with -B, in which case we don't want to
   interfere with what the user said;
 - or host_start is based off of the ELF image's loaddr.  The check "if
   (host_start && real_start != current_start)" suggests that we really
   want lowest available address that is >= loaddr.  I don't know why that
   is, but I'm trusting that Paul Brook knew what he was doing when he
   wrote the original version of that check in
   c581deda32 way back in 2010.

Signed-off-by: Luke Shumaker <lukeshu@parabola.nu>
Message-Id: <20171228180814.9749-11-lukeshu@lukeshu.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
2018-03-20 18:26:40 +01:00
..
aarch64 linux-user: Implement aarch64 PR_SVE_SET/GET_VL 2018-03-09 17:09:43 +00:00
alpha linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
arm linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
cris linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
host linux-user: Fix register used for 6th and 7th syscall argument on aarch64 2018-02-18 18:52:32 +01:00
hppa linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
i386 linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
m68k linux-user, m68k: select CPU according to ELF header values 2018-02-25 17:29:21 +01:00
microblaze linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
mips linux-user: MIPS set cpu to r6 CPU if binary is R6 2018-02-25 17:29:45 +01:00
mips64 linux-user: MIPS set cpu to r6 CPU if binary is R6 2018-02-25 17:29:45 +01:00
nios2 linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
openrisc linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
ppc linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
riscv RISC-V Linux User Emulation 2018-03-07 08:30:28 +13:00
s390x linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
sh4 linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
sparc linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
sparc64 linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
tilegx linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
x86_64 linux-user: Move CPU type name selection to a function 2018-02-25 17:27:41 +01:00
xtensa target/xtensa: add linux-user support 2018-03-16 09:40:34 -07:00
elfload.c linux-user: init_guest_space: Try to make ARM space+commpage continuous 2018-03-20 18:26:40 +01:00
errno_defs.h linux-user: Handle ERFKILL and EHWPOISON 2017-01-22 18:14:10 -08:00
flat.h Support for 32 bit ABI on 64 bit targets (only enabled Sparc64) 2007-10-14 16:27:31 +00:00
flatload.c linux-user: Fix error handling in flatload.c target_pread() 2016-09-21 14:27:19 +03:00
ioctls.h linux-user: Implement ioctl cmd TIOCGPTPEER 2018-02-18 18:52:32 +01:00
linux_loop.h linux-user: Add loop control ioctls 2016-07-19 15:22:33 +03:00
linuxload.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
m68k-sim.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
main.c Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-19 14:10:36 -03:00
Makefile.objs linux-user: Provide safe_syscall for fixing races between signals and syscalls 2016-05-27 14:49:51 +03:00
mmap.c linux-user: drop unused target_msync function 2018-03-13 11:30:22 -07:00
qemu.h linux-user: drop unused target_msync function 2018-03-13 11:30:22 -07:00
safe-syscall.S linux-user: Provide safe_syscall for fixing races between signals and syscalls 2016-05-27 14:49:51 +03:00
signal.c target/xtensa linux-user support. 2018-03-17 14:15:03 +00:00
socket.h linux-user: Add HPPA socket.h definitions 2017-01-23 09:52:39 -08:00
strace.c linux-user: fix O_TMPFILE handling 2017-10-16 16:00:56 +03:00
strace.list linux-user: add rt_tgsigqueueinfo() strace 2017-05-29 14:56:08 +03:00
syscall_defs.h target/xtensa linux-user support. 2018-03-17 14:15:03 +00:00
syscall_types.h linux-user: Add FICLONE and FICLONERANGE ioctls 2017-02-16 15:29:30 +01:00
syscall.c target/xtensa linux-user support. 2018-03-17 14:15:03 +00:00
target_flat.h linux-user/FLAT: allow targets to override FLAT processing 2011-02-09 10:33:54 +02:00
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
uaccess.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
uname.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00
uname.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vm86.c linux-user: Clean up includes 2016-01-29 15:07:22 +00:00