On 06/01/2015 02:24 PM, Aurelien Jarno wrote:
> +/* TRANSLATE EXTENDED */
> +    C(0xb2a5, TRE,     RRE,   Z,   0, 0, 0, 0, tre, 0)
...
> +static ExitStatus op_tre(DisasContext *s, DisasOps *o)
> +{
> +    TCGv_i32 r1 = tcg_const_i32(get_field(s->fields, r1));
> +    TCGv_i32 r2 = tcg_const_i32(get_field(s->fields, r2));
> +    potential_page_fault(s);
> +    gen_helper_tre(cpu_env, r1, r2);
> +    tcg_temp_free_i32(r1);
> +    tcg_temp_free_i32(r2);
> +    set_cc_static(s);
> +    return NO_EXIT;
> +}

Missing the specification exception for odd r1.

Easily fixable by using prep_r1_P.  You don't necessarily have to do anything
else -- merely prepping out+out2 are sufficient.

But why don't we just pass and return (most) of the data to the helper?  Like

  C(0xb2a5, TRE,     RRE,   Z,   0, r2, r1_P, 0, tre, 0)

  potential_page_fault(s);
  gen_helper_tre(o->out, cpu_env, o->out, o->out2, o->in2);
  return_low128(o->out2);
  set_cc_static(s);


r~

Reply via email to