From patchwork Wed May 24 19:22:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 9746779 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 41D39601C2 for ; Wed, 24 May 2017 19:31:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2F55728998 for ; Wed, 24 May 2017 19:31:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 22707289C9; Wed, 24 May 2017 19:31:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 91C9728998 for ; Wed, 24 May 2017 19:31:51 +0000 (UTC) Received: from localhost ([::1]:56485 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dDc0c-0000dE-Ey for patchwork-qemu-devel@patchwork.kernel.org; Wed, 24 May 2017 15:31:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45438) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dDbsN-0001yl-Nk for qemu-devel@nongnu.org; Wed, 24 May 2017 15:23:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dDbsM-0001Po-PF for qemu-devel@nongnu.org; Wed, 24 May 2017 15:23:19 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:34226) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dDbsM-0001Oh-L5 for qemu-devel@nongnu.org; Wed, 24 May 2017 15:23:18 -0400 Received: by mail-qt0-x242.google.com with SMTP id l39so27574924qtb.1 for ; Wed, 24 May 2017 12:23:18 -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=z0TeWWa00LENRMxWjwuItRpQ6+E2Aw3L9ce9t3n2SpQ=; b=LsHhSRX1HUT5LVsZNhZMw9askZcbG+rFweVsD2DDmVjN0Gcz8UmVmjnOZMswB8GgWM Ans7ngk5Qe8/K6Xvjb0Okf1gOmC9CRaOyNKDOlNt89l3PXZMYugaZEPbmUOJUF8bwmmC FTbEvG5gLbRzrZ0vJxQD/nuqWSEnjz7S02/4/BnwrSFSRvnvAWW0KVrxWLuRqiKFynAm 6DSukFRAQwvPzOd0kiuHBrmH7tf0JjDLnmviN/KghENe50OrFz89A4cdXMrsitg3JC6/ YUsGyxJvGXs0O8ScLEbceMzbZD5C2NUSaL03CpB/NoPNdM5OTmMJBURx/y35LuOHmjQZ Udsw== 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=z0TeWWa00LENRMxWjwuItRpQ6+E2Aw3L9ce9t3n2SpQ=; b=Xro6Yw2zNB4qQ3D0qwtQj7VqtJUilMEZOfbY0v7WI+ONceYCh78nztCkE39ME27xTv gIAO73B8X8eWGnVIexkO1olV21QcM8x5fbmSGl09u1y/aGYnvQVvOZbXR2zsMNO9Ff2C l7uBrdGUqkjY4zcodi1B6r3RDPv1R1rhh3HqLYIYTLn5nCIx5/E+wKIU5dk2sYardlxz qvO+DSCCYC3L6FJdFZ26iCPEEUU86iGQADvYzkpjQAm89u2YNN9FDFTDcTvzkChBMBtX jBsQQgCSGBwE1qiaUY1UqmaquIk/vh+Hd4APGaO5JIC37bnBkb3Njq7/0m8k6HxVMwrD K87w== X-Gm-Message-State: AODbwcD+t7NTFKxUO6jH6XIeuOj/jj90TQEKqFWSiaVRhzOYtmhq+yQk ji6eBcqjo2FPqP0xjm8= X-Received: by 10.237.37.154 with SMTP id x26mr38749172qtc.133.1495653797977; Wed, 24 May 2017 12:23:17 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id b23sm3296240qkb.31.2017.05.24.12.23.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 24 May 2017 12:23:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 24 May 2017 12:22:33 -0700 Message-Id: <20170524192246.15905-21-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170524192246.15905-1-rth@twiddle.net> References: <20170524192246.15905-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v2 20/33] 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: thuth@redhat.com, aurelien@aurel32.net Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Richard Henderson Reviewed-by: Aurelien Jarno --- 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);