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~