From patchwork Wed Jun 7 00:30:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 772121 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 3wj93s01m0z9s82 for ; Wed, 7 Jun 2017 10:51:36 +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="goVsvzLP"; dkim-atps=neutral Received: from localhost ([::1]:40639 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPCA-0003o5-MV for incoming@patchwork.ozlabs.org; Tue, 06 Jun 2017 20:51:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33897) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtJ-0002mG-Iv for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtI-00022d-Bv for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:05 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:36008) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtI-00022U-8H for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:04 -0400 Received: by mail-qt0-x242.google.com with SMTP id s33so19304262qtg.3 for ; Tue, 06 Jun 2017 17:32:04 -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=3z3myeUSmxEIcLGHaj0+FMkuciy3gt9ikRwgDBqESZ8=; b=goVsvzLPb+tiS9TffjZdSR3QPR6KcxH/J/jgnk6CfwYK75/Dtf04ehN1xmgSyQEzrz sdvBPOdnpe6Q896TqJIP2QzshmzZS7aK6mcORhoAdT3SJUi3jpyhy7dATPQyKvPdCYUz lhOrtR53w/Ej2G+Un3k53MRMhiiKwAnHF1p/V5wgqgQzrSxQ138oiN/haWCuH08+edEP n4KWz0kP2SJtrXQs8aY5Yw/X+jIqslV7Q1ZoyQK6IGrzXThPoz22+DfKFdWA/RMVOPuJ mp6mVPmmnWaxeBiLiueF97IyYHEMB2K8ScltInyqihgyyTBtK7/y9mnTmnsBbIri5Nxs CB0A== 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=3z3myeUSmxEIcLGHaj0+FMkuciy3gt9ikRwgDBqESZ8=; b=XQqfcSpW3S6d4qUR19UCf/7oFDqpnCswekFwpE9m7BxeSO04Agi8LR0W2dulvrVMO/ 1R3Lci3P+KKBdQN707hWrUrFgiK+vv5yvrF+WN9OgfXDaQbyPjIGyoCmfSoRGyeZG4JV sKI/Wvt4igpWmttuow3A1msvx59v119oRVHCVQdEeQN6x1eRgWJSPb//rsyk/l0tLXVH WxsR1RdJSysnFMFKJJS/epWKOJW7PJNCaa2C7p5Nwd0TLmCHv4ryGO5hZUj1CIK3Qo5j FMHvFUaGg8FzK0ZV6sumKz5pwQZwcItar0PQcXY7TKrv6GspZUE18xRjcJvcATKogu7J zbyA== X-Gm-Message-State: AODbwcDcOVQ6y6078g3xYZPhDVa5p4PgW1/bAtut7MzaIBn0qIG+LzQz jK9EEHGw4gc+sRudDF4= X-Received: by 10.200.58.163 with SMTP id x32mr6924866qte.110.1496795523550; Tue, 06 Jun 2017 17:32:03 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:39 -0700 Message-Id: <20170607003119.14778-31-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-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] [PULL v2 30/70] target/s390x: Use unwind data for helper_mvcs/mvcp 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: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 8 ++++++-- target/s390x/translate.c | 2 -- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 17d8257..a73d486 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1082,6 +1082,7 @@ uint32_t HELPER(csp)(CPUS390XState *env, uint32_t r1, uint64_t r2) uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_t a2) { + uintptr_t ra = GETPC(); int cc = 0, i; HELPER_LOG("%s: %16" PRIx64 " %16" PRIx64 " %16" PRIx64 "\n", @@ -1095,7 +1096,8 @@ uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_t a2) /* XXX replace w/ memcpy */ for (i = 0; i < l; i++) { - cpu_stb_secondary(env, a1 + i, cpu_ldub_primary(env, a2 + i)); + uint8_t x = cpu_ldub_primary_ra(env, a2 + i, ra); + cpu_stb_secondary_ra(env, a1 + i, x, ra); } return cc; @@ -1103,6 +1105,7 @@ uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_t a2) uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_t a2) { + uintptr_t ra = GETPC(); int cc = 0, i; HELPER_LOG("%s: %16" PRIx64 " %16" PRIx64 " %16" PRIx64 "\n", @@ -1116,7 +1119,8 @@ uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_t a2) /* XXX replace w/ memcpy */ for (i = 0; i < l; i++) { - cpu_stb_primary(env, a1 + i, cpu_ldub_secondary(env, a2 + i)); + uint8_t x = cpu_ldub_secondary_ra(env, a2 + i, ra); + cpu_stb_primary_ra(env, a1 + i, x, ra); } return cc; diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 80b08b9..e99fbd9 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2894,7 +2894,6 @@ static ExitStatus op_mvcp(DisasContext *s, DisasOps *o) { int r1 = get_field(s->fields, l1); check_privileged(s); - potential_page_fault(s); gen_helper_mvcp(cc_op, cpu_env, regs[r1], o->addr1, o->in2); set_cc_static(s); return NO_EXIT; @@ -2904,7 +2903,6 @@ static ExitStatus op_mvcs(DisasContext *s, DisasOps *o) { int r1 = get_field(s->fields, l1); check_privileged(s); - potential_page_fault(s); gen_helper_mvcs(cc_op, cpu_env, regs[r1], o->addr1, o->in2); set_cc_static(s); return NO_EXIT;