qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 09/13] target-s390x: implement TRANSLATE EXTENDE


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH 09/13] target-s390x: implement TRANSLATE EXTENDED instruction
Date: Tue, 02 Jun 2015 10:07:35 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0

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

[Prev in Thread] Current Thread [Next in Thread]