On 12/22/2013 03:50 AM, Aurelien Jarno wrote:
> +static inline target_ulong cpu_read_sr(CPUSH4State *env)
> +{
> +    return (env->sr & ~(1u << SR_T)) | (env->sr_t << SR_T);
> +}
> +
> +static inline void cpu_write_sr(CPUSH4State *env, target_ulong sr)
> +{
> +    env->sr_t = sr & (1u << SR_T);
> +    env->sr = sr & ~(1u << SR_T);
> +}
...
> +static void gen_read_sr(TCGv dst)
> +{
> +    tcg_gen_andi_i32(dst, cpu_sr, ~(1u << SR_T));
> +    tcg_gen_or_i32(dst, dst, cpu_sr_t);
> +}
> +
> +static void gen_write_sr(TCGv src)
> +{
> +    tcg_gen_andi_i32(cpu_sr, src, ~(1u << SR_T));
> +    tcg_gen_andi_i32(cpu_sr_t, src, (1u << SR_T));
> +}

If the writer always clears SR_T when assigning to env->sr,
then there's no need to clear it when reading from env->sr.
Or vice versa.

Otherwise,

Reviewed-by: Richard Henderson <r...@twiddle.net>


r~

Reply via email to