[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 19/20] target/arm: Rebuild hflags for M-profile.
From: |
Alex Bennée |
Subject: |
Re: [PATCH v6 19/20] target/arm: Rebuild hflags for M-profile. |
Date: |
Mon, 14 Oct 2019 20:08:41 +0100 |
User-agent: |
mu4e 1.3.5; emacs 27.0.50 |
Richard Henderson <address@hidden> writes:
> Continue setting, but not relying upon, env->hflags.
>
> Signed-off-by: Richard Henderson <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
> ---
> target/arm/m_helper.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/target/arm/m_helper.c b/target/arm/m_helper.c
> index 27cd2f3f96..f2512e448e 100644
> --- a/target/arm/m_helper.c
> +++ b/target/arm/m_helper.c
> @@ -494,6 +494,7 @@ void HELPER(v7m_bxns)(CPUARMState *env, uint32_t dest)
> switch_v7m_security_state(env, dest & 1);
> env->thumb = 1;
> env->regs[15] = dest & ~1;
> + arm_rebuild_hflags(env);
> }
>
> void HELPER(v7m_blxns)(CPUARMState *env, uint32_t dest)
> @@ -555,6 +556,7 @@ void HELPER(v7m_blxns)(CPUARMState *env, uint32_t dest)
> switch_v7m_security_state(env, 0);
> env->thumb = 1;
> env->regs[15] = dest;
> + arm_rebuild_hflags(env);
> }
>
> static uint32_t *get_v7m_sp_ptr(CPUARMState *env, bool secure, bool
> threadmode,
> @@ -895,6 +897,7 @@ static void v7m_exception_taken(ARMCPU *cpu, uint32_t lr,
> bool dotailchain,
> env->regs[14] = lr;
> env->regs[15] = addr & 0xfffffffe;
> env->thumb = addr & 1;
> + arm_rebuild_hflags(env);
> }
>
> static void v7m_update_fpccr(CPUARMState *env, uint32_t frameptr,
> @@ -1765,6 +1768,7 @@ static void do_v7m_exception_exit(ARMCPU *cpu)
>
> /* Otherwise, we have a successful exception exit. */
> arm_clear_exclusive(env);
> + arm_rebuild_hflags(env);
> qemu_log_mask(CPU_LOG_INT, "...successful exception return\n");
> }
>
> @@ -1837,6 +1841,7 @@ static bool do_v7m_function_return(ARMCPU *cpu)
> xpsr_write(env, 0, XPSR_IT);
> env->thumb = newpc & 1;
> env->regs[15] = newpc & ~1;
> + arm_rebuild_hflags(env);
>
> qemu_log_mask(CPU_LOG_INT, "...function return successful\n");
> return true;
> @@ -1959,6 +1964,7 @@ static bool v7m_handle_execute_nsc(ARMCPU *cpu)
> switch_v7m_security_state(env, true);
> xpsr_write(env, 0, XPSR_IT);
> env->regs[15] += 4;
> + arm_rebuild_hflags(env);
> return true;
>
> gen_invep:
--
Alex Bennée
- [PATCH v6 15/20] target/arm: Add HELPER(rebuild_hflags_{a32, a64, m32}), (continued)
- [PATCH v6 15/20] target/arm: Add HELPER(rebuild_hflags_{a32, a64, m32}), Richard Henderson, 2019/10/11
- [PATCH v6 17/20] target/arm: Rebuild hflags at MSR writes, Richard Henderson, 2019/10/11
- [PATCH v6 16/20] target/arm: Rebuild hflags at EL changes, Richard Henderson, 2019/10/11
- [PATCH v6 18/20] target/arm: Rebuild hflags at CPSR writes, Richard Henderson, 2019/10/11
- [PATCH v6 19/20] target/arm: Rebuild hflags for M-profile., Richard Henderson, 2019/10/11
- Re: [PATCH v6 19/20] target/arm: Rebuild hflags for M-profile.,
Alex Bennée <=
- [PATCH v6 20/20] target/arm: Rely on hflags correct in cpu_get_tb_cpu_state, Richard Henderson, 2019/10/11
- Re: [PATCH v6 00/20] target/arm: Reduce overhead of cpu_get_tb_cpu_state, Peter Maydell, 2019/10/17