From patchwork Sun Jun 4 17:34:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 770973 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wglg12Ryqz9s03 for ; Mon, 5 Jun 2017 03:43:41 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KlBAYHR1"; dkim-atps=neutral Received: from localhost ([::1]:57857 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZYx-0006ZF-4A for incoming@patchwork.ozlabs.org; Sun, 04 Jun 2017 13:43:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50161) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRH-0007Ux-BO for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRG-00037C-DK for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:43 -0400 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:34454) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRG-00036f-7J for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:42 -0400 Received: by mail-pg0-x242.google.com with SMTP id v14so3629560pgn.1 for ; Sun, 04 Jun 2017 10:35:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=cJSBCa6m3VTSID8LQOziHwe2t8jHexyqfhALclid3wg=; b=KlBAYHR17IP5fnMgRhFSV0oqpFFWC34R7Yw/JSHZIcXc7b2RkF7uU9pV8VaKlOdsaL 4aTHWcCvC9RT1eEkdF8E2UIxLyzvJm5QBdEk/bwzxc5Pe1/tsosTrT5l4o0TW3gWNIo6 nJtSUVro2jixrndJc9DvjXqkmIbz3d220t2FKwbDB1Jy74xtQqT+bGuaevXmKGqEfrO0 5F/JSxfeCqWQL7GfGn78aZSul5bqJME+EIt7sCOZyLnc2mueYVPrvnIeCzR6IeY0nogB zzUViNC17c0DahlGwUnkVJ+8HtUowWQJpYXlXuV7z3UBibEQSW4q3wSpr92G9496tgOh p21g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=cJSBCa6m3VTSID8LQOziHwe2t8jHexyqfhALclid3wg=; b=GXx8yyi09GbYSxFdCmEBsUQegiSnDRxunS+Uuhu+lEwA/E5J48hygkObC6mhniEj+Z pbn2/G9u3fVXMRhW1S7TvFQWyVZHDiY2PN6o0wpmllj130TqdJMEhHT79Ir3aYI8tev6 lEx07McDlOxmdcLV+bSIhfFve2Lgxd5BHc6JyKMinVglfJab3Sh/6gntrdndmwqythrP 3fHQEMVSImJzdnFx11SCRPtK5lwIesrCTdfEAGyqjObmuXA9Y/cS0JVSeQpbubqIL1tj KyOUeJBxqb77Z016yFwDdT5wVNESQ7mvFh4ehG6xLFFFOTGdchzDtviRoLfj6nhijx9J ct2Q== X-Gm-Message-State: AODbwcATfOVDC6/hn32Z9O5pEu5JNe9gWIYJNWTRVWcK7SHMgR2lUR26 oM4ShPJ/wufMxx8Nzp8= X-Received: by 10.98.88.196 with SMTP id m187mr1108685pfb.87.1496597741206; Sun, 04 Jun 2017 10:35:41 -0700 (PDT) Received: from bigtime.ASUS (cpe-98-155-27-246.hawaii.res.rr.com. [98.155.27.246]) by smtp.gmail.com with ESMTPSA id j191sm52854419pgc.53.2017.06.04.10.35.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:21 -0700 Message-Id: <20170604173509.29684-22-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170604173509.29684-1-rth@twiddle.net> References: <20170604173509.29684-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::242 Subject: [Qemu-devel] [PULL 21/69] target/s390x: Use unwind data for helper_tr X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, aurelien@aurel32.net Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 25 +++++++++++++++---------- target/s390x/translate.c | 1 - 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 0701e10..b37a963 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -723,19 +723,24 @@ void HELPER(unpk)(CPUS390XState *env, uint32_t len, uint64_t dest, } } -void HELPER(tr)(CPUS390XState *env, uint32_t len, uint64_t array, - uint64_t trans) +static void do_helper_tr(CPUS390XState *env, uint32_t len, uint64_t array, + uint64_t trans, uintptr_t ra) { - int i; + uint32_t i; for (i = 0; i <= len; i++) { - uint8_t byte = cpu_ldub_data(env, array + i); - uint8_t new_byte = cpu_ldub_data(env, trans + byte); - - cpu_stb_data(env, array + i, new_byte); + uint8_t byte = cpu_ldub_data_ra(env, array + i, ra); + uint8_t new_byte = cpu_ldub_data_ra(env, trans + byte, ra); + cpu_stb_data_ra(env, array + i, new_byte, ra); } } +void HELPER(tr)(CPUS390XState *env, uint32_t len, uint64_t array, + uint64_t trans) +{ + return do_helper_tr(env, len, array, trans, GETPC()); +} + uint64_t HELPER(tre)(CPUS390XState *env, uint64_t array, uint64_t len, uint64_t trans) { @@ -1265,9 +1270,9 @@ uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, uint64_t v1, get_address(env, 0, b2, d2), 0); break; case 0xc00: - helper_tr(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); - break; + do_helper_tr(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); + return cc; case 0xd00: cc = helper_trt(env, l, get_address(env, 0, b1, d1), get_address(env, 0, b2, d2)); diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 4978f19..1842cc3 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4065,7 +4065,6 @@ static ExitStatus op_tprot(DisasContext *s, DisasOps *o) static ExitStatus op_tr(DisasContext *s, DisasOps *o) { TCGv_i32 l = tcg_const_i32(get_field(s->fields, l1)); - potential_page_fault(s); gen_helper_tr(cpu_env, l, o->addr1, o->in2); tcg_temp_free_i32(l); set_cc_static(s);