On 19.09.2012, at 13:29, Peter Maydell wrote:

> On 19 September 2012 01:14, Richard Henderson <r...@twiddle.net> wrote:
>> On 09/18/2012 01:18 PM, Alexander Graf wrote:
>>>> -    /* remember what pgm exeption this was */
>>>> +    /* Remember what pgm exeption this was.  */
> 
> ...if you're changing this comment then at least fix the typo
> ("exception")...
> 
>>>>      tmp = tcg_const_i32(code);
>>>>      tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUS390XState, int_pgm_code));
>>>>      tcg_temp_free_i32(tmp);
>>>>  -    tmp = tcg_const_i32(ilc);
>>>> +    tmp = tcg_const_i32(s->next_pc - s->pc);
>>> 
>>> Mind to explain this one?
>> 
>> ILC = the size of the insn.  Rather than passing ILC around into
>> gen_program_exception, get it back from the s->next_pc value that
>> we stored into DisasContext.
> 
> ...but isn't (s-next_pc - s->pc) ilc*2, not ilc? Compare this hunk
> from elsewhere in the patch:
> 
> -        tmp32_2 = tcg_const_i32(ilc * 2);
> -        tmp32_3 = tcg_const_i32(EXCP_SVC);
> +        tmp32_2 = tcg_const_i32(s->next_pc - s->pc);

Yes, it is, and hence it's correct. The exception field encodes the real 
instruction length, not the ILC bits in the opcode. Maybe the naming is 
unfortunate...


Alex


Reply via email to