On 09/22/2017 11:00 AM, Peter Maydell wrote:
> +void HELPER(v7m_blxns)(CPUARMState *env, uint32_t dest)
> +{
...
> + if (dest & 1) {
> + /* target is Secure, so this is just a normal BLX,
> + * except that the low bit doesn't indicate Thumb/not.
> + */
> + env->regs[14] = nextinst;
> + env->thumb = 1;
> + env->regs[15] = dest & ~1;
> + return;
> + }
...
> + switch_v7m_security_state(env, dest & 1);
> + env->thumb = 1;
> + env->regs[15] = dest & ~1;
dest & 1 is known to be 0.
> +static inline void gen_blxns(DisasContext *s, int rm)
> +{
> + TCGv_i32 var = load_reg(s, rm);
> +
> + /* We don't need to sync condexec state, for the same reason as blxns.
s/blxns/bxns/ ?
Otherwise,
Reviewed-by: Richard Henderson <[email protected]>
r~