linux-user: Define TASK_UNMAPPED_BASE in $guest/target_mman.h
Provide default values that are as close as possible to the values used by the guest's kernel. Tested-by: Helge Deller <deller@gmx.de> Reviewed-by: Helge Deller <deller@gmx.de> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
c8fb5cf97d
commit
2d708164e0
@ -4,6 +4,16 @@
|
||||
#define TARGET_PROT_BTI 0x10
|
||||
#define TARGET_PROT_MTE 0x20
|
||||
|
||||
/*
|
||||
* arch/arm64/include/asm/processor.h:
|
||||
*
|
||||
* TASK_UNMAPPED_BASE DEFAULT_MAP_WINDOW / 4
|
||||
* DEFAULT_MAP_WINDOW DEFAULT_MAP_WINDOW_64
|
||||
* DEFAULT_MAP_WINDOW_64 UL(1) << VA_BITS_MIN
|
||||
* VA_BITS_MIN 48 (unless explicitly configured smaller)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE (1ull << (48 - 2))
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
||||
#endif
|
||||
|
@ -20,6 +20,14 @@
|
||||
#define TARGET_MS_SYNC 2
|
||||
#define TARGET_MS_INVALIDATE 4
|
||||
|
||||
/*
|
||||
* arch/alpha/include/asm/processor.h:
|
||||
*
|
||||
* TASK_UNMAPPED_BASE TASK_SIZE / 2
|
||||
* TASK_SIZE 0x40000000000UL
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE 0x20000000000ull
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
||||
#endif
|
||||
|
@ -1 +1,9 @@
|
||||
/*
|
||||
* arch/arm/include/asm/memory.h
|
||||
* TASK_UNMAPPED_BASE ALIGN(TASK_SIZE / 3, SZ_16M)
|
||||
* TASK_SIZE CONFIG_PAGE_OFFSET
|
||||
* CONFIG_PAGE_OFFSET 0xC0000000 (default in Kconfig)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE 0x40000000
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -1 +1,10 @@
|
||||
/*
|
||||
* arch/cris/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
|
||||
*
|
||||
* arch/cris/include/arch-v32/arch/processor.h
|
||||
* TASK_SIZE 0xb0000000
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE TARGET_PAGE_ALIGN(0xb0000000 / 3)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -1 +1,11 @@
|
||||
/*
|
||||
* arch/hexgon/include/asm/processor.h
|
||||
* TASK_UNMAPPED_BASE PAGE_ALIGN(TASK_SIZE / 3)
|
||||
*
|
||||
* arch/hexagon/include/asm/mem-layout.h
|
||||
* TASK_SIZE PAGE_OFFSET
|
||||
* PAGE_OFFSET 0xc0000000
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE 0x40000000
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -24,6 +24,9 @@
|
||||
#define TARGET_MS_ASYNC 2
|
||||
#define TARGET_MS_INVALIDATE 4
|
||||
|
||||
/* arch/parisc/include/asm/processor.h: DEFAULT_MAP_BASE32 */
|
||||
#define TASK_UNMAPPED_BASE 0x40000000
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
||||
#endif
|
||||
|
@ -1 +1,14 @@
|
||||
/*
|
||||
* arch/x86/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE __TASK_UNMAPPED_BASE(TASK_SIZE_LOW)
|
||||
* __TASK_UNMAPPED_BASE(S) PAGE_ALIGN(S / 3)
|
||||
*
|
||||
* arch/x86/include/asm/page_32_types.h:
|
||||
* TASK_SIZE_LOW TASK_SIZE
|
||||
* TASK_SIZE __PAGE_OFFSET
|
||||
* __PAGE_OFFSET CONFIG_PAGE_OFFSET
|
||||
* CONFIG_PAGE_OFFSET 0xc0000000 (default in Kconfig)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE 0x40000000
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -1 +1,9 @@
|
||||
/*
|
||||
* arch/loongarch/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE PAGE_ALIGN(TASK_SIZE / 3)
|
||||
* TASK_SIZE64 0x1UL << (... ? VA_BITS : ...)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE \
|
||||
TARGET_PAGE_ALIGN((1ull << TARGET_VIRT_ADDR_SPACE_BITS) / 3)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -1 +1,4 @@
|
||||
/* arch/m68k/include/asm/processor.h */
|
||||
#define TASK_UNMAPPED_BASE 0xC0000000
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -1 +1,9 @@
|
||||
/*
|
||||
* arch/microblaze/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3)
|
||||
* TASK_SIZE CONFIG_KERNEL_START
|
||||
* CONFIG_KERNEL_START 0xc0000000 (default in Kconfig)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE 0x48000000
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -14,6 +14,13 @@
|
||||
#define TARGET_MAP_STACK 0x40000
|
||||
#define TARGET_MAP_HUGETLB 0x80000
|
||||
|
||||
/*
|
||||
* arch/mips/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE PAGE_ALIGN(TASK_SIZE / 3)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE \
|
||||
TARGET_PAGE_ALIGN((1ull << TARGET_VIRT_ADDR_SPACE_BITS) / 3)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
||||
#endif
|
||||
|
@ -1 +1,8 @@
|
||||
/*
|
||||
* arch/nios2/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE PAGE_ALIGN(TASK_SIZE / 3)
|
||||
* TASK_SIZE 0x7FFF0000UL
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE TARGET_PAGE_ALIGN(0x7FFF0000 / 3)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -1 +1,8 @@
|
||||
/*
|
||||
* arch/openrisc/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3)
|
||||
* TASK_SIZE (0x80000000UL)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE 0x30000000
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -4,6 +4,19 @@
|
||||
#define TARGET_MAP_NORESERVE 0x40
|
||||
#define TARGET_MAP_LOCKED 0x80
|
||||
|
||||
/*
|
||||
* arch/powerpc/include/asm/task_size_64.h
|
||||
* TASK_UNMAPPED_BASE_USER32 (PAGE_ALIGN(TASK_SIZE_USER32 / 4))
|
||||
* TASK_UNMAPPED_BASE_USER64 (PAGE_ALIGN(DEFAULT_MAP_WINDOW_USER64 / 4))
|
||||
* TASK_SIZE_USER32 (0x0000000100000000UL - (1 * PAGE_SIZE))
|
||||
* DEFAULT_MAP_WINDOW_USER64 TASK_SIZE_64TB (with 4k pages)
|
||||
*/
|
||||
#ifdef TARGET_PPC64
|
||||
#define TASK_UNMAPPED_BASE 0x0000100000000000ull
|
||||
#else
|
||||
#define TASK_UNMAPPED_BASE 0x40000000
|
||||
#endif
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
||||
#endif
|
||||
|
@ -1 +1,8 @@
|
||||
/*
|
||||
* arch/loongarch/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE PAGE_ALIGN(TASK_SIZE / 3)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE \
|
||||
TARGET_PAGE_ALIGN((1ull << (TARGET_VIRT_ADDR_SPACE_BITS - 1)) / 3)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -1 +1,11 @@
|
||||
/*
|
||||
* arch/s390/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE (... : (_REGION2_SIZE >> 1))
|
||||
*
|
||||
* arch/s390/include/asm/pgtable.h:
|
||||
* _REGION2_SIZE (1UL << _REGION2_SHIFT)
|
||||
* _REGION2_SHIFT 42
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE (1ull << 41)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -1 +1,5 @@
|
||||
/* arch/sh/include/asm/processor_32.h */
|
||||
#define TASK_UNMAPPED_BASE \
|
||||
TARGET_PAGE_ALIGN((1u << TARGET_VIRT_ADDR_SPACE_BITS) / 3)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -5,6 +5,20 @@
|
||||
#define TARGET_MAP_LOCKED 0x100
|
||||
#define TARGET_MAP_GROWSDOWN 0x0200
|
||||
|
||||
/*
|
||||
* arch/sparc/include/asm/page_64.h:
|
||||
* TASK_UNMAPPED_BASE (test_thread_flag(TIF_32BIT) ? \
|
||||
* _AC(0x0000000070000000,UL) : \
|
||||
* VA_EXCLUDE_END)
|
||||
* But VA_EXCLUDE_END is > 0xffff800000000000UL which doesn't work
|
||||
* in userland emulation.
|
||||
*/
|
||||
#ifdef TARGET_ABI32
|
||||
#define TASK_UNMAPPED_BASE 0x70000000
|
||||
#else
|
||||
#define TASK_UNMAPPED_BASE (1ull << (TARGET_VIRT_ADDR_SPACE_BITS - 2))
|
||||
#endif
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
||||
#endif
|
||||
|
@ -18,20 +18,6 @@
|
||||
#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).
|
||||
|
@ -1 +1,13 @@
|
||||
/*
|
||||
* arch/x86/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE __TASK_UNMAPPED_BASE(TASK_SIZE_LOW)
|
||||
* __TASK_UNMAPPED_BASE(S) PAGE_ALIGN(S / 3)
|
||||
*
|
||||
* arch/x86/include/asm/page_64_types.h:
|
||||
* TASK_SIZE_LOW DEFAULT_MAP_WINDOW
|
||||
* DEFAULT_MAP_WINDOW ((1UL << 47) - PAGE_SIZE)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE \
|
||||
TARGET_PAGE_ALIGN((1ull << TARGET_VIRT_ADDR_SPACE_BITS) / 3)
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
@ -14,6 +14,12 @@
|
||||
#define TARGET_MAP_STACK 0x40000
|
||||
#define TARGET_MAP_HUGETLB 0x80000
|
||||
|
||||
/*
|
||||
* arch/xtensa/include/asm/processor.h:
|
||||
* TASK_UNMAPPED_BASE (TASK_SIZE / 2)
|
||||
*/
|
||||
#define TASK_UNMAPPED_BASE (1u << (TARGET_VIRT_ADDR_SPACE_BITS - 1))
|
||||
|
||||
#include "../generic/target_mman.h"
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user