[Top][All Lists]

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

Re: [PATCH v2] s390x/tcg: MVCL: Exit to main loop if requested

From: Richard Henderson
Subject: Re: [PATCH v2] s390x/tcg: MVCL: Exit to main loop if requested
Date: Wed, 2 Oct 2019 12:34:01 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0

On 10/2/19 9:47 AM, Richard Henderson wrote:
> There is still the special case of EXECUTE of MVCL, which I suspect must have
> some failure mode that we're not considering -- the setting and clearing of
> ex_value can't help.  I have a suspicion that we need to special case that
> within helper_ex, just so that ex_value doesn't enter into it.

I had a walk and a think.  I now believe that we're ok:

(1) TB with EXECUTE runs, at address Ae

    - env->psw_addr stored with Ae.
    - helper_ex() runs, memory address Am computed
      from D2a(X2a,B2a) or from psw.addr+RI2.
    - env->ex_value stored with memory value modified by R1a

(2) TB of executee runs,

    - env->ex_value stored with 0.
    - helper_mvcl() runs, using and updating R1b, R1b+1, R2b, R2b+1.

(3a) helper_mvcl() completes,

     - TB of executee continues, psw.addr += ilen.
     - Next instruction is the one following EXECUTE.

(3b) helper_mvcl() exits to main loop,

     - cpu_loop_exit_restore() unwinds psw.addr = Ae.
     - Next instruction is the EXECUTE itself...
     - goto 1.

If we can agree that the result is undefined if registers R1a, X2a, B2a overlap
R1b, R1b+1, R2b, R2b+1, or if the memory address Am is modified by the
interrupted MVCL, then we're ok.


reply via email to

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