[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 4/8] accel/tcg: Add guest_base_signed_addr32 for user-only
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH 4/8] accel/tcg: Add guest_base_signed_addr32 for user-only |
Date: |
Tue, 12 Oct 2021 00:06:59 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0 |
On 10/10/21 19:43, Richard Henderson wrote:
> While the host may prefer to treat 32-bit addresses as signed,
> there are edge cases of guests that cannot be implemented with
> addresses 0x7fff_ffff and 0x8000_0000 being non-consecutive.
>
> Therefore, default to guest_base_signed_addr32 false, and allow
> probe_guest_base to determine whether it is possible to set it
> to true. A tcg backend which sets TCG_TARGET_SIGNED_ADDR32 will
> have to cope with either setting for user-only.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> include/exec/cpu-all.h | 16 ++++++++++++++++
> include/exec/cpu_ldst.h | 3 ++-
> bsd-user/main.c | 4 ++++
> linux-user/main.c | 3 +++
> 4 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
> index 32cfb634c6..80b5e17329 100644
> --- a/include/exec/cpu-all.h
> +++ b/include/exec/cpu-all.h
> @@ -146,6 +146,7 @@ static inline void tswap64s(uint64_t *s)
>
> #if defined(CONFIG_USER_ONLY)
> #include "exec/user/abitypes.h"
> +#include "tcg-target-sa32.h"
Unrelated but this header could be simplified by moving this
block to a new header such "exec/user/address.h".
>
> /* On some host systems the guest address space is reserved on the host.
> * This allows the guest address space to be offset to a convenient location.
> @@ -154,6 +155,21 @@ extern uintptr_t guest_base;
> extern bool have_guest_base;
> extern unsigned long reserved_va;
>
> +#if TCG_TARGET_SIGNED_ADDR32 && TARGET_LONG_BITS == 32
> +extern bool guest_base_signed_addr32;
> +#else
> +#define guest_base_signed_addr32 false
> +#endif
> +
> +static inline void set_guest_base_signed_addr32(void)
> +{
> +#ifdef guest_base_signed_addr32
> + qemu_build_not_reached();
> +#else
> + guest_base_signed_addr32 = true;
> +#endif
> +}
> +
> /*
> * Limit the guest addresses as best we can.
> *
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
- Re: [PATCH 1/8] tcg: Add TCG_TARGET_SIGNED_ADDR32, (continued)
- [PATCH 3/8] accel/tcg: Support TCG_TARGET_SIGNED_ADDR32 for softmmu, Richard Henderson, 2021/10/10
- [PATCH 5/8] linux-user: Support TCG_TARGET_SIGNED_ADDR32, Richard Henderson, 2021/10/10
- [PATCH 4/8] accel/tcg: Add guest_base_signed_addr32 for user-only, Richard Henderson, 2021/10/10
- [PATCH 2/8] accel/tcg: Split out g2h_tlbe, Richard Henderson, 2021/10/10
- [PATCH 8/8] target/riscv: Support TCG_TARGET_SIGNED_ADDR32, Richard Henderson, 2021/10/10
- [PATCH 6/8] tcg/aarch64: Support TCG_TARGET_SIGNED_ADDR32, Richard Henderson, 2021/10/10