mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
linux-user: Adjust task_unmapped_base for reserved_va
Ensure that the chosen values for mmap_next_start and task_unmapped_base are within the guest address space. Tested-by: Helge Deller <deller@gmx.de> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
0450cf0897
commit
c8fb5cf97d
3 changed files with 64 additions and 16 deletions
|
@ -18,6 +18,39 @@
|
|||
#ifndef LINUX_USER_USER_MMAP_H
|
||||
#define LINUX_USER_USER_MMAP_H
|
||||
|
||||
#if HOST_LONG_BITS == 64 && TARGET_ABI_BITS == 64
|
||||
#ifdef TARGET_AARCH64
|
||||
# define TASK_UNMAPPED_BASE 0x5500000000
|
||||
#else
|
||||
# define TASK_UNMAPPED_BASE (1ul << 38)
|
||||
#endif
|
||||
#else
|
||||
#ifdef TARGET_HPPA
|
||||
# define TASK_UNMAPPED_BASE 0xfa000000
|
||||
#else
|
||||
# define TASK_UNMAPPED_BASE 0x40000000
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Guest parameters for the ADDR_COMPAT_LAYOUT personality
|
||||
* (at present this is the only layout supported by QEMU).
|
||||
*
|
||||
* TASK_UNMAPPED_BASE: For mmap without hint (addr != 0), the search
|
||||
* for unused virtual memory begins at TASK_UNMAPPED_BASE.
|
||||
*
|
||||
* task_unmapped_base: When the guest address space is limited via -R,
|
||||
* the value of TASK_UNMAPPED_BASE is adjusted to fit.
|
||||
*/
|
||||
extern abi_ulong task_unmapped_base;
|
||||
|
||||
/*
|
||||
* mmap_next_start: The base address for the next mmap without hint,
|
||||
* increased after each successful map, starting at task_unmapped_base.
|
||||
* This is an optimization within QEMU and not part of ADDR_COMPAT_LAYOUT.
|
||||
*/
|
||||
extern abi_ulong mmap_next_start;
|
||||
|
||||
int target_mprotect(abi_ulong start, abi_ulong len, int prot);
|
||||
abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
|
||||
int flags, int fd, off_t offset);
|
||||
|
@ -26,7 +59,6 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
|
|||
abi_ulong new_size, unsigned long flags,
|
||||
abi_ulong new_addr);
|
||||
abi_long target_madvise(abi_ulong start, abi_ulong len_in, int advice);
|
||||
extern abi_ulong mmap_next_start;
|
||||
abi_ulong mmap_find_vma(abi_ulong, abi_ulong, abi_ulong);
|
||||
void mmap_fork_start(void);
|
||||
void mmap_fork_end(int child);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue