linux-user/aarch64: Clear tpidr2_el0 if CLONE_SETTLS
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220708151540.18136-34-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
78cb977666
commit
95aa4fdd58
|
@ -34,10 +34,13 @@ static inline void cpu_clone_regs_parent(CPUARMState *env, unsigned flags)
|
||||||
|
|
||||||
static inline void cpu_set_tls(CPUARMState *env, target_ulong newtls)
|
static inline void cpu_set_tls(CPUARMState *env, target_ulong newtls)
|
||||||
{
|
{
|
||||||
/* Note that AArch64 Linux keeps the TLS pointer in TPIDR; this is
|
/*
|
||||||
|
* Note that AArch64 Linux keeps the TLS pointer in TPIDR; this is
|
||||||
* different from AArch32 Linux, which uses TPIDRRO.
|
* different from AArch32 Linux, which uses TPIDRRO.
|
||||||
*/
|
*/
|
||||||
env->cp15.tpidr_el[0] = newtls;
|
env->cp15.tpidr_el[0] = newtls;
|
||||||
|
/* TPIDR2_EL0 is cleared with CLONE_SETTLS. */
|
||||||
|
env->cp15.tpidr2_el0 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline abi_ulong get_sp_from_cpustate(CPUARMState *state)
|
static inline abi_ulong get_sp_from_cpustate(CPUARMState *state)
|
||||||
|
|
Loading…
Reference in New Issue