diff options
author | Richard Henderson | 2019-08-22 20:59:29 +0200 |
---|---|---|
committer | Laurent Vivier | 2019-09-11 08:46:34 +0200 |
commit | 0b689da375a689efe04ad8381f607d1292471d96 (patch) | |
tree | 328abdf8d7a7d43067f61c46efc26f93952dd47c | |
parent | linux-user: Pass CPUState to MAX_RESERVED_VA (diff) | |
download | qemu-0b689da375a689efe04ad8381f607d1292471d96.tar.gz qemu-0b689da375a689efe04ad8381f607d1292471d96.tar.xz qemu-0b689da375a689efe04ad8381f607d1292471d96.zip |
linux-user/arm: Adjust MAX_RESERVED_VA for M-profile
Limit the virtual address space for M-profile cpus to 2GB,
so that we avoid all of the magic addresses in the top half
of the M-profile system map.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20190822185929.16891-3-richard.henderson@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
-rw-r--r-- | linux-user/arm/target_cpu.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/linux-user/arm/target_cpu.h b/linux-user/arm/target_cpu.h index 279ea532d5..3f79356a07 100644 --- a/linux-user/arm/target_cpu.h +++ b/linux-user/arm/target_cpu.h @@ -19,9 +19,27 @@ #ifndef ARM_TARGET_CPU_H #define ARM_TARGET_CPU_H -/* We need to be able to map the commpage. - See validate_guest_space in linux-user/elfload.c. */ -#define MAX_RESERVED_VA(CPU) 0xffff0000ul +static inline unsigned long arm_max_reserved_va(CPUState *cs) +{ + ARMCPU *cpu = ARM_CPU(cs); + + if (arm_feature(&cpu->env, ARM_FEATURE_M)) { + /* + * There are magic return addresses above 0xfe000000, + * and in general a lot of M-profile system stuff in + * the high addresses. Restrict linux-user to the + * cached write-back RAM in the system map. + */ + return 0x80000000ul; + } else { + /* + * We need to be able to map the commpage. + * See validate_guest_space in linux-user/elfload.c. + */ + return 0xffff0000ul; + } +} +#define MAX_RESERVED_VA arm_max_reserved_va static inline void cpu_clone_regs(CPUARMState *env, target_ulong newsp) { |