On 2017-05-09 11:07, Richard Henderson wrote:
> From: Eric Bischoff <[email protected]>
>
> Reviewed-by: Aurelien Jarno <[email protected]>
> Signed-off-by: Eric Bischoff <[email protected]>
> Message-Id: <[email protected]>
> [rth: Combine the two via insn->data; free the address temps.]
> Signed-off-by: Richard Henderson <[email protected]>
> ---
> target/s390x/insn-data.def | 4 +++-
> target/s390x/translate.c | 42 ++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 45 insertions(+), 1 deletion(-)
[snip]
> diff --git a/target/s390x/translate.c b/target/s390x/translate.c
> index 2b66a4e..8de0177 100644
> --- a/target/s390x/translate.c
> +++ b/target/s390x/translate.c
> @@ -2559,6 +2559,7 @@ static ExitStatus op_lctlg(DisasContext *s, DisasOps *o)
> tcg_temp_free_i32(r3);
> return NO_EXIT;
> }
> +
> static ExitStatus op_lra(DisasContext *s, DisasOps *o)
> {
> check_privileged(s);
> @@ -2759,6 +2760,31 @@ static ExitStatus op_lm64(DisasContext *s, DisasOps *o)
> return NO_EXIT;
> }
>
> +static ExitStatus op_lpd(DisasContext *s, DisasOps *o)
> +{
> + TCGv_i64 a1, a2;
> + TCGMemOp mop = s->insn->data;
> +
> + /* In a parallel context, stop the world and single step. */
> + if (parallel_cpus) {
> + potential_page_fault(s);
> + gen_helper_exit_atomic(cpu_env);
> + return EXIT_NORETURN;
> + }
One small additional comment about this patch I haven't spotted at the
first review. The exit_atomic helper is properly restoring the CPU state
passing the return address to cpu_loop_exit_atomic, so I believe the
potential_page_fault call is not necessary. That said, it doesn't hurt
either.
Aurelien
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
[email protected] http://www.aurel32.net