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 <richard.hender...@linaro.org> r~