From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496597841257653.0581239812361; Sun, 4 Jun 2017 10:37:21 -0700 (PDT) Received: from localhost ([::1]:57833 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSo-00007A-Nt for importer@patchew.org; Sun, 04 Jun 2017 13:37:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49932) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZQr-0007BJ-Uv for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQp-0002br-8q for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:17 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:33360) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQp-0002bP-12 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:15 -0400 Received: by mail-pf0-x241.google.com with SMTP id f27so18145585pfe.0 for ; Sun, 04 Jun 2017 10:35:14 -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.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:13 -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=sC4t7m0fORgdxqz2TwAg0BAcCgXjt2xp7jQPfgahV8w=; b=pSiWwsTH/u2JwIAKUioze6tmtgvVMJGQm+Tvn+YZ7pC+rCJjH2wzTTjJtM1WYeF0gi OkNGQl91yp1QjAseD9fiv5xz6juGTUp6ltPsJrMHa8bbxk3ezMlApfnLEP6qWoCqJOgJ gRTQcPE6rdi2QxFLn6wB3fwsW5rmR1sKjg0vuZwAQfD1w1ZvunGJXZEU4e/Hq35t6ryH tEYToCOaLVUTAqzsVp3upw8f1Sem+vBP+b2tBpeWussc+ZMaUVC1DEVtllf9GsP6qYox HVs8Mpy2gAO21w50SJyQV7r3ucOCVXvklPCLb4W7Y8+j6nPaz3JB9gCArOMHsyABFdQO 7RGg== 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=sC4t7m0fORgdxqz2TwAg0BAcCgXjt2xp7jQPfgahV8w=; b=pYJqOPyUL80duNYdeBXTdVW3GDsZIfY6Z6fIbKzDe1/oKCBOpZnj2fct2yj5L52VM9 sCel2WSnCv6Gof7yseE/Qdp4w1ynxF+YT+/yaLzD5bGKvh16GwzPK8v8SyNHRvEjCrl9 WFJj8uX1N7AYwGymvgARlO5l/6RA6a0jJxy509ZN0ArZvKpCuvfLyHbnacGN+i6NB+Jm Ylew6PwClwQOZZS1h3f+xiZLBYvhCTbi35SVo21OS9wLileuXMVPj0WSFPB5IGqNtwvF osSb/2l3s5y5l6kJPOBwyrEIh9yigTLVagr2uRarey9q9of6Q93gF6g0vel8UarfSfns 1tEw== X-Gm-Message-State: AODbwcB9vFci2e58UQMkkplRy3Fhe2Gt8qUVZ/YaOHgdgTg66LcCXi04 x3Qtz19wqy/RjUCMbfM= X-Received: by 10.101.72.207 with SMTP id o15mr17150179pgs.212.1496597713878; Sun, 04 Jun 2017 10:35:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:01 -0700 Message-Id: <20170604173509.29684-2-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:c00::241 Subject: [Qemu-devel] [PULL 01/69] target/s390x: Add support for the TEST BLOCK instruction 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, Thomas Huth , aurelien@aurel32.net Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Thomas Huth TEST BLOCK was likely once used to execute basic memory tests, but nowadays it's just a (slow) way to clear a page. Reviewed-by: Aurelien Jarno Reviewed-by: David Hildenbrand Reviewed-by: Richard Henderson Signed-off-by: Thomas Huth Message-Id: <1495128400-23759-1-git-send-email-thuth@redhat.com> Signed-off-by: Richard Henderson --- target/s390x/cpu.h | 1 + target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 28 ++++++++++++++++++++++++++++ target/s390x/mmu_helper.c | 2 +- target/s390x/translate.c | 11 +++++++++++ 6 files changed, 44 insertions(+), 1 deletion(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index c74b419..f463113 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -1084,6 +1084,7 @@ struct sysib_322 { #define SIGP_ORDER_MASK 0x000000ff =20 void load_psw(CPUS390XState *env, uint64_t mask, uint64_t addr); +target_ulong mmu_real2abs(CPUS390XState *env, target_ulong raddr); int mmu_translate(CPUS390XState *env, target_ulong vaddr, int rw, uint64_t= asc, target_ulong *raddr, int *flags, bool exc); int sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t code); diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 0b70770..1fae191 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -102,6 +102,7 @@ DEF_HELPER_FLAGS_4(lctl, TCG_CALL_NO_WG, void, env, i32= , i64, i32) DEF_HELPER_FLAGS_4(lctlg, TCG_CALL_NO_WG, void, env, i32, i64, i32) DEF_HELPER_FLAGS_4(stctl, TCG_CALL_NO_WG, void, env, i32, i64, i32) DEF_HELPER_FLAGS_4(stctg, TCG_CALL_NO_WG, void, env, i32, i64, i32) +DEF_HELPER_FLAGS_2(testblock, TCG_CALL_NO_WG, i32, env, i64) DEF_HELPER_FLAGS_2(tprot, TCG_CALL_NO_RWG, i32, i64, i64) DEF_HELPER_FLAGS_2(iske, TCG_CALL_NO_RWG_SE, i64, env, i64) DEF_HELPER_FLAGS_3(sske, TCG_CALL_NO_RWG, void, env, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 55a7c52..cac0f51 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -918,6 +918,8 @@ /* STORE USING REAL ADDRESS */ C(0xb246, STURA, RRE, Z, r1_o, r2_o, 0, 0, stura, 0) C(0xb925, STURG, RRE, Z, r1_o, r2_o, 0, 0, sturg, 0) +/* TEST BLOCK */ + C(0xb22c, TB, RRE, Z, 0, r2_o, 0, 0, testblock, 0) /* TEST PROTECTION */ C(0xe501, TPROT, SSE, Z, la1, a2, 0, 0, tprot, 0) =20 diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index f6e5bce..0c6a0d9 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -20,6 +20,7 @@ =20 #include "qemu/osdep.h" #include "cpu.h" +#include "exec/address-spaces.h" #include "exec/helper-proto.h" #include "exec/exec-all.h" #include "exec/cpu_ldst.h" @@ -973,6 +974,33 @@ void HELPER(stctl)(CPUS390XState *env, uint32_t r1, ui= nt64_t a2, uint32_t r3) } } =20 +uint32_t HELPER(testblock)(CPUS390XState *env, uint64_t real_addr) +{ + CPUState *cs =3D CPU(s390_env_get_cpu(env)); + uint64_t abs_addr; + int i; + + real_addr =3D fix_address(env, real_addr); + abs_addr =3D mmu_real2abs(env, real_addr) & TARGET_PAGE_MASK; + if (!address_space_access_valid(&address_space_memory, abs_addr, + TARGET_PAGE_SIZE, true)) { + program_interrupt(env, PGM_ADDRESSING, 4); + return 1; + } + + /* Check low-address protection */ + if ((env->cregs[0] & CR0_LOWPROT) && real_addr < 0x2000) { + program_interrupt(env, PGM_PROTECTION, 4); + return 1; + } + + for (i =3D 0; i < TARGET_PAGE_SIZE; i +=3D 8) { + stq_phys(cs->as, abs_addr + i, 0); + } + + return 0; +} + uint32_t HELPER(tprot)(uint64_t a1, uint64_t a2) { /* XXX implement */ diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index b11a027..31eb9ef 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -108,7 +108,7 @@ static void trigger_page_fault(CPUS390XState *env, targ= et_ulong vaddr, * Translate real address to absolute (=3D physical) * address by taking care of the prefix mapping. */ -static target_ulong mmu_real2abs(CPUS390XState *env, target_ulong raddr) +target_ulong mmu_real2abs(CPUS390XState *env, target_ulong raddr) { if (raddr < 0x2000) { return raddr + env->psa; /* Map the lowcore. */ diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 4c48c59..d6736e4 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4057,6 +4057,16 @@ static ExitStatus op_tcxb(DisasContext *s, DisasOps = *o) } =20 #ifndef CONFIG_USER_ONLY + +static ExitStatus op_testblock(DisasContext *s, DisasOps *o) +{ + check_privileged(s); + potential_page_fault(s); + gen_helper_testblock(cc_op, cpu_env, o->in2); + set_cc_static(s); + return NO_EXIT; +} + static ExitStatus op_tprot(DisasContext *s, DisasOps *o) { potential_page_fault(s); @@ -4064,6 +4074,7 @@ static ExitStatus op_tprot(DisasContext *s, DisasOps = *o) set_cc_static(s); return NO_EXIT; } + #endif =20 static ExitStatus op_tr(DisasContext *s, DisasOps *o) --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496597841137847.1118743509867; Sun, 4 Jun 2017 10:37:21 -0700 (PDT) Received: from localhost ([::1]:57832 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSn-000073-SM for importer@patchew.org; Sun, 04 Jun 2017 13:37:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49933) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZQr-0007BK-Ur for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQq-0002dn-Gm for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:17 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:35027) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQq-0002cY-B4 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:16 -0400 Received: by mail-pf0-x243.google.com with SMTP id u26so18118400pfd.2 for ; Sun, 04 Jun 2017 10:35:16 -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.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:14 -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=+GfOcnKSDkkX/FFhxaDP4mO/IW/nyKPMH5vrdv1okg8=; b=setKY6SjI+XsTJrS/mWAurqed5wVYruOZc78FaHKlferAiR2hhpGkjnRmx31DLiEEE Axr/5a0uSLU20kbO7AphE/trSRwTu0YJiOVL0arS/RWMw3IKMUEElfokhF9gM2XbpEWu 7hPWAr7lTcVTpIFOPRamFZb8gfEpAOev9zFZw1ZTLHmw5j8JUGAh3cdNSycmPGx8gl40 vW2a7K0JI0gLfhaLPDOFn+0pa6QO/Rgx7vaA10UWC1BX22xbFsljwibBN3UZv5W7KIZh 9PSnp1BCQhL1jr2jN0s5AWhWKLTz2toBNhH5iKermv3uTxZKl1OuKDL8jYnbQfw6bMPV JQ+w== 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=+GfOcnKSDkkX/FFhxaDP4mO/IW/nyKPMH5vrdv1okg8=; b=ffUuSH63nE2VcoLziHSJy7uDJV54DZPsEahO0pWWBPWuM80jN1CpjP3m0r952WZa8d D0RNQXdMe7TpHVY5RPDtj6djHuZhY4hUNenMaifVL0lmpSmypo0g0mKU42p+5FJFyFFa bcCfmLf/Zn9UjyK00ag3tnWKPZ3l9bt2jc49R957pGnKBvAfoi6p12Wf5mr5BtEStETr bGhiRt3NG1bEWu5a/6EgBc7x4GGKUxGKFLZ2goYrOh3YbEWI2XcJqH7qFgce9abklG8j 81ye0wxfS8X8ETOad7LOzBqFOUjYYpd82J8gjnhmthWBEWgx5dZ1ogIliJ+QvXjJdoT9 kQ7w== X-Gm-Message-State: AODbwcCZacha5PfPpGX5e8jqQtfXFiKwCggD78MhLjNGukoFPVzRn4xJ ME+1weCNuBYSO295T3k= X-Received: by 10.99.116.7 with SMTP id p7mr16829292pgc.162.1496597715203; Sun, 04 Jun 2017 10:35:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:02 -0700 Message-Id: <20170604173509.29684-3-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:c00::243 Subject: [Qemu-devel] [PULL 02/69] target/s390x: Use cpu_loop_exit_restore for tlb_fill 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 0c6a0d9..e3325a4 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -41,15 +41,9 @@ void tlb_fill(CPUState *cs, target_ulong addr, MMUAccessType access_type, int mmu_idx, uintptr_t retaddr) { - int ret; - - ret =3D s390_cpu_handle_mmu_fault(cs, addr, access_type, mmu_idx); + int ret =3D s390_cpu_handle_mmu_fault(cs, addr, access_type, mmu_idx); if (unlikely(ret !=3D 0)) { - if (likely(retaddr)) { - /* now we have a real cpu fault */ - cpu_restore_state(cs, retaddr); - } - cpu_loop_exit(cs); + cpu_loop_exit_restore(cs, retaddr); } } =20 --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496597992752526.1127013869801; Sun, 4 Jun 2017 10:39:52 -0700 (PDT) Received: from localhost ([::1]:57842 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZVH-0002rV-79 for importer@patchew.org; Sun, 04 Jun 2017 13:39:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49954) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZQt-0007BQ-7J for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQs-0002fV-0L for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:19 -0400 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:35751) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQr-0002eH-OO for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:17 -0400 Received: by mail-pg0-x244.google.com with SMTP id f127so7254645pgc.2 for ; Sun, 04 Jun 2017 10:35:17 -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.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:15 -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=ZbdnupYWtSaqaWBVaKxg4uD14LABlehwujsNfxC/Ls8=; b=mZo0R/gXtwXYybj+GhanwfwPOX1JFn+qebKTonGQrDi7Urmw4evpK0kizDFfoSkik4 1KtTVZPmRbpvlcizXHEgZMLSRhtRCmTCx/20uQ14HWUPkodXeO20AkDNfCRQpj9RtXga qpfKNo3Boxk/40VhWm5EwFguNwT4c0KcocUKaR+HqZH8KVC/cKJ7mOQM7J1SvYxI1WA4 EWZYFnUZGAiwys1ypigyJCk3Ojecs6sFsVspOiV+7OVAxe7jgY/nrwInmGyYreW7QZIT 96sxKgt9TG6OXfK4ixWsx71j3j3RTqgFA4gRQ7IKneI5npDZZMyDMsKSelzA69H5S4Mw oNkw== 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=ZbdnupYWtSaqaWBVaKxg4uD14LABlehwujsNfxC/Ls8=; b=RNHIGXS4rA92DvChYYfgqiIdIf8o0s4qd5pA5vFsu9L4o3x2zmlzrS9UVvnyGi3O5y 7C6cr3wBaqXPN7l02iWjYZDD4i6Q2R1Ywmhz2wik1+X9xWLD5cbCnQhBwUHe/bKuL0TS gOoRveIaC9627m8c0l+1xFgOaTDP9pk3hw4qWcxcyUTLgi5+rQV6Bsl5yYWJ8t7l6hvc kXkDDURmbct/Uow3CTTLZcdUbIC947ciOAbv61MKtMWrOKyt9OPBLjCXRZ21eifJK0OF b64pe8sAMNrcYFM3Hcg8EUBvvvSLBC/GxnWm9v9fjAEt+PyggHBVD4snwF0At5BKbYEz 2xDw== X-Gm-Message-State: AODbwcDddUSG1yPHwrfkPp19OAxN57Jl/9eWND7OC4wX1+t3BabvdqQm iRwjOZ4khMtMTmmOd+0= X-Received: by 10.101.89.66 with SMTP id g2mr2587689pgu.146.1496597716587; Sun, 04 Jun 2017 10:35:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:03 -0700 Message-Id: <20170604173509.29684-4-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::244 Subject: [Qemu-devel] [PULL 03/69] target/s390x: Move helper_ex to end of file 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This will avoid needing forward declarations in following patches. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 161 +++++++++++++++++++++++-------------------= ---- 1 file changed, 81 insertions(+), 80 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index e3325a4..90b62fa 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -436,86 +436,6 @@ static uint32_t helper_icm(CPUS390XState *env, uint32_= t r1, uint64_t address, return cc; } =20 -/* execute instruction - this instruction executes an insn modified with the contents of r1 - it does not change the executed instruction in memory - it does not change the program counter - in other words: tricky... - currently implemented by interpreting the cases it is most commonly use= d in -*/ -uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, uint64_t v1, - uint64_t addr, uint64_t ret) -{ - S390CPU *cpu =3D s390_env_get_cpu(env); - uint16_t insn =3D cpu_lduw_code(env, addr); - - HELPER_LOG("%s: v1 0x%lx addr 0x%lx insn 0x%x\n", __func__, v1, addr, - insn); - if ((insn & 0xf0ff) =3D=3D 0xd000) { - uint32_t l, insn2, b1, b2, d1, d2; - - l =3D v1 & 0xff; - insn2 =3D cpu_ldl_code(env, addr + 2); - b1 =3D (insn2 >> 28) & 0xf; - b2 =3D (insn2 >> 12) & 0xf; - d1 =3D (insn2 >> 16) & 0xfff; - d2 =3D insn2 & 0xfff; - switch (insn & 0xf00) { - case 0x200: - helper_mvc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); - break; - case 0x400: - cc =3D helper_nc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); - break; - case 0x500: - cc =3D helper_clc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); - break; - case 0x600: - cc =3D helper_oc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); - break; - case 0x700: - cc =3D helper_xc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); - break; - case 0xc00: - helper_tr(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); - break; - case 0xd00: - cc =3D helper_trt(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); - break; - default: - goto abort; - } - } else if ((insn & 0xff00) =3D=3D 0x0a00) { - /* supervisor call */ - HELPER_LOG("%s: svc %ld via execute\n", __func__, (insn | v1) & 0x= ff); - env->psw.addr =3D ret - 4; - env->int_svc_code =3D (insn | v1) & 0xff; - env->int_svc_ilen =3D 4; - helper_exception(env, EXCP_SVC); - } else if ((insn & 0xff00) =3D=3D 0xbf00) { - uint32_t insn2, r1, r3, b2, d2; - - insn2 =3D cpu_ldl_code(env, addr + 2); - r1 =3D (insn2 >> 20) & 0xf; - r3 =3D (insn2 >> 16) & 0xf; - b2 =3D (insn2 >> 12) & 0xf; - d2 =3D insn2 & 0xfff; - cc =3D helper_icm(env, r1, get_address(env, 0, b2, d2), r3); - } else { - abort: - cpu_abort(CPU(cpu), "EXECUTE on instruction prefix 0x%x not implem= ented\n", - insn); - } - return cc; -} - /* load access registers r1 to r3 from memory at a2 */ void HELPER(lam)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t r3) { @@ -1262,3 +1182,84 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t ad= dr) return ret; } #endif + +/* execute instruction + this instruction executes an insn modified with the contents of r1 + it does not change the executed instruction in memory + it does not change the program counter + in other words: tricky... + currently implemented by interpreting the cases it is most commonly use= d. +*/ +uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, uint64_t v1, + uint64_t addr, uint64_t ret) +{ + S390CPU *cpu =3D s390_env_get_cpu(env); + uint16_t insn =3D cpu_lduw_code(env, addr); + + HELPER_LOG("%s: v1 0x%lx addr 0x%lx insn 0x%x\n", __func__, v1, addr, + insn); + if ((insn & 0xf0ff) =3D=3D 0xd000) { + uint32_t l, insn2, b1, b2, d1, d2; + + l =3D v1 & 0xff; + insn2 =3D cpu_ldl_code(env, addr + 2); + b1 =3D (insn2 >> 28) & 0xf; + b2 =3D (insn2 >> 12) & 0xf; + d1 =3D (insn2 >> 16) & 0xfff; + d2 =3D insn2 & 0xfff; + switch (insn & 0xf00) { + case 0x200: + helper_mvc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2)); + break; + case 0x400: + cc =3D helper_nc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2)); + break; + case 0x500: + cc =3D helper_clc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2)); + break; + case 0x600: + cc =3D helper_oc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2)); + break; + case 0x700: + cc =3D helper_xc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2)); + break; + case 0xc00: + helper_tr(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2)); + break; + case 0xd00: + cc =3D helper_trt(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2)); + break; + default: + goto abort; + } + } else if ((insn & 0xff00) =3D=3D 0x0a00) { + /* supervisor call */ + HELPER_LOG("%s: svc %ld via execute\n", __func__, (insn | v1) & 0x= ff); + env->psw.addr =3D ret - 4; + env->int_svc_code =3D (insn | v1) & 0xff; + env->int_svc_ilen =3D 4; + helper_exception(env, EXCP_SVC); + } else if ((insn & 0xff00) =3D=3D 0xbf00) { + uint32_t insn2, r1, r3, b2, d2; + + insn2 =3D cpu_ldl_code(env, addr + 2); + r1 =3D (insn2 >> 20) & 0xf; + r3 =3D (insn2 >> 16) & 0xf; + b2 =3D (insn2 >> 12) & 0xf; + d2 =3D insn2 & 0xfff; + cc =3D helper_icm(env, r1, get_address(env, 0, b2, d2), r3); + } else { + abort: + cpu_abort(CPU(cpu), + "EXECUTE on instruction prefix 0x%x not implemented\n", + insn); + } + return cc; +} --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496597991729284.5711175552127; Sun, 4 Jun 2017 10:39:51 -0700 (PDT) Received: from localhost ([::1]:57841 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZVG-0002rP-DF for importer@patchew.org; Sun, 04 Jun 2017 13:39:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49960) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZQt-0007Ba-Vt for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQt-0002hE-43 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:20 -0400 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:34433) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQs-0002gV-U9 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:19 -0400 Received: by mail-pg0-x244.google.com with SMTP id v14so3628859pgn.1 for ; Sun, 04 Jun 2017 10:35:18 -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.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:17 -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=zvWGDWVVNVakqlPnFKXWAGpP8vSrSgyLbA0HQr2DnXY=; b=J7x6rMWdQt+PbbaoTlJ5dWQ1doyplBNAYjbPWUK3H+QpgmQXPe9D180AWUdMLrRTvP dE4ac8ZXnTX1ao4BuGiFRt5M/ojPl42aBlKUOr/vcCGFKg9i7qPwrbkUe760MIDFoxRc 5tQkVCPKvfF3KMIW0BFuH02moo8x7Moc9fGdR/UDtfq0Q3l8l6yHyeGwLy9RwvHvt+qo r2rrj3tkuNsorxl3oS7b97tqnLQ5LtmRCY61cLofnBIYqaS7g8Oi1kz/Rukrr+b6kQZt gjUNThxLOuYwliuLvFvqZg5zXeDRx8M6quxb3oa/85OUq/z2oYdQTak7NwEKO1u/YPSG 56CQ== 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=zvWGDWVVNVakqlPnFKXWAGpP8vSrSgyLbA0HQr2DnXY=; b=EQ9gC8zsEDSLt7UyD88Vi8zelv5lEinLE8gPjAwu1CjKWCL1t3n0he4TSb26FyzQku AJeQyzCpmG+AqCZjcN/y9GANPMwkX8K8boryba1bgTLvlx31MKvkDtwE9K0yjfBXKrCd B6+qtrBwt9OLf79YXvuhijZqSSI09ur5UUPraFKti054cb2s0ELz+dpwsfFLJNeLHutR a0gxKQLSlgtp+Yz45rnGd1eNutBowvd1dw7WAthp4UtuvodZTuYzEl6mjlK8qMEco7Wi jy78JLfmvC2KfsqKWZHGK/NBBoas/9oGDOObOGfqmmKB0pQvUChN0jsMJnsfx4yolZhT 7jEA== X-Gm-Message-State: AODbwcCS4pqZ8cxzMBdj9LCnxvXi/watkCD1gRj6SX6OHVAqCK5uC/BX qF2y7EU6V4fMHEC0x/A= X-Received: by 10.99.18.65 with SMTP id 1mr13169609pgs.132.1496597717882; Sun, 04 Jun 2017 10:35:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:04 -0700 Message-Id: <20170604173509.29684-5-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::244 Subject: [Qemu-devel] [PULL 04/69] target/s390x: Use unwind data for helper_nc 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 31 ++++++++++++++++++------------- target/s390x/translate.c | 1 - 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 90b62fa..7d6133b 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -119,23 +119,28 @@ static void fast_memmove(CPUS390XState *env, uint64_t= dest, uint64_t src, } =20 /* and on array */ -uint32_t HELPER(nc)(CPUS390XState *env, uint32_t l, uint64_t dest, - uint64_t src) +static uint32_t do_helper_nc(CPUS390XState *env, uint32_t l, uint64_t dest, + uint64_t src, uintptr_t ra) { - int i; - unsigned char x; - uint32_t cc =3D 0; + uint32_t i; + uint8_t c =3D 0; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); + for (i =3D 0; i <=3D l; i++) { - x =3D cpu_ldub_data(env, dest + i) & cpu_ldub_data(env, src + i); - if (x) { - cc =3D 1; - } - cpu_stb_data(env, dest + i, x); + uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); + x &=3D cpu_ldub_data_ra(env, dest + i, ra); + c |=3D x; + cpu_stb_data_ra(env, dest + i, x, ra); } - return cc; + return c !=3D 0; +} + +uint32_t HELPER(nc)(CPUS390XState *env, uint32_t l, uint64_t dest, + uint64_t src) +{ + return do_helper_nc(env, l, dest, src, GETPC()); } =20 /* xor on array */ @@ -1213,8 +1218,8 @@ uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, = uint64_t v1, get_address(env, 0, b2, d2)); break; case 0x400: - cc =3D helper_nc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); + cc =3D do_helper_nc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); break; case 0x500: cc =3D helper_clc(env, l, get_address(env, 0, b1, d1), diff --git a/target/s390x/translate.c b/target/s390x/translate.c index d6736e4..7e4cc6c 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3043,7 +3043,6 @@ static ExitStatus op_nabsf128(DisasContext *s, DisasO= ps *o) static ExitStatus op_nc(DisasContext *s, DisasOps *o) { TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); - potential_page_fault(s); gen_helper_nc(cc_op, cpu_env, l, o->addr1, o->in2); tcg_temp_free_i32(l); set_cc_static(s); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598142656245.69324961993323; Sun, 4 Jun 2017 10:42:22 -0700 (PDT) Received: from localhost ([::1]:57855 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZXg-00051n-5Y for importer@patchew.org; Sun, 04 Jun 2017 13:42:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49977) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZQv-0007DY-KR for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQu-0002iv-LV for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:21 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:35754) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQu-0002hx-Fq for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:20 -0400 Received: by mail-pg0-x243.google.com with SMTP id f127so7254721pgc.2 for ; Sun, 04 Jun 2017 10:35:20 -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.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35: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=7Ioz4xItkpZqzL0kSWSobN3kEa9WCRRdNMwReLwrIG0=; b=O6TXOL7t81y/NlSWiKfF8cYOB3CUUgHfBYsmFZQcZ9KnYmFpBPwQ0NE7jBUrYlEDXw 4EjavCj/NdXCZ2BEzuvbCeaeqcxwiMFOJgYHEs8X/0KO5YLUrqGwGlA826R0I33MrdGQ aeZkOD2JaQTrViubBpVyf7ddSnadRfL7y8Ckkwsmgp3niO7qFDCPt/CmwehIPH7EZLD2 ZNODHQ5Z9xVxRFLBWtbmVXLItHRkJQ/ZuYBcOWNMl+n0A0nd454u02OnzUo2oqmXQoKj qQ8U4TBtlXfWO3sDjtuaA4P1jRXFhb+5lAdtSTYgyl2WGAYV9JNuOOHn+ImGpC9M0MU8 0v+A== 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=7Ioz4xItkpZqzL0kSWSobN3kEa9WCRRdNMwReLwrIG0=; b=nkqRjzt0MzNcHblPK/kj45SsX/rcXkM5EzoLL8qSWIE+xx7MkIXniWBzIJOs3jQ97v +MTQNiqKrXCzRt5+ZLw3Zt3IOxZae+br9qUdK6gJkVjqgWH8eYYwlxYEBWp2FZmgSPeF 8cFGB1qoyTPJg0gP0QjmGFK7+Fo9fAs52WpP0R90UoY8KYmsM50wakJ314FkIcgvASdy Vj4mGEODY6y0+Oij/5vR1FFFU37UOGpadTnQr0kAU5/1T7My9ffpVSZnaOffmjUdnY+E JNJpR+FW0gwPNbyXHm/Jv/RgR6Lnlp89NcQUJwSZLCvU3082dhageHTO34toBUS4OlA5 v7bw== X-Gm-Message-State: AODbwcDM+QJMlH0mDabExa0njuutjXtsNS/AnXyIcmY6WJefSwR7VLB6 XQM0w351L6p8JSRKyUA= X-Received: by 10.84.130.3 with SMTP id 3mr10618416plc.222.1496597719331; Sun, 04 Jun 2017 10:35:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:05 -0700 Message-Id: <20170604173509.29684-6-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::243 Subject: [Qemu-devel] [PULL 05/69] target/s390x: Use unwind data for helper_oc 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 31 ++++++++++++++++++------------- target/s390x/translate.c | 1 - 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 7d6133b..b4b50d1 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -171,23 +171,28 @@ uint32_t HELPER(xc)(CPUS390XState *env, uint32_t l, u= int64_t dest, } =20 /* or on array */ -uint32_t HELPER(oc)(CPUS390XState *env, uint32_t l, uint64_t dest, - uint64_t src) +static uint32_t do_helper_oc(CPUS390XState *env, uint32_t l, uint64_t dest, + uint64_t src, uintptr_t ra) { - int i; - unsigned char x; - uint32_t cc =3D 0; + uint32_t i; + uint8_t c =3D 0; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); + for (i =3D 0; i <=3D l; i++) { - x =3D cpu_ldub_data(env, dest + i) | cpu_ldub_data(env, src + i); - if (x) { - cc =3D 1; - } - cpu_stb_data(env, dest + i, x); + uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); + x |=3D cpu_ldub_data_ra(env, dest + i, ra); + c |=3D x; + cpu_stb_data_ra(env, dest + i, x, ra); } - return cc; + return c !=3D 0; +} + +uint32_t HELPER(oc)(CPUS390XState *env, uint32_t l, uint64_t dest, + uint64_t src) +{ + return do_helper_oc(env, l, dest, src, GETPC()); } =20 /* memmove */ @@ -1226,8 +1231,8 @@ uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, = uint64_t v1, get_address(env, 0, b2, d2)); break; case 0x600: - cc =3D helper_oc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); + cc =3D do_helper_oc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); break; case 0x700: cc =3D helper_xc(env, l, get_address(env, 0, b1, d1), diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 7e4cc6c..db86b70 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3077,7 +3077,6 @@ static ExitStatus op_negf128(DisasContext *s, DisasOp= s *o) static ExitStatus op_oc(DisasContext *s, DisasOps *o) { TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); - potential_page_fault(s); gen_helper_oc(cc_op, cpu_env, l, o->addr1, o->in2); tcg_temp_free_i32(l); set_cc_static(s); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598287571866.7186969307446; Sun, 4 Jun 2017 10:44:47 -0700 (PDT) Received: from localhost ([::1]:57865 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZa2-0007kG-3h for importer@patchew.org; Sun, 04 Jun 2017 13:44:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49990) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZQx-0007FO-4j for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQv-0002jo-WC for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:23 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:33362) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQv-0002jH-Oe for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:21 -0400 Received: by mail-pf0-x243.google.com with SMTP id f27so18145708pfe.0 for ; Sun, 04 Jun 2017 10:35:21 -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.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:20 -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=zOEnny+FXc63rVcU1Jj6dtnyiLz13xyM9QYlW4x23uE=; b=Q26zcu+qUVWDilOzP3Wcs8RlsP5+/rjrs1yka5xGDExuV/9kLvGKu6l+3CLlW4wh6D xEeYUsp63AFEpekXghRK9RY6UIQs3jXTJ7las4Ewv0Fm7A7q1GkHEK3nyUE2zeiLhijb DjKag3tA6vXuvJqjiYWuO1ipCXpn9oxhUcBzMIhipC71Kb+e2RmguNGBXbYRt19Np275 su+rGgfJNYVfY+3902Fyim58sbwGooH3Qspsa2MKTM4Sm94zHno4k8j9Md5i5nwcc+5L 4ZmUUXLCZfUr6UdF7bRqdJ8sazXPbnlKWAIioB3ZXuBIHxgGo2zP3f2jjtNrT1Dj0nR6 OyPQ== 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=zOEnny+FXc63rVcU1Jj6dtnyiLz13xyM9QYlW4x23uE=; b=tWYi2RKczu/8Ez+/73w7eau6+r+R2btsaVXRSHAwPZM8OMkUkVVUPOL5wv7kG2ni5w JOKzRWkI7WMu56p6h6yR3308Tc0ipcNYnmYtByl7jXVcEeki0M+655XgPXpJMCn+gVGq WHMFn4pskO6RNo1lWp0jpni8PBQmJbuy794HYFUst2W0FH1mi37yjUbYF3cc3Jw5/Hk0 R1RIoGQohDcfme3m5Ou4Y+ij1wyRODCLW2fMTK3BKlUqk3hLOHO1x4AurjRWqAyPxsvC gkqQQzpp9SaNk1ESoFH5LoYZ8dxUC/LDwuMZ8iGRPXF3lehBFup9dEuzkx46tijL++3c GyPg== X-Gm-Message-State: AODbwcC7gVppwnovjgs2DPA5Rq+1/NrzLGrNweAnkggLwwjPdvGrb6ye aDd/Y+Mqlvq5ru5pwtc= X-Received: by 10.84.174.197 with SMTP id r63mr10680216plb.36.1496597720654; Sun, 04 Jun 2017 10:35:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:06 -0700 Message-Id: <20170604173509.29684-7-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:c00::243 Subject: [Qemu-devel] [PULL 06/69] target/s390x: Use unwind data for helper_xc 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 44 ++++++++++++++++++++++++-------------------- target/s390x/translate.c | 1 - 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index b4b50d1..b71437a 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -57,7 +57,7 @@ void tlb_fill(CPUState *cs, target_ulong addr, MMUAccessT= ype access_type, #endif =20 /* Reduce the length so that addr + len doesn't cross a page boundary. */ -static inline uint64_t adj_len_to_page(uint64_t len, uint64_t addr) +static inline uint32_t adj_len_to_page(uint32_t len, uint64_t addr) { #ifndef CONFIG_USER_ONLY if ((addr & ~TARGET_PAGE_MASK) + len - 1 >=3D TARGET_PAGE_SIZE) { @@ -68,7 +68,7 @@ static inline uint64_t adj_len_to_page(uint64_t len, uint= 64_t addr) } =20 static void fast_memset(CPUS390XState *env, uint64_t dest, uint8_t byte, - uint32_t l) + uint32_t l, uintptr_t ra) { int mmu_idx =3D cpu_mmu_index(env, false); =20 @@ -76,14 +76,14 @@ static void fast_memset(CPUS390XState *env, uint64_t de= st, uint8_t byte, void *p =3D tlb_vaddr_to_host(env, dest, MMU_DATA_STORE, mmu_idx); if (p) { /* Access to the whole page in write mode granted. */ - int l_adj =3D adj_len_to_page(l, dest); + uint32_t l_adj =3D adj_len_to_page(l, dest); memset(p, byte, l_adj); dest +=3D l_adj; l -=3D l_adj; } else { /* We failed to get access to the whole page. The next write access will likely fill the QEMU TLB for the next iteration= . */ - cpu_stb_data(env, dest, byte); + cpu_stb_data_ra(env, dest, byte, ra); dest++; l--; } @@ -100,7 +100,7 @@ static void fast_memmove(CPUS390XState *env, uint64_t d= est, uint64_t src, void *dest_p =3D tlb_vaddr_to_host(env, dest, MMU_DATA_STORE, mmu_= idx); if (src_p && dest_p) { /* Access to both whole pages granted. */ - int l_adj =3D adj_len_to_page(l, src); + uint32_t l_adj =3D adj_len_to_page(l, src); l_adj =3D adj_len_to_page(l_adj, dest); memmove(dest_p, src_p, l_adj); src +=3D l_adj; @@ -144,30 +144,34 @@ uint32_t HELPER(nc)(CPUS390XState *env, uint32_t l, u= int64_t dest, } =20 /* xor on array */ -uint32_t HELPER(xc)(CPUS390XState *env, uint32_t l, uint64_t dest, - uint64_t src) +static uint32_t do_helper_xc(CPUS390XState *env, uint32_t l, uint64_t dest, + uint64_t src, uintptr_t ra) { - int i; - unsigned char x; - uint32_t cc =3D 0; + uint32_t i; + uint8_t c =3D 0; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); =20 /* xor with itself is the same as memset(0) */ if (src =3D=3D dest) { - fast_memset(env, dest, 0, l + 1); + fast_memset(env, dest, 0, l + 1, ra); return 0; } =20 for (i =3D 0; i <=3D l; i++) { - x =3D cpu_ldub_data(env, dest + i) ^ cpu_ldub_data(env, src + i); - if (x) { - cc =3D 1; - } - cpu_stb_data(env, dest + i, x); + uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); + x ^=3D cpu_ldub_data_ra(env, dest + i, ra); + c |=3D x; + cpu_stb_data_ra(env, dest + i, x, ra); } - return cc; + return c !=3D 0; +} + +uint32_t HELPER(xc)(CPUS390XState *env, uint32_t l, uint64_t dest, + uint64_t src) +{ + return do_helper_xc(env, l, dest, src, GETPC()); } =20 /* or on array */ @@ -206,7 +210,7 @@ void HELPER(mvc)(CPUS390XState *env, uint32_t l, uint64= _t dest, uint64_t src) /* mvc with source pointing to the byte after the destination is the same as memset with the first source byte */ if (dest =3D=3D (src + 1)) { - fast_memset(env, dest, cpu_ldub_data(env, src), l + 1); + fast_memset(env, dest, cpu_ldub_data(env, src), l + 1, 0); return; } =20 @@ -1235,8 +1239,8 @@ uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, = uint64_t v1, get_address(env, 0, b2, d2), 0); break; case 0x700: - cc =3D helper_xc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); + cc =3D do_helper_xc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); break; case 0xc00: helper_tr(env, l, get_address(env, 0, b1, d1), diff --git a/target/s390x/translate.c b/target/s390x/translate.c index db86b70..40a4099 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4160,7 +4160,6 @@ static ExitStatus op_xc(DisasContext *s, DisasOps *o) /* But in general we'll defer to a helper. */ o->in2 =3D get_address(s, 0, b2, d2); t32 =3D tcg_const_i32(l); - potential_page_fault(s); gen_helper_xc(cc_op, cpu_env, t32, o->addr1, o->in2); tcg_temp_free_i32(t32); set_cc_static(s); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598140495676.6646260680272; Sun, 4 Jun 2017 10:42:20 -0700 (PDT) Received: from localhost ([::1]:57854 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZXe-00050b-U0 for importer@patchew.org; Sun, 04 Jun 2017 13:42:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50016) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZR1-0007JA-6W for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQx-0002kQ-8c for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:27 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:35030) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQx-0002k6-2I for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:23 -0400 Received: by mail-pf0-x243.google.com with SMTP id u26so18118537pfd.2 for ; Sun, 04 Jun 2017 10:35:22 -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.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:21 -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=f0MjxcyXElX0NZFyfmoIxAYaEf1orUBA5JxHPtYdI1o=; b=TNMe9RXJcOYenKIl7TrpKJWzUl0vvC0m2lAq5FU7Wgp5qUH2ai39g0wNb2Ucpde4S8 gbu4tmxGXD1nZYzjqAUvYTbIbr10SPD6BvGl9XL9u6z4u4XodDctzXwfHrQDCBxHD7K1 ZxRvlikrmKwuOthuKYteHIzbjz0i6mh/PK9/j6HpKn30xHnEpsY7bjcRNh35l0PlSOvw tNYVxuvcI7l4O/Dd1GQA6UVtjT+Pw90IN7f7bnNNaISs/l2pHtEftCF3fziPkffWiLHc MYGXb8pf7mbpQVrHYrImtt2XLZqHneFCBPnSN1Dv8s2a+geJdjdNkSpykZXWRQCF1sP8 0qZQ== 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=f0MjxcyXElX0NZFyfmoIxAYaEf1orUBA5JxHPtYdI1o=; b=QzgfMrrMdVSSOqWjiaYzr+X4ucIXqublUaHJdaXI8Noz8d0SAQONPMxe5VjkoDD4hG QBuyRrncqRmkVrIOnLXpiUrFyhANqr++0n1Imp0YCEQzS0nzjH1OBBVK+0Velvpru7hJ mixGLUhbvpvWasG/ShdXlX/Ccp9gh8GkTydkypgkieY7rYZH8fsz4wbDu785tdRwd5W5 5Ai9ZPllTPLj6ulUlRcCXCk4j/qL4p82a808Ljt8+HbzTxEPH13IZOS1J4fYfZxlGZx+ /TlCt5/xMfYXtK6IYni268w+HGVmyLnZ+1RvuiT/aWb3OuhSDL+sOY5ZhCV/TBau4yp/ UPYQ== X-Gm-Message-State: AODbwcDiJN0dcgIpgQWGaEmTbj+o/khlDvNHOmxhdqMbxRl2dRxoXBaC DGyPZQ7eHYadjS/e1uE= X-Received: by 10.84.174.193 with SMTP id r59mr10697497plb.34.1496597722004; Sun, 04 Jun 2017 10:35:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:07 -0700 Message-Id: <20170604173509.29684-8-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:c00::243 Subject: [Qemu-devel] [PULL 07/69] target/s390x: Use unwind data for helper_mvc 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 30 ++++++++++++++++++------------ target/s390x/translate.c | 1 - 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index b71437a..78a9ac1 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -91,7 +91,7 @@ static void fast_memset(CPUS390XState *env, uint64_t dest= , uint8_t byte, } =20 static void fast_memmove(CPUS390XState *env, uint64_t dest, uint64_t src, - uint32_t l) + uint32_t l, uintptr_t ra) { int mmu_idx =3D cpu_mmu_index(env, false); =20 @@ -110,7 +110,7 @@ static void fast_memmove(CPUS390XState *env, uint64_t d= est, uint64_t src, /* We failed to get access to one or both whole pages. The next read or write access will likely fill the QEMU TLB for the next iteration. */ - cpu_stb_data(env, dest, cpu_ldub_data(env, src)); + cpu_stb_data_ra(env, dest, cpu_ldub_data_ra(env, src, ra), ra); src++; dest++; l--; @@ -200,32 +200,38 @@ uint32_t HELPER(oc)(CPUS390XState *env, uint32_t l, u= int64_t dest, } =20 /* memmove */ -void HELPER(mvc)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) +static void do_helper_mvc(CPUS390XState *env, uint32_t l, uint64_t dest, + uint64_t src, uintptr_t ra) { - int i =3D 0; + uint32_t i; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); =20 /* mvc with source pointing to the byte after the destination is the same as memset with the first source byte */ - if (dest =3D=3D (src + 1)) { - fast_memset(env, dest, cpu_ldub_data(env, src), l + 1, 0); + if (dest =3D=3D src + 1) { + fast_memset(env, dest, cpu_ldub_data_ra(env, src, ra), l + 1, ra); return; } =20 /* mvc and memmove do not behave the same when areas overlap! */ - if ((dest < src) || (src + l < dest)) { - fast_memmove(env, dest, src, l + 1); + if (dest < src || src + l < dest) { + fast_memmove(env, dest, src, l + 1, ra); return; } =20 /* slow version with byte accesses which always work */ for (i =3D 0; i <=3D l; i++) { - cpu_stb_data(env, dest + i, cpu_ldub_data(env, src + i)); + cpu_stb_data_ra(env, dest + i, cpu_ldub_data_ra(env, src + i, ra),= ra); } } =20 +void HELPER(mvc)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) +{ + do_helper_mvc(env, l, dest, src, GETPC()); +} + /* compare unsigned byte arrays */ uint32_t HELPER(clc)(CPUS390XState *env, uint32_t l, uint64_t s1, uint64_t= s2) { @@ -388,7 +394,7 @@ void HELPER(mvpg)(CPUS390XState *env, uint64_t r0, uint= 64_t r1, uint64_t r2) { /* XXX missing r0 handling */ env->cc_op =3D 0; - fast_memmove(env, r1, r2, TARGET_PAGE_SIZE); + fast_memmove(env, r1, r2, TARGET_PAGE_SIZE, 0); } =20 /* string copy (c is string terminator) */ @@ -1223,8 +1229,8 @@ uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, = uint64_t v1, d2 =3D insn2 & 0xfff; switch (insn & 0xf00) { case 0x200: - helper_mvc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); + do_helper_mvc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); break; case 0x400: cc =3D do_helper_nc(env, l, get_address(env, 0, b1, d1), diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 40a4099..729924a 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2866,7 +2866,6 @@ static ExitStatus op_movx(DisasContext *s, DisasOps *= o) static ExitStatus op_mvc(DisasContext *s, DisasOps *o) { TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); - potential_page_fault(s); gen_helper_mvc(cpu_env, l, o->addr1, o->in2); tcg_temp_free_i32(l); return NO_EXIT; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496597855616989.6751248393718; Sun, 4 Jun 2017 10:37:35 -0700 (PDT) Received: from localhost ([::1]:57835 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZT4-0000Ik-5p for importer@patchew.org; Sun, 04 Jun 2017 13:37:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50014) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZR1-0007J8-6R for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQy-0002kz-Kr for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:27 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:35861) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQy-0002kd-Em for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:24 -0400 Received: by mail-pg0-x241.google.com with SMTP id v18so3985198pgb.3 for ; Sun, 04 Jun 2017 10:35:24 -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.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:22 -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=i5pB2fmki8LvMl1WkzEVuHkAiTqHloyz//LAvKnGuPI=; b=TYKD023CNTTfb1PTfua0j00pEK7KVCKexX1FybmImQtw5zB8CCb7uia1nsUcpJg40N f3NVWhrlXsDbjVG1Ip4xYcBcpX6MfIkCoZMclIeQIItMG9cZ8WgurdxqnkKNvWRiDEhf TXI49LB8nhhsqna0yuCGqhnehMB3sg34vqNffTGtODex2V8SNVE+Zx5H7QORT/CAjbmI X1ZUZYgdaLcRLLmyGnHCz8EMx7wxegUvfPdy5VOcWh8Lqcd3m96EI3oXAbbcKGF4HpbA H+hRmrKHdDupF6yH0+KypQs5cvIcxwZnAaH9SHHGV0s5qdfZEH0W5p+Kjt61KvpcfZIo 9Cjw== 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=i5pB2fmki8LvMl1WkzEVuHkAiTqHloyz//LAvKnGuPI=; b=s4RADpw+EeaPXbRBhvNDssYzEi7nC6pUDXcwkgQrmzdPukgcbEoenyg0PpgmHy2NBz omhIFZqYxAcKo8HuqDteY9O6F3ll5jlgeLkv6H6/cXsdEKba0AWqDNp61iOq2XdRuWQ2 23G4b0zvgrNPVUyCDeNWkLp5gPgpcSoUr4JP11sraskF2x9Vn/gy4s/6qv3xtFf7niWY wq8pvdeLEnrv5hXbziv+7PmrmKNUWlKFbYw3ZlxoYCE46Blw2eNY6CQhKF0SvZHyHIqK B5Lrz2wu3en9NNk2lL6Zpw7Oqv+9G8GaGJnmRH/Ah1TsQigtuG8p9UU/TS0uDiA05QWn Ge/Q== X-Gm-Message-State: AODbwcAoEaBGKkP510z8MLpqfd/YfvMGiZCTS9GVXK0fM4KGXjja+nJc rFp+MYcsJnF/w/HyJYg= X-Received: by 10.84.236.72 with SMTP id h8mr11052983pln.187.1496597723328; Sun, 04 Jun 2017 10:35:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:08 -0700 Message-Id: <20170604173509.29684-9-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::241 Subject: [Qemu-devel] [PULL 08/69] target/s390x: Use unwind data for helper_clc 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 29 +++++++++++++++++------------ target/s390x/translate.c | 1 - 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 78a9ac1..50689bb 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -233,32 +233,37 @@ void HELPER(mvc)(CPUS390XState *env, uint32_t l, uint= 64_t dest, uint64_t src) } =20 /* compare unsigned byte arrays */ -uint32_t HELPER(clc)(CPUS390XState *env, uint32_t l, uint64_t s1, uint64_t= s2) +static uint32_t do_helper_clc(CPUS390XState *env, uint32_t l, uint64_t s1, + uint64_t s2, uintptr_t ra) { - int i; - unsigned char x, y; - uint32_t cc; + uint32_t i; + uint32_t cc =3D 0; =20 HELPER_LOG("%s l %d s1 %" PRIx64 " s2 %" PRIx64 "\n", __func__, l, s1, s2); + for (i =3D 0; i <=3D l; i++) { - x =3D cpu_ldub_data(env, s1 + i); - y =3D cpu_ldub_data(env, s2 + i); + uint8_t x =3D cpu_ldub_data_ra(env, s1 + i, ra); + uint8_t y =3D cpu_ldub_data_ra(env, s2 + i, ra); HELPER_LOG("%02x (%c)/%02x (%c) ", x, x, y, y); if (x < y) { cc =3D 1; - goto done; + break; } else if (x > y) { cc =3D 2; - goto done; + break; } } - cc =3D 0; - done: + HELPER_LOG("\n"); return cc; } =20 +uint32_t HELPER(clc)(CPUS390XState *env, uint32_t l, uint64_t s1, uint64_t= s2) +{ + return do_helper_clc(env, l, s1, s2, GETPC()); +} + /* compare logical under mask */ uint32_t HELPER(clm)(CPUS390XState *env, uint32_t r1, uint32_t mask, uint64_t addr) @@ -1237,8 +1242,8 @@ uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, = uint64_t v1, get_address(env, 0, b2, d2), 0); break; case 0x500: - cc =3D helper_clc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); + cc =3D do_helper_clc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); break; case 0x600: cc =3D do_helper_oc(env, l, get_address(env, 0, b1, d1), diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 729924a..0f9148a 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1901,7 +1901,6 @@ static ExitStatus op_clc(DisasContext *s, DisasOps *o) tcg_gen_qemu_ld64(cc_dst, o->in2, get_mem_index(s)); break; default: - potential_page_fault(s); vl =3D tcg_const_i32(l); gen_helper_clc(cc_op, cpu_env, vl, o->addr1, o->in2); tcg_temp_free_i32(vl); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598438296977.0294996231897; Sun, 4 Jun 2017 10:47:18 -0700 (PDT) Received: from localhost ([::1]:57878 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZcS-0001Um-T7 for importer@patchew.org; Sun, 04 Jun 2017 13:47:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50015) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZR1-0007J9-6T for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZQz-0002mR-Uq for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:27 -0400 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:34438) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZQz-0002lc-P6 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:25 -0400 Received: by mail-pg0-x242.google.com with SMTP id v14so3629075pgn.1 for ; Sun, 04 Jun 2017 10:35:25 -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.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:24 -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=lGDvUp5XrZvKX4F6cIJ/sXxo/+YbSSLgRWjN09z7M5Y=; b=atsPPYgXDZ22146yHVSA0WWewv/qlhCBYNgi07VlxS4xDDg0ikUBImRy8SiwLW0Qx6 zmwPoH1nIXt2FwZch67hGrSTPqeJJFJXWaRIDSDYYT/Q0BSIde4O0Xc08QsLSIOqiSVN F4NBRsEMoBClys5X2pRJwe4opH9WCbi/cE+wZSzqP7g+aiJhy1DUxWkRvr9YQ/g0MJWR ivSq9/WpzWxFgpJO5/yplXwjrN45xNEw2VMa12VSRwkSlhQven6BxDSK+/MHR/mIsDGE sK6ZKR85c5o6ycaQfdD0JcUqyfvmuw7JcOf1XRqHHpYsN4/rUVSRVhWnRNF4zcW8jR1i wLJA== 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=lGDvUp5XrZvKX4F6cIJ/sXxo/+YbSSLgRWjN09z7M5Y=; b=CbtKRTx8+FCKi4wizk4YDKN5SDGAjsbksHdwymXkAhln5jkhBeu1mssmJcNQxVZkTk CX01bt7icpyn4rcR59B3CHTxxsp2CRh+wxxUb4iILiiMUQ18lAmqHs9rCrPZNbGrR4Xm uaGdxAqO4P9awhJjWlCdWCh9rdYE4ex0ixw/h/XuvblA2VW1wR7i5DjvjuuXDajJjSnS gPhnwB4WAiZiU3aKz4/GFf8wyd4OUXB1E/4995YCUo3+Ceo1vpTdICRWtLG57t7n/Gwv UQOIPSVol6VEP7jRHDat/EjSn9ya/kObj1/KczcJ07tkgEZc8Y0BpPJ01CXdzgEfdVWr FzeQ== X-Gm-Message-State: AODbwcANlrwQRwm1pBN+c3ThoMrCU31aHWLxtzpKbrjEZ+LQY78hjQ8X IZtU5IxEDQk+NRjsjcY= X-Received: by 10.84.217.86 with SMTP id e22mr10586630plj.294.1496597724656; Sun, 04 Jun 2017 10:35:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:09 -0700 Message-Id: <20170604173509.29684-10-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 09/69] target/s390x: Use unwind data for helper_clm 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 11 ++++++----- target/s390x/translate.c | 1 - 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 50689bb..3e75cae 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -268,16 +268,16 @@ uint32_t HELPER(clc)(CPUS390XState *env, uint32_t l, = uint64_t s1, uint64_t s2) uint32_t HELPER(clm)(CPUS390XState *env, uint32_t r1, uint32_t mask, uint64_t addr) { - uint8_t r, d; - uint32_t cc; + uintptr_t ra =3D GETPC(); + uint32_t cc =3D 0; =20 HELPER_LOG("%s: r1 0x%x mask 0x%x addr 0x%" PRIx64 "\n", __func__, r1, mask, addr); - cc =3D 0; + while (mask) { if (mask & 8) { - d =3D cpu_ldub_data(env, addr); - r =3D (r1 & 0xff000000UL) >> 24; + uint8_t d =3D cpu_ldub_data_ra(env, addr, ra); + uint8_t r =3D extract32(r1, 24, 8); HELPER_LOG("mask 0x%x %02x/%02x (0x%" PRIx64 ") ", mask, r, d, addr); if (r < d) { @@ -292,6 +292,7 @@ uint32_t HELPER(clm)(CPUS390XState *env, uint32_t r1, u= int32_t mask, mask =3D (mask << 1) & 0xf; r1 <<=3D 8; } + HELPER_LOG("\n"); return cc; } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 0f9148a..34ccc22 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1928,7 +1928,6 @@ static ExitStatus op_clm(DisasContext *s, DisasOps *o) TCGv_i32 m3 =3D tcg_const_i32(get_field(s->fields, m3)); TCGv_i32 t1 =3D tcg_temp_new_i32(); tcg_gen_extrl_i64_i32(t1, o->in1); - potential_page_fault(s); gen_helper_clm(cc_op, cpu_env, t1, m3, o->in2); set_cc_static(s); tcg_temp_free_i32(t1); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598602922383.10429164029017; Sun, 4 Jun 2017 10:50:02 -0700 (PDT) Received: from localhost ([::1]:57888 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZf7-0004EL-Hk for importer@patchew.org; Sun, 04 Jun 2017 13:50:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50038) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZR2-0007Jy-3f for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZR1-0002n1-5q for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:28 -0400 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:35862) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZR1-0002mk-0w for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:27 -0400 Received: by mail-pg0-x244.google.com with SMTP id v18so3985269pgb.3 for ; Sun, 04 Jun 2017 10:35:26 -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.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:25 -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=3JtzHY/kU5dl2FTSozLeYnTXzchr4UvfJWi+tQKChcM=; b=clTYHAFZNEa0IMbPOjYySeV2KbsaZ/gfBchX183TRj/pGgbs7Kce885nwbcQfIPu9X OiLb8shKElighbg/2Bi3mld5OhUGPWMMiiR1UvuJ62bZA0C8GUN+VfBuSUTatctFCHD2 H27VR3Lzb9P2ezuE1z7+QY0b60/zHiq6/f9JcTZzFLFD2leWdKytxJFW1+vrd3334jf1 rf24ZEgxJuJVnZT2dbYP0Tlqo5Irr1rNJXtlDwDqzZzNWVu2iQvW6Vcfp7O8R1pVMVVO G5/l7bqi6cIf5U2BZ5Vhi5c70M8nAYQbhh5c+qxe21B1hRe9R/xPBZ3qlCC8SVA6uPxi wJmg== 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=3JtzHY/kU5dl2FTSozLeYnTXzchr4UvfJWi+tQKChcM=; b=rtuD3C1qeIgLz+V8KM8at2tFBZkEOBCby4s6isZebkveqVmeVCqVs26ibSePEw+B1w +1h5LEQ2HkUMoFlMzj0XZDkoaDfPdx+jyOvxliCZM63WMr2oo8g9A0XZcHpSdBrMs/UZ WO1YLGOz2PUy9pc/YA2BtPdbZRu6U5WUfFkWuCAPFGYAzyNUyuhWUd6eolLzwLTeUVQe 49J/M1yni6pJTzxmFVVLoyitod7QK17UwRFgerMM9FWM3486MrQMwNcdgKpf7VBcq09P fI5CQiHWuAYqDTg94cPJT8jCTrnJLmzlmX2fZd2yt7mtBj0x2Z6dJ4HmoeHtdN5ngAfe x/Pg== X-Gm-Message-State: AODbwcDhnX+X9MXozublLymdoTlEc2kuBEHbX+s2nXiKIgEHLsHbAm91 1fBuFM2wJv27Lvq0+ms= X-Received: by 10.84.194.34 with SMTP id g31mr10354026pld.89.1496597725965; Sun, 04 Jun 2017 10:35:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:10 -0700 Message-Id: <20170604173509.29684-11-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::244 Subject: [Qemu-devel] [PULL 10/69] target/s390x: Use unwind data for helper_srst 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 3 ++- target/s390x/translate.c | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 3e75cae..33d83e5 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -327,6 +327,7 @@ static inline uint64_t get_address_31fix(CPUS390XState = *env, int reg) uint64_t HELPER(srst)(CPUS390XState *env, uint64_t r0, uint64_t end, uint64_t str) { + uintptr_t ra =3D GETPC(); uint32_t len; uint8_t v, c =3D r0; =20 @@ -344,7 +345,7 @@ uint64_t HELPER(srst)(CPUS390XState *env, uint64_t r0, = uint64_t end, env->cc_op =3D 2; return end; } - v =3D cpu_ldub_data(env, str + len); + v =3D cpu_ldub_data_ra(env, str + len, ra); if (v =3D=3D c) { /* Character found. Set R1 to the location; R2 is unmodified.= */ env->cc_op =3D 1; diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 34ccc22..cd33c51 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3972,7 +3972,6 @@ static ExitStatus op_stmh(DisasContext *s, DisasOps *= o) =20 static ExitStatus op_srst(DisasContext *s, DisasOps *o) { - potential_page_fault(s); gen_helper_srst(o->in1, cpu_env, regs[0], o->in1, o->in2); set_cc_static(s); return_low128(o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496597991255661.6019085271814; Sun, 4 Jun 2017 10:39:51 -0700 (PDT) Received: from localhost ([::1]:57840 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZVF-0002p4-0Y for importer@patchew.org; Sun, 04 Jun 2017 13:39:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50050) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZR3-0007Ky-Cg for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZR2-0002ob-HA for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:29 -0400 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:35864) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZR2-0002nr-Bs for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:28 -0400 Received: by mail-pg0-x244.google.com with SMTP id v18so3985312pgb.3 for ; Sun, 04 Jun 2017 10:35:28 -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.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:26 -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=mRUXPD70hhx/jfo8v202YD9k2Uurjm2Txos7CJZxafc=; b=CbRIf3wDv6sFizw7b8Xsaa55XFJx84yhajXZC2Ggik+ZVrNCskz71Xl2Da5MIrgy2c dALd47bJFiW7gXWmqaBZI7G0X1o1xLfx3R3EwNN39CGJeI480d2TjY4w2j2CYeg6WuVx SvgdyzaK0n7BMUim7Pth32vgdLQ9yfGRBnw52GQ+vk2OS3jKkiqKFIAN9UPZ6d8wH3dX 84Hc5OK6E6jUeiIGScK0faOnFidYB3uGKp4yfSJRhGDIQUQpxOAjgqfSNSBCtbHyEMfP uYM+xEPzAKWPqng91XLBFGknYG64Zj4LuVu4WsuJ/DMgyIkr5nDRN5TYtwl2uVZ/YT3v gScA== 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=mRUXPD70hhx/jfo8v202YD9k2Uurjm2Txos7CJZxafc=; b=WzjGVtbxrqjjLYOsEoto6njZdJAu+KRr/P5qfZPpYXZkYMOHSvC0o52OLlhRCxCX2a VRniBly5EPP3IUdTJRrlxxpy61uOCZbUi5M1v0PlWrPLLfE4iO3y9gvkIMKrus2JJY1x uC/kW6xBu4Yuf4w+mQivI5tO8ApV+kchfk5SYyG6G+kqIXSCSa7oSZlH8H36/gV94si7 QBczTn2YxAtQSPCFxbqhZVoU21C4zZIi5Mmrg94Idam5TQosOh6Gdr+wPD/km0WStQRU kWq+7HVL1fVWaSau8tnHg9oZxcewfYm5MH9vWnLoUcj1L//kcnm3lohFkCxXnK/N8IlH /qow== X-Gm-Message-State: AODbwcCoaTFtp9+njmviv+Zo6gYxFT0cx+Wc21okCFKxUwNybgAM7WBu lsCUYJWgjUkILYbMHfk= X-Received: by 10.84.202.163 with SMTP id x32mr10501689pld.90.1496597727348; Sun, 04 Jun 2017 10:35:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:11 -0700 Message-Id: <20170604173509.29684-12-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::244 Subject: [Qemu-devel] [PULL 11/69] target/s390x: Use unwind data for helper_clst 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 5 +++-- target/s390x/translate.c | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 33d83e5..af2801e 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -362,6 +362,7 @@ uint64_t HELPER(srst)(CPUS390XState *env, uint64_t r0, = uint64_t end, /* unsigned string compare (c is string terminator) */ uint64_t HELPER(clst)(CPUS390XState *env, uint64_t c, uint64_t s1, uint64_= t s2) { + uintptr_t ra =3D GETPC(); uint32_t len; =20 c =3D c & 0xff; @@ -371,8 +372,8 @@ uint64_t HELPER(clst)(CPUS390XState *env, uint64_t c, u= int64_t s1, uint64_t s2) /* Lest we fail to service interrupts in a timely manner, limit the amount of work we're willing to do. For now, let's cap at 8k. */ for (len =3D 0; len < 0x2000; ++len) { - uint8_t v1 =3D cpu_ldub_data(env, s1 + len); - uint8_t v2 =3D cpu_ldub_data(env, s2 + len); + uint8_t v1 =3D cpu_ldub_data_ra(env, s1 + len, ra); + uint8_t v2 =3D cpu_ldub_data_ra(env, s2 + len, ra); if (v1 =3D=3D v2) { if (v1 =3D=3D c) { /* Equal. CC=3D0, and don't advance the registers. */ diff --git a/target/s390x/translate.c b/target/s390x/translate.c index cd33c51..a24e288 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1937,7 +1937,6 @@ static ExitStatus op_clm(DisasContext *s, DisasOps *o) =20 static ExitStatus op_clst(DisasContext *s, DisasOps *o) { - potential_page_fault(s); gen_helper_clst(o->in1, cpu_env, regs[0], o->in1, o->in2); set_cc_static(s); return_low128(o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598751231236.58991563383836; Sun, 4 Jun 2017 10:52:31 -0700 (PDT) Received: from localhost ([::1]:57901 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZhU-0006MK-Qc for importer@patchew.org; Sun, 04 Jun 2017 13:52:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50062) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZR5-0007L5-7D for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZR4-0002pt-0I for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:31 -0400 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:36338) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZR3-0002pK-QU for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:29 -0400 Received: by mail-pf0-x242.google.com with SMTP id n23so18100571pfb.3 for ; Sun, 04 Jun 2017 10:35:29 -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.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:28 -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=oBtayqCqrX5JFJ4PnTkD7y1N01uWlp7BdwDRXYhQU7Y=; b=BTN9bLxZBDukuyUEKuxvMzpODTZqL2FAuf2XWskcB2Vb7FS97bcKECdmyxJ9XsEw2C 8BnvGouVzIwIeIHWYg6ZI4cAKqvzNwpaU0TNXLMnezioW+issM0/OTXfnTiB7N8tFiIO vQD1FkRtmNRZI34/uh8tCwXUPE6FRlso0CAh5n4UpVLW1y0BAbwm2xg6LEoVOYq8OhjL rYupyBrAfgrpveTSLQnNbksQhjz4sPcDiUGTY5888H2mLgyP9AgnrnhPZQ5teXyW5T75 aEu/TZGrNyrDZtz13CnluqIK/dpJBIMFihVUpsVMTJQLZSi0s6SW8Y79/iyCuDoNOuVl YuIw== 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=oBtayqCqrX5JFJ4PnTkD7y1N01uWlp7BdwDRXYhQU7Y=; b=GI1GZFanU2US7yGHAU5PBP2NZgp9ss75xYcAx5V9UJ3oqwtR1qvbKk+Cd0ypTVUnVl GTV3D827wztrfwNV93nynZ9jMEwiIfMe2KHxodjR4wvuC6CjwChPeedBcpz9snOWUn6b vFHURhmAs4tfc+p5V5c938nJwXO/ADp6o6mTWtt2FsFMrZHzjS2d/irYGlC+xTjRnUCd 06+Ls9bEw6g/pH1T8oDUteg3s9cQZK68+nJ0uZtXMlZGS+KfeumPmS45VFJx6cH3KKxH EKHRLHeyG5katZOg5Aa8JmoS98nwq690/brPFKnvcCf1qfZ4o552qVw+QnQrNN9NnsuG 7BzA== X-Gm-Message-State: AODbwcDVG14uiZv1uwrxKF94ts4J1rn9IBN6mF6XFNnFC08P17THRbzI d4gZaznPnSVxjv8WwDc= X-Received: by 10.99.115.82 with SMTP id d18mr16106546pgn.155.1496597728771; Sun, 04 Jun 2017 10:35:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:12 -0700 Message-Id: <20170604173509.29684-13-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:c00::242 Subject: [Qemu-devel] [PULL 12/69] target/s390x: Use unwind data for helper_mvpg 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/helper.h | 2 +- target/s390x/mem_helper.c | 9 +++++---- target/s390x/translate.c | 3 +-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 1fae191..ea35834 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -12,7 +12,7 @@ DEF_HELPER_FLAGS_3(divs64, TCG_CALL_NO_WG, s64, env, s64,= s64) DEF_HELPER_FLAGS_4(divu64, TCG_CALL_NO_WG, i64, env, i64, i64, i64) DEF_HELPER_4(srst, i64, env, i64, i64, i64) DEF_HELPER_4(clst, i64, env, i64, i64, i64) -DEF_HELPER_4(mvpg, void, env, i64, i64, i64) +DEF_HELPER_FLAGS_4(mvpg, TCG_CALL_NO_WG, i32, env, i64, i64, i64) DEF_HELPER_4(mvst, i64, env, i64, i64, i64) DEF_HELPER_5(ex, i32, env, i32, i64, i64, i64) DEF_HELPER_FLAGS_4(stam, TCG_CALL_NO_WG, void, env, i32, i64, i32) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index af2801e..1c36a47 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -398,11 +398,12 @@ uint64_t HELPER(clst)(CPUS390XState *env, uint64_t c,= uint64_t s1, uint64_t s2) } =20 /* move page */ -void HELPER(mvpg)(CPUS390XState *env, uint64_t r0, uint64_t r1, uint64_t r= 2) +uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0, uint64_t r1, uint64= _t r2) { - /* XXX missing r0 handling */ - env->cc_op =3D 0; - fast_memmove(env, r1, r2, TARGET_PAGE_SIZE, 0); + /* ??? missing r0 handling, which includes access keys, but more + importantly optional suppression of the exception! */ + fast_memmove(env, r1, r2, TARGET_PAGE_SIZE, GETPC()); + return 0; /* data moved */ } =20 /* string copy (c is string terminator) */ diff --git a/target/s390x/translate.c b/target/s390x/translate.c index a24e288..f55f10a 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2916,8 +2916,7 @@ static ExitStatus op_mvcs(DisasContext *s, DisasOps *= o) =20 static ExitStatus op_mvpg(DisasContext *s, DisasOps *o) { - potential_page_fault(s); - gen_helper_mvpg(cpu_env, regs[0], o->in1, o->in2); + gen_helper_mvpg(cc_op, cpu_env, regs[0], o->in1, o->in2); set_cc_static(s); return NO_EXIT; } --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598897110799.7764542144349; Sun, 4 Jun 2017 10:54:57 -0700 (PDT) Received: from localhost ([::1]:57909 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZjr-0000j8-J0 for importer@patchew.org; Sun, 04 Jun 2017 13:54:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50070) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZR6-0007Ld-1j for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZR5-0002rI-7e for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:32 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:36339) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZR5-0002qJ-2o for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:31 -0400 Received: by mail-pf0-x241.google.com with SMTP id n23so18100591pfb.3 for ; Sun, 04 Jun 2017 10:35:30 -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.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:29 -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=WeybIss4tWOM2Qvr4CQTW7YhsQAO7qo3TjCjwtIirE8=; b=KE1XYIEVA0i/TEGcSxpsNqTYQyQlA6oxB7HsLHw5ag5SaDyzntv4l0lMqguzMy7lmJ oWT1oUyAuQPcTWwKzBsbskkgcXmnUIl40cqdr3TDcMzo90BxllquGdthhzYPotD+0ggL QlICos6NShrou+ghIJcqmZkd5gxbemHAq6TSSJ4nnqTNjpIX4bQ7M3aGUODyeDmQ+awW i9zq49xgFXEltPUY+MtZ2xPQl/GVxIdfFjTsyUrBiVwpx1Fyc7fgfzWslK19XINW8PgK 1sTXuXCYgXWaVrw0a22W9yzaqxDp1W/IDOPfSmqQfi6KxhEvhD71I9lto7nGOZ7XzEGt dzqQ== 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=WeybIss4tWOM2Qvr4CQTW7YhsQAO7qo3TjCjwtIirE8=; b=RSjqeHe2Kse9Ja/AZaI51vyjYM4MDYNgcVHqnPWB46qNxhdiPkhptgjfaDjVvC/Reu c1A85/thuiOR95hmLAcaUmK2jpI0H8UqNVdoSRtgplB1kRPWhmI4QFWr7QIqJ7MbSt3+ G5v4glQ5fNyB4dvJBFAmNWaPGaMfs47XP+LPMVO8+uBkbfR2R3xC+E8eE3Uc1CpTaDdC kAUIk3kWrfNEKRIABwjRjfEa2IEUPzl5jr3aj0BMXkalnaaUWrDOyjvwzC/lPIczcmlR GHlGeORVz30LdCftJIWMIjQF8zM/h9c+JKFCfguGl6NFHCCgd/IjprjY8v2pEJKRzd+8 45ag== X-Gm-Message-State: AODbwcASMrlSJWze3IUMNDbbW9ONWYZgz1tuJoRTsXTV5UC14N1Dyge5 onxFueTUhlLdCt6TQL4= X-Received: by 10.84.215.207 with SMTP id g15mr10533370plj.161.1496597730050; Sun, 04 Jun 2017 10:35:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:13 -0700 Message-Id: <20170604173509.29684-14-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:c00::241 Subject: [Qemu-devel] [PULL 13/69] target/s390x: Use unwind data for helper_mvst 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 5 +++-- target/s390x/translate.c | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 1c36a47..e4bfc6e 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -409,6 +409,7 @@ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0, = uint64_t r1, uint64_t r2) /* string copy (c is string terminator) */ uint64_t HELPER(mvst)(CPUS390XState *env, uint64_t c, uint64_t d, uint64_t= s) { + uintptr_t ra =3D GETPC(); uint32_t len; =20 c =3D c & 0xff; @@ -418,8 +419,8 @@ uint64_t HELPER(mvst)(CPUS390XState *env, uint64_t c, u= int64_t d, uint64_t s) /* Lest we fail to service interrupts in a timely manner, limit the amount of work we're willing to do. For now, let's cap at 8k. */ for (len =3D 0; len < 0x2000; ++len) { - uint8_t v =3D cpu_ldub_data(env, s + len); - cpu_stb_data(env, d + len, v); + uint8_t v =3D cpu_ldub_data_ra(env, s + len, ra); + cpu_stb_data_ra(env, d + len, v, ra); if (v =3D=3D c) { /* Complete. Set CC=3D1 and advance R1. */ env->cc_op =3D 1; diff --git a/target/s390x/translate.c b/target/s390x/translate.c index f55f10a..86e5567 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2923,7 +2923,6 @@ static ExitStatus op_mvpg(DisasContext *s, DisasOps *= o) =20 static ExitStatus op_mvst(DisasContext *s, DisasOps *o) { - potential_page_fault(s); gen_helper_mvst(o->in1, cpu_env, regs[0], o->in1, o->in2); set_cc_static(s); return_low128(o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599043364846.7775140745855; Sun, 4 Jun 2017 10:57:23 -0700 (PDT) Received: from localhost ([::1]:57922 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZmE-0002sf-2M for importer@patchew.org; Sun, 04 Jun 2017 13:57:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50083) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZR7-0007Mw-CO for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZR6-0002su-JI for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:33 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:35764) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZR6-0002sE-Dz for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:32 -0400 Received: by mail-pg0-x243.google.com with SMTP id f127so7255036pgc.2 for ; Sun, 04 Jun 2017 10:35:32 -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.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:30 -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=apgZypxk/LkGMda7nHPRcuNHBHZtwBctwR57de8riM0=; b=htnw7oPrCsNuawgfG/teBxhpdhGsPEBqE2lfNaKFXYuSZXdOOfC+MoDEKOdMiwJAF+ Jlh4IcSmfe5mIiGohicbmp1rXrDacL+FSz/73ZXTSu9dz6NA6G+ojudTDwsGV9+SwXfH A1zWiurPmD4Dwkz7bmhWsG1nnI5nJzhOgEePI2caP1XyyOKsvjY+zzV8qxpIwwWyl1it 5cIFM+f1b8CCR3UpcdNPKat0tegDY476EYlRHwA3hW0JqTJjyvSwtvNt2rEGA84rR5pk oexWUfZ3+4NXwLe3NU3RU0PzPKa15eNdABEgZf+vhJsYry31d6byVQu7rOa/7JkCTHJ5 UN3Q== 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=apgZypxk/LkGMda7nHPRcuNHBHZtwBctwR57de8riM0=; b=B2GHyHP21+Q0DShS31JWJ9PzaCPtEUWPyEUQzL/S63FuNwK8/OHorhODMVn8+CcNXG WEbRggvniA8ldcE3aZxXQYPMBNmp9DpJXZSjjDRUuUGne0HRuqft9J7M0tH5YPK+JsrI EpVsftK0Bsb68aU+Y5SCFdj7c3ZQGvrGQwtO68wq8fGkKJ80ooNyM68j67uaCsWFdJbm fIUcDNYqnsMF2z4K7x/RXPaM6OyuFBg+7fvCGuIhYT1vizkFKWftafzLrAVOzqOBy3KB 9/mRyEzKZXonYWoWOT+1Lnt46/HmyjJTcoG1SJXRpj9Tf1agXii7Crs95Tc/eBUfIYd6 poug== X-Gm-Message-State: AODbwcBoWtezv4dd5OvikjNUQ+TDxyYgR5xVbQm4+y//r2YJYTDA6YYB 5VOKsNzR47PkuzKVFc0= X-Received: by 10.99.38.133 with SMTP id m127mr13321102pgm.72.1496597731403; Sun, 04 Jun 2017 10:35:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:14 -0700 Message-Id: <20170604173509.29684-15-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::243 Subject: [Qemu-devel] [PULL 14/69] target/s390x: Use unwind data for helper_lam 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 3 ++- target/s390x/translate.c | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index e4bfc6e..88e817a 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -469,10 +469,11 @@ static uint32_t helper_icm(CPUS390XState *env, uint32= _t r1, uint64_t address, /* load access registers r1 to r3 from memory at a2 */ void HELPER(lam)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t r3) { + uintptr_t ra =3D GETPC(); int i; =20 for (i =3D r1;; i =3D (i + 1) % 16) { - env->aregs[i] =3D cpu_ldl_data(env, a2); + env->aregs[i] =3D cpu_ldl_data_ra(env, a2, ra); a2 +=3D 4; =20 if (i =3D=3D r3) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 86e5567..dca2096 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2621,7 +2621,6 @@ static ExitStatus op_lam(DisasContext *s, DisasOps *o) { TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); - potential_page_fault(s); gen_helper_lam(cpu_env, r1, o->in2, r3); tcg_temp_free_i32(r1); tcg_temp_free_i32(r3); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598345791301.3320990120079; Sun, 4 Jun 2017 10:45:45 -0700 (PDT) Received: from localhost ([::1]:57872 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZay-0000Cy-Eu for importer@patchew.org; Sun, 04 Jun 2017 13:45:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50106) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRB-0007Q5-Eh for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZR8-0002u9-0K for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:37 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:34446) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZR7-0002tT-Qh for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:33 -0400 Received: by mail-pg0-x243.google.com with SMTP id v14so3629311pgn.1 for ; Sun, 04 Jun 2017 10:35:33 -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.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:32 -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=ImKm1vw8VyuJLRdFYuyhlec3S05xShEB38wD4rIAvX8=; b=KnLie8CSqyC5GjoidKin5Xjcjglo9tsGrdm1RjrNP/+uaupBWxuo/9D99YUK9zOB+q od99gH5lvN78o0F3pYqfBhrfQVpAjUqMyZZsQKGArYKiaJjstwH0xMvEwB2GFr1uJF4R eTv2gNxEr3bvrv7aX8uKflu9Bl7aVAn3xopnEcMSXewFzOC0IRiIaQeCGtgbuR3bCzhP 3iYwFNmvArcL77Ckjra1bsv5pbtiUeICRLdK++Lg9iof2/X+J3UOGDEWFouAEZomdsGX GJOOj/H3lUR7z7sdtKJKA+43tKNX5NF1WzMm+YGcwRDF5rZ8mNtXcSnx42yUH0cczBAP GLiQ== 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=ImKm1vw8VyuJLRdFYuyhlec3S05xShEB38wD4rIAvX8=; b=i5gSOC7F9qKTAlgeL/5egFazVxmm4n4A+NVeH9/ObdLKKZObm9LPGaepd47gkp17FE flayak1zew7Ztf4tCc/eCyziytcfRIUi483egYkN92Uw9f5wzY8yrcc5uUKoIO6t+HR7 wgnkYEgejUk/qP/Z2lV2POYSZaJ65fxlQcvjpx2jx3TEnatonbOhZX6i8kbMF9+9TrGE Na+CIw99SkjnaOY6CgJRyNdy5hV78sAlAgmFVWJAqrL01eJTkzBzI1lobT2e+n6vtckF YXWTT91jeM+HuZb036pIjbLwFXuQGVNI2zRYDUDHtHe6qfFbkDAnsiTXTClX/w7rHVXo B03A== X-Gm-Message-State: AODbwcAmWbvoUbYrxaxoSCeozCAwaNTtzfrtLp8EkOlRkjYpaEN7YO28 8RZxjOGki2bpSV9aRL8= X-Received: by 10.99.161.25 with SMTP id b25mr16995806pgf.26.1496597732784; Sun, 04 Jun 2017 10:35:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:15 -0700 Message-Id: <20170604173509.29684-16-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::243 Subject: [Qemu-devel] [PULL 15/69] target/s390x: Use unwind data for helper_stam 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 3 ++- target/s390x/translate.c | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 88e817a..2acc984 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -485,10 +485,11 @@ void HELPER(lam)(CPUS390XState *env, uint32_t r1, uin= t64_t a2, uint32_t r3) /* store access registers r1 to r3 in memory at a2 */ void HELPER(stam)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t r= 3) { + uintptr_t ra =3D GETPC(); int i; =20 for (i =3D r1;; i =3D (i + 1) % 16) { - cpu_stl_data(env, a2, env->aregs[i]); + cpu_stl_data_ra(env, a2, env->aregs[i], ra); a2 +=3D 4; =20 if (i =3D=3D r3) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index dca2096..7af2a0b 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3862,7 +3862,6 @@ static ExitStatus op_stam(DisasContext *s, DisasOps *= o) { TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); - potential_page_fault(s); gen_helper_stam(cpu_env, r1, o->in2, r3); tcg_temp_free_i32(r1); tcg_temp_free_i32(r3); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598003935774.4660070535033; Sun, 4 Jun 2017 10:40:03 -0700 (PDT) Received: from localhost ([::1]:57843 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZVS-00030S-N8 for importer@patchew.org; Sun, 04 Jun 2017 13:40:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50104) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRB-0007Q4-Dx for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZR9-0002wr-L1 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:37 -0400 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:36339) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZR9-0002vS-EX for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:35 -0400 Received: by mail-pf0-x244.google.com with SMTP id n23so18100683pfb.3 for ; Sun, 04 Jun 2017 10:35:35 -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.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:33 -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=4SGCzzu1Df3GyIWSY/yg6cnmzF1QwVGw36kkzCAFHH4=; b=KlaukucfPhWVODJH08Pr/5BMObWXXxlFE3Yr3mc6AZnaC6suqY7gqu0rh2rrF9Ajh9 Gj5tdeDpWOasCcw1rL/tvEwoL1vni9198k9UgmlbReUr27K2GMmuEQZWQewR6Jz7agLR 92bH6guvPKNEWM7TBmeQouPdEoB3qO4EApBdRPRQzRHL2uYkDmaE/ODsVcdZs46am6MZ 23JcoH18c807Cn5/RCQwT4qtGDwvKT1JQd/Rp4NOF8A3JILQTBpif+KB+18xOUzdnKBK zfv9tl2NMWEepTb7Udc9kxp5w2g+vdWaO43rEYaUHZQ0ezNztesyYkRw9W9KCk1oHTBp c5Tw== 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=4SGCzzu1Df3GyIWSY/yg6cnmzF1QwVGw36kkzCAFHH4=; b=PZvspbdEry+3CTU5yFwsSHQ4CuXBnC34BZBFleMPHB7AW3hLaC27kzNRJvEzjIaS8D 2/VC06ihOlc2xAtDy21vHRL9eCv/7Va7/mF9SW1URP8L63ZnzYPK6gKhk5qw20dDlHh8 MP3EIKD9obsmBOHJOa/YCcKjhH2EajpwDxUBTM1TCoelagqNy+6iCixMFDADqQsTMhEW VZ0ZSmkzOmuPH3rryyKckc22U4Zy1LLq6gCH9YZrKvt0WVYlyJGYHhXMZXKsRn7fq0L2 x3jDuT+rNEg969dcVlAYjp5PlA5e5N3ofdrWEh33L4WdAbozVzPL+s2GWrqOcBalPMg8 q49A== X-Gm-Message-State: AODbwcCt/yZ2cTerdtFW6yGr7p4pD2JnEdT0w4jzwYuWx9d/ziwXyub7 akHUgOtHEA1kx1xRxMc= X-Received: by 10.99.64.3 with SMTP id n3mr16415403pga.71.1496597734325; Sun, 04 Jun 2017 10:35:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:16 -0700 Message-Id: <20170604173509.29684-17-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:c00::244 Subject: [Qemu-devel] [PULL 16/69] target/s390x: Use unwind data for helper_mvcl 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 7 ++++--- target/s390x/translate.c | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 2acc984..49cfc9b 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -501,6 +501,7 @@ void HELPER(stam)(CPUS390XState *env, uint32_t r1, uint= 64_t a2, uint32_t r3) /* move long */ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, uint32_t r2) { + uintptr_t ra =3D GETPC(); uint64_t destlen =3D env->regs[r1 + 1] & 0xffffff; uint64_t dest =3D get_address_31fix(env, r1); uint64_t srclen =3D env->regs[r2 + 1] & 0xffffff; @@ -522,12 +523,12 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1= , uint32_t r2) } =20 for (; destlen && srclen; src++, dest++, destlen--, srclen--) { - v =3D cpu_ldub_data(env, src); - cpu_stb_data(env, dest, v); + v =3D cpu_ldub_data_ra(env, src, ra); + cpu_stb_data_ra(env, dest, v, ra); } =20 for (; destlen; dest++, destlen--) { - cpu_stb_data(env, dest, pad); + cpu_stb_data_ra(env, dest, pad, ra); } =20 env->regs[r1 + 1] =3D destlen; diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 7af2a0b..fb2d6ff 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2871,7 +2871,6 @@ static ExitStatus op_mvcl(DisasContext *s, DisasOps *= o) { TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r2 =3D tcg_const_i32(get_field(s->fields, r2)); - potential_page_fault(s); gen_helper_mvcl(cc_op, cpu_env, r1, r2); tcg_temp_free_i32(r1); tcg_temp_free_i32(r2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598138243405.82987229170647; Sun, 4 Jun 2017 10:42:18 -0700 (PDT) Received: from localhost ([::1]:57853 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZXc-0004zC-NB for importer@patchew.org; Sun, 04 Jun 2017 13:42:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRB-0007Q6-MQ for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRA-0002y5-R7 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:37 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:36341) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRA-0002xX-Lk for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:36 -0400 Received: by mail-pf0-x241.google.com with SMTP id n23so18100700pfb.3 for ; Sun, 04 Jun 2017 10:35:36 -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.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:35 -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=2Sca08XKrrmAoJUuanPY9mDeNfWR7Su8F3Kw/Tq2/vY=; b=DMgk51CAqjibumhkZVwYFmyh4RVaunBkF/Z32qPKfCsyjcaW/FEeZHGC7z2qIWDBYw mQI/NX8qXKRf5t66MFiE6saOr4qvK02KB/iSPqmftmYEGS+kGbfBUwF1u4pomPy9Q+Bt 1OGCFZ9GViRDi/myoXL98zedrNFhG65dj8WoyQFAxRgVYieOBcaBdsfJQqdJnAHwYHe4 qdAtpzSl76tVo+YYctBd+9AO43t069dMN8RpnIMdoXbKu4Sl0NI7gtjgmxTjTfoZSz2N MF8vrH1X8iKdJm16e6lAxQwGnojMSrKNKxn7BcYIz7V+jA7O5tqXtIhzInEJzlmKRwzX J/hA== 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=2Sca08XKrrmAoJUuanPY9mDeNfWR7Su8F3Kw/Tq2/vY=; b=REccMvT98sjcQlNaEHhloRf04d1SXQaQaY7Ims+NZV36i9lljciSdK+D0XIlQyQIDO 7O9ZBVmF/yvXBanutJpRWYDI2mCEUc8x0BJNmwaOBTrY19z59+G8Wg+1Mq6ijnEocIS1 EXPrOWhg1SwcfMf8qIo45eH299D1z32Nv3chBdNgDSDQh+iVj4gnay/r1ui4kUV+o67e iUdIfoR2IRZoZYgUVcAtZG5qLL+Iv3+Kc6ceqx3A3bMtXM7FZE+HTUwzUp4KLwBULuVG zVt/Fm4zYUI/Nb2Pj9yKfBuFChzz+Q5/rcunkPsFBUWRadwBhhEt4oY+R7QNcZkkd1wm JJTw== X-Gm-Message-State: AODbwcBxdeskqSHEkEZ9pOyITPig6STHE++rEa6oqs1c8p/ZBqHnmgRy Zldhyxwpx+K994YOwco= X-Received: by 10.99.159.10 with SMTP id g10mr7862162pge.223.1496597735642; Sun, 04 Jun 2017 10:35:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:17 -0700 Message-Id: <20170604173509.29684-18-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:c00::241 Subject: [Qemu-devel] [PULL 17/69] target/s390x: Use unwind data for helper_mvcle 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 7 ++++--- target/s390x/translate.c | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 49cfc9b..8a095ad 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -544,6 +544,7 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t r3) { + uintptr_t ra =3D GETPC(); uint64_t destlen =3D env->regs[r1 + 1]; uint64_t dest =3D env->regs[r1]; uint64_t srclen =3D env->regs[r3 + 1]; @@ -572,12 +573,12 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, } =20 for (; destlen && srclen; src++, dest++, destlen--, srclen--) { - v =3D cpu_ldub_data(env, src); - cpu_stb_data(env, dest, v); + v =3D cpu_ldub_data_ra(env, src, ra); + cpu_stb_data_ra(env, dest, v, ra); } =20 for (; destlen; dest++, destlen--) { - cpu_stb_data(env, dest, pad); + cpu_stb_data_ra(env, dest, pad, ra); } =20 env->regs[r1 + 1] =3D destlen; diff --git a/target/s390x/translate.c b/target/s390x/translate.c index fb2d6ff..b42acae 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2882,7 +2882,6 @@ static ExitStatus op_mvcle(DisasContext *s, DisasOps = *o) { TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); - potential_page_fault(s); gen_helper_mvcle(cc_op, cpu_env, r1, o->in2, r3); tcg_temp_free_i32(r1); tcg_temp_free_i32(r3); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598503817447.96136473859724; Sun, 4 Jun 2017 10:48:23 -0700 (PDT) Received: from localhost ([::1]:57881 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZdW-0002xX-Fv for importer@patchew.org; Sun, 04 Jun 2017 13:48:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50127) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRD-0007Q9-8o for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRC-00030T-Bo for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:39 -0400 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:34450) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRC-0002zI-6G for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:38 -0400 Received: by mail-pg0-x244.google.com with SMTP id v14so3629422pgn.1 for ; Sun, 04 Jun 2017 10:35:38 -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.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:36 -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=+rU6X27Q2EHgtfHxY5ShUD6tFrZv9JFBvXuVE+6VAKE=; b=sfk8GCnYSSkUPILvH5HUAR59+lfmTTtk2Qw+/x4XFa8uJNHyPSLUhKcyghh9FZGKKI +O5EZfl2QrHEnAyRX11asYZYQgTyOKRScpehQCNgYggqAs/VuY8VS7dPrVIRWahAUHjm NUT42oE7SN1w1En8KbtTm+3JVKgNtFCRGxm3FcEnNlMAEe7vmbjUXwFATmSbjg/c86oG LaZMZkJkDGbYQ3++KUxA9bkBAOJNWlLk9Jk8tw8oKoShWW4BkbCdCn4HKcrEKR+tBLF/ y4HItuRSlEE8rK/y3fBXi+dS/FRssopzb9UhozF3IAY0e8zobU1/zsG8QNtNOTcgblBL CBAQ== 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=+rU6X27Q2EHgtfHxY5ShUD6tFrZv9JFBvXuVE+6VAKE=; b=QjXqQG7mvcwdNfpCD1+CJYA7FHQGNP70tGTSV8hDr9nmOToE6widWzqwH36h9g+B2t LUvHW2+pV0hQEzobzlF561OLlds6xXcX7X4nsyYoyTZklPJMhXr8Zs0iB1JpUxkgLbi+ VZlIBBaEVhxSzc7LaYrUwRFV5edEEzVF15Y8lueSbiZtShUHMGpQTAfkGG+PfFz3tKY3 EzHNuQQ5tP3nzJjeoFk6BTbdbI0LVKg9eiKYabDcjy1bYDzy5sINZ6srcP9dlWIPoZu2 0kAT270g/6bSPlPmjurHHx+TqT7sVFLccAzHINY/xp1nRIf3rQUN7I7djIczV0Ih2su0 iE8A== X-Gm-Message-State: AODbwcBHU0F+v0gS8zbjCvHj+RlO0ghnHJYPdTLjlPYlVCTl52nrbMkP YyVC2kV3LwLBk/x0KKY= X-Received: by 10.99.152.25 with SMTP id q25mr17353208pgd.93.1496597737136; Sun, 04 Jun 2017 10:35:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:18 -0700 Message-Id: <20170604173509.29684-19-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::244 Subject: [Qemu-devel] [PULL 18/69] target/s390x: Use unwind data for helper_clcle 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 6 +++--- target/s390x/translate.c | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 8a095ad..f5a3044 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -595,12 +595,12 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t r3) { + uintptr_t ra =3D GETPC(); uint64_t destlen =3D env->regs[r1 + 1]; uint64_t dest =3D get_address_31fix(env, r1); uint64_t srclen =3D env->regs[r3 + 1]; uint64_t src =3D get_address_31fix(env, r3); uint8_t pad =3D a2 & 0xff; - uint8_t v1 =3D 0, v2 =3D 0; uint32_t cc =3D 0; =20 if (!(destlen || srclen)) { @@ -612,8 +612,8 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, } =20 for (; destlen || srclen; src++, dest++, destlen--, srclen--) { - v1 =3D srclen ? cpu_ldub_data(env, src) : pad; - v2 =3D destlen ? cpu_ldub_data(env, dest) : pad; + uint8_t v1 =3D srclen ? cpu_ldub_data_ra(env, src, ra) : pad; + uint8_t v2 =3D destlen ? cpu_ldub_data_ra(env, dest, ra) : pad; if (v1 !=3D v2) { cc =3D (v1 < v2) ? 1 : 2; break; diff --git a/target/s390x/translate.c b/target/s390x/translate.c index b42acae..9270067 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1915,7 +1915,6 @@ static ExitStatus op_clcle(DisasContext *s, DisasOps = *o) { TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); - potential_page_fault(s); gen_helper_clcle(cc_op, cpu_env, r1, o->in2, r3); tcg_temp_free_i32(r1); tcg_temp_free_i32(r3); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598151017718.8847805354684; Sun, 4 Jun 2017 10:42:31 -0700 (PDT) Received: from localhost ([::1]:57856 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZXp-0005Bm-A3 for importer@patchew.org; Sun, 04 Jun 2017 13:42:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50138) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRE-0007Rk-Kt for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRD-00031j-Ml for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:40 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:33372) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRD-00031C-GL for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:39 -0400 Received: by mail-pf0-x241.google.com with SMTP id f27so18146000pfe.0 for ; Sun, 04 Jun 2017 10:35:39 -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.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:37 -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=hdHv4PJE0J4xlVzE8JTWtM80SCA7hLTNh0xkN/8ghuo=; b=jBSNkQNLjytG5bCNJaXanCzCGuo8Zo50WG6GiV3DhH314uFT3odCApEzFqrxjs00k6 KV9uGBlWEqZMDdVOiSLbR8uclvX0gV0FF8nJuJRBthHeKGgGsYM7REziU7xlsBHZjt7N QQICXaO1vY++L2aAHeskUwXy7dre/KW+oUE+FXl3hZSr7mHkaThRocx1ItuLCmo7XgZm Q3+K9sIHi4VbNmU8XE3tYwlSC8n0TIkSOWGcYPG3kdNo7ThGSutCY6mPsDiQw6QAml3j pwDExIDzc5NXACW4wdkEttuVcNLprYriGPandrRI9doRY9PbO0ftIoc41sGNtunNZu8T H93w== 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=hdHv4PJE0J4xlVzE8JTWtM80SCA7hLTNh0xkN/8ghuo=; b=oQk0NJSM4KpfrmeXLVvKFv60bO7HiI/oxpNGq2UwCllM3qlnqMpaGQpclSuEzf0udz gh+QtHRcerWEdjtNqxLE4KnY48VvJ5Ndolegmmv/XptRTgWOiqPEqjt9t1JJgqXDkd5+ PG/F/BTq7xauP67Gj3fOtfeRftRmn/fV9scyPD5bImJR5L6uW69QCMaKxGKxOkVtfoJy AeF27mT2pRP4W3xRSaROq653gtNTxTn8fD3WiFVjWfoaKLGifQhvG6F3xuEkQUG8nusX V88aP1O5OR3w/OR/Dh/XKRmwSZokTqvelQZunx225g3/5OgDwftqGJUc+DdIfOWcasz8 bsCw== X-Gm-Message-State: AODbwcBWetnBMz158IDiMClf0YREUuEOtyl7YbZjLLrxRpv27v9GLthY EUGqcgl7DGhKNIHn98Q= X-Received: by 10.98.157.204 with SMTP id a73mr12342725pfk.235.1496597738444; Sun, 04 Jun 2017 10:35:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:19 -0700 Message-Id: <20170604173509.29684-20-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:c00::241 Subject: [Qemu-devel] [PULL 19/69] target/s390x: Use unwind data for helper_cksm 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 11 ++++++----- target/s390x/translate.c | 1 - 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index f5a3044..d4ee364 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -633,6 +633,7 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, uint64_t HELPER(cksm)(CPUS390XState *env, uint64_t r1, uint64_t src, uint64_t src_len) { + uintptr_t ra =3D GETPC(); uint64_t max_len, len; uint64_t cksm =3D (uint32_t)r1; =20 @@ -642,21 +643,21 @@ uint64_t HELPER(cksm)(CPUS390XState *env, uint64_t r1, =20 /* Process full words as available. */ for (len =3D 0; len + 4 <=3D max_len; len +=3D 4, src +=3D 4) { - cksm +=3D (uint32_t)cpu_ldl_data(env, src); + cksm +=3D (uint32_t)cpu_ldl_data_ra(env, src, ra); } =20 switch (max_len - len) { case 1: - cksm +=3D cpu_ldub_data(env, src) << 24; + cksm +=3D cpu_ldub_data_ra(env, src, ra) << 24; len +=3D 1; break; case 2: - cksm +=3D cpu_lduw_data(env, src) << 16; + cksm +=3D cpu_lduw_data_ra(env, src, ra) << 16; len +=3D 2; break; case 3: - cksm +=3D cpu_lduw_data(env, src) << 16; - cksm +=3D cpu_ldub_data(env, src + 2) << 8; + cksm +=3D cpu_lduw_data_ra(env, src, ra) << 16; + cksm +=3D cpu_ldub_data_ra(env, src + 2, ra) << 8; len +=3D 3; break; } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 9270067..76910bc 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1866,7 +1866,6 @@ static ExitStatus op_cksm(DisasContext *s, DisasOps *= o) int r2 =3D get_field(s->fields, r2); TCGv_i64 len =3D tcg_temp_new_i64(); =20 - potential_page_fault(s); gen_helper_cksm(len, cpu_env, o->in1, o->in2, regs[r2 + 1]); set_cc_static(s); return_low128(o->out); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598299207308.85450632497304; Sun, 4 Jun 2017 10:44:59 -0700 (PDT) Received: from localhost ([::1]:57866 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZaD-0007t5-PY for importer@patchew.org; Sun, 04 Jun 2017 13:44:57 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50150) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRF-0007T2-RL for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRF-00034M-0R for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:41 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:35037) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRE-000335-Qn for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:40 -0400 Received: by mail-pf0-x241.google.com with SMTP id u26so18118824pfd.2 for ; Sun, 04 Jun 2017 10:35:40 -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.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:39 -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=eTzekCYHqAkrjY8gv7bsRN3sPl4ig5ZZ5RSPrbUBMmg=; b=Lx7jShTFo8ZmHMgAfb7+hDqVEjmXujZOcN0inXxKhunn/cRbDsAoDB5klAr7EQwkTE piRAqzR/xoEtLjiuuZx/aP0RXxZbD6k/scLX3D22XdimcIQHQK+MH0JYzj3ktJWifyIf Ju3GyHpB0l6CWCpBToe1sydgUzKsW0/FeXgfGqz/HiHmsa89D25pP8Qlg1o7FAZGmDuL eReFSNJSLRkI4UdSrX+vQ2Un2cjTm72mXU3kKPgKGXD92cvT9ppvOG5JJWy1uQeFEQjy VhEVsteQxLroKWDX1+RFpv6NVvCk+6qvbA1BxFZ/t5rCoPB8zId0t52k9+wXwTHH0YZX 0I+A== 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=eTzekCYHqAkrjY8gv7bsRN3sPl4ig5ZZ5RSPrbUBMmg=; b=EP0nB05uqafJHptm9d4UapaU+ZtGbg52fVffWzngOFT62QUIk58vn7cb+JpZE4VWj5 6dJ7nrwaOGyNx0+y6n5uAdYctOzmGc9ShyF0kkRe/QZftyyfEkhx5vOID1BljjgvIGlI B9u7WpGxXPn4JHktaNgUByrPakFVF5ZPbIvlVEDnN19ee5QTTj1a0blu4yQais9XF0+c qUT5NYn6TOVTnz5YR47RUm0aFBiwamRZ0TjzoRFmweGZRBpPHYta/WdwKSWtbttW2r0C oLi2LzaxXbWV7SUkifSrYppFw2qy9/7nMVd2zgfKXDxXOZOWesBgnLE6/XqpUK36O1nS z2FA== X-Gm-Message-State: AODbwcA7QIw1sosvPuI63H6Rad3oai9YOvjAIEcUUBiXl7rnOZHcTjor 81d+JB6q4z10fTFUimQ= X-Received: by 10.98.151.2 with SMTP id n2mr16597278pfe.29.1496597739770; Sun, 04 Jun 2017 10:35:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:20 -0700 Message-Id: <20170604173509.29684-21-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:c00::241 Subject: [Qemu-devel] [PULL 20/69] target/s390x: Use unwind data for helper_unpk 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 9 +++++---- target/s390x/translate.c | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index d4ee364..0701e10 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -679,6 +679,7 @@ uint64_t HELPER(cksm)(CPUS390XState *env, uint64_t r1, void HELPER(unpk)(CPUS390XState *env, uint32_t len, uint64_t dest, uint64_t src) { + uintptr_t ra =3D GETPC(); int len_dest =3D len >> 4; int len_src =3D len & 0xf; uint8_t b; @@ -688,8 +689,8 @@ void HELPER(unpk)(CPUS390XState *env, uint32_t len, uin= t64_t dest, src +=3D len_src; =20 /* last byte is special, it only flips the nibbles */ - b =3D cpu_ldub_data(env, src); - cpu_stb_data(env, dest, (b << 4) | (b >> 4)); + b =3D cpu_ldub_data_ra(env, src, ra); + cpu_stb_data_ra(env, dest, (b << 4) | (b >> 4), ra); src--; len_src--; =20 @@ -699,7 +700,7 @@ void HELPER(unpk)(CPUS390XState *env, uint32_t len, uin= t64_t dest, uint8_t cur_byte =3D 0; =20 if (len_src > 0) { - cur_byte =3D cpu_ldub_data(env, src); + cur_byte =3D cpu_ldub_data_ra(env, src, ra); } =20 len_dest--; @@ -718,7 +719,7 @@ void HELPER(unpk)(CPUS390XState *env, uint32_t len, uin= t64_t dest, /* zone bits */ cur_byte |=3D 0xf0; =20 - cpu_stb_data(env, dest, cur_byte); + cpu_stb_data_ra(env, dest, cur_byte, ra); } } =20 diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 76910bc..4978f19 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4094,7 +4094,6 @@ static ExitStatus op_trt(DisasContext *s, DisasOps *o) static ExitStatus op_unpk(DisasContext *s, DisasOps *o) { TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); - potential_page_fault(s); gen_helper_unpk(cpu_env, l, o->addr1, o->in2); tcg_temp_free_i32(l); return NO_EXIT; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598283569542.5733887152273; Sun, 4 Jun 2017 10:44:43 -0700 (PDT) Received: from localhost ([::1]:57864 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZZy-0007fe-Ab for importer@patchew.org; Sun, 04 Jun 2017 13:44:42 -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) 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) 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) 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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, u= int64_t dest, } } =20 -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; =20 for (i =3D 0; i <=3D len; i++) { - uint8_t byte =3D cpu_ldub_data(env, array + i); - uint8_t new_byte =3D cpu_ldub_data(env, trans + byte); - - cpu_stb_data(env, array + i, new_byte); + uint8_t byte =3D cpu_ldub_data_ra(env, array + i, ra); + uint8_t new_byte =3D cpu_ldub_data_ra(env, trans + byte, ra); + cpu_stb_data_ra(env, array + i, new_byte, ra); } } =20 +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 =3D 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 =3D 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); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598668321347.63724740029636; Sun, 4 Jun 2017 10:51:08 -0700 (PDT) Received: from localhost ([::1]:57894 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZgA-0005AW-RB for importer@patchew.org; Sun, 04 Jun 2017 13:51:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50191) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRL-0007Ym-DN for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRH-00038f-QW for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:47 -0400 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:35774) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRH-00037x-KX for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:43 -0400 Received: by mail-pg0-x242.google.com with SMTP id f127so7255413pgc.2 for ; Sun, 04 Jun 2017 10:35:43 -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.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:41 -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=64GOZe+eFOruX7RFeVVgr304QyscnvojmE2aQVLY80o=; b=BsrevuqidshzYBydpBIgZNDxIhgzXAbkLGG7mcqZ0+2UY1yneSZKFJYDCFA/3HnlCt OEJKbd9oCgZGo2TWqh8zerCurpjQV6vlQCEzrHXyWT54tdic+xLqp6BNJECPZ6AmqWTO uDCvj+VYsR3goIVSXmoSuy4ysU8TDuzNVg8aiwSLIrI3kBfPEL4Kuasrrfw7oB7smpDJ 2aWDJWjvuLDCdCwKtK8axRprD34yyzacO6h8pDPTp3uHC4Hta0J5XpU+zlWG2/bfkmYS Bz5o67lAUHM1Y+qk/pL2baiOTd7pZ59cqrFXCvZKuIv8bMwGAAE3OyvdY4ziCAjcqJ4g 3zvg== 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=64GOZe+eFOruX7RFeVVgr304QyscnvojmE2aQVLY80o=; b=uDLZnS2w84zOjaPqt5FYJNOUc0uJDK4k8h6YpAMGWnSzuIUOVMMru+YLdgGsBq3cN5 nYx7CXsfpLZq8njB57QeL7RZg5YZoj3RvyDGJsPhZ847zjOF1ZyAmuprlHJ+/Iyg3QEz 9T4uNYhpQGITalFz/SK9t9SAI5jNg5BpWREbwqfbd09ntRjXtT+3Z/77LOV8uDm7HzAO zhabBBXcb1rVW3uo6ijhcdLWHgKb8DBYVbIxHnJnQvsOw6m76j+hPxtyGTCCgkSJNyMP zNrq9NMXfuD99FjkLVAHLFJPjgYnobwb3vI57Q5mPdMAmzvqsOSOqxGhLSc/+8YLsSC8 0ibw== X-Gm-Message-State: AODbwcBWdLh9n82IeSBpwa5aCbZbXk38EIqRZcpBOMtVoTtGYiNJWqXj uYUHcZBAcqy3PiDcznY= X-Received: by 10.98.74.5 with SMTP id x5mr3679655pfa.149.1496597742614; Sun, 04 Jun 2017 10:35:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:22 -0700 Message-Id: <20170604173509.29684-23-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 22/69] target/s390x: Use unwind data for helper_tre 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 15 ++++++++------- target/s390x/translate.c | 1 - 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index b37a963..fd6dbf7 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -744,9 +744,11 @@ void HELPER(tr)(CPUS390XState *env, uint32_t len, uint= 64_t array, uint64_t HELPER(tre)(CPUS390XState *env, uint64_t array, uint64_t len, uint64_t trans) { + uintptr_t ra =3D GETPC(); uint8_t end =3D env->regs[0] & 0xff; uint64_t l =3D len; uint64_t i; + uint32_t cc =3D 0; =20 if (!(env->psw.mask & PSW_MASK_64)) { array &=3D 0x7fffffff; @@ -757,25 +759,24 @@ uint64_t HELPER(tre)(CPUS390XState *env, uint64_t arr= ay, amount of work we're willing to do. For now, let's cap at 8k. */ if (l > 0x2000) { l =3D 0x2000; - env->cc_op =3D 3; - } else { - env->cc_op =3D 0; + cc =3D 3; } =20 for (i =3D 0; i < l; i++) { uint8_t byte, new_byte; =20 - byte =3D cpu_ldub_data(env, array + i); + byte =3D cpu_ldub_data_ra(env, array + i, ra); =20 if (byte =3D=3D end) { - env->cc_op =3D 1; + cc =3D 1; break; } =20 - new_byte =3D cpu_ldub_data(env, trans + byte); - cpu_stb_data(env, array + i, new_byte); + new_byte =3D cpu_ldub_data_ra(env, trans + byte, ra); + cpu_stb_data_ra(env, array + i, new_byte, ra); } =20 + env->cc_op =3D cc; env->retxl =3D len - i; return array + i; } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 1842cc3..447ba07 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4073,7 +4073,6 @@ static ExitStatus op_tr(DisasContext *s, DisasOps *o) =20 static ExitStatus op_tre(DisasContext *s, DisasOps *o) { - potential_page_fault(s); gen_helper_tre(o->out, cpu_env, o->out, o->out2, o->in2); return_low128(o->out2); set_cc_static(s); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598434126518.4384699714578; Sun, 4 Jun 2017 10:47:14 -0700 (PDT) Received: from localhost ([::1]:57877 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZcO-0001Qj-Hb for importer@patchew.org; Sun, 04 Jun 2017 13:47:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50190) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRL-0007Yk-Ck for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRJ-00039w-Dx for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:47 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:35775) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRJ-00039V-7L for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:45 -0400 Received: by mail-pg0-x241.google.com with SMTP id f127so7255455pgc.2 for ; Sun, 04 Jun 2017 10:35:45 -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.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:43 -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=7I79L6I6TpavOVs+f5oRZ4z5nqdnvEqXk7Ftgu/D57o=; b=IXFGCny2hkH1KQekTWy0R3w2IgH7sGmPZhGtuJRDcXUnWWHSVkwlrUA8sRz0wJRGrF PjzE8KOMh2BaItglNuc+aKybhtU4oW3eK4zLdTP6o+vehu905olazOeE/N7O3Nn8M8qb Q+Kgl9ATxWxOh+CknMnqDoixX3OkLW4/fLyu8ioW4fuFN4FfFj6FRpIbib1qeL4sz7Al 4euXMYxgsaPUIEXaIQetZLsj4QooQE5o55E03gQNlmvaqbzkicCSTlMIyx1ztgj69XtR H0rkjHBaRW2aW1IwQAtjRzyNaXPtnejyAE7QSVNckSue7VB4vC6/FFrosqzaUGC1190b eHiQ== 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=7I79L6I6TpavOVs+f5oRZ4z5nqdnvEqXk7Ftgu/D57o=; b=egDnZmox+MT7V+xMNJvuR27S2W88V/2zGn+Q6CZp2eoXJAR7GzBCNXpoSAocB81IRg sQLcdq01ekDGeYP/gVMIoQAr5iLGGgvPQcMyuxpmqPX8SI6Vt3r7j3mNvkITtEpvs3Nv gQgSpCs8wJTqPDhQfkRAJCAa+168f1mHxKni0/HpVKopLrMqzWJpLqt2Wq4abi6IW+yX PzvS9mBTbssVV0/d9DlQqZHtzsO3NGsykm8bPj7h8TmlIrKm8H/Xvy7G7hVMT6qKlPg0 vtLEHIiorysrlGYNUZg9sESbYz9LFsCRj9/MuLH/W89q9nM117Yf+jUvJFhRoJne+3BI 5i1A== X-Gm-Message-State: AODbwcDV5EzS1dAODyinbK16hNqwuBIMaPv6wPu7h6eX86LHz4WAjhTh nwMRvfeJ18X6mBhY9IM= X-Received: by 10.84.215.23 with SMTP id k23mr10879646pli.104.1496597743884; Sun, 04 Jun 2017 10:35:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:23 -0700 Message-Id: <20170604173509.29684-24-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::241 Subject: [Qemu-devel] [PULL 23/69] target/s390x: Use unwind data for helper_trt 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 28 ++++++++++++++++------------ target/s390x/translate.c | 1 - 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index fd6dbf7..ff12777 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -781,25 +781,29 @@ uint64_t HELPER(tre)(CPUS390XState *env, uint64_t arr= ay, return array + i; } =20 -uint32_t HELPER(trt)(CPUS390XState *env, uint32_t len, uint64_t array, - uint64_t trans) +static uint32_t do_helper_trt(CPUS390XState *env, uint32_t len, uint64_t a= rray, + uint64_t trans, uintptr_t ra) { - uint32_t cc =3D 0; - int i; + uint32_t i; =20 for (i =3D 0; i <=3D len; i++) { - uint8_t byte =3D cpu_ldub_data(env, array + i); - uint8_t sbyte =3D cpu_ldub_data(env, trans + byte); + uint8_t byte =3D cpu_ldub_data_ra(env, array + i, ra); + uint8_t sbyte =3D cpu_ldub_data_ra(env, trans + byte, ra); =20 if (sbyte !=3D 0) { env->regs[1] =3D array + i; - env->regs[2] =3D (env->regs[2] & ~0xff) | sbyte; - cc =3D (i =3D=3D len) ? 2 : 1; - break; + env->regs[2] =3D deposit64(env->regs[2], 0, 8, sbyte); + return (i =3D=3D len) ? 2 : 1; } } =20 - return cc; + return 0; +} + +uint32_t HELPER(trt)(CPUS390XState *env, uint32_t len, uint64_t array, + uint64_t trans) +{ + return do_helper_trt(env, len, array, trans, GETPC()); } =20 void HELPER(cdsg)(CPUS390XState *env, uint64_t addr, @@ -1275,8 +1279,8 @@ uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, = uint64_t v1, get_address(env, 0, b2, d2), 0); return cc; case 0xd00: - cc =3D helper_trt(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2)); + cc =3D do_helper_trt(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); break; default: goto abort; diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 447ba07..fed9f17 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4082,7 +4082,6 @@ static ExitStatus op_tre(DisasContext *s, DisasOps *o) static ExitStatus op_trt(DisasContext *s, DisasOps *o) { TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); - potential_page_fault(s); gen_helper_trt(cc_op, cpu_env, l, o->addr1, o->in2); tcg_temp_free_i32(l); set_cc_static(s); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599186275397.0395752473348; Sun, 4 Jun 2017 10:59:46 -0700 (PDT) Received: from localhost ([::1]:57931 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZoW-0005av-JC for importer@patchew.org; Sun, 04 Jun 2017 13:59:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRL-0007Yj-Ck for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRK-0003Ap-Iy for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:47 -0400 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:35777) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRK-0003AU-D5 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:46 -0400 Received: by mail-pg0-x242.google.com with SMTP id f127so7255487pgc.2 for ; Sun, 04 Jun 2017 10:35:46 -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.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:44 -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=n5BR7XB2IJ0BdEFSIgpNPSj8l11Jxl1kySMmYJ5ZWp0=; b=aUbSNaZppbV89hMmHmcUHCIT2w7zFNIqjcI2nhsrHuKt8pboHl2m6/WJgT4vaHeQZn Zt6ReEZ3GpDFv1nPBJ8w9gv1k9CcuB0mb9Yhnlpd2PupiQobNIYd2KlmqNnJ9UfZWVj6 UPNNvIMb7OnIaMJWFMOQ/l9IlUwYj8+4Tq4C4kF+xiGRca10bZ31ZkVrI1m1xDG9yBg3 gp0VJ9wnoe4U5tIto/DqmeQYsxgvFtLs2/ZAIgJq4h+ZUX6qyaOhCpG8KX+pkd7cND7U fOAV9FltQDjTUqIBA6yPB2QlsISobFFIdjHh5PwuQXfp+g63MPWLxgNEDD5allINlYvG qe2A== 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=n5BR7XB2IJ0BdEFSIgpNPSj8l11Jxl1kySMmYJ5ZWp0=; b=mvkN5k8HvZFQdoBRybMyOxw5qKckNrqDiTX9tRXAHZNHIE4Tz1LU/KGW61yU/5LgwA 4fxSkXr/hHmFoUWuByq5ZOk/+5F6DaTbFlO6iVEumlvrqV7DEFiQOznER7VOmw2DBQlG W9+r6pCjfK124E6/Ya+Q+1VAn07CFtdiuRjvoaYsw1z7zfGPmn//bIRHy+B+ZsRGnfIc iyH0ftakADOhy34fQuD4KIuUAV6yHkjbLaHWIRDInniADw6SWJvJudjyVvQGwG3sv3v2 h+pikM9zq3at+0KfteSLmJaLTtoVhDDzdBqmpZQVJIm3+CPEFeHDmOy8I7EskK9NSaaG gc+Q== X-Gm-Message-State: AODbwcDUhkIBxPs3PFYOdC/tDtDooSA+xI/pnjjaIXHpi+k0kFH30017 cyLOwXnK7tGIoqI+sIk= X-Received: by 10.84.208.102 with SMTP id f35mr7465516plh.92.1496597745362; Sun, 04 Jun 2017 10:35:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:24 -0700 Message-Id: <20170604173509.29684-25-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 24/69] target/s390x: Use unwind data for helper_lctlg 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 8 ++++---- target/s390x/translate.c | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index ff12777..68e3817 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -848,20 +848,20 @@ void HELPER(cdsg)(CPUS390XState *env, uint64_t addr, #if !defined(CONFIG_USER_ONLY) void HELPER(lctlg)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t = r3) { + uintptr_t ra =3D GETPC(); S390CPU *cpu =3D s390_env_get_cpu(env); bool PERchanged =3D false; - int i; uint64_t src =3D a2; - uint64_t val; + uint32_t i; =20 for (i =3D r1;; i =3D (i + 1) % 16) { - val =3D cpu_ldq_data(env, src); + uint64_t val =3D cpu_ldq_data_ra(env, src, ra); if (env->cregs[i] !=3D val && i >=3D 9 && i <=3D 11) { PERchanged =3D true; } env->cregs[i] =3D val; HELPER_LOG("load ctl %d from 0x%" PRIx64 " =3D=3D 0x%" PRIx64 "\n", - i, src, env->cregs[i]); + i, src, val); src +=3D sizeof(uint64_t); =20 if (i =3D=3D r3) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index fed9f17..65ae573 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2552,7 +2552,6 @@ static ExitStatus op_lctlg(DisasContext *s, DisasOps = *o) TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); check_privileged(s); - potential_page_fault(s); gen_helper_lctlg(cpu_env, r1, o->in2, r3); tcg_temp_free_i32(r1); tcg_temp_free_i32(r3); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598453246377.5373425928161; Sun, 4 Jun 2017 10:47:33 -0700 (PDT) Received: from localhost ([::1]:57879 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZch-0001ep-2W for importer@patchew.org; Sun, 04 Jun 2017 13:47:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50212) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRM-0007aI-N2 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRL-0003Cw-Rh for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:48 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:33376) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRL-0003Bm-Lf for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:47 -0400 Received: by mail-pf0-x241.google.com with SMTP id f27so18146129pfe.0 for ; Sun, 04 Jun 2017 10:35:47 -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.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:46 -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=l565x4qTFgq+ykA1/rHZfQVr64u+DPXBHDXbMuzIOC4=; b=BrMpB34vK0/biqQhsjsiTyzoHw/zYtNgp+X+Tj+gJk/EHNOBVKqQwlmQVitIj1/pYC rppRUxpEi4zefgmGO+q9hnt1Iy86KyGT7lGny6H8iaDshICUhxfIbOATEPaM+OuIcYyK 7rJLn6zR4uQE20qGeEWNV745KtXShZUCZyDSn9OwORGXUZjhUU5tQx8IRT//oPpjIlVm 4Ojn4LCNaSvnNuN2j4tcjIqX9VgMmpSj9BQCDyMkzTV8n0Az5yMVbc1ZBJZ4vnkoDVWa nGLfwamKR2QV9VQFE9j2oCGzFkiLoWPnrmhvqtBSgqBbnm6rmN96L3GR6/B+M6BCogdC ip/g== 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=l565x4qTFgq+ykA1/rHZfQVr64u+DPXBHDXbMuzIOC4=; b=mNPRbbPOYTyP6ivi6T08qf8J4P5SMUPWbFZZmO7NhWx5OaMjYJ5MWVI8rIP0JRI/lN wiY1DaPu7jTo5VGvBbWnGMge6beP5qkXZ6Cq73FMIeQYyhKnXaF5dNRqegp98E0MEZgr K+2WBKEE135xLEpSEk1VowRW8VZPlZCeI/G42EUM8YSkm2DfJaAAzqE7yO9393ZiWYyE 47D6y0ezoPbyR7jijMRR2XI59OZt9Y85Zt77IyeASWsb+slGyPEWz/zVXAv5AyjPB9nd zqhuKoe2+YGlCHYgHjf+K4JNN5JxBAlafCrhbbS/BcjNf3rvotDSFVuJ7p+feysYhg3h +hoQ== X-Gm-Message-State: AODbwcDw5vtPYjrJROqFAxcPp+1U8FiatMb7rhyXGl2qVlRtFsCcNiqR RPVCWTTx35LGGz+iRB0= X-Received: by 10.84.178.131 with SMTP id z3mr10820531plb.175.1496597746651; Sun, 04 Jun 2017 10:35:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:25 -0700 Message-Id: <20170604173509.29684-26-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:c00::241 Subject: [Qemu-devel] [PULL 25/69] target/s390x: Use unwind data for helper_lctl 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 9 +++++---- target/s390x/translate.c | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 68e3817..614cdb2 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -878,18 +878,19 @@ void HELPER(lctlg)(CPUS390XState *env, uint32_t r1, u= int64_t a2, uint32_t r3) =20 void HELPER(lctl)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t r= 3) { + uintptr_t ra =3D GETPC(); S390CPU *cpu =3D s390_env_get_cpu(env); bool PERchanged =3D false; - int i; uint64_t src =3D a2; - uint32_t val; + uint32_t i; =20 for (i =3D r1;; i =3D (i + 1) % 16) { - val =3D cpu_ldl_data(env, src); + uint32_t val =3D cpu_ldl_data_ra(env, src, ra); if ((uint32_t)env->cregs[i] !=3D val && i >=3D 9 && i <=3D 11) { PERchanged =3D true; } - env->cregs[i] =3D (env->cregs[i] & 0xFFFFFFFF00000000ULL) | val; + env->cregs[i] =3D deposit64(env->cregs[i], 0, 32, val); + HELPER_LOG("load ctl %d from 0x%" PRIx64 " =3D=3D 0x%x\n", i, src,= val); src +=3D sizeof(uint32_t); =20 if (i =3D=3D r3) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 65ae573..26f6b37 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2540,7 +2540,6 @@ static ExitStatus op_lctl(DisasContext *s, DisasOps *= o) TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); check_privileged(s); - potential_page_fault(s); gen_helper_lctl(cpu_env, r1, o->in2, r3); tcg_temp_free_i32(r1); tcg_temp_free_i32(r3); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149659861704724.93869513990171; Sun, 4 Jun 2017 10:50:17 -0700 (PDT) Received: from localhost ([::1]:57889 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZfL-0004N5-Lo for importer@patchew.org; Sun, 04 Jun 2017 13:50:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50225) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRN-0007bi-VE for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRN-0003EZ-4P for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:49 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:33376) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRM-0003EA-VI for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:49 -0400 Received: by mail-pf0-x243.google.com with SMTP id f27so18146148pfe.0 for ; Sun, 04 Jun 2017 10:35:48 -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.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:47 -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=JzHCsnJm/8NSSewI4HZTcmyMKbX5MlkRymiAbDWZr5w=; b=lYCFQEfYSs9i1+s5kDI+YNuK1nM8Tz5AwWVkcPG64M4JAoJIwQhsTCNH1U5HAeOsXQ TwjQvax/uApT1m5lrMkfmtjTr/3DEP260Tf3PDquAZuCgbFBbwNfR3ggPkY2EwHFPevx ZV/3MFIAzRSvqhomRpo3oDpowJm6Lv5gTfSKywc1wMaF9vGhorPTxs3CO2urFgZH2NRC Gw6eVWkGAgNrBDpFN0+BcRgWZWSu0vDQijPvbzGeTZ2oBifP6AlSQlyS/Ij+HZ+VZn1R u+R7WPb8WkfCccQUD5W3LZynWU0UUenWPCpHN6M9NEKxs3DzOOhJBP6Mid1cd+sYL3gH i+Gg== 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=JzHCsnJm/8NSSewI4HZTcmyMKbX5MlkRymiAbDWZr5w=; b=YW5+V6zfXdhgBgZxNrU0QoUnAn1PjJCo+r3feOyAdD8KoItA2aKlxJmdbA13figr6C qQTIAt9QHuGL0254DTKPAnDDqA+3zRwkUzvfDajhIg7ZcRYzeYcB3EUbFg0Ui3eecCby BEkwbRrkO5y+UIoWqPRS+EQJ/nRErscEzqN1YD90rqaUbvuyZgkYRbee+pmDAYEdOtUe dCZBF7UhqYgiESeI1p+Cd/qHNL83zC1BzW0eoosiKx/pbTqt6B7cFZvw7d08TUvIhWY7 MMgzE12baIoPLSTLJuyuagLIQnMgkHJjt7sWDkUyCBCJZ/aLmfz86iZ7GK1NaVQFxhLl sEAg== X-Gm-Message-State: AODbwcA6ZSRKW8DdyEsftcKAq6E7z6k99MK8WIbj8uu4fhnDW6tJEWr5 oVt8JybixJkQzI1MdWs= X-Received: by 10.84.130.3 with SMTP id 3mr10619999plc.222.1496597747969; Sun, 04 Jun 2017 10:35:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:26 -0700 Message-Id: <20170604173509.29684-27-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:c00::243 Subject: [Qemu-devel] [PULL 26/69] target/s390x: Use unwind data for helper_stctl 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 10 ++++++---- target/s390x/translate.c | 2 -- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 614cdb2..b64c04e 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -907,11 +907,12 @@ void HELPER(lctl)(CPUS390XState *env, uint32_t r1, ui= nt64_t a2, uint32_t r3) =20 void HELPER(stctg)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t = r3) { - int i; + uintptr_t ra =3D GETPC(); uint64_t dest =3D a2; + uint32_t i; =20 for (i =3D r1;; i =3D (i + 1) % 16) { - cpu_stq_data(env, dest, env->cregs[i]); + cpu_stq_data_ra(env, dest, env->cregs[i], ra); dest +=3D sizeof(uint64_t); =20 if (i =3D=3D r3) { @@ -922,11 +923,12 @@ void HELPER(stctg)(CPUS390XState *env, uint32_t r1, u= int64_t a2, uint32_t r3) =20 void HELPER(stctl)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t = r3) { - int i; + uintptr_t ra =3D GETPC(); uint64_t dest =3D a2; + uint32_t i; =20 for (i =3D r1;; i =3D (i + 1) % 16) { - cpu_stl_data(env, dest, env->cregs[i]); + cpu_stl_data_ra(env, dest, env->cregs[i], ra); dest +=3D sizeof(uint32_t); =20 if (i =3D=3D r3) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 26f6b37..669da89 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3612,7 +3612,6 @@ static ExitStatus op_stctg(DisasContext *s, DisasOps = *o) TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); check_privileged(s); - potential_page_fault(s); gen_helper_stctg(cpu_env, r1, o->in2, r3); tcg_temp_free_i32(r1); tcg_temp_free_i32(r3); @@ -3624,7 +3623,6 @@ static ExitStatus op_stctl(DisasContext *s, DisasOps = *o) TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); check_privileged(s); - potential_page_fault(s); gen_helper_stctl(cpu_env, r1, o->in2, r3); tcg_temp_free_i32(r1); tcg_temp_free_i32(r3); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598600762725.0266415455111; Sun, 4 Jun 2017 10:50:00 -0700 (PDT) Received: from localhost ([::1]:57886 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZf5-0004BP-3m for importer@patchew.org; Sun, 04 Jun 2017 13:49:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50238) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRP-0007dD-CQ for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRO-0003FR-JQ for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:51 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:33422) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRO-0003F5-DA for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:50 -0400 Received: by mail-pg0-x241.google.com with SMTP id s62so7256128pgc.0 for ; Sun, 04 Jun 2017 10:35:50 -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.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:48 -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=TscVPA1Nev8UXJAIkGZGrY56ROVuphqeWPHezSE15NE=; b=aLxsc4Cn+eOx0u7cIiwjAqD3JVsApAzQQR3jX9mZU6oIbikB6AvyPL67inCHkVphtM edghUgPNDdmWaoLRMFQL7VLTve2hb9OOtlOORYBfmu+2hdxEvJvWyRVKJsP7bEamL4Dg FpzDIxUlACrH56ld6kJ+etxNq+x2zhTprA9j6XIJyRDPvWd6xie5EKgR9AJXfi8JK5IF JtrXHvkI/zziKwmFrfbuQgXoRmwZ+lHODf3KiKJ9YexMq/KlGHMgagK7sfZzb0ELD+0g 1Lbunz5FlfyNwzdlg+KOVRy5KIcrADvluuNWL978drU8yilvZX7JYUzk1k54Hx3PtwZv wprg== 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=TscVPA1Nev8UXJAIkGZGrY56ROVuphqeWPHezSE15NE=; b=F5N9JWkXH15ADeLuEBzZ4F79ufFCcfnYTDGLPqvh+e76YAYe6xn0RbYH/AaTM68oDE mApHvHIcYMljBpcbBW6O9iUWLh8M/2vIOIEPA102RUsfb4uXYMs0xdTCLmLKkX7mO7IR 0c7CqPW0wymgtGMPkHsFLGN9W/z7Tx0gEr3gm49FKrphUdogTpbVfM+8fEOlpOsANZIY Pira2o/Jk8DL9N4hAg/s3rosPAxLDek0054qbFJ7t6oTI+jjEcgOywbqMgrvHNhPEX7d bzDaKT2+IcJiO3LJ3AWbQHFee7HANfpV1VR4wd5bgFyctl6dU55SGgw/0RUbLJM2873N HLiw== X-Gm-Message-State: AODbwcD2ae0iyRKkBj/b+4pqFSCG6jt9zWFHQ2IrQwCgN20TAJ+B6kv5 A/t4LLV07h+h4u7VEz4= X-Received: by 10.84.177.131 with SMTP id x3mr10810009plb.39.1496597749371; Sun, 04 Jun 2017 10:35:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:27 -0700 Message-Id: <20170604173509.29684-28-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::241 Subject: [Qemu-devel] [PULL 27/69] target/s390x: Use unwind data for helper_testblock 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 3 +++ target/s390x/translate.c | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index b64c04e..7df2e53 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -939,6 +939,7 @@ void HELPER(stctl)(CPUS390XState *env, uint32_t r1, uin= t64_t a2, uint32_t r3) =20 uint32_t HELPER(testblock)(CPUS390XState *env, uint64_t real_addr) { + uintptr_t ra =3D GETPC(); CPUState *cs =3D CPU(s390_env_get_cpu(env)); uint64_t abs_addr; int i; @@ -947,12 +948,14 @@ uint32_t HELPER(testblock)(CPUS390XState *env, uint64= _t real_addr) abs_addr =3D mmu_real2abs(env, real_addr) & TARGET_PAGE_MASK; if (!address_space_access_valid(&address_space_memory, abs_addr, TARGET_PAGE_SIZE, true)) { + cpu_restore_state(cs, ra); program_interrupt(env, PGM_ADDRESSING, 4); return 1; } =20 /* Check low-address protection */ if ((env->cregs[0] & CR0_LOWPROT) && real_addr < 0x2000) { + cpu_restore_state(cs, ra); program_interrupt(env, PGM_PROTECTION, 4); return 1; } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 669da89..cd017ce 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4042,7 +4042,6 @@ static ExitStatus op_tcxb(DisasContext *s, DisasOps *= o) static ExitStatus op_testblock(DisasContext *s, DisasOps *o) { check_privileged(s); - potential_page_fault(s); gen_helper_testblock(cc_op, cpu_env, o->in2); set_cc_static(s); return NO_EXIT; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599344012933.7666069849433; Sun, 4 Jun 2017 11:02:24 -0700 (PDT) Received: from localhost ([::1]:57948 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZr4-0007mD-Me for importer@patchew.org; Sun, 04 Jun 2017 14:02:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRQ-0007er-Pl for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRQ-0003GN-2E for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:52 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:34651) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRP-0003Fv-Sb for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:51 -0400 Received: by mail-pf0-x241.google.com with SMTP id w69so18143392pfk.1 for ; Sun, 04 Jun 2017 10:35:51 -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.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:50 -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=ROqpEoJ2wAZPxH1C6cslOAzGDAtWXw+IeGgc8xj+v9Q=; b=fghqVL4OwnkzEWLFbnjr+F93KcKwHzda5/m7Oxfm3ApFdbN4Cgyo8KrbdlXY6xFNsn ICbVFt1Pz0HudM2jxd+rYQYWTSeS6fA3u6+Ib/vjKi8MtVe1HNg0MO3UwJHvALVfK2zZ U+BuukOwR4zWrQ4yRC1DPC9tTbU1gxFvdeSdHY1vmdz4jmQmcl1FEjBeUhvDhefr4m7V G7F7KauWYLTIyHhhwIozMkHo+3jqvxCbHQFJiPiztWSLYb7wC4qiCQEWKmeZR1KBq5UP 2oIFjTYZCfiBg5gwTdDAqI6QadYeQX2Z1MVLr9khBnyuarvDw4rD0AU+32pdwHaygMyf ikSA== 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=ROqpEoJ2wAZPxH1C6cslOAzGDAtWXw+IeGgc8xj+v9Q=; b=XQYtqDdXRFkEuuWDoCL05jaE0BKsOOxXH8Q7VMrR6lpo6RjYILoVwzuPn4VcIAk+Wi ru8WD77vjg9bLqtZ87+MIf+LcaTX+gKVMuZlDVDPdKg73LdbEM801i46DoLxRHxXUSj8 n0a4k2hAtxPSWNTryaQ2uFZjh7lc/wpJWO1DJKxfB7aTiJr7RjOS2ZbiFkuQ9iKanVRE 97FdEQgwCDGn8OW3QXH/G6JkV2fIg33xDOQVDdezGAaWNW0XocJrWgOAe199RNp8BDi6 FBA5zjCxishCqRSLzvHt5ucH9KO+52TXNrczt9ysZStY/BXCjGNz2RXGIE4AU8odqerc CKdA== X-Gm-Message-State: AODbwcCjLpHVj0LlDXKeaqotrYUoert3d4iPyUrlKicz1rwExhKQEQbb C1bdGNcD0iM+bSx73V0= X-Received: by 10.98.30.129 with SMTP id e123mr16758796pfe.240.1496597750842; Sun, 04 Jun 2017 10:35:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:28 -0700 Message-Id: <20170604173509.29684-29-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:c00::241 Subject: [Qemu-devel] [PULL 28/69] target/s390x: Use unwind data for helper_tprot 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 1 - target/s390x/translate.c | 1 - 2 files changed, 2 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 7df2e53..a8c85c9 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -970,7 +970,6 @@ uint32_t HELPER(testblock)(CPUS390XState *env, uint64_t= real_addr) uint32_t HELPER(tprot)(uint64_t a1, uint64_t a2) { /* XXX implement */ - return 0; } =20 diff --git a/target/s390x/translate.c b/target/s390x/translate.c index cd017ce..7b9c111 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4049,7 +4049,6 @@ static ExitStatus op_testblock(DisasContext *s, Disas= Ops *o) =20 static ExitStatus op_tprot(DisasContext *s, DisasOps *o) { - potential_page_fault(s); gen_helper_tprot(cc_op, o->addr1, o->in2); set_cc_static(s); return NO_EXIT; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598763494249.72047737316313; Sun, 4 Jun 2017 10:52:43 -0700 (PDT) Received: from localhost ([::1]:57902 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZhh-0006Yx-Rp for importer@patchew.org; Sun, 04 Jun 2017 13:52:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50280) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRV-0007gr-JR for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRR-0003HV-Dg for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:57 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:35884) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRR-0003Gl-7p for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:53 -0400 Received: by mail-pg0-x243.google.com with SMTP id v18so3986008pgb.3 for ; Sun, 04 Jun 2017 10:35:53 -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.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:51 -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=W1mvCOL5OaD1cTvsf6YBuYIomWL6/04WVTZBZpdI4RA=; b=GqhXJvNe9rLTXZXcUjltw7uQb5dbjGUkwONmvKxq7tGTc5V/8rPmUj1xep5XbN8Kz6 Thn7n3eG8E6U4pbzPgG5pKanuUuOWKw9ylKkPai9oypKIoUab877wVhSFq44GWSDrT+1 YlOVWyRRYtHPfMcTV7hY3SnUevB2QgLxNBWZEpFKuT4vPHVAiJSK0QlINQ/OcoNH9NKa umSB9echYw7gUi9wSUavuS0sBgNze/ukC7AwPXkOv9jF0gZcsnvsP6SkaYmO7EFBJDGD iBBVpnFQtkl3WedE/WGPrRs/h6LhX8hEvgwzLPGvmzC0wyD1SBSMx/1QBIB9smoWm9F2 itdg== 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=W1mvCOL5OaD1cTvsf6YBuYIomWL6/04WVTZBZpdI4RA=; b=btTZO0vV7RfQrlCG1uVHnc85SD36LPUjugGFbpIJQ6XcEXrR2IUO0PWJvcS+GFO6lU 2J83AKOmW9xQAD6cW9Rn03MUEgMc0J2JzNPVdVTSQxk/vhvlyJHau/RXfKKeBYu2iLA9 +LJOmlY3kMk/l/SavQWy7Jx2arsOgWQxYHa24GqkNT82pC4JOJAW9SCTYzkzUwsqwqUU 8SrUQdNiVmwy/3uKhF9WzKshss1F3Dh/n6Yd6JOA5n6whnVp/XWjp/i2wW+ABfVxR8U9 3/wlq76yGCdyNctSmAMaklzmuZg5JPJa1oSykor7VXkMK4Rwa6eccYUxJoZb2kTitGzu gqLg== X-Gm-Message-State: AODbwcB9qkKiSmtgH6J7RnooA3S+NrvtVWgHLY5lGCJ3LFP3GSj5/s04 8zphjJCxomFvRJnOSK4= X-Received: by 10.84.231.139 with SMTP id g11mr10610562plk.71.1496597752221; Sun, 04 Jun 2017 10:35:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:29 -0700 Message-Id: <20170604173509.29684-30-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::243 Subject: [Qemu-devel] [PULL 29/69] target/s390x: Use unwind data for helper_lra 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Fix saving exception_index around mmu_translate; eliminate a dead store. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 6 +++--- target/s390x/translate.c | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index a8c85c9..17d8257 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1208,17 +1208,17 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t a= ddr) { CPUState *cs =3D CPU(s390_env_get_cpu(env)); uint32_t cc =3D 0; - int old_exc =3D cs->exception_index; uint64_t asc =3D env->psw.mask & PSW_MASK_ASC; uint64_t ret; - int flags; + int old_exc, flags; =20 /* XXX incomplete - has more corner cases */ if (!(env->psw.mask & PSW_MASK_64) && (addr >> 32)) { + cpu_restore_state(cs, GETPC()); program_interrupt(env, PGM_SPECIAL_OP, 2); } =20 - cs->exception_index =3D old_exc; + old_exc =3D cs->exception_index; if (mmu_translate(env, addr, 0, asc, &ret, &flags, true)) { cc =3D 3; } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 7b9c111..141be22 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2560,7 +2560,6 @@ static ExitStatus op_lctlg(DisasContext *s, DisasOps = *o) static ExitStatus op_lra(DisasContext *s, DisasOps *o) { check_privileged(s); - potential_page_fault(s); gen_helper_lra(o->out, cpu_env, o->in2); set_cc_static(s); return NO_EXIT; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149659881423574.41281760836; Sun, 4 Jun 2017 10:53:34 -0700 (PDT) Received: from localhost ([::1]:57904 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZiU-0007rm-Rl for importer@patchew.org; Sun, 04 Jun 2017 13:53:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50279) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRV-0007gq-JP for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRS-0003JC-Sk for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:57 -0400 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:34651) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRS-0003I2-Hh for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:54 -0400 Received: by mail-pf0-x244.google.com with SMTP id w69so18143457pfk.1 for ; Sun, 04 Jun 2017 10:35:54 -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.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:52 -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=Cb8GdMYe0tF3tDR/aGBoSDCEqgMRUiW3Oo3XwU8bGC4=; b=pkC/fYIsz6BmJllhPrBwPybB329yf+YW5XD3XDgcaC8lJbqKZlNA6vwm/7p2v0xPF6 aP8KbS8DZGBuzeAMUmP4AjX9+1rzeXSXBXLkVli8XMF96OOB9f9yDazhkrolBgv40MOp KT/SSZSmwfU63WfkQf4tJaVJMm7Gk/WXJFaIDQXwT1Hd/cQ1pR0RGNZ/Y9Gh3oU2s6vE VKceuUTnOrP9xd4oLhjBqHNWKJ975Hz1tg7i4V/72BMrd/C6RPDasGrTzNEcQbiQ+l+p JEVaWHlVc4YBm67fkf5bKtuEiSHK3GXbnIHH+dc/PDWObvKEwCRQJFQMxdqib7G8oWpH aalw== 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=Cb8GdMYe0tF3tDR/aGBoSDCEqgMRUiW3Oo3XwU8bGC4=; b=hKBvWm8HXcSFWvsNyZTGHyWJdOGfRJrIMaKcW1z9/wLn87vDy6cvllaFG1LpVLXfbY u585kF4tzZGdNWkqdeFZbFz3gAGBgUOgP9RkV91MilPeEIPhYX/XrlUENtUH2mIOlQsW sOyEQXRQ+S6Dxw/h0ekT8m9cZ2l83DfP9gLf+NVGA8a1WqeNMcBxiSgZOC4Xpu9Zr2Ul ANbmAuvm4wRvzpK9LZDYMT8zqZkzoOadisbfGp0WQTSjpeXqLmQtjNAf+AFTcBLVmdvR T2n+khRX9g41bfnpZjQEdtKqf36TbAfni/NWv4WnGgfKfo53g57O8mN4hlLf8B4D31YJ aO8A== X-Gm-Message-State: AODbwcCn/q0LRU+m/0Fxd5N3qQrdnFBuIh1NIVXtLzIikHaiCMMphid4 hbe9INd/oCp67AJ81E8= X-Received: by 10.84.238.131 with SMTP id v3mr10679460plk.168.1496597753519; Sun, 04 Jun 2017 10:35:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:30 -0700 Message-Id: <20170604173509.29684-31-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:c00::244 Subject: [Qemu-devel] [PULL 30/69] 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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) =20 uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_= t a2) { + uintptr_t ra =3D GETPC(); int cc =3D 0, i; =20 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) =20 /* XXX replace w/ memcpy */ for (i =3D 0; i < l; i++) { - cpu_stb_secondary(env, a1 + i, cpu_ldub_primary(env, a2 + i)); + uint8_t x =3D cpu_ldub_primary_ra(env, a2 + i, ra); + cpu_stb_secondary_ra(env, a1 + i, x, ra); } =20 return cc; @@ -1103,6 +1105,7 @@ uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l,= uint64_t a1, uint64_t a2) =20 uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_= t a2) { + uintptr_t ra =3D GETPC(); int cc =3D 0, i; =20 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) =20 /* XXX replace w/ memcpy */ for (i =3D 0; i < l; i++) { - cpu_stb_primary(env, a1 + i, cpu_ldub_secondary(env, a2 + i)); + uint8_t x =3D cpu_ldub_secondary_ra(env, a2 + i, ra); + cpu_stb_primary_ra(env, a1 + i, x, ra); } =20 return cc; diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 141be22..422bbf1 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2889,7 +2889,6 @@ static ExitStatus op_mvcp(DisasContext *s, DisasOps *= o) { int r1 =3D 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; @@ -2899,7 +2898,6 @@ static ExitStatus op_mvcs(DisasContext *s, DisasOps *= o) { int r1 =3D 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; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599530208673.7666286868618; Sun, 4 Jun 2017 11:05:30 -0700 (PDT) Received: from localhost ([::1]:57956 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZu4-0002AX-ND for importer@patchew.org; Sun, 04 Jun 2017 14:05:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50285) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRV-0007h0-RJ for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRU-0003KA-ER for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:57 -0400 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:35886) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRU-0003JP-0C for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:56 -0400 Received: by mail-pg0-x244.google.com with SMTP id v18so3986086pgb.3 for ; Sun, 04 Jun 2017 10:35:55 -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.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:54 -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=72cKY/HwEbT0v8l0RbYytVB3571MjenFrqo/RY9CBH8=; b=cGbAJO8LL3CwFX0oNAnLoGqs9eoOgVhZtbR3j/8C1ytc6jVXncmnaPhpOAtMET5OHP HGstX5SIketQMyudYo9Wf9fCWdG+sZTdSs8gMA4uVS89irgucMOa5PGoGHr7oalq/Frd Pun6ira6pY4ZjHpiSWWXdGoXqeapczsM1VrFHyWTIMODb20AQEw9+mMd2ReKJr/w5Kma lRLFPp9BOKpQ1MgzTZzRglVkT+ZSsC185ju39K8aY0virHmjRApSLaNT/b6x/DC1zxmT GWMEMF5AJkdBj7l37DoEVhy2E7tv5c6I1W8mLpKOz4+JFli+Pn3vrgW4sktNvmBavWCM Dp3A== 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=72cKY/HwEbT0v8l0RbYytVB3571MjenFrqo/RY9CBH8=; b=B5ldTNGrhU9XjMxv5Y8yRNAjg1TNzsZihoJhlbdwM9ScqWITfq6fT0od6EzmsJNMja PXcghsJ9YoCnG48Y4kCi0V1++eK4e2f254wcIStiDJKQ5Xbk1hx+uKSim/gD34glV6SJ Ma+AyLTnDXGBnTuTlQGnXgul+IgvVxTclSxpQPTJ19XRUxXQ0QsF5FVFArs2WKC3UoqS 7DeeQJ3WytkZD4fAw0MKDKHDm5QegJQdTXwShxKPOlz/il39Ss2iIRNMUA3HIzFmRjGt foLPoWJSrkcWHwdLUTtH9A6A3/SnVnEVCOw9aFe2caxC12ZcxtDm26BoGndMiUe8928o in2g== X-Gm-Message-State: AODbwcDRYFuL1/Co7oxPh5qAD46r+W8RNaucDQeeH1QB6C62CTwm/+xT 80tcsCCT5zRyOSWjyVQ= X-Received: by 10.84.139.3 with SMTP id 3mr10389007plq.79.1496597754892; Sun, 04 Jun 2017 10:35:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:31 -0700 Message-Id: <20170604173509.29684-32-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::244 Subject: [Qemu-devel] [PULL 31/69] target/s390x: Fix some helper_ex problems 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" (1) The OR of the low bits or R1 into INSN were not being done consistently; it was forgotten along all but the SVC path. (2) The setting of ILEN was wrong on SVC path for EXRL. (3) The data load for ICM read too much. Fix these by consolidating data load at the beginning, using get_ilen to control the number of bytes loaded, and ORing in the byte from R1. Use extract64 from the full aligned insn to extract arguments. Pass in ILEN rather than RET as the more natural way to give the required data along the SVC path. Modify ENV->CC_OP directly rather than include it in the functional interface. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/helper.h | 2 +- target/s390x/mem_helper.c | 135 +++++++++++++++++++++++++-----------------= ---- target/s390x/translate.c | 8 +-- 3 files changed, 78 insertions(+), 67 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index ea35834..3819409 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -14,7 +14,7 @@ DEF_HELPER_4(srst, i64, env, i64, i64, i64) DEF_HELPER_4(clst, i64, env, i64, i64, i64) DEF_HELPER_FLAGS_4(mvpg, TCG_CALL_NO_WG, i32, env, i64, i64, i64) DEF_HELPER_4(mvst, i64, env, i64, i64, i64) -DEF_HELPER_5(ex, i32, env, i32, i64, i64, i64) +DEF_HELPER_4(ex, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(stam, TCG_CALL_NO_WG, void, env, i32, i64, i32) DEF_HELPER_FLAGS_4(lam, TCG_CALL_NO_WG, void, env, i32, i64, i32) DEF_HELPER_4(mvcle, i32, env, i32, i64, i32) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index a73d486..fa03129 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1245,76 +1245,87 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t a= ddr) in other words: tricky... currently implemented by interpreting the cases it is most commonly use= d. */ -uint32_t HELPER(ex)(CPUS390XState *env, uint32_t cc, uint64_t v1, - uint64_t addr, uint64_t ret) +void HELPER(ex)(CPUS390XState *env, uint32_t ilen, uint64_t r1, uint64_t a= ddr) { S390CPU *cpu =3D s390_env_get_cpu(env); - uint16_t insn =3D cpu_lduw_code(env, addr); - - HELPER_LOG("%s: v1 0x%lx addr 0x%lx insn 0x%x\n", __func__, v1, addr, - insn); - if ((insn & 0xf0ff) =3D=3D 0xd000) { - uint32_t l, insn2, b1, b2, d1, d2; - - l =3D v1 & 0xff; - insn2 =3D cpu_ldl_code(env, addr + 2); - b1 =3D (insn2 >> 28) & 0xf; - b2 =3D (insn2 >> 12) & 0xf; - d1 =3D (insn2 >> 16) & 0xfff; - d2 =3D insn2 & 0xfff; - switch (insn & 0xf00) { - case 0x200: + uint64_t insn =3D cpu_lduw_code(env, addr); + uint8_t opc =3D insn >> 8; + + /* Or in the contents of R1[56:63]. */ + insn |=3D r1 & 0xff; + + /* Load the rest of the instruction. */ + insn <<=3D 48; + switch (get_ilen(opc)) { + case 2: + break; + case 4: + insn |=3D (uint64_t)cpu_lduw_code(env, addr + 2) << 32; + break; + case 6: + insn |=3D (uint64_t)(uint32_t)cpu_ldl_code(env, addr + 2) << 16; + break; + default: + g_assert_not_reached(); + } + + HELPER_LOG("%s: addr 0x%lx insn 0x%" PRIx64 "\n", __func__, addr, insn= ); + + if ((opc & 0xf0) =3D=3D 0xd0) { + uint32_t l, b1, b2, d1, d2; + + l =3D extract64(insn, 48, 8); + b1 =3D extract64(insn, 44, 4); + b2 =3D extract64(insn, 28, 4); + d1 =3D extract64(insn, 32, 12); + d2 =3D extract64(insn, 16, 12); + switch (opc & 0xf) { + case 0x2: do_helper_mvc(env, l, get_address(env, 0, b1, d1), get_address(env, 0, b2, d2), 0); - break; - case 0x400: - cc =3D do_helper_nc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0x500: - cc =3D do_helper_clc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0x600: - cc =3D do_helper_oc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0x700: - cc =3D do_helper_xc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0xc00: + return; + case 0x4: + env->cc_op =3D do_helper_nc(env, l, get_address(env, 0, b1, d1= ), + get_address(env, 0, b2, d2), 0); + return; + case 0x5: + env->cc_op =3D do_helper_clc(env, l, get_address(env, 0, b1, d= 1), + get_address(env, 0, b2, d2), 0); + return; + case 0x6: + env->cc_op =3D do_helper_oc(env, l, get_address(env, 0, b1, d1= ), + get_address(env, 0, b2, d2), 0); + return; + case 0x7: + env->cc_op =3D do_helper_xc(env, l, get_address(env, 0, b1, d1= ), + get_address(env, 0, b2, d2), 0); + return; + case 0xc: do_helper_tr(env, l, get_address(env, 0, b1, d1), get_address(env, 0, b2, d2), 0); - return cc; - case 0xd00: - cc =3D do_helper_trt(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - default: - goto abort; + return; + case 0xd: + env->cc_op =3D do_helper_trt(env, l, get_address(env, 0, b1, d= 1), + get_address(env, 0, b2, d2), 0); + return; } - } else if ((insn & 0xff00) =3D=3D 0x0a00) { + } else if (opc =3D=3D 0x0a) { /* supervisor call */ - HELPER_LOG("%s: svc %ld via execute\n", __func__, (insn | v1) & 0x= ff); - env->psw.addr =3D ret - 4; - env->int_svc_code =3D (insn | v1) & 0xff; - env->int_svc_ilen =3D 4; + env->int_svc_code =3D extract64(insn, 48, 8); + env->int_svc_ilen =3D ilen; helper_exception(env, EXCP_SVC); - } else if ((insn & 0xff00) =3D=3D 0xbf00) { - uint32_t insn2, r1, r3, b2, d2; - - insn2 =3D cpu_ldl_code(env, addr + 2); - r1 =3D (insn2 >> 20) & 0xf; - r3 =3D (insn2 >> 16) & 0xf; - b2 =3D (insn2 >> 12) & 0xf; - d2 =3D insn2 & 0xfff; - cc =3D helper_icm(env, r1, get_address(env, 0, b2, d2), r3); - } else { - abort: - cpu_abort(CPU(cpu), - "EXECUTE on instruction prefix 0x%x not implemented\n", - insn); + return; + } else if (opc =3D=3D 0xbf) { + uint32_t r1, r3, b2, d2; + + r1 =3D extract64(insn, 52, 4); + r3 =3D extract64(insn, 48, 4); + b2 =3D extract64(insn, 44, 4); + d2 =3D extract64(insn, 32, 12); + env->cc_op =3D helper_icm(env, r1, get_address(env, 0, b2, d2), r3= ); + return; } - return cc; + + cpu_abort(CPU(cpu), "EXECUTE on instruction prefix 0x%x not implemente= d\n", + opc); } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 422bbf1..921a842 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2159,14 +2159,14 @@ static ExitStatus op_ex(DisasContext *s, DisasOps *= o) MVC inside of memcpy, which needs a helper call anyway. So perhaps this doesn't bear thinking about any further. */ =20 - TCGv_i64 tmp; + TCGv_i32 ilen; =20 update_psw_addr(s); gen_op_calc_cc(s); =20 - tmp =3D tcg_const_i64(s->next_pc); - gen_helper_ex(cc_op, cpu_env, cc_op, o->in1, o->in2, tmp); - tcg_temp_free_i64(tmp); + ilen =3D tcg_const_i32(s->next_pc - s->pc); + gen_helper_ex(cpu_env, ilen, o->in1, o->in2); + tcg_temp_free_i32(ilen); =20 return NO_EXIT; } --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599700218331.95841629249117; Sun, 4 Jun 2017 11:08:20 -0700 (PDT) Received: from localhost ([::1]:57969 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZwo-000519-SU for importer@patchew.org; Sun, 04 Jun 2017 14:08:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50308) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRW-0007i6-QB for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRV-0003Lt-Nh for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:58 -0400 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:33380) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRV-0003Kv-Cc for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:57 -0400 Received: by mail-pf0-x244.google.com with SMTP id f27so18146308pfe.0 for ; Sun, 04 Jun 2017 10:35:57 -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.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:55 -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=qX7fTHndfDouyGZEQqdYbgRpduneGpFNSPQS+IiE2M4=; b=jXCXILgoQsYlrJ99+nDvlryyQUGjpBhseLk1Z9+3RBwYRA397ZV6iXOvce5525eWoQ vMGk+nmYUOHC1Hv7a7UEaZonP3Qs3k1mNnDzqUJKvIJBlI6za1oDbA047PIYq+fdD7f1 5DdHhQzIppELMO2cw+WlUWIdiODzqyH8wxkyeJI8s4TIY50Lm2HUjPJwngHZhbNCDhDb yzvmXjAaOdfcn3Ivl7jlb1K3v2MCpFJh+C5rM7TSUw8wG8UmAKPvZvZ7W4QaztRByjQJ JnSitY6EpzcWAk1PYuTm5gefCHUZzvavLvMquGfTiOMZb7tMJN9WsUwAK12pvlpZFxpg i0PA== 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=qX7fTHndfDouyGZEQqdYbgRpduneGpFNSPQS+IiE2M4=; b=chWsqD9ujUSBV0XIJiYkyZu5W5QtGzYMu+Y6Zyvyt9SSwOuQuVrbtzAf6YZUTcxmH5 jTJ5Nh4pg6bsUj3O4YkxsF7NccN+sSH/FVULhvHk8KReUgQlu7wmDxHDS+yMle2cz32X RHcC3X1RR4uuK9o993fnRbwWGBlQQHkMt7htUqUwzTXr8s+zwolIG0mtOKc9GTvS4Dsm Lh+ybFuLcjnjRbB32w2x4p7Sn+dNPK8Gko9SIl4jL/XmgED98ia1e1gLif+V+yi11XLy 0RQTcJ/+QgLCBwpQr04P9dI9oZbSh2mMsjknH5IxtloM8U4OPB/d5NNkpFApWNBZr42D w7ug== X-Gm-Message-State: AODbwcDcJfgKdauptQ1exFi8rqwTWL+dBTEIxSn5JvZ6lHDUeCecpYi3 HdtJhfEdAUnvKXtSMWw= X-Received: by 10.84.230.129 with SMTP id e1mr10299224plk.88.1496597756367; Sun, 04 Jun 2017 10:35:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:32 -0700 Message-Id: <20170604173509.29684-33-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:c00::244 Subject: [Qemu-devel] [PULL 32/69] target/s390x: Fix EXECUTE with R1==0 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The PoO specifies that when R1=3D=3D0, no ORing into the insn loaded from storage takes place. Load a zero for this case. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/insn-data.def | 4 ++-- target/s390x/translate.c | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index cac0f51..3c3541c 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -327,9 +327,9 @@ C(0xeb57, XIY, SIY, LD, m1_8u, i2_8u, new, m1_8, xor, nz64) =20 /* EXECUTE */ - C(0x4400, EX, RX_a, Z, r1_o, a2, 0, 0, ex, 0) + C(0x4400, EX, RX_a, Z, 0, a2, 0, 0, ex, 0) /* EXECUTE RELATIVE LONG */ - C(0xc600, EXRL, RIL_b, EE, r1_o, ri2, 0, 0, ex, 0) + C(0xc600, EXRL, RIL_b, EE, 0, ri2, 0, 0, ex, 0) =20 /* EXTRACT ACCESS */ C(0xb24f, EAR, RRE, Z, 0, 0, new, r1_32, ear, 0) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 921a842..b7b4843 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2159,15 +2159,27 @@ static ExitStatus op_ex(DisasContext *s, DisasOps *= o) MVC inside of memcpy, which needs a helper call anyway. So perhaps this doesn't bear thinking about any further. */ =20 + int r1 =3D get_field(s->fields, r1); TCGv_i32 ilen; + TCGv_i64 v1; =20 update_psw_addr(s); gen_op_calc_cc(s); =20 + if (r1 =3D=3D 0) { + v1 =3D tcg_const_i64(0); + } else { + v1 =3D regs[r1]; + } + ilen =3D tcg_const_i32(s->next_pc - s->pc); - gen_helper_ex(cpu_env, ilen, o->in1, o->in2); + gen_helper_ex(cpu_env, ilen, v1, o->in2); tcg_temp_free_i32(ilen); =20 + if (r1 =3D=3D 0) { + tcg_temp_free_i64(v1); + } + return NO_EXIT; } =20 --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598961257880.9830460237034; Sun, 4 Jun 2017 10:56:01 -0700 (PDT) Received: from localhost ([::1]:57917 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZkt-0001hc-Nw for importer@patchew.org; Sun, 04 Jun 2017 13:55:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50333) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRY-0007jn-9r for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRX-0003Nw-0L for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:00 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:35887) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRW-0003NA-OC for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:35:58 -0400 Received: by mail-pg0-x243.google.com with SMTP id v18so3986170pgb.3 for ; Sun, 04 Jun 2017 10:35:58 -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.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:57 -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=X64HwbGOHHR1OjsRILDEM8IMGfqcDU+8uMRN3BdAh0U=; b=ldfY2M+jrjP66WOLs9Raqa3SheuP+6qpinGndn1lwa907VhJuX6sX9G22hLj4DTMHQ gXQIOU//X/PYF17efjCqKuIPI/Pr1XAyWcw0s7VdYBKOZtL7HAopYYvSZi9cKtWWqqBa 9hV1ifCuAkPSO8Ms3T7IKWdpsQC8u995BSvGr9+80S8tND2BfxODuCD9qHj79VtnkmwQ DrXfvnGS0XubagV9u5DaFa1vUhOHgj2Jacguo8qpqljHtqRWez1CKZx+2qVwNXSir6w1 zB1oIxJ3M1hvSBx8w1DTes+zhZYJ//CVwh6Uwnjk7vJbocN7jw5z7pbaU9Vcy0u4E5e6 adlQ== 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=X64HwbGOHHR1OjsRILDEM8IMGfqcDU+8uMRN3BdAh0U=; b=loGBkhOSpdQyGKekpERoYcpClZkT7x3rhUPacPNxUGa40pj+l1vQN079a3VbUGKpst aqqM5gWDGkVYzbos3YKHcm1T7lIWJ6VKt03yxnJ3X2Hm13xD7rU18rX9VVvZvvJV6adL iAXT+BmFCXQtYkT36Xwltk9bHQ4AjnQEHqN6UVroCN/yO4agK8bESsS6AQP/w5M3678S 6TpmYXqkJ6P+qPaAgXlWQSsxx+UMJ0yvQSdKbhHHu8gExXd1/HDe6DvWge9X7XtIb+ik Svty2xN94pgIF5EfBMoMnUwqhBLukQ6RYv5xZtN1CxgdgCVcLah7EaI8wRJJKnVoY6lR +bcQ== X-Gm-Message-State: AODbwcBJUhehMqF/w5J+TJJKMUbJzOtHWie6/ppOuy4vb9xVrBU0gKZr cz6k6T6Udqh95hdvqKc= X-Received: by 10.84.194.34 with SMTP id g31mr10355686pld.89.1496597757690; Sun, 04 Jun 2017 10:35:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:33 -0700 Message-Id: <20170604173509.29684-34-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::243 Subject: [Qemu-devel] [PULL 33/69] target/s390x: Use atomic operations for COMPARE SWAP PURGE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Also provide the cross-cpu tlb flushing required by the PoO. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/helper.h | 2 +- target/s390x/insn-data.def | 2 +- target/s390x/mem_helper.c | 32 ++++++++------------------------ target/s390x/translate.c | 42 ++++++++++++++++++++++++++++++++++++++---- 4 files changed, 48 insertions(+), 30 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 3819409..cc451c7 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -107,13 +107,13 @@ DEF_HELPER_FLAGS_2(tprot, TCG_CALL_NO_RWG, i32, i64, = i64) DEF_HELPER_FLAGS_2(iske, TCG_CALL_NO_RWG_SE, i64, env, i64) DEF_HELPER_FLAGS_3(sske, TCG_CALL_NO_RWG, void, env, i64, i64) DEF_HELPER_FLAGS_2(rrbe, TCG_CALL_NO_RWG, i32, env, i64) -DEF_HELPER_3(csp, i32, env, i32, i64) DEF_HELPER_4(mvcs, i32, env, i64, i64, i64) DEF_HELPER_4(mvcp, i32, env, i64, i64, i64) DEF_HELPER_4(sigp, i32, env, i64, i32, i64) DEF_HELPER_FLAGS_2(sacf, TCG_CALL_NO_WG, void, env, i64) DEF_HELPER_FLAGS_3(ipte, TCG_CALL_NO_RWG, void, env, i64, i64) DEF_HELPER_FLAGS_1(ptlb, TCG_CALL_NO_RWG, void, env) +DEF_HELPER_FLAGS_1(purge, TCG_CALL_NO_RWG, void, env) DEF_HELPER_2(lra, i64, env, i64) DEF_HELPER_FLAGS_2(lura, TCG_CALL_NO_WG, i64, env, i64) DEF_HELPER_FLAGS_2(lurag, TCG_CALL_NO_WG, i64, env, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 3c3541c..4c91f30 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -837,7 +837,7 @@ =20 #ifndef CONFIG_USER_ONLY /* COMPARE AND SWAP AND PURGE */ - C(0xb250, CSP, RRE, Z, 0, ra2, 0, 0, csp, 0) + D(0xb250, CSP, RRE, Z, r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL) /* DIAGNOSE (KVM hypercall) */ C(0x8300, DIAG, RSI, Z, 0, 0, 0, 0, diag, 0) /* INSERT STORAGE KEY EXTENDED */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index fa03129..4b96c27 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1056,30 +1056,6 @@ uint32_t HELPER(rrbe)(CPUS390XState *env, uint64_t r= 2) return re >> 1; } =20 -/* compare and swap and purge */ -uint32_t HELPER(csp)(CPUS390XState *env, uint32_t r1, uint64_t r2) -{ - S390CPU *cpu =3D s390_env_get_cpu(env); - uint32_t cc; - uint32_t o1 =3D env->regs[r1]; - uint64_t a2 =3D r2 & ~3ULL; - uint32_t o2 =3D cpu_ldl_data(env, a2); - - if (o1 =3D=3D o2) { - cpu_stl_data(env, a2, env->regs[(r1 + 1) & 15]); - if (r2 & 0x3) { - /* flush TLB / ALB */ - tlb_flush(CPU(cpu)); - } - cc =3D 0; - } else { - env->regs[r1] =3D (env->regs[r1] & 0xffffffff00000000ULL) | o2; - cc =3D 1; - } - - return cc; -} - uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l, uint64_t a1, uint64_= t a2) { uintptr_t ra =3D GETPC(); @@ -1161,6 +1137,14 @@ void HELPER(ptlb)(CPUS390XState *env) tlb_flush(CPU(cpu)); } =20 +/* flush global tlb */ +void HELPER(purge)(CPUS390XState *env) +{ + S390CPU *cpu =3D s390_env_get_cpu(env); + + tlb_flush_all_cpus_synced(CPU(cpu)); +} + /* load using real address */ uint64_t HELPER(lura)(CPUS390XState *env, uint64_t addr) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index b7b4843..a3fb324 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2001,11 +2001,45 @@ static ExitStatus op_cdsg(DisasContext *s, DisasOps= *o) #ifndef CONFIG_USER_ONLY static ExitStatus op_csp(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); + TCGMemOp mop =3D s->insn->data; + TCGv_i64 addr, old, cc; + TCGLabel *lab =3D gen_new_label(); + + /* Note that in1 =3D R1 (zero-extended expected value), + out =3D R1 (original reg), out2 =3D R1+1 (new value). */ + check_privileged(s); - gen_helper_csp(cc_op, cpu_env, r1, o->in2); - tcg_temp_free_i32(r1); - set_cc_static(s); + addr =3D tcg_temp_new_i64(); + old =3D tcg_temp_new_i64(); + tcg_gen_andi_i64(addr, o->in2, -1ULL << (mop & MO_SIZE)); + tcg_gen_atomic_cmpxchg_i64(old, addr, o->in1, o->out2, + get_mem_index(s), mop | MO_ALIGN); + tcg_temp_free_i64(addr); + + /* Are the memory and expected values (un)equal? */ + cc =3D tcg_temp_new_i64(); + tcg_gen_setcond_i64(TCG_COND_NE, cc, o->in1, old); + tcg_gen_extrl_i64_i32(cc_op, cc); + + /* Write back the output now, so that it happens before the + following branch, so that we don't need local temps. */ + if ((mop & MO_SIZE) =3D=3D MO_32) { + tcg_gen_deposit_i64(o->out, o->out, old, 0, 32); + } else { + tcg_gen_mov_i64(o->out, old); + } + tcg_temp_free_i64(old); + + /* If the comparison was equal, and the LSB of R2 was set, + then we need to flush the TLB (for all cpus). */ + tcg_gen_xori_i64(cc, cc, 1); + tcg_gen_and_i64(cc, cc, o->in2); + tcg_gen_brcondi_i64(TCG_COND_EQ, cc, 0, lab); + tcg_temp_free_i64(cc); + + gen_helper_purge(cpu_env); + gen_set_label(lab); + return NO_EXIT; } #endif --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599108307876.6477305130695; Sun, 4 Jun 2017 10:58:28 -0700 (PDT) Received: from localhost ([::1]:57925 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZnG-0004HK-O4 for importer@patchew.org; Sun, 04 Jun 2017 13:58:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50339) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRZ-0007kP-0A for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRY-0003P5-88 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:01 -0400 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:35787) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRY-0003OW-1M for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:00 -0400 Received: by mail-pg0-x244.google.com with SMTP id f127so7255914pgc.2 for ; Sun, 04 Jun 2017 10:35:59 -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.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:58 -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=yONe3+NzQ6beNb5WcJK+BctfHwhdwpiMLeUUXMKoq1w=; b=pvm1+WdjJGjSLUd5gmYnhOFBEXW6orYauARHKrnU4r5O/uQlluy/0g8Qc/RhglnKN3 nt5vHj/kEuafPw0fysEyL7dkif8qQ8rBFvUzuR2/76wHkExEuy2DDz/0IVPTxch0J8HG sVz9frqddOJWm0W+H3+ADJ8ZDschuyaRvTqQKm596z+d5fPKkSuxHJZmuq/Fv899bMVt HR7o9+mvLtQ7S8vKCGcJUGs/ew5hlB0umDECNjuywwaSJrGPxwgiS5tm6FmryxzET0oF iR/Frnl2S29tTgDak/XA61nwM75CY2wZOkAJgNGBx+6dwvnH1ZVwDEXVxwcs/voysk/e KKQw== 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=yONe3+NzQ6beNb5WcJK+BctfHwhdwpiMLeUUXMKoq1w=; b=riWssbSgJdgfW4oBXMqheC+jDJk5txZ7/Il6i9g6VmudUF5izdHSwD6FSmP4ebdgA+ Oepk7+0haq+rVBtd9XbAS6q7UyVOYETjHCJ1C852NIyVLCTmRVukeTa/jU2mofFPnJp+ oR/t9+FE6qNDYAdY1NAZODhT4xMZldriAkcPTD3Df3GjvsPXiDOKcoNZV9SdTl3ZPJem WZ8b+NzolhPY+aE06acd1QclMrUZVxfXDcR3Pvw+auTt85ZOPkq7YC2IWXkdfzsZZF3O OZewMlCjdW8cPGK+QGvk69Ym4i6vlig3XAtsxYRQ0UdMCoBFiSNGKlqIipNrt3pdDe9s pyww== X-Gm-Message-State: AODbwcAsbeq47HAZoP/2F20DKthLVK8Pec2HDKiMgAwIb9ERvk1pyhsL E0N+s/pDvZ/tsAZbdeU= X-Received: by 10.99.96.9 with SMTP id u9mr17157112pgb.97.1496597759011; Sun, 04 Jun 2017 10:35:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:34 -0700 Message-Id: <20170604173509.29684-35-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::244 Subject: [Qemu-devel] [PULL 34/69] target/s390x: Implement CSPG 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/insn-data.def | 1 + target/s390x/translate.c | 1 + 2 files changed, 2 insertions(+) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 4c91f30..f818437 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -838,6 +838,7 @@ #ifndef CONFIG_USER_ONLY /* COMPARE AND SWAP AND PURGE */ D(0xb250, CSP, RRE, Z, r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL) + D(0xb98a, CSPG, RRE, DAT_ENH, r1_o, ra2, r1_P, 0, csp, 0, MO_TEQ) /* DIAGNOSE (KVM hypercall) */ C(0x8300, DIAG, RSI, Z, 0, 0, 0, 0, diag, 0) /* INSERT STORAGE KEY EXTENDED */ diff --git a/target/s390x/translate.c b/target/s390x/translate.c index a3fb324..4bd16d9 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1195,6 +1195,7 @@ typedef enum DisasFacility { FAC_SFLE, /* store facility list extended */ FAC_ILA, /* interlocked access facility 1 */ FAC_LPP, /* load-program-parameter */ + FAC_DAT_ENH, /* DAT-enhancement */ } DisasFacility; =20 struct DisasInsn { --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149659891036816.54159525908483; Sun, 4 Jun 2017 10:55:10 -0700 (PDT) Received: from localhost ([::1]:57910 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZk4-0000sz-Rf for importer@patchew.org; Sun, 04 Jun 2017 13:55:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50364) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRa-0007ma-TR for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRZ-0003RG-Uj for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:02 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:33429) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRZ-0003Q6-Ce for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:01 -0400 Received: by mail-pg0-x243.google.com with SMTP id s62so7256413pgc.0 for ; Sun, 04 Jun 2017 10:36:01 -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.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:35:59 -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=rxMlOHwg+nY4SbvV7e2e7VzvgRr3k8Zl9meqfS0qUPM=; b=lTK3b2BK7iu8bfVEwBKF/4Vc10uBXQrcAnoLvnAZqGe0IOiqEjdx2NQvzApc6nUJqJ FV+vjoB6UonXJvpevkj2IQm079diJRSEMC4LlH3yWjQ/+O0Q2C+nzEw5dgl+t16jZbpo 2dssE9EVFZ/WkOzeNs/eBPaaYtwE3ZhcggoDs7AAlKNlUqJs0OeEPXH8xGXO7QnwukiE ClddHeptuRrLgKZpvinibsMHtclVHXJahDEN2Zq72HLtRcHjKR45Nd+/oYk/CVt2qbDZ T6lwFULNV0+kkHeehBK2E+M1e7kY1nKnCteTEOFCPkuG1vlTPQPMkH98iixCBZ/yvbqr dcBQ== 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=rxMlOHwg+nY4SbvV7e2e7VzvgRr3k8Zl9meqfS0qUPM=; b=MAT4QKHyQVn2qE1WrvssCHcrAvL6TRPesHgDyCrsj3wxdFU2OfPK2avf2mzySaN5QY uH5nHHFGXHHHNtRmRcgECQRxbSC+BYe1YT80aftqDzq+NxNZl0blKhWi5UjPXf3NUtBO bn0fhUGcvq6icy9JMsEzq3AWG2J1oa+jmqJi5ER7cVsp09hir0miCcg7Fcp9JpkCfQm4 FgcTrOFI4hhdP0tWGFESepSxBTNmmtxRHudMt37MoCXowjL/Zwc6J8nDIsBqUdA9N5Ke goZ/vBK5589pmXCmzlNCcXGyUd20GzsDkwZoYBVSGlVKQWheab1zhCQLpkkwVME8o6z/ xqFA== X-Gm-Message-State: AODbwcDMpl7NhxJ3q/1Q63ns0or2vvVGnVeoWWlYXc69VkTvoZY8SmhU l1fH8vnaq6Tjtv9wnrg= X-Received: by 10.99.5.147 with SMTP id 141mr17150816pgf.134.1496597760341; Sun, 04 Jun 2017 10:36:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:35 -0700 Message-Id: <20170604173509.29684-36-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::243 Subject: [Qemu-devel] [PULL 35/69] target/s390x: Save current ilen during translation 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Use this saved value instead of recomputing from next_pc difference. Reviewed-by: David Hildenbrand Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/translate.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 4bd16d9..5b8333f 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -58,6 +58,7 @@ struct DisasContext { const DisasInsn *insn; DisasFields *fields; uint64_t pc, next_pc; + uint32_t ilen; enum cc_op cc_op; bool singlestep_enabled; }; @@ -349,7 +350,7 @@ static void gen_program_exception(DisasContext *s, int = code) tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUS390XState, int_pgm_code)); tcg_temp_free_i32(tmp); =20 - tmp =3D tcg_const_i32(s->next_pc - s->pc); + tmp =3D tcg_const_i32(s->ilen); tcg_gen_st_i32(tmp, cpu_env, offsetof(CPUS390XState, int_pgm_ilen)); tcg_temp_free_i32(tmp); =20 @@ -2207,7 +2208,7 @@ static ExitStatus op_ex(DisasContext *s, DisasOps *o) v1 =3D regs[r1]; } =20 - ilen =3D tcg_const_i32(s->next_pc - s->pc); + ilen =3D tcg_const_i32(s->ilen); gen_helper_ex(cpu_env, ilen, v1, o->in2); tcg_temp_free_i32(ilen); =20 @@ -4052,7 +4053,7 @@ static ExitStatus op_svc(DisasContext *s, DisasOps *o) tcg_gen_st_i32(t, cpu_env, offsetof(CPUS390XState, int_svc_code)); tcg_temp_free_i32(t); =20 - t =3D tcg_const_i32(s->next_pc - s->pc); + t =3D tcg_const_i32(s->ilen); tcg_gen_st_i32(t, cpu_env, offsetof(CPUS390XState, int_svc_ilen)); tcg_temp_free_i32(t); =20 @@ -5191,6 +5192,7 @@ static const DisasInsn *extract_insn(CPUS390XState *e= nv, DisasContext *s, op =3D (insn >> 8) & 0xff; ilen =3D get_ilen(op); s->next_pc =3D s->pc + ilen; + s->ilen =3D ilen; =20 switch (ilen) { case 2: --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599256016970.3616651191659; Sun, 4 Jun 2017 11:00:56 -0700 (PDT) Received: from localhost ([::1]:57939 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZpe-0006bg-Gm for importer@patchew.org; Sun, 04 Jun 2017 14:00:54 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50417) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRe-0007qR-Ud for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRb-0003Tn-3U for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:06 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:34659) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRa-0003SX-SN for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:03 -0400 Received: by mail-pf0-x241.google.com with SMTP id w69so18143588pfk.1 for ; Sun, 04 Jun 2017 10:36:02 -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.36.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:01 -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=Kw4OrTnJoyEXimbYL5T5HOHvoy9StDHdLAgHBj7k14s=; b=Hezr6RKtDvnAS2/XvARSuPJDk9CvQ34z8Kv2UbM6fWVXOYnT3875mxT/TCbUPfyIc7 sgJ9URcto9WjAV5jRl4KESNCTO8Ge/eBOejDlmTBZCWaxQ/FO7nMBq+NCreu5vAZ3g8c 56Y7+NHq4u6oDfJNkTs5jwWCrp9RqbAx3s5ok9C5bhZHoJJq3tk/I4JL4alGdyeCs/QG BkybKPub+TuJqEHLMqljYwtQPZXeGFviux2VrR6jWB1VTNERgaGfKBJiS4AvDPY60sLW xoo5tL70MDlA/aX5xKXW/z1DGPe3vi9c1F3m+Fm2LQqI3S6ENROpqbTy2SW239lx5hyD gCKA== 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=Kw4OrTnJoyEXimbYL5T5HOHvoy9StDHdLAgHBj7k14s=; b=gZlO3+fTL3EejDtrasovO/15wQcaFONr/AqtLJoZHtR6bl9yclgbBPgBC5H+sJgZ4v ahg63ooSuvEHGlXpKMOc1nNa8aACFFOj8u7jMVhFeuWwcGBCZnaWnEBATUmZ8zt0SP8f Vk0fnoOzJb55NTiLaTiW82wYKec0KJXbEHe/TNiG/j9H/7Cy6CEoI6OwhwsYNR4pdi91 EK+rlWZtaTyCu47GMnc5qt9zjxU8WkRLLj1Yx3BSchM/dt2aCFoqXChBYbkrTA4mjKRo Y14SgTWaGftSPVdLy1UASOr6fO0+WWR+ba6rpkByGnyDvPrXwNLZx3FMMEUffIgIRpMj B6zw== X-Gm-Message-State: AODbwcA66NQy4zJ/RdSFfzpzZSpN799wb0Go+vfYJ7OWOurj/EeX9gT0 yZvMkBc/se0TSf3lfco= X-Received: by 10.99.1.88 with SMTP id 85mr17468775pgb.110.1496597761761; Sun, 04 Jun 2017 10:36:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:36 -0700 Message-Id: <20170604173509.29684-37-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:c00::241 Subject: [Qemu-devel] [PULL 36/69] target/s390x: End the TB after EXECUTE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This split will be required for implementing EXECUTE properly. Do this now as a separate step to aid comparison of before and after TB listings. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 54 ++++++++++++++++++++++++++++---------------= ---- target/s390x/translate.c | 6 +++++- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 4b96c27..d57d5b1 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1234,6 +1234,7 @@ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, ui= nt64_t r1, uint64_t addr) S390CPU *cpu =3D s390_env_get_cpu(env); uint64_t insn =3D cpu_lduw_code(env, addr); uint8_t opc =3D insn >> 8; + uint32_t cc; =20 /* Or in the contents of R1[56:63]. */ insn |=3D r1 & 0xff; @@ -1263,42 +1264,46 @@ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, = uint64_t r1, uint64_t addr) b2 =3D extract64(insn, 28, 4); d1 =3D extract64(insn, 32, 12); d2 =3D extract64(insn, 16, 12); + + cc =3D env->cc_op; switch (opc & 0xf) { case 0x2: do_helper_mvc(env, l, get_address(env, 0, b1, d1), get_address(env, 0, b2, d2), 0); - return; + break; case 0x4: - env->cc_op =3D do_helper_nc(env, l, get_address(env, 0, b1, d1= ), - get_address(env, 0, b2, d2), 0); - return; + cc =3D do_helper_nc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); + break; case 0x5: - env->cc_op =3D do_helper_clc(env, l, get_address(env, 0, b1, d= 1), - get_address(env, 0, b2, d2), 0); - return; + cc =3D do_helper_clc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); + break; case 0x6: - env->cc_op =3D do_helper_oc(env, l, get_address(env, 0, b1, d1= ), - get_address(env, 0, b2, d2), 0); - return; + cc =3D do_helper_oc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); + break; case 0x7: - env->cc_op =3D do_helper_xc(env, l, get_address(env, 0, b1, d1= ), - get_address(env, 0, b2, d2), 0); - return; + cc =3D do_helper_xc(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); + break; case 0xc: do_helper_tr(env, l, get_address(env, 0, b1, d1), get_address(env, 0, b2, d2), 0); - return; + break; case 0xd: - env->cc_op =3D do_helper_trt(env, l, get_address(env, 0, b1, d= 1), - get_address(env, 0, b2, d2), 0); - return; + cc =3D do_helper_trt(env, l, get_address(env, 0, b1, d1), + get_address(env, 0, b2, d2), 0); + break; + default: + goto abort; } } else if (opc =3D=3D 0x0a) { /* supervisor call */ env->int_svc_code =3D extract64(insn, 48, 8); env->int_svc_ilen =3D ilen; helper_exception(env, EXCP_SVC); - return; + g_assert_not_reached(); } else if (opc =3D=3D 0xbf) { uint32_t r1, r3, b2, d2; =20 @@ -1306,10 +1311,15 @@ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, = uint64_t r1, uint64_t addr) r3 =3D extract64(insn, 48, 4); b2 =3D extract64(insn, 44, 4); d2 =3D extract64(insn, 32, 12); - env->cc_op =3D helper_icm(env, r1, get_address(env, 0, b2, d2), r3= ); - return; + cc =3D helper_icm(env, r1, get_address(env, 0, b2, d2), r3); + } else { + abort: + cpu_abort(CPU(cpu), + "EXECUTE on instruction prefix 0x%x not implemented\n", + opc); + g_assert_not_reached(); } =20 - cpu_abort(CPU(cpu), "EXECUTE on instruction prefix 0x%x not implemente= d\n", - opc); + env->cc_op =3D cc; + env->psw.addr +=3D ilen; } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 5b8333f..70212c8 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1163,6 +1163,8 @@ typedef enum { the PC (for whatever reason), so there's no need to do it again on exiting the TB. */ EXIT_PC_UPDATED, + /* We have updated the PC and CC values. */ + EXIT_PC_CC_UPDATED, /* We are exiting the TB, but have neither emitted a goto_tb, nor updated the PC for the next instruction to be executed. */ EXIT_PC_STALE, @@ -2216,7 +2218,7 @@ static ExitStatus op_ex(DisasContext *s, DisasOps *o) tcg_temp_free_i64(v1); } =20 - return NO_EXIT; + return EXIT_PC_CC_UPDATED; } =20 static ExitStatus op_fieb(DisasContext *s, DisasOps *o) @@ -5489,6 +5491,8 @@ void gen_intermediate_code(CPUS390XState *env, struct= TranslationBlock *tb) /* Next TB starts off with CC_OP_DYNAMIC, so make sure the cc op type is in env */ update_cc_op(&dc); + /* FALLTHRU */ + case EXIT_PC_CC_UPDATED: /* Exit the TB, either by raising a debug exception or by return. = */ if (do_debug) { gen_exception(EXCP_DEBUG); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149659905998325.944184956817026; Sun, 4 Jun 2017 10:57:39 -0700 (PDT) Received: from localhost ([::1]:57923 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZmU-0003E0-Ca for importer@patchew.org; Sun, 04 Jun 2017 13:57:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50418) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRe-0007qS-Un for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRc-0003We-Qk for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:06 -0400 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:36355) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRc-0003Vp-Hn for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:04 -0400 Received: by mail-pf0-x242.google.com with SMTP id n23so18101145pfb.3 for ; Sun, 04 Jun 2017 10:36:04 -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.36.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:02 -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=jyOanrLbHGCaidi6o/GDX7L2yIrh60YTfMKwZOoC86U=; b=FPdaSTuf2KjdQcSxboFuJKmtXgwNwXTqoYUt332/Vur79iIXz/Ws6tRFPdJyQzxWEF CXz+oXyrBjWXPzEO08yMyHjvuXK8JzEu6OAuQm14FCuxnuhKpaXIr5HNI5owlbCBjCzf ePBvlR8UFKMk8rDDPm5vajXgMrq7iPUJjM0LCWQodA+yqFgIm7XM+p2W/e0ePhcn28KL ZTAJt986nMDFcAzMJnkH0B1f4iGk4nYcgvUSsFRwZsm+z2uQHFxW+L6wGWlbPpPP98KV 0V1hx+1dojYQakoU2nW56TG23l/HFAzvoX6UyDxIrsBQucGbIr3Uwqoir+BEvedtEAOU KF7g== 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=jyOanrLbHGCaidi6o/GDX7L2yIrh60YTfMKwZOoC86U=; b=mT1tFjkzh2QOE4Co23sniatDuuAIimTl9ki17i2x122h8PqyUg1MsOWw9lCdrAJKOh g/ZydcMrZ99uvzvKJtY9q4w2lI2ppIvrNzEvFe9o4faXdCzqVGdS6zVFI/n7xDpxKQEl gaaAsOGt9RM6LIQaHTaMcX43CK0kvx5pFxejTz/OMypRtlaEqn244eRV/EiEC6asGB1w leaYQnOcbWxy5wMAmWdxRBhPBqpDhT4eCBWoJOxXfDrDqrSNpY3bghSnMdilJglKdsf1 7gm4qTUJ4xrixqtlRMBEdnQNNowDEoy1N4dHy9xE3EDVPfWtZjhFyJiov2ZS9LwtZyE5 WSkA== X-Gm-Message-State: AODbwcBMU10i1agWZ5DF3sKWRIx2062SjCtsZcFNfEZ2gA30ogAv7nzy OkTJVdjg0kNcpI2UvWU= X-Received: by 10.99.116.7 with SMTP id p7mr16831603pgc.162.1496597763296; Sun, 04 Jun 2017 10:36:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:37 -0700 Message-Id: <20170604173509.29684-38-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:c00::242 Subject: [Qemu-devel] [PULL 37/69] target/s390x: Implement EXECUTE via new TranslationBlock 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Previously, helper_ex would construct the insn and then implement the insn via direct calls other helpers. This was sufficient to boot Linux but that is all. It is easy enough to go the whole nine yards by stashing state for EXECUTE within the cpu, and then rely on a new TB to be created that properly and completely interprets the insn. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/cpu.h | 4 +- target/s390x/helper.c | 5 ++ target/s390x/machine.c | 19 ++++++++ target/s390x/mem_helper.c | 118 +++++-------------------------------------= ---- target/s390x/translate.c | 80 ++++++++++++++++++------------- 5 files changed, 85 insertions(+), 141 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index f463113..fdb2f50 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -107,6 +107,8 @@ typedef struct CPUS390XState { uint64_t cc_dst; uint64_t cc_vr; =20 + uint64_t ex_value; + uint64_t __excp_addr; uint64_t psa; =20 @@ -393,7 +395,7 @@ static inline void cpu_get_tb_cpu_state(CPUS390XState* = env, target_ulong *pc, target_ulong *cs_base, uint32_t *f= lags) { *pc =3D env->psw.addr; - *cs_base =3D 0; + *cs_base =3D env->ex_value; *flags =3D ((env->psw.mask >> 32) & ~FLAG_MASK_CC) | ((env->psw.mask & PSW_MASK_32) ? FLAG_MASK_32 : 0); } diff --git a/target/s390x/helper.c b/target/s390x/helper.c index 4f8aadf..291db72 100644 --- a/target/s390x/helper.c +++ b/target/s390x/helper.c @@ -642,6 +642,11 @@ bool s390_cpu_exec_interrupt(CPUState *cs, int interru= pt_request) S390CPU *cpu =3D S390_CPU(cs); CPUS390XState *env =3D &cpu->env; =20 + if (env->ex_value) { + /* Execution of the target insn is indivisible from + the parent EXECUTE insn. */ + return false; + } if (env->psw.mask & PSW_MASK_EXT) { s390_cpu_do_interrupt(cs); return true; diff --git a/target/s390x/machine.c b/target/s390x/machine.c index 8503fa1..8f908bb 100644 --- a/target/s390x/machine.c +++ b/target/s390x/machine.c @@ -34,6 +34,7 @@ static int cpu_post_load(void *opaque, int version_id) =20 return 0; } + static void cpu_pre_save(void *opaque) { S390CPU *cpu =3D opaque; @@ -156,6 +157,23 @@ const VMStateDescription vmstate_riccb =3D { } }; =20 +static bool exval_needed(void *opaque) +{ + S390CPU *cpu =3D opaque; + return cpu->env.ex_value !=3D 0; +} + +const VMStateDescription vmstate_exval =3D { + .name =3D "cpu/exval", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D exval_needed, + .fields =3D (VMStateField[]) { + VMSTATE_UINT64(env.ex_value, S390CPU), + VMSTATE_END_OF_LIST() + } +}; + const VMStateDescription vmstate_s390_cpu =3D { .name =3D "cpu", .post_load =3D cpu_post_load, @@ -188,6 +206,7 @@ const VMStateDescription vmstate_s390_cpu =3D { &vmstate_fpu, &vmstate_vregs, &vmstate_riccb, + &vmstate_exval, NULL }, }; diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index d57d5b1..3a77edc 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -435,37 +435,6 @@ uint64_t HELPER(mvst)(CPUS390XState *env, uint64_t c, = uint64_t d, uint64_t s) return d + len; } =20 -static uint32_t helper_icm(CPUS390XState *env, uint32_t r1, uint64_t addre= ss, - uint32_t mask) -{ - int pos =3D 24; /* top of the lower half of r1 */ - uint64_t rmask =3D 0xff000000ULL; - uint8_t val =3D 0; - int ccd =3D 0; - uint32_t cc =3D 0; - - while (mask) { - if (mask & 8) { - env->regs[r1] &=3D ~rmask; - val =3D cpu_ldub_data(env, address); - if ((val & 0x80) && !ccd) { - cc =3D 1; - } - ccd =3D 1; - if (val && cc =3D=3D 0) { - cc =3D 2; - } - env->regs[r1] |=3D (uint64_t)val << pos; - address++; - } - mask =3D (mask << 1) & 0xf; - pos -=3D 8; - rmask >>=3D 8; - } - - return cc; -} - /* load access registers r1 to r3 from memory at a2 */ void HELPER(lam)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t r3) { @@ -1222,19 +1191,17 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t a= ddr) } #endif =20 -/* execute instruction - this instruction executes an insn modified with the contents of r1 - it does not change the executed instruction in memory - it does not change the program counter - in other words: tricky... - currently implemented by interpreting the cases it is most commonly use= d. +/* Execute instruction. This instruction executes an insn modified with + the contents of r1. It does not change the executed instruction in mem= ory; + it does not change the program counter. + + Perform this by recording the modified instruction in env->ex_value. + This will be noticed by cpu_get_tb_cpu_state and thus tb translation. */ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, uint64_t r1, uint64_t a= ddr) { - S390CPU *cpu =3D s390_env_get_cpu(env); uint64_t insn =3D cpu_lduw_code(env, addr); uint8_t opc =3D insn >> 8; - uint32_t cc; =20 /* Or in the contents of R1[56:63]. */ insn |=3D r1 & 0xff; @@ -1254,72 +1221,9 @@ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, u= int64_t r1, uint64_t addr) g_assert_not_reached(); } =20 - HELPER_LOG("%s: addr 0x%lx insn 0x%" PRIx64 "\n", __func__, addr, insn= ); - - if ((opc & 0xf0) =3D=3D 0xd0) { - uint32_t l, b1, b2, d1, d2; - - l =3D extract64(insn, 48, 8); - b1 =3D extract64(insn, 44, 4); - b2 =3D extract64(insn, 28, 4); - d1 =3D extract64(insn, 32, 12); - d2 =3D extract64(insn, 16, 12); - - cc =3D env->cc_op; - switch (opc & 0xf) { - case 0x2: - do_helper_mvc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0x4: - cc =3D do_helper_nc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0x5: - cc =3D do_helper_clc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0x6: - cc =3D do_helper_oc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0x7: - cc =3D do_helper_xc(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0xc: - do_helper_tr(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - case 0xd: - cc =3D do_helper_trt(env, l, get_address(env, 0, b1, d1), - get_address(env, 0, b2, d2), 0); - break; - default: - goto abort; - } - } else if (opc =3D=3D 0x0a) { - /* supervisor call */ - env->int_svc_code =3D extract64(insn, 48, 8); - env->int_svc_ilen =3D ilen; - helper_exception(env, EXCP_SVC); - g_assert_not_reached(); - } else if (opc =3D=3D 0xbf) { - uint32_t r1, r3, b2, d2; - - r1 =3D extract64(insn, 52, 4); - r3 =3D extract64(insn, 48, 4); - b2 =3D extract64(insn, 44, 4); - d2 =3D extract64(insn, 32, 12); - cc =3D helper_icm(env, r1, get_address(env, 0, b2, d2), r3); - } else { - abort: - cpu_abort(CPU(cpu), - "EXECUTE on instruction prefix 0x%x not implemented\n", - opc); - g_assert_not_reached(); - } - - env->cc_op =3D cc; - env->psw.addr +=3D ilen; + /* Record the insn we want to execute as well as the ilen to use + during the execution of the target insn. This will also ensure + that ex_value is non-zero, which flags that we are in a state + that requires such execution. */ + env->ex_value =3D insn | ilen; } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 70212c8..97ca639 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -57,6 +57,7 @@ struct DisasContext { struct TranslationBlock *tb; const DisasInsn *insn; DisasFields *fields; + uint64_t ex_value; uint64_t pc, next_pc; uint32_t ilen; enum cc_op cc_op; @@ -2186,23 +2187,18 @@ static ExitStatus op_epsw(DisasContext *s, DisasOps= *o) =20 static ExitStatus op_ex(DisasContext *s, DisasOps *o) { - /* ??? Perhaps a better way to implement EXECUTE is to set a bit in - tb->flags, (ab)use the tb->cs_base field as the address of - the template in memory, and grab 8 bits of tb->flags/cflags for - the contents of the register. We would then recognize all this - in gen_intermediate_code_internal, generating code for exactly - one instruction. This new TB then gets executed normally. - - On the other hand, this seems to be mostly used for modifying - MVC inside of memcpy, which needs a helper call anyway. So - perhaps this doesn't bear thinking about any further. */ - int r1 =3D get_field(s->fields, r1); TCGv_i32 ilen; TCGv_i64 v1; =20 + /* Nested EXECUTE is not allowed. */ + if (unlikely(s->ex_value)) { + gen_program_exception(s, PGM_EXECUTE); + return EXIT_NORETURN; + } + update_psw_addr(s); - gen_op_calc_cc(s); + update_cc_op(s); =20 if (r1 =3D=3D 0) { v1 =3D tcg_const_i64(0); @@ -5190,25 +5186,36 @@ static const DisasInsn *extract_insn(CPUS390XState = *env, DisasContext *s, int op, op2, ilen; const DisasInsn *info; =20 - insn =3D ld_code2(env, pc); - op =3D (insn >> 8) & 0xff; - ilen =3D get_ilen(op); - s->next_pc =3D s->pc + ilen; - s->ilen =3D ilen; + if (unlikely(s->ex_value)) { + /* Drop the EX data now, so that it's clear on exception paths. */ + TCGv_i64 zero =3D tcg_const_i64(0); + tcg_gen_st_i64(zero, cpu_env, offsetof(CPUS390XState, ex_value)); + tcg_temp_free_i64(zero); =20 - switch (ilen) { - case 2: - insn =3D insn << 48; - break; - case 4: - insn =3D ld_code4(env, pc) << 32; - break; - case 6: - insn =3D (insn << 48) | (ld_code4(env, pc + 2) << 16); - break; - default: - abort(); + /* Extract the values saved by EXECUTE. */ + insn =3D s->ex_value & 0xffffffffffff0000ull; + ilen =3D s->ex_value & 0xf; + op =3D insn >> 56; + } else { + insn =3D ld_code2(env, pc); + op =3D (insn >> 8) & 0xff; + ilen =3D get_ilen(op); + switch (ilen) { + case 2: + insn =3D insn << 48; + break; + case 4: + insn =3D ld_code4(env, pc) << 32; + break; + case 6: + insn =3D (insn << 48) | (ld_code4(env, pc + 2) << 16); + break; + default: + g_assert_not_reached(); + } } + s->next_pc =3D s->pc + ilen; + s->ilen =3D ilen; =20 /* We can't actually determine the insn format until we've looked up the full insn opcode. Which we can't do without locating the @@ -5425,6 +5432,7 @@ void gen_intermediate_code(CPUS390XState *env, struct= TranslationBlock *tb) dc.tb =3D tb; dc.pc =3D pc_start; dc.cc_op =3D CC_OP_DYNAMIC; + dc.ex_value =3D tb->cs_base; do_debug =3D dc.singlestep_enabled =3D cs->singlestep_enabled; =20 next_page_start =3D (pc_start & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE; @@ -5471,7 +5479,8 @@ void gen_intermediate_code(CPUS390XState *env, struct= TranslationBlock *tb) || tcg_op_buf_full() || num_insns >=3D max_insns || singlestep - || cs->singlestep_enabled)) { + || cs->singlestep_enabled + || dc.ex_value)) { status =3D EXIT_PC_STALE; } } while (status =3D=3D NO_EXIT); @@ -5513,9 +5522,14 @@ void gen_intermediate_code(CPUS390XState *env, struc= t TranslationBlock *tb) if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM) && qemu_log_in_addr_range(pc_start)) { qemu_log_lock(); - qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, dc.pc - pc_start, 1); - qemu_log("\n"); + if (unlikely(dc.ex_value)) { + /* ??? Unfortunately log_target_disas can't use host memory. = */ + qemu_log("IN: EXECUTE %016" PRIx64 "\n", dc.ex_value); + } else { + qemu_log("IN: %s\n", lookup_symbol(pc_start)); + log_target_disas(cs, pc_start, dc.pc - pc_start, 1); + qemu_log("\n"); + } qemu_log_unlock(); } #endif --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599431705791.7993881744167; Sun, 4 Jun 2017 11:03:51 -0700 (PDT) Received: from localhost ([::1]:57951 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZsT-0000mx-Us for importer@patchew.org; Sun, 04 Jun 2017 14:03:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50430) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRf-0007qf-E3 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRe-0003Y6-5S for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:07 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:35795) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRd-0003XQ-T0 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:06 -0400 Received: by mail-pg0-x241.google.com with SMTP id f127so7256164pgc.2 for ; Sun, 04 Jun 2017 10:36:05 -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.36.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36: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=/kr8ps84mVKBjpfIXGC8Z9DgOi3pc9TVx3w/2qYjHEI=; b=ovHkwkjFJWfO7KUaWfGytfC9VGy9XU0oOcCaWIPk9Tii4cX1VMQK+PZaZKip7PKHb3 U09wIsLEFL/Y5BU4mXE5gAuD99JsLvFowAq05lEj1BM419xJJQkaWVVIlVUbrUEai8r9 lVePQbBDzkeWcKrNZflKgAPQl6AptrcIOsWcdtwTEbQPnKmskxz2wFtADWkDr6aERJ09 iJc6gghOTuOi20O5z+3JFkH6LfDdXbWx+Ngy5s5eZkWiSFtQVF9GdmtUTXG/pHvqSFDR 2G+103QHlGrhFCu7lmuXCYsH6BN6q3nHz+jNJuLIeitAXfswwnBkxHOvrfR9/Oxz8ib5 C1xw== 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=/kr8ps84mVKBjpfIXGC8Z9DgOi3pc9TVx3w/2qYjHEI=; b=c3uie4r/DBfDP/xoZZorSpDNPHO/No23vWmWwyY/RybkmDVmBCudw/m8Q9yw6/0GYk uZq1J63g1T6TSfes/Vr+tHZWlQSHABETNZ2lyTUKAXVDaPB/0DYZwzoVvv0zGR20Bmhf 8VCTC7OFfIu9DLfQkPDbg1tPWkoEUyaMrKzb5Wwkz/vIixG8HmzerVLnKBiSCaqsOWT8 Zja9JLfOEZ7ezqY/Jq7BIp4GMR10GQQZ0abadAAjWerdbsI3AayqMOvFcS4Bxf+/3Fd4 AcPmBepvNE6+l+XNm/kE48GrY7TC9oKlfv0l4HH6n9GyXozDqaD+bvTCZvdRY2Xowqnk 0XwA== X-Gm-Message-State: AODbwcDRXHQaEMXLLoQC1musuLKsMqi0jagYnnYsXUmjBjLRhHAGVTFn od/XE/uJI0QmwClGe48= X-Received: by 10.99.94.70 with SMTP id s67mr16925986pgb.82.1496597764817; Sun, 04 Jun 2017 10:36:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:38 -0700 Message-Id: <20170604173509.29684-39-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::241 Subject: [Qemu-devel] [PULL 38/69] target/s390x: Re-implement a few EXECUTE target insns directly 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" While the previous patch is required for proper conformance, the vast majority of target insns are MVC and XC for implementing memmove and memset respectively. The next most common are CLC, TR, and SVC. Implementing these (and a few others for which we already have an implementation) directly is faster than going through full translation to a TB. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 66 ++++++++++++++++++++++++++++++++++++-------= ---- 1 file changed, 51 insertions(+), 15 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 3a77edc..e35571e 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -200,31 +200,30 @@ uint32_t HELPER(oc)(CPUS390XState *env, uint32_t l, u= int64_t dest, } =20 /* memmove */ -static void do_helper_mvc(CPUS390XState *env, uint32_t l, uint64_t dest, - uint64_t src, uintptr_t ra) +static uint32_t do_helper_mvc(CPUS390XState *env, uint32_t l, uint64_t des= t, + uint64_t src, uintptr_t ra) { uint32_t i; =20 HELPER_LOG("%s l %d dest %" PRIx64 " src %" PRIx64 "\n", __func__, l, dest, src); =20 + /* mvc and memmove do not behave the same when areas overlap! */ /* mvc with source pointing to the byte after the destination is the same as memset with the first source byte */ if (dest =3D=3D src + 1) { fast_memset(env, dest, cpu_ldub_data_ra(env, src, ra), l + 1, ra); - return; - } - - /* mvc and memmove do not behave the same when areas overlap! */ - if (dest < src || src + l < dest) { + } else if (dest < src || src + l < dest) { fast_memmove(env, dest, src, l + 1, ra); - return; + } else { + /* slow version with byte accesses which always work */ + for (i =3D 0; i <=3D l; i++) { + uint8_t x =3D cpu_ldub_data_ra(env, src + i, ra); + cpu_stb_data_ra(env, dest + i, x, ra); + } } =20 - /* slow version with byte accesses which always work */ - for (i =3D 0; i <=3D l; i++) { - cpu_stb_data_ra(env, dest + i, cpu_ldub_data_ra(env, src + i, ra),= ra); - } + return env->cc_op; } =20 void HELPER(mvc)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) @@ -692,8 +691,8 @@ void HELPER(unpk)(CPUS390XState *env, uint32_t len, uin= t64_t dest, } } =20 -static void do_helper_tr(CPUS390XState *env, uint32_t len, uint64_t array, - uint64_t trans, uintptr_t ra) +static uint32_t do_helper_tr(CPUS390XState *env, uint32_t len, uint64_t ar= ray, + uint64_t trans, uintptr_t ra) { uint32_t i; =20 @@ -702,12 +701,14 @@ static void do_helper_tr(CPUS390XState *env, uint32_t= len, uint64_t array, uint8_t new_byte =3D cpu_ldub_data_ra(env, trans + byte, ra); cpu_stb_data_ra(env, array + i, new_byte, ra); } + + return env->cc_op; } =20 void HELPER(tr)(CPUS390XState *env, uint32_t len, uint64_t array, uint64_t trans) { - return do_helper_tr(env, len, array, trans, GETPC()); + do_helper_tr(env, len, array, trans, GETPC()); } =20 uint64_t HELPER(tre)(CPUS390XState *env, uint64_t array, @@ -1221,6 +1222,41 @@ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, u= int64_t r1, uint64_t addr) g_assert_not_reached(); } =20 + /* The very most common cases can be sped up by avoiding a new TB. */ + if ((opc & 0xf0) =3D=3D 0xd0) { + typedef uint32_t (*dx_helper)(CPUS390XState *, uint32_t, uint64_t, + uint64_t, uintptr_t); + static const dx_helper dx[16] =3D { + [0x2] =3D do_helper_mvc, + [0x4] =3D do_helper_nc, + [0x5] =3D do_helper_clc, + [0x6] =3D do_helper_oc, + [0x7] =3D do_helper_xc, + [0xc] =3D do_helper_tr, + [0xd] =3D do_helper_trt, + }; + dx_helper helper =3D dx[opc & 0xf]; + + if (helper) { + uint32_t l =3D extract64(insn, 48, 8); + uint32_t b1 =3D extract64(insn, 44, 4); + uint32_t d1 =3D extract64(insn, 32, 12); + uint32_t b2 =3D extract64(insn, 28, 4); + uint32_t d2 =3D extract64(insn, 16, 12); + uint64_t a1 =3D get_address(env, 0, b1, d1); + uint64_t a2 =3D get_address(env, 0, b2, d2); + + env->cc_op =3D helper(env, l, a1, a2, 0); + env->psw.addr +=3D ilen; + return; + } + } else if (opc =3D=3D 0x0a) { + env->int_svc_code =3D extract64(insn, 48, 8); + env->int_svc_ilen =3D ilen; + helper_exception(env, EXCP_SVC); + g_assert_not_reached(); + } + /* Record the insn we want to execute as well as the ilen to use during the execution of the target insn. This will also ensure that ex_value is non-zero, which flags that we are in a state --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599860174340.5017951740699; Sun, 4 Jun 2017 11:11:00 -0700 (PDT) Received: from localhost ([::1]:57983 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZzO-0007DZ-PI for importer@patchew.org; Sun, 04 Jun 2017 14:10:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50474) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRg-0007qp-Vg for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRf-0003a2-J4 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:08 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:35904) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRf-0003Yw-CV for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:07 -0400 Received: by mail-pg0-x243.google.com with SMTP id v18so3986547pgb.3 for ; Sun, 04 Jun 2017 10:36:07 -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.36.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:05 -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=c5BgNqfHyFGCcuu3fG4DeIhExwBiHL7ytqoU9RK+fyk=; b=nXmqyiXk0+BB1RMcDMGSp10R+pn5D16aJI91CAV/kE0s4052tFF3nw/HtZ0eaUWzaY R5Q+Q5rGdQrXi9fh2Mxum0K2tgZ9XPJsU/Uh9IejrMUfGb2fBQ+8ZqE+N7/2JaLYIXHA e/zrN2XWvHQrSUGAvGjs3JJ3wzNGJTEkl6831KKwRxIbOu5AjqMYfvQx5bieYYoIasr9 tv9VzGTqf/TK8p8UXuvIDa7ZZQDqXI/lKXvz2SSFT7KZPFKPR951zwMAAPZWlauvd9h1 ipCDwBRLR22L6JOCcAR4RwE0Mhcjjm+q7shoLHK9tujegXRyuijP5mIoWOasSyDpps4Q xBlQ== 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=c5BgNqfHyFGCcuu3fG4DeIhExwBiHL7ytqoU9RK+fyk=; b=OM6MAOorVLs2TtyDpdpY+kAXR51nUhmVOZ3pKnBmwQ2PfLvJTRj9ut7GFnfzvXT7zo FljPUyaDc6jMvPZ4QISoWVZjkRPwwMs8q0R4ZjnV9dgkdPOQuL11ojhIuzcXPw3u5+OH l//2H39vamsDDHfej3yiS4+wz06D/fgPQg2iF8NKwjQM3CMAL13qyeJiur7HmVbl9PU6 y9N8MWTlZVL8pdWx9FxRhdprpnADU2nBGoh/om7SsZiD2LzkskJm+R3X0j3ORBXNIcIL myWOA6s3RkQQF39vSxO4NIuMhvNgEZC6zJ+WM8oka+VedJpVswIwZWf4y8IEviOLwQug igQA== X-Gm-Message-State: AODbwcBW9wOBpabQBDpoot4+KxWn4QDF5QxW0WikRZTYdWBDnzWipN4E 9xuVi80Fbk877ghCW3o= X-Received: by 10.98.60.139 with SMTP id b11mr5636489pfk.170.1496597766243; Sun, 04 Jun 2017 10:36:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:39 -0700 Message-Id: <20170604173509.29684-40-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::243 Subject: [Qemu-devel] [PULL 39/69] target/s390x/cpu_models: Allow some additional feature bits for the "qemu" CPU 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, Thomas Huth , aurelien@aurel32.net Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Thomas Huth Currently we only present the plain z900 feature bits to the guest, but QEMU already emulates some additional features (but not all of the next CPU generation, so we can not use the next CPU level as default yet). Since newer Linux kernels are checking the feature bits and refuse to work if a required feature is missing, it would be nice to have a way to present more of the supported features when we are running with the "qemu" CPU. This patch now adds the supported features to the "full_feat" bitmap, so that additional features can be enabled on the command line now, for example with: qemu-system-s390x -cpu qemu,stfle=3Dtrue,ldisp=3Dtrue,eimm=3Dtrue,stckf=3D= true Acked-by: David Hildenbrand Reviewed-by: Aurelien Jarno Signed-off-by: Thomas Huth Message-Id: <1495704132-5675-1-git-send-email-thuth@redhat.com> Signed-off-by: Richard Henderson --- target/s390x/cpu_models.c | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index 8d27363..e5e005a 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -658,6 +658,30 @@ static void check_compatibility(const S390CPUModel *ma= x_model, "available in the configuration: "); } =20 +/** + * The base TCG CPU model "qemu" is based on the z900. However, we already + * can also emulate some additional features of later CPU generations, so + * we add these additional feature bits here. + */ +static void add_qemu_cpu_model_features(S390FeatBitmap fbm) +{ + static const int feats[] =3D { + S390_FEAT_STFLE, + S390_FEAT_EXTENDED_IMMEDIATE, + S390_FEAT_LONG_DISPLACEMENT, + S390_FEAT_LONG_DISPLACEMENT_FAST, + S390_FEAT_STORE_CLOCK_FAST, + S390_FEAT_GENERAL_INSTRUCTIONS_EXT, + S390_FEAT_EXECUTE_EXT, + S390_FEAT_STFLE_45, + }; + int i; + + for (i =3D 0; i < ARRAY_SIZE(feats); i++) { + set_bit(feats[i], fbm); + } +} + static S390CPUModel *get_max_cpu_model(Error **errp) { static S390CPUModel max_model; @@ -670,10 +694,11 @@ static S390CPUModel *get_max_cpu_model(Error **errp) if (kvm_enabled()) { kvm_s390_get_host_cpu_model(&max_model, errp); } else { - /* TCG emulates a z900 */ + /* TCG emulates a z900 (with some optional additional features) */ max_model.def =3D &s390_cpu_defs[0]; bitmap_copy(max_model.features, max_model.def->default_feat, S390_FEAT_MAX); + add_qemu_cpu_model_features(max_model.features); } if (!*errp) { cached =3D true; @@ -925,11 +950,14 @@ static void s390_host_cpu_model_initfn(Object *obj) =20 static void s390_qemu_cpu_model_initfn(Object *obj) { + static S390CPUDef s390_qemu_cpu_defs; S390CPU *cpu =3D S390_CPU(obj); =20 cpu->model =3D g_malloc0(sizeof(*cpu->model)); - /* TCG emulates a z900 */ - cpu->model->def =3D &s390_cpu_defs[0]; + /* TCG emulates a z900 (with some optional additional features) */ + memcpy(&s390_qemu_cpu_defs, &s390_cpu_defs[0], sizeof(s390_qemu_cpu_de= fs)); + add_qemu_cpu_model_features(s390_qemu_cpu_defs.full_feat); + cpu->model->def =3D &s390_qemu_cpu_defs; bitmap_copy(cpu->model->features, cpu->model->def->default_feat, S390_FEAT_MAX); } --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598807600994.8612633084241; Sun, 4 Jun 2017 10:53:27 -0700 (PDT) Received: from localhost ([::1]:57903 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZiP-0007jt-Tu for importer@patchew.org; Sun, 04 Jun 2017 13:53:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50494) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRh-0007r3-OB for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRg-0003cN-Rc for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:09 -0400 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:35905) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRg-0003bV-Le for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:08 -0400 Received: by mail-pg0-x242.google.com with SMTP id v18so3986587pgb.3 for ; Sun, 04 Jun 2017 10:36:08 -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.36.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:06 -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 :mime-version:content-transfer-encoding; bh=uwya/GeeGIdIOK/TbpO9akVhHMXnRYBqK9TTEQvvYio=; b=XPXJTlnmuWr14HfIsVMinosJUab4tHYEfqo6xHz3BUgKjXrCPeavT8PCb93isutvLo 2zwIcx+J+SZFSdqBfL+esrEa5AiLdlS8fjRtgUN9n/RFT20+77VY8vPl5RcHK7Zin8l9 0pVkMUGX5XhKK6VuKURfsidcrWFY8aKhQK8rz1cPaJ7oIndZUp10Do04WEuCknf31yUE N3ZGN9clnvuETIboIdcoz+1rtjc7YB4U5KC+mF9FbWn5Z8Tw3HLM55pNwsoL3cp5D6kp xrxxvLoNIn+iwOXlQPdviCZ/S0qDyhcqLg/HKG3Yyn7zMnxc7kWNSsLnyYU+UWkle2AO yU9g== 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:mime-version:content-transfer-encoding; bh=uwya/GeeGIdIOK/TbpO9akVhHMXnRYBqK9TTEQvvYio=; b=PxdfT6KUH/rZsitEXl0vontyo3dyL/9StDYEINqUyyejI+uq5o8Toq9wTlMvIHmzuf E/igKWS5DxB9MbG2u4NuGw/AmTgg30EH/NuAqdFPUeyIJ24gS9zHL6gZgB2VTwunzKci w7cIS+ItHw9E8PEhaqc52LaXq++tG3nRcMVUvR3ZQewraiLLIk3UECDp+Qu5g5vXQex1 A+qi15cUq3UYC7nnRp0BOQ1R7z4yCCtP3TXdMtybUCwaZrMDLh6sQXmFDICJIvXhSWKG CFOH5Zq9YTfAJSrhEDt9hQJ6Ap2/wNledlC1DFuenilhaG4JkUHgHl1usok/JRHtBR2R iXGg== X-Gm-Message-State: AODbwcC1dvbQiSwEUMATG0jUMaxPv0xKfNRBlvqfL2GxmV+SRQ6afcLV Pf28HPwWNjQL07rr4DY= X-Received: by 10.98.166.18 with SMTP id t18mr2287345pfe.66.1496597767614; Sun, 04 Jun 2017 10:36:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:40 -0700 Message-Id: <20170604173509.29684-41-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> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 40/69] target/s390x: remove dead code in translate.c 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 From: Aurelien Jarno Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-2-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/translate.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 97ca639..f759818 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -5467,10 +5467,7 @@ void gen_intermediate_code(CPUS390XState *env, struc= t TranslationBlock *tb) gen_io_start(); } =20 - status =3D NO_EXIT; - if (status =3D=3D NO_EXIT) { - status =3D translate_one(env, &dc); - } + status =3D translate_one(env, &dc); =20 /* If we reach a page boundary, are single stepping, or exhaust instruction count, stop generation. */ --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599205150238.134777903349; Sun, 4 Jun 2017 11:00:05 -0700 (PDT) Received: from localhost ([::1]:57932 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZop-0005rJ-S6 for importer@patchew.org; Sun, 04 Jun 2017 14:00:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50520) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRj-0007sm-8S for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRi-0003eE-7a for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:11 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:34663) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRi-0003do-2H for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:10 -0400 Received: by mail-pf0-x243.google.com with SMTP id w69so18143717pfk.1 for ; Sun, 04 Jun 2017 10:36:09 -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.36.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:08 -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=MzN6WgQr71L2/xXK27EE1KtDv4KAeHjvgEGGF0GV0Sw=; b=aeXv9N8y2OarIp72DMGGHnHtB7cmGcWe0E+f09GK+CoS2+6AStbZ5RSnOwlzEHjyfs k3VeTQHnB3erxbZyEW32kABeXTjjC52lJAGr0//eJ9Npm5QMl4ZydmQ85OxVSDa4pzSO bP595O7t6XFNkaWSd29Z2FefC0QyZzq0wZsv585gP/wHzH2edkWZwzfMsZrSbFFqJ5Yp plA8IgPjYihKry1rBUAXisD6RgPztxjSH0guqfR1RY8OWjJdhOdq/cxqhGhwmxTKprNl pUrK9BVr9E/Vh+D9+gQymzgZpM7BtW3o5r3cDBcj2bmA1EIPbJTVZKEIaDMWjuje55/g kORA== 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=MzN6WgQr71L2/xXK27EE1KtDv4KAeHjvgEGGF0GV0Sw=; b=qxonrPgSIUqbvYFk0kF/ciBz3qKm7VmwulISBvHvbUZ9099uSb0dWL+HbnbYOfy4/b Ov6LQBNMUBpPDBzoU0fcTJ45CGaN14kikyIMt7ytLICFGoPLHj3WOHOVkyjBbkJr8yIZ VQlh4PxW4/ccgS7Cz49VLbmdknoYFyfN+eNMI4HIOz8jQ245ACUl9+w16vApYVuzLsQV HIrBB48JTO0RzxjX23M1Tsxd+EtpVZFkeUG5vlAl4D8QJXBmEfVffc1Vrlc0mY+8+XIy jzi/UbO6dSMEac4oN5UTkJpa1RfcKQoYAdJt4WYpQTKyJBfQVXml79cbbQcYfhrT7KFB v42g== X-Gm-Message-State: AODbwcCLcKB7sy4ss7R3uWgE+VIY5HAndLsgtdBwvTiZfuyy2TSXmT8A yC04VDcssVpzggUeNHU= X-Received: by 10.98.3.133 with SMTP id 127mr16395611pfd.172.1496597769002; Sun, 04 Jun 2017 10:36:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:41 -0700 Message-Id: <20170604173509.29684-42-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:c00::243 Subject: [Qemu-devel] [PULL 41/69] target/s390x: remove some Linux assumptions from IPTE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-3-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/cpu.h | 2 ++ target/s390x/mem_helper.c | 17 ++++++++++------- target/s390x/mmu_helper.c | 2 -- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index fdb2f50..a4d31df 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -1035,6 +1035,8 @@ struct sysib_322 { #define _SEGMENT_ENTRY_RO 0x200 /* page protection bit = */ #define _SEGMENT_ENTRY_INV 0x20 /* invalid segment table entry = */ =20 +#define VADDR_PX 0xff000 /* page index bits = */ + #define _PAGE_RO 0x200 /* HW read-only bit */ #define _PAGE_INVALID 0x400 /* HW invalid bit */ #define _PAGE_RES0 0x800 /* bit must be zero */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index e35571e..0ebd65d 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1073,19 +1073,22 @@ uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t = l, uint64_t a1, uint64_t a2) } =20 /* invalidate pte */ -void HELPER(ipte)(CPUS390XState *env, uint64_t pte_addr, uint64_t vaddr) +void HELPER(ipte)(CPUS390XState *env, uint64_t pto, uint64_t vaddr) { CPUState *cs =3D CPU(s390_env_get_cpu(env)); uint64_t page =3D vaddr & TARGET_PAGE_MASK; - uint64_t pte =3D 0; + uint64_t pte_addr, pte; =20 /* XXX broadcast to other CPUs */ =20 - /* XXX Linux is nice enough to give us the exact pte address. - According to spec we'd have to find it out ourselves */ - /* XXX Linux is fine with overwriting the pte, the spec requires - us to only set the invalid bit */ - stq_phys(cs->as, pte_addr, pte | _PAGE_INVALID); + /* Compute the page table entry address */ + pte_addr =3D (pto & _SEGMENT_ENTRY_ORIGIN); + pte_addr +=3D (vaddr & _VADDR_PX) >> 9; + + /* Mark the page table entry as invalid */ + pte =3D ldq_phys(cs->as, pte_addr); + pte |=3D _PAGE_INVALID; + stq_phys(cs->as, pte_addr, pte); =20 /* XXX we exploit the fact that Linux passes the exact virtual address here - it's not obliged to! */ diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index 31eb9ef..501e390 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -143,8 +143,6 @@ static int mmu_translate_pte(CPUS390XState *env, target= _ulong vaddr, return 0; } =20 -#define VADDR_PX 0xff000 /* Page index bits */ - /* Decode segment table entry */ static int mmu_translate_segment(CPUS390XState *env, target_ulong vaddr, uint64_t asc, uint64_t st_entry, --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599610246857.530617980452; Sun, 4 Jun 2017 11:06:50 -0700 (PDT) Received: from localhost ([::1]:57964 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZvM-0003C1-US for importer@patchew.org; Sun, 04 Jun 2017 14:06:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50545) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRk-0007uP-HW for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRj-0003fV-Hx for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:12 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:35807) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRj-0003er-Cw for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:11 -0400 Received: by mail-pg0-x243.google.com with SMTP id f127so7256374pgc.2 for ; Sun, 04 Jun 2017 10:36:11 -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.36.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:09 -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=8BNgIU+jJcHGQSB5RsDfVvBuRhbFDMiUONS2+y7tnWk=; b=oYuFSbHTJ5XokALdlfZkg08ag0rLpd5s1ga9+jQ8n7gIVr8aSYGBzgGItKIfivLQny cNJcaaX5TycNbubzFVDlf9KqXzdpq++VgTbiOoqPvBiqM9clQuWr2fVmcV62orA989lv s+6Gf66DBJp5kr/TKsHkJCkd4/8Zq58gvGYkbkb6h/vXJjJQrjwizGU89BscC3mt+9av DZWaKZF3JhraobSgZMQQSY0+Ohj1Kqm5skaIXP5qLAh+ByvL+BA8vIpyuaBWziCCEhiX ei18nq8cghjaVIbGjp9BYhD0kd9tqXVfKHnGyfnZzROMQtLcl+IWOWALH5dS5+q1OFI/ uqeQ== 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=8BNgIU+jJcHGQSB5RsDfVvBuRhbFDMiUONS2+y7tnWk=; b=rjZKHamQEwAZWV5txEqTItdjaabYwoXn8HGSVOC6wZz/dt2SpUVPVdrri0sYUVWuye /H7T8aFtgg+aOBSl12C/UTUle6mpiKkdXmjPM582WGCBiMoZFB8o7ZzQaCmk8L7vAHJF 2q+23bM3R38axdrquySMRnbFDTKjbsxiGns+iFhjIH+0rBxb9YsbUCW9oMK93h5VZJK7 5uJ/TAekFnSmMdlDhT7D26Y3F8PDdXNKT/XLbeKvHCFfF5SXbS5dHfuhAg5IVCThcC7z QLXgLErokfXAVpzf7VGcp+gVD+kZlVFU3S7sMR3aKZPg9v78o+3Ao+51fdo6JFEuHFXn uQkQ== X-Gm-Message-State: AODbwcCT0jfEDHN2sQ6ESJJRKoQcFK4MrMW9Ij7ghW6Egy6sdbhCuVXK JVjcqA+9h9gDoBfdnLs= X-Received: by 10.98.163.25 with SMTP id s25mr16037113pfe.217.1496597770319; Sun, 04 Jun 2017 10:36:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:42 -0700 Message-Id: <20170604173509.29684-43-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::243 Subject: [Qemu-devel] [PULL 42/69] target/s390x: implement local-TLB-clearing in IPTE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno And at the same time make IPTE SMP aware. Reviewed-by: Thomas Huth Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-4-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 2 +- target/s390x/mem_helper.c | 21 +++++++++++++-------- target/s390x/translate.c | 6 +++++- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index cc451c7..3f5a05d 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -111,7 +111,7 @@ DEF_HELPER_4(mvcs, i32, env, i64, i64, i64) DEF_HELPER_4(mvcp, i32, env, i64, i64, i64) DEF_HELPER_4(sigp, i32, env, i64, i32, i64) DEF_HELPER_FLAGS_2(sacf, TCG_CALL_NO_WG, void, env, i64) -DEF_HELPER_FLAGS_3(ipte, TCG_CALL_NO_RWG, void, env, i64, i64) +DEF_HELPER_FLAGS_4(ipte, TCG_CALL_NO_RWG, void, env, i64, i64, i32) DEF_HELPER_FLAGS_1(ptlb, TCG_CALL_NO_RWG, void, env) DEF_HELPER_FLAGS_1(purge, TCG_CALL_NO_RWG, void, env) DEF_HELPER_2(lra, i64, env, i64) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 0ebd65d..ddbebcd 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1073,17 +1073,16 @@ uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t = l, uint64_t a1, uint64_t a2) } =20 /* invalidate pte */ -void HELPER(ipte)(CPUS390XState *env, uint64_t pto, uint64_t vaddr) +void HELPER(ipte)(CPUS390XState *env, uint64_t pto, uint64_t vaddr, + uint32_t m4) { CPUState *cs =3D CPU(s390_env_get_cpu(env)); uint64_t page =3D vaddr & TARGET_PAGE_MASK; uint64_t pte_addr, pte; =20 - /* XXX broadcast to other CPUs */ - /* Compute the page table entry address */ pte_addr =3D (pto & _SEGMENT_ENTRY_ORIGIN); - pte_addr +=3D (vaddr & _VADDR_PX) >> 9; + pte_addr +=3D (vaddr & VADDR_PX) >> 9; =20 /* Mark the page table entry as invalid */ pte =3D ldq_phys(cs->as, pte_addr); @@ -1092,13 +1091,19 @@ void HELPER(ipte)(CPUS390XState *env, uint64_t pto,= uint64_t vaddr) =20 /* XXX we exploit the fact that Linux passes the exact virtual address here - it's not obliged to! */ - tlb_flush_page(cs, page); + /* XXX: the LC bit should be considered as 0 if the local-TLB-clearing + facility is not installed. */ + if (m4 & 1) { + tlb_flush_page(cs, page); + } else { + tlb_flush_page_all_cpus_synced(cs, page); + } =20 /* XXX 31-bit hack */ - if (page & 0x80000000) { - tlb_flush_page(cs, page & ~0x80000000); + if (m4 & 1) { + tlb_flush_page(cs, page ^ 0x80000000); } else { - tlb_flush_page(cs, page | 0x80000000); + tlb_flush_page_all_cpus_synced(cs, page ^ 0x80000000); } } =20 diff --git a/target/s390x/translate.c b/target/s390x/translate.c index f759818..f160b62 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2352,8 +2352,12 @@ static ExitStatus op_ipm(DisasContext *s, DisasOps *= o) #ifndef CONFIG_USER_ONLY static ExitStatus op_ipte(DisasContext *s, DisasOps *o) { + TCGv_i32 m4; + check_privileged(s); - gen_helper_ipte(cpu_env, o->in1, o->in2); + m4 =3D tcg_const_i32(get_field(s->fields, m4)); + gen_helper_ipte(cpu_env, o->in1, o->in2, m4); + tcg_temp_free_i32(m4); return NO_EXIT; } =20 --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600010464311.102201024058; Sun, 4 Jun 2017 11:13:30 -0700 (PDT) Received: from localhost ([::1]:57991 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa1o-0001ZC-UN for importer@patchew.org; Sun, 04 Jun 2017 14:13:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50594) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRo-0007wN-KP for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRk-0003gv-SN for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:16 -0400 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:36359) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRk-0003fo-MN for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:12 -0400 Received: by mail-pf0-x244.google.com with SMTP id n23so18101287pfb.3 for ; Sun, 04 Jun 2017 10:36:12 -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.36.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:11 -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=thL0THZOs5iiymk27w9JxJ7n05z3qrxlgfOgRUAIm98=; b=WMbVTBImE+he8gjI7rYb0X5QdiJsxpZcZwqFuo3Pjm0xLbBe7Mvq6sXN+IwR4T6Xc5 pQwWn+8IZgJeLTqTlWUF5WSv2H2fIfB7OfOM1KLgKLE4wXJfb94xyvWS2LcNiE2xKdTB lTAD0eQFBqKRQMskV5HMA0BAX30M804Q3Ko+73FMcK42f7ljrFnGYJvTAUwITu1Zp/rd 0yH0ZB+Evth3MwuIZubulgFQebKSdE2O3EwlpYAtKnkXoHJs3umeKrDtXY7Xw9EP2Ajn LARTEQgVYrgqvQOrB5U/rOT5BchXF8vElpjUXuMkLupWg08MJNOGK4lLreZOHVIIt495 M1Mg== 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=thL0THZOs5iiymk27w9JxJ7n05z3qrxlgfOgRUAIm98=; b=O3nCzdHWpLbIVz2ieh1kcu740x8Y4h/Fx0yzF+waR1wTlX0Ba8iTUekUR/gN1AMisr zRMR8SSZrwgNjFQktbmzApvoG2mWaHblhljIwWdwehEd7RPxdnYDwRPw8B2LKGX74A12 Xj/BO/YG4xhN6vTnFW+nlXI0dUe6zzGhGftIioqG7pjqIcgzkApog40WwEzyogjLGC3t vEhxWdsTmJGNFLQwZ67cCtOHe66ZKtgn/fC2uWkl3y7OQXWH6u30YfJjmQEZu2ZT5Jk7 HaiKdatHAYC9qE7z4+iQ9sxbMmWAPbJbFXptKLwGajf5j+8RZdUthHwjhJsi/ufN2+ZF 8QNw== X-Gm-Message-State: AODbwcB8GikzK4G74loBvHXT77vHpH5VZhkcRpIo95Jsh2664UVDAode kC0KLMMg/ktjpFsL7qk= X-Received: by 10.99.52.1 with SMTP id b1mr16833840pga.91.1496597771670; Sun, 04 Jun 2017 10:36:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:43 -0700 Message-Id: <20170604173509.29684-44-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:c00::244 Subject: [Qemu-devel] [PULL 43/69] target/s390x: implement TEST AND SET 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-5-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/insn-data.def | 3 +++ target/s390x/translate.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index f818437..0f70ace 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -810,6 +810,9 @@ /* SUPERVISOR CALL */ C(0x0a00, SVC, I, Z, 0, 0, 0, 0, svc, 0) =20 +/* TEST AND SET */ + C(0x9300, TS, S, Z, 0, a2, 0, 0, ts, 0) + /* TEST DATA CLASS */ C(0xed10, TCEB, RXE, Z, e1, a2, 0, 0, tceb, 0) C(0xed11, TCDB, RXE, Z, f1_o, a2, 0, 0, tcdb, 0) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index f160b62..0cfa8cc 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4129,6 +4129,16 @@ static ExitStatus op_trt(DisasContext *s, DisasOps *= o) return NO_EXIT; } =20 +static ExitStatus op_ts(DisasContext *s, DisasOps *o) +{ + TCGv_i32 t1 =3D tcg_const_i32(0xff); + tcg_gen_atomic_xchg_i32(t1, o->in2, t1, get_mem_index(s), MO_UB); + tcg_gen_extract_i32(cc_op, t1, 7, 1); + tcg_temp_free_i32(t1); + set_cc_static(s); + return NO_EXIT; +} + static ExitStatus op_unpk(DisasContext *s, DisasOps *o) { TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496598952146921.463456010655; Sun, 4 Jun 2017 10:55:52 -0700 (PDT) Received: from localhost ([::1]:57916 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZkk-0001ai-O3 for importer@patchew.org; Sun, 04 Jun 2017 13:55:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50592) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRo-0007wL-Jm for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRm-0003i5-4U for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:16 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:34490) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRl-0003hi-V4 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:14 -0400 Received: by mail-pg0-x241.google.com with SMTP id v14so3630624pgn.1 for ; Sun, 04 Jun 2017 10:36:13 -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.36.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:12 -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=T7iynYBKdcPzS3BhbNV9PTkHZ4d41r6LvUk4D549umw=; b=gqEfErcDdz4fv+UDHDIMhgBae4S97jH4JEbi8AS1mgiGw6IGRLK6SFTLRXHhaUK9Wv +oDug2blKA24OiZ7Vi0VDnh1ml/1nltYSd4J+8NAhe8F+f6s7eqO2ApYuhr3LH919Y84 S3VgdMbWloEkAB+bjf+cFHqhgqCBJODNozvVH0qZKsxpVKN/2W4wTNWYVXKUFuGYrGh+ b+UmFvLctJOj9+iaunttrfVGk+T8tHfK6CIY50p3QOnP+4OUDy4zKdguWKmUq/+OwFX+ Y8k8qNjFVvuewZ/uzcSiNMH5aL8dbZKXK4o7acIoQMyMLxRqLfWNXmCiAxCIS12beReq WMCg== 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=T7iynYBKdcPzS3BhbNV9PTkHZ4d41r6LvUk4D549umw=; b=AYn1GUChW4NI9MLLz1IROMfU0CxFLJOpN4UMXemvYSMYM2oKCDceJPYWrlmHE8xTHk 5/fnkvTKEY+t3msmLJkY7pO+TMTFoBU3pxmk7EkqMqDzdq3yEqNfcMtRLtreQeLnti3V o2kjNZiRK06LjF7AGnfzJzeZhr5otjo/u3WVz384VS/oGpfYfdExBW9QrQT/EQd71IGV n6TgoXAA2Utvg30Rp7nLAL9BZAm5i31GMySLlcXmobp43iqniM5x1gHbuM4dhCzlraLX FXqxNcJbJGQAq4m0BaZgn7hMFBA8K3XJ+vqW0qynZZ+kIBf4FDZeE14DcOVuqEWKjh8i zUTw== X-Gm-Message-State: AODbwcC2qIAsg2yP+DbRCM91V//VbjPdRJHeJW0Z2CixdW/6/wTJXWbr 6I/klOvxuRf/jk8/gJM= X-Received: by 10.98.57.78 with SMTP id g75mr6263585pfa.9.1496597772918; Sun, 04 Jun 2017 10:36:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:44 -0700 Message-Id: <20170604173509.29684-45-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::241 Subject: [Qemu-devel] [PULL 44/69] target/s390x: implement TEST ADDRESSING MODE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-6-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/insn-data.def | 3 +++ target/s390x/translate.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 0f70ace..170b50e 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -810,6 +810,9 @@ /* SUPERVISOR CALL */ C(0x0a00, SVC, I, Z, 0, 0, 0, 0, svc, 0) =20 +/* TEST ADDRESSING MODE */ + C(0x010b, TAM, E, Z, 0, 0, 0, 0, tam, 0) + /* TEST AND SET */ C(0x9300, TS, S, Z, 0, a2, 0, 0, ts, 0) =20 diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 0cfa8cc..7f265ae 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4063,6 +4063,16 @@ static ExitStatus op_svc(DisasContext *s, DisasOps *= o) return EXIT_NORETURN; } =20 +static ExitStatus op_tam(DisasContext *s, DisasOps *o) +{ + int cc =3D 0; + + cc |=3D (s->tb->flags & FLAG_MASK_64) ? 2 : 0; + cc |=3D (s->tb->flags & FLAG_MASK_32) ? 1 : 0; + gen_op_movi_cc(s, cc); + return NO_EXIT; +} + static ExitStatus op_tceb(DisasContext *s, DisasOps *o) { gen_helper_tceb(cc_op, cpu_env, o->in1, o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599099244814.3315806798236; Sun, 4 Jun 2017 10:58:19 -0700 (PDT) Received: from localhost ([::1]:57924 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZn7-000490-G7 for importer@patchew.org; Sun, 04 Jun 2017 13:58:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50596) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRo-0007wa-O5 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRn-0003iV-KF for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:16 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:35811) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRn-0003iL-EA for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:15 -0400 Received: by mail-pg0-x243.google.com with SMTP id f127so7256514pgc.2 for ; Sun, 04 Jun 2017 10:36:15 -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.36.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:13 -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=7+jwwmWcy3J3YVfX0ljPsZl3xthFActZ/YX4pcSgAU4=; b=lFrzeIp5lDYTk+ffIx2NG0W23XLUOkaVLaXEvol+Wgr2mysamzPFAJZ1XuoluX2hm5 FrjcmLL5QyrTb9a8x1WldZoFzVOj1wBashj53VZPT8JJWIJR9rOdjnXUg1eV9FbBUv9T OTgo2Sk611TYgcoZVFgCR13qbOjRUyMFs7MkxJ1TbFvOu0pij1MUqZXa7cVY+/X1aWXc 4NkKBASoTcz8KLQgXLAgAtPD3n3LIMfOOowmI8x6G05i+IKg8Scf/xUONfNnFeJc595O +s3Zra0aJDAQtZpq88JTbzUygGM4Qodf++NLW+z/VuyTt+q6gMW9HLpP45xo/159N/2n 1teg== 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=7+jwwmWcy3J3YVfX0ljPsZl3xthFActZ/YX4pcSgAU4=; b=HlO6uykBa2WfP3Ejrg4A8pwDADdrhiGwMknhkfLfmNObUooryNOPuZpdL+EqAUyjjE QtjSP3AAQivPa5qWCWuDtjket+4g7nPNqnUrqq6fj1AkrXMa1oLeS1Ft64oNz29Bid4/ M6frrJt63cGSZVAY7H6mBzKwDNQNa5qhEmeCggILOOdYhdg+NAAE+dyzu+kf2+VbDjRh K06j1+9wWWlq84h6Y4GcrVWoutsthofQOiguTUST/A/KN67vcLPFDk3gmNlhO3grH8B8 HcfLpb8BW1VQ7E0W2DbgUgsooBVMs06XVi4xROE71jysxEyscT1B8Bei0zrtfW1gTfr4 o04Q== X-Gm-Message-State: AODbwcC4Kkx3DwxfOU7xUSHzL0lJ50PfhJLywfVzaYGT/N96poQ8+J1U pe0k5MHzxdromDS62Kc= X-Received: by 10.84.215.207 with SMTP id g15mr10535752plj.161.1496597774379; Sun, 04 Jun 2017 10:36:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:45 -0700 Message-Id: <20170604173509.29684-46-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::243 Subject: [Qemu-devel] [PULL 45/69] target/s390x: implement PACK 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-7-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 5 +++++ target/s390x/mem_helper.c | 37 +++++++++++++++++++++++++++++++++++++ target/s390x/translate.c | 8 ++++++++ 4 files changed, 51 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 3f5a05d..c6fbc3b 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -75,6 +75,7 @@ DEF_HELPER_FLAGS_2(sqeb, TCG_CALL_NO_WG, i64, env, i64) DEF_HELPER_FLAGS_2(sqdb, TCG_CALL_NO_WG, i64, env, i64) DEF_HELPER_FLAGS_3(sqxb, TCG_CALL_NO_WG, i64, env, i64, i64) DEF_HELPER_FLAGS_1(cvd, TCG_CALL_NO_RWG_SE, i64, s32) +DEF_HELPER_FLAGS_4(pack, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(unpk, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(tr, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_4(tre, i64, env, i64, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 170b50e..f92bfde 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -639,6 +639,11 @@ C(0x9600, OI, SI, Z, m1_8u, i2_8u, new, m1_8, or, nz64) C(0xeb56, OIY, SIY, LD, m1_8u, i2_8u, new, m1_8, or, nz64) =20 +/* PACK */ + /* Really format SS_b, but we pack both lengths into one argument + for the helper call, so we might as well leave one 8-bit field. */ + C(0xf200, PACK, SS_a, Z, la1, a2, 0, 0, pack, 0) + /* PREFETCH */ /* Implemented as nops of course. */ C(0xe336, PFD, RXY_b, GIE, 0, 0, 0, 0, 0, 0) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index ddbebcd..850472e 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -644,6 +644,43 @@ uint64_t HELPER(cksm)(CPUS390XState *env, uint64_t r1, return len; } =20 +void HELPER(pack)(CPUS390XState *env, uint32_t len, uint64_t dest, uint64_= t src) +{ + uintptr_t ra =3D GETPC(); + int len_dest =3D len >> 4; + int len_src =3D len & 0xf; + uint8_t b; + + dest +=3D len_dest; + src +=3D len_src; + + /* last byte is special, it only flips the nibbles */ + b =3D cpu_ldub_data_ra(env, src, ra); + cpu_stb_data_ra(env, dest, (b << 4) | (b >> 4), ra); + src--; + len_src--; + + /* now pack every value */ + while (len_dest >=3D 0) { + b =3D 0; + + if (len_src > 0) { + b =3D cpu_ldub_data_ra(env, src, ra) & 0x0f; + src--; + len_src--; + } + if (len_src > 0) { + b |=3D cpu_ldub_data_ra(env, src, ra) << 4; + src--; + len_src--; + } + + len_dest--; + dest--; + cpu_stb_data_ra(env, dest, b, ra); + } +} + void HELPER(unpk)(CPUS390XState *env, uint32_t len, uint64_t dest, uint64_t src) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 7f265ae..00b91c4 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3139,6 +3139,14 @@ static ExitStatus op_ori(DisasContext *s, DisasOps *= o) return NO_EXIT; } =20 +static ExitStatus op_pack(DisasContext *s, DisasOps *o) +{ + TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); + gen_helper_pack(cpu_env, l, o->addr1, o->in2); + tcg_temp_free_i32(l); + return NO_EXIT; +} + static ExitStatus op_popcnt(DisasContext *s, DisasOps *o) { gen_helper_popcnt(o->out, o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149659924496949.085804191209945; Sun, 4 Jun 2017 11:00:44 -0700 (PDT) Received: from localhost ([::1]:57938 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZpT-0006SW-Bg for importer@patchew.org; Sun, 04 Jun 2017 14:00:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50619) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRp-0007xz-Uj for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRp-0003k3-17 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:17 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:35911) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRo-0003jK-RY for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:16 -0400 Received: by mail-pg0-x241.google.com with SMTP id v18so3986786pgb.3 for ; Sun, 04 Jun 2017 10:36:16 -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.36.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:15 -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=nrH52TByOea5aH03yJXTIpoT3DKpBVRDtfqUaouK2fU=; b=eZC17+N9jKqppsUF6Ex/X7dTbx8geh+v/drvsMw/oQcMGvtLijuxQzMOHYfG+6U6s0 jrQA2QEHcCQGvGHQKfJc0QE2dnIPUzZGe7ACVH0fgoV+JEA5tH3g7sX4oCHWs+TpWjAP 8D8YdmQKj7AhOOOXreVwPCajePOdyqfQhgdYIvPCFWWaf/CFsDCd3NAwVF6T3pUfkZo1 guq0JMhD+isx/X2Bkib0md2fc4G/Xpi0FiRbxhYbioj8+Q0OKUYg9HjZMAElcIXfMMBp bm5hS6IDVbfZsQ9e6OVQPMAn9rc15MHmyHqvplFq3FSIDtJdXINtnnDkiFTsZjJzsB6v 9YBQ== 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=nrH52TByOea5aH03yJXTIpoT3DKpBVRDtfqUaouK2fU=; b=Mw3iMCRXRE3vRsblBxjkbv2wrPfqjX9m4Z4e+ymX7c/v4EmYtTmtoJu7QyBIlb4r9Z NgOMmy9cpsVu61yf8JqZjw+tC2YdN9iSwcnGEkK6puI3a4yMEAlxOA9cJrHYP5JW0J3N ru5wmF0BEbmq2Hxvo3Vqb+XdrZdN/r8HET1p3G/3grUZB3+UmS1XKbDW3WKaEyhnPgsC N+zuLvaH2+NXYkTQSSScdaTDYg80WABFmKkJTmj2XHgA7aQ/M5r+0bnmdaV9rG/L5VZz UhvdLCa6o0TUzGg23VY0S+rYGlYBPNw2hyLFDiug79Ab8MxSja1GY5+FlJPVUTi/xyTw HDbg== X-Gm-Message-State: AODbwcDxeh+NG5ptXXZT2TztVheAAgpEuENszJ22yNqdraF0gv0BdxqG XB4Gs/rojv0wZqnRaec= X-Received: by 10.84.215.23 with SMTP id k23mr10881457pli.104.1496597775765; Sun, 04 Jun 2017 10:36:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:46 -0700 Message-Id: <20170604173509.29684-47-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::241 Subject: [Qemu-devel] [PULL 46/69] target/s390x: implement LOAD PAIR FROM QUADWORD 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-8-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 13 +++++++++++++ target/s390x/translate.c | 7 +++++++ 4 files changed, 23 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index c6fbc3b..ca78d1b 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -87,6 +87,7 @@ DEF_HELPER_FLAGS_2(sfas, TCG_CALL_NO_WG, void, env, i64) DEF_HELPER_FLAGS_1(popcnt, TCG_CALL_NO_RWG_SE, i64, i64) DEF_HELPER_FLAGS_1(stfl, TCG_CALL_NO_RWG, void, env) DEF_HELPER_2(stfle, i32, env, i64) +DEF_HELPER_FLAGS_2(lpq, TCG_CALL_NO_WG, i64, env, i64) =20 #ifndef CONFIG_USER_ONLY DEF_HELPER_3(servc, i32, env, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index f92bfde..53c86d5 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -507,6 +507,8 @@ /* LOAD PAIR DISJOINT */ D(0xc804, LPD, SSF, ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL) D(0xc805, LPDG, SSF, ILA, 0, 0, new_P, r3_P64, lpd, 0, MO_TEQ) +/* LOAD PAIR FROM QUADWORD */ + C(0xe38f, LPQ, RXY_a, Z, 0, a2, r1_P, 0, lpq, 0) /* LOAD POSITIVE */ C(0x1000, LPR, RR_a, Z, 0, r2_32s, new, r1_32, abs, abs32) C(0xb900, LPGR, RRE, Z, 0, r2, r1, 0, abs, abs64) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 850472e..4f34f87 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1237,6 +1237,19 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t ad= dr) } #endif =20 +/* load pair from quadword */ +uint64_t HELPER(lpq)(CPUS390XState *env, uint64_t addr) +{ + uintptr_t ra =3D GETPC(); + int mem_idx =3D cpu_mmu_index(env, false); + TCGMemOpIdx oi =3D make_memop_idx(MO_TEQ | MO_ALIGN_16, mem_idx); + + Int128 v =3D helper_atomic_ldo_be_mmu(env, addr, oi, ra); + + env->retxl =3D int128_getlo(v); + return int128_gethi(v); +} + /* Execute instruction. This instruction executes an insn modified with the contents of r1. It does not change the executed instruction in mem= ory; it does not change the program counter. diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 00b91c4..ec61590 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2830,6 +2830,13 @@ static ExitStatus op_lpd(DisasContext *s, DisasOps *= o) return NO_EXIT; } =20 +static ExitStatus op_lpq(DisasContext *s, DisasOps *o) +{ + gen_helper_lpq(o->out, cpu_env, o->in2); + return_low128(o->out2); + return NO_EXIT; +} + #ifndef CONFIG_USER_ONLY static ExitStatus op_lura(DisasContext *s, DisasOps *o) { --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599416047246.13940466207453; Sun, 4 Jun 2017 11:03:36 -0700 (PDT) Received: from localhost ([::1]:57950 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZsE-0000SJ-5f for importer@patchew.org; Sun, 04 Jun 2017 14:03:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50630) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRr-0007y1-Bm for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRq-0003kj-DG for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:19 -0400 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:36363) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRq-0003kX-7B for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:18 -0400 Received: by mail-pf0-x242.google.com with SMTP id n23so18101374pfb.3 for ; Sun, 04 Jun 2017 10:36:18 -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.36.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:16 -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=BUFFdqOBtWHMfyUWj3TyK8YUWx4VjukZQ8gCfRzgrHo=; b=rUr6hobKp8iqgJrEeOVOxNQa2TOM0HhrYu8THZ79DQEqQPA6rA2TGMFYaVYbPdDOPH BV00Ggd9BdTadvJkxSQt9wCwCEbI1YGbZc/7oNxB1hXjkGRS9ES440J6sFLOSAux2YFD dysI4nSqSlyuz5So/8l74Z/f7rz64Tm6BL6HEXL9vpXJ8dP1h82j31fxDRVB8vzK/OcP AGaZBLOr92ORZ4nRY9WvrOEOPakmkVtX0ZOrMuwM+6sRBs++PQELPTO/jLXvrqyAaggc QfcK/wraSRmxIf5+YDeiF+FD6pt92jzClL0zP0G3OQUu/0tJiZXXycNC8StPDQxvn30V 5ZgA== 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=BUFFdqOBtWHMfyUWj3TyK8YUWx4VjukZQ8gCfRzgrHo=; b=f2so4xJwHOW/3p1wXYujEKCOd95IMhZFfKjAp2fbU2GP5x6jdX1EDl348gt3OuvT9V cPUPYwKDqLBbDMtc7xrDSwvPwrkpQ4EvPbOTe1IvGZYXz5bjLLNmuHRHePjn2fbr+wlD 7fYaForZ9LtXI8B1Dn2+ZokP9o/vBq6Xwbok4QReggE/yUVTR+CWGEgBnmDj6cFXTfR6 Km7pHwBJVvYTNwbYOD67MZXIrVYgTvMMwVRug06CKze87BBgm0zu/iXCbWB5TIhRp9VG Nv70XU7z1F8pjjwGHw9k5oLWAqaGPfIIdr5kiEVV8ljCVMjdipq4LYkXku/49VKgn3hA K9Tg== X-Gm-Message-State: AODbwcBsVPPINGVYjJMb1Pfi5vWiDV/t4BVCvLdioHKUZVIemwXZrTla ah2yL/sEDVPUbBaJxD0= X-Received: by 10.84.216.24 with SMTP id m24mr10419553pli.281.1496597777178; Sun, 04 Jun 2017 10:36:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:47 -0700 Message-Id: <20170604173509.29684-48-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:c00::242 Subject: [Qemu-devel] [PULL 47/69] target/s390x: implement STORE PAIR TO QUADWORD 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-9-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 12 ++++++++++++ target/s390x/translate.c | 6 ++++++ 4 files changed, 21 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index ca78d1b..596fec2 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -88,6 +88,7 @@ DEF_HELPER_FLAGS_1(popcnt, TCG_CALL_NO_RWG_SE, i64, i64) DEF_HELPER_FLAGS_1(stfl, TCG_CALL_NO_RWG, void, env) DEF_HELPER_2(stfle, i32, env, i64) DEF_HELPER_FLAGS_2(lpq, TCG_CALL_NO_WG, i64, env, i64) +DEF_HELPER_FLAGS_4(stpq, TCG_CALL_NO_WG, void, env, i64, i64, i64) =20 #ifndef CONFIG_USER_ONLY DEF_HELPER_3(servc, i32, env, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 53c86d5..5314162 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -770,6 +770,8 @@ /* STORE ACCESS MULTIPLE */ C(0x9b00, STAM, RS_a, Z, 0, a2, 0, 0, stam, 0) C(0xeb9b, STAMY, RSY_a, LD, 0, a2, 0, 0, stam, 0) +/* STORE PAIR TO QUADWORD */ + C(0xe38e, STPQ, RXY_a, Z, 0, a2, r1_P, 0, stpq, 0) =20 /* SUBTRACT */ C(0x1b00, SR, RR_a, Z, r1, r2, new, r1_32, sub, subs32) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 4f34f87..15b5f45 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1250,6 +1250,18 @@ uint64_t HELPER(lpq)(CPUS390XState *env, uint64_t ad= dr) return int128_gethi(v); } =20 +/* store pair to quadword */ +void HELPER(stpq)(CPUS390XState *env, uint64_t addr, + uint64_t low, uint64_t high) +{ + uintptr_t ra =3D GETPC(); + int mem_idx =3D cpu_mmu_index(env, false); + TCGMemOpIdx oi =3D make_memop_idx(MO_TEQ | MO_ALIGN_16, mem_idx); + + Int128 v =3D int128_make128(low, high); + helper_atomic_sto_be_mmu(env, addr, v, oi, ra); +} + /* Execute instruction. This instruction executes an insn modified with the contents of r1. It does not change the executed instruction in mem= ory; it does not change the program counter. diff --git a/target/s390x/translate.c b/target/s390x/translate.c index ec61590..6635877 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4019,6 +4019,12 @@ static ExitStatus op_stmh(DisasContext *s, DisasOps = *o) return NO_EXIT; } =20 +static ExitStatus op_stpq(DisasContext *s, DisasOps *o) +{ + gen_helper_stpq(cpu_env, o->in2, o->out2, o->out); + return NO_EXIT; +} + static ExitStatus op_srst(DisasContext *s, DisasOps *o) { gen_helper_srst(o->in1, cpu_env, regs[0], o->in1, o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599601260850.9535109091695; Sun, 4 Jun 2017 11:06:41 -0700 (PDT) Received: from localhost ([::1]:57963 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZvD-00032J-Rr for importer@patchew.org; Sun, 04 Jun 2017 14:06:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50647) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRs-0007zp-RG for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRr-0003lg-RA for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:20 -0400 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:35063) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRr-0003l6-Kl for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:19 -0400 Received: by mail-pf0-x242.google.com with SMTP id u26so18119505pfd.2 for ; Sun, 04 Jun 2017 10:36:19 -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.36.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:17 -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=5sd8A0euXtUtWDD6WLLdP8Wh3qWsFheBE38YwX6iaAo=; b=sNJZjB7uJqUB5ZQfwhCqeUscAaHv3xC+R+0sWBjgYwLs/2K6Mleh2vjlZozduKOuAI pNamendHje+Md+jBpNuZmb0voZE5veJTm+/oDR47wxW1hO0z+VCcPnEwwgjxw/Zlsguj TvWY5IAJqC0sIfsdbm+fhfsTvZaZdTEB759+TUoPDGzsYj6t8FCCMKO0QLMPFphSYkft +SJyN8xY9gE4CS91nisHcy0vCWcQPate1d6qoxxmR88mAqz+WHIxGOWRAlyw+JwK0D1r ziJZlvsoZK7AVWjDSiVwXZItSG4pL3pLdcMrwgblcSZ9U+bMSbRX8LXtXsWT4YTop6Ss U4PQ== 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=5sd8A0euXtUtWDD6WLLdP8Wh3qWsFheBE38YwX6iaAo=; b=TNGwvenS4EK5RWCi8WOimlPTyG1SIKNJabz+laySonIlMkAMDy4PRaRBkMqejih9oO eTM44OHd8jSDANXqINTsjRej4y7sCcxtFJx10aoQppwLkm7Rihdvpu4nTBIGT42dg5hZ 8D5aM5oeAtwJ0f5eQSIQnkIWjSPZTY/PHW/3AKNzlqlf02lrzH9YvZeIIv8lBQ+/yZAN qzltkyvvRFbqHngYLmNeLi27lxklA2RrzsNxlzCiqKjTR58u2RHLobb3SlISgtUYh4Ii iohUoigh5vAqpvS+2+hPvZjHIvlrMUWpDZjS9ibLU7f04VjTRRzsCOmlKpqc3Gfz7ylO zAFA== X-Gm-Message-State: AODbwcARBEPa0zUPllFnAs8kWpP669Zkp2N9xKsFWqNHOAArR6LZ2Kfj lpc3xD+cI/gHsmcLdGQ= X-Received: by 10.84.208.102 with SMTP id f35mr7467311plh.92.1496597778490; Sun, 04 Jun 2017 10:36:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:48 -0700 Message-Id: <20170604173509.29684-49-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:c00::242 Subject: [Qemu-devel] [PULL 48/69] target/s390x: implement COMPARE AND SIGNAL 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno These functions differ from COMPARE by generating an exception for a QNaN input. Use the non quiet version of floatXX_compare. Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-10-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/fpu_helper.c | 27 +++++++++++++++++++++++++++ target/s390x/helper.h | 3 +++ target/s390x/insn-data.def | 6 ++++++ target/s390x/translate.c | 21 +++++++++++++++++++++ 4 files changed, 57 insertions(+) diff --git a/target/s390x/fpu_helper.c b/target/s390x/fpu_helper.c index e604e9f..26f124f 100644 --- a/target/s390x/fpu_helper.c +++ b/target/s390x/fpu_helper.c @@ -585,6 +585,33 @@ uint64_t HELPER(fixb)(CPUS390XState *env, uint64_t ah,= uint64_t al, uint32_t m3) return RET128(ret); } =20 +/* 32-bit FP compare and signal */ +uint32_t HELPER(keb)(CPUS390XState *env, uint64_t f1, uint64_t f2) +{ + int cmp =3D float32_compare(f1, f2, &env->fpu_status); + handle_exceptions(env, GETPC()); + return float_comp_to_cc(env, cmp); +} + +/* 64-bit FP compare and signal */ +uint32_t HELPER(kdb)(CPUS390XState *env, uint64_t f1, uint64_t f2) +{ + int cmp =3D float64_compare(f1, f2, &env->fpu_status); + handle_exceptions(env, GETPC()); + return float_comp_to_cc(env, cmp); +} + +/* 128-bit FP compare and signal */ +uint32_t HELPER(kxb)(CPUS390XState *env, uint64_t ah, uint64_t al, + uint64_t bh, uint64_t bl) +{ + int cmp =3D float128_compare(make_float128(ah, al), + make_float128(bh, bl), + &env->fpu_status); + handle_exceptions(env, GETPC()); + return float_comp_to_cc(env, cmp); +} + /* 32-bit FP multiply and add */ uint64_t HELPER(maeb)(CPUS390XState *env, uint64_t f1, uint64_t f2, uint64_t f3) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 596fec2..4ada894 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -89,6 +89,9 @@ DEF_HELPER_FLAGS_1(stfl, TCG_CALL_NO_RWG, void, env) DEF_HELPER_2(stfle, i32, env, i64) DEF_HELPER_FLAGS_2(lpq, TCG_CALL_NO_WG, i64, env, i64) DEF_HELPER_FLAGS_4(stpq, TCG_CALL_NO_WG, void, env, i64, i64, i64) +DEF_HELPER_FLAGS_3(keb, TCG_CALL_NO_WG, i32, env, i64, i64) +DEF_HELPER_FLAGS_3(kdb, TCG_CALL_NO_WG, i32, env, i64, i64) +DEF_HELPER_FLAGS_5(kxb, TCG_CALL_NO_WG, i32, env, i64, i64, i64, i64) =20 #ifndef CONFIG_USER_ONLY DEF_HELPER_3(servc, i32, env, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 5314162..0127894 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -154,6 +154,12 @@ C(0xb349, CXBR, RRE, Z, x1_o, x2_o, 0, 0, cxb, 0) C(0xed09, CEB, RXE, Z, e1, m2_32u, 0, 0, ceb, 0) C(0xed19, CDB, RXE, Z, f1_o, m2_64, 0, 0, cdb, 0) +/* COMPARE AND SIGNAL */ + C(0xb308, KEBR, RRE, Z, e1, e2, 0, 0, keb, 0) + C(0xb318, KDBR, RRE, Z, f1_o, f2_o, 0, 0, kdb, 0) + C(0xb348, KXBR, RRE, Z, x1_o, x2_o, 0, 0, kxb, 0) + C(0xed08, KEB, RXE, Z, e1, m2_32u, 0, 0, keb, 0) + C(0xed18, KDB, RXE, Z, f1_o, m2_64, 0, 0, kdb, 0) /* COMPARE IMMEDIATE */ C(0xc20d, CFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps32) C(0xc20c, CGFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps64) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 6635877..30d0575 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2369,6 +2369,27 @@ static ExitStatus op_iske(DisasContext *s, DisasOps = *o) } #endif =20 +static ExitStatus op_keb(DisasContext *s, DisasOps *o) +{ + gen_helper_keb(cc_op, cpu_env, o->in1, o->in2); + set_cc_static(s); + return NO_EXIT; +} + +static ExitStatus op_kdb(DisasContext *s, DisasOps *o) +{ + gen_helper_kdb(cc_op, cpu_env, o->in1, o->in2); + set_cc_static(s); + return NO_EXIT; +} + +static ExitStatus op_kxb(DisasContext *s, DisasOps *o) +{ + gen_helper_kxb(cc_op, cpu_env, o->out, o->out2, o->in1, o->in2); + set_cc_static(s); + return NO_EXIT; +} + static ExitStatus op_laa(DisasContext *s, DisasOps *o) { /* The real output is indeed the original value in memory; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 14965997603111005.1583458746887; Sun, 4 Jun 2017 11:09:20 -0700 (PDT) Received: from localhost ([::1]:57972 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZxm-0005mp-N7 for importer@patchew.org; Sun, 04 Jun 2017 14:09:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50658) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRu-00081U-4J for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRt-0003mU-5Y for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:22 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:34495) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRs-0003m4-VX for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:21 -0400 Received: by mail-pg0-x243.google.com with SMTP id v14so3630791pgn.1 for ; Sun, 04 Jun 2017 10:36:20 -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.36.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:19 -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=w856dhBNAaBH1qhmMZr3bNcNrtk9rF6ARF84v6CQbKw=; b=d3Cyeges11uUOgq9qKhIb8o/viGrFufmtcleBkPdyXv5jAwVtWJZiLFpqe++dSUHfe JFK7jwSbyfQfCjY+u+56ym2iP6ODueaJIONrL6auUmc0Px/LXugvg8dDqcwGjF98/5jr 9milbRmWoP0LBZikbGzEk9Wddyo4rk7cNKXAwEsni39R3io0rsdxBIdnSe6/WGSDiimY uuxmrDQVldyNhOItjNawsJ93AJkyRnwxa1cBO7cP6PzJ1/357KS6ryH2O4KMlO3QcrT7 lKd0LToF9mpyd4OjTrF1LSFCO1KzMFDu559v+IMxvCWSqEJHW4Z52MsMkMIxtkcLkgy1 zXvA== 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=w856dhBNAaBH1qhmMZr3bNcNrtk9rF6ARF84v6CQbKw=; b=ifIRSJEUJECB9xQyjLRGvJHjo7zOXOE4LOc4Qo8yXVvLV+6l8VhZnYizLS9G0bWnj1 Da1dgVFBRbkRM8jIR/AzsapTzz0Dfo0a1j22T2nhL/0tjjkK8dwUkda83IDYIaS9fHBD ABHcHdy67NI8OxOYgcGd09WOlSwLm/3tLpFvn99bgjCFDFTTSVcL5Iak3D9EXXuYUU3B RkEMaDzJY2ea6vT9fb3Kb0gUh1lW5jXSbdZfT565ZGjeUaYhpsEvBp04Sr9TW6VeLYpK mzChObgvGOOOcJFkn+8ajtjzT/7XjMew/2Iq1oeyzBahS9FfXOySLJ95gMmMP3AnZNJu Tsvw== X-Gm-Message-State: AODbwcBKHG49IdHFag+ET/alFVEi8k1m6D8hSLA85X/EaQz7ldqZtPNQ YUQo4eMINGaO9W4lipE= X-Received: by 10.84.136.135 with SMTP id 7mr10617897pll.98.1496597779849; Sun, 04 Jun 2017 10:36:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:49 -0700 Message-Id: <20170604173509.29684-50-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::243 Subject: [Qemu-devel] [PULL 49/69] target/s390x: implement MOVE INVERSE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-11-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 12 ++++++++++++ target/s390x/translate.c | 8 ++++++++ 4 files changed, 23 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 4ada894..a618fe5 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -3,6 +3,7 @@ DEF_HELPER_FLAGS_4(nc, TCG_CALL_NO_WG, i32, env, i32, i64, = i64) DEF_HELPER_FLAGS_4(oc, TCG_CALL_NO_WG, i32, env, i32, i64, i64) DEF_HELPER_FLAGS_4(xc, TCG_CALL_NO_WG, i32, env, i32, i64, i64) DEF_HELPER_FLAGS_4(mvc, TCG_CALL_NO_WG, void, env, i32, i64, i64) +DEF_HELPER_FLAGS_4(mvcin, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(clc, TCG_CALL_NO_WG, i32, env, i32, i64, i64) DEF_HELPER_3(mvcl, i32, env, i32, i32) DEF_HELPER_FLAGS_4(clm, TCG_CALL_NO_WG, i32, env, i32, i32, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 0127894..c8f7761 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -572,6 +572,8 @@ C(0xe548, MVGHI, SIL, GIE, la1, i2, 0, m1_64, mov2, 0) C(0x9200, MVI, SI, Z, la1, i2, 0, m1_8, mov2, 0) C(0xeb52, MVIY, SIY, LD, la1, i2, 0, m1_8, mov2, 0) +/* MOVE INVERSE */ + C(0xe800, MVCIN, SS_a, Z, la1, a2, 0, 0, mvcin, 0) /* MOVE LONG */ C(0x0e00, MVCL, RR_a, Z, 0, 0, 0, 0, mvcl, 0) /* MOVE LONG EXTENDED */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 15b5f45..eef7547 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -231,6 +231,18 @@ void HELPER(mvc)(CPUS390XState *env, uint32_t l, uint6= 4_t dest, uint64_t src) do_helper_mvc(env, l, dest, src, GETPC()); } =20 +/* move inverse */ +void HELPER(mvcin)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t= src) +{ + uintptr_t ra =3D GETPC(); + int i; + + for (i =3D 0; i <=3D l; i++) { + uint8_t v =3D cpu_ldub_data_ra(env, src - i, ra); + cpu_stb_data_ra(env, dest + i, v, ra); + } +} + /* compare unsigned byte arrays */ static uint32_t do_helper_clc(CPUS390XState *env, uint32_t l, uint64_t s1, uint64_t s2, uintptr_t ra) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 30d0575..61373df 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2940,6 +2940,14 @@ static ExitStatus op_mvc(DisasContext *s, DisasOps *= o) return NO_EXIT; } =20 +static ExitStatus op_mvcin(DisasContext *s, DisasOps *o) +{ + TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); + gen_helper_mvcin(cpu_env, l, o->addr1, o->in2); + tcg_temp_free_i32(l); + return NO_EXIT; +} + static ExitStatus op_mvcl(DisasContext *s, DisasOps *o) { TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599914730759.7217079654307; Sun, 4 Jun 2017 11:11:54 -0700 (PDT) Received: from localhost ([::1]:57986 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa0H-0007xL-8v for importer@patchew.org; Sun, 04 Jun 2017 14:11:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50680) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRy-00086B-65 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRu-0003nN-Cq for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:26 -0400 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:35815) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRu-0003mi-76 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:22 -0400 Received: by mail-pg0-x242.google.com with SMTP id f127so7256688pgc.2 for ; Sun, 04 Jun 2017 10:36:22 -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.36.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:20 -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=eBd+mjN+2MT8qLvOaj1I75q1M9f5qIktAgUjg7dlbl8=; b=gXH4UOzkaPcRp6rHRLf7zBPt1u1uwkHSeTbR4dk+CX78OrUUgUoSNyk0GVGkglGxsi xgBgUkAn0AQEDjFSSe7gniZqzFagdjYNAGPpnCN4yzakZIk8PgI/44XlB501ACpxhFLL /Qk5kd4UL5JYR+B77v+iH67yExaE1XI/JThl/XaNd4QsbxcPUXe0x9Fx7OvmRREG+gsw h3PksDICVfCeR/V/DhGYgNzJZpJe4xDL09fq8fW5AycssIozRhE+H8tHaschH9Th66EV gHY8B2ip43wCbYXVeF42QJ82Ft0WEj+x8owps5UbOXq9XHbU+Cv6MM1XrtS8VybSNt6T Dv+w== 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=eBd+mjN+2MT8qLvOaj1I75q1M9f5qIktAgUjg7dlbl8=; b=kL/lkNKcqLDGBj6V5lJIRh1gXkehboHQ0zh+Avite/aTvF8lmq8hit438sVT5f5Az5 nDtXzp83Sq0FCC0lIzfDhvl0HvX17sxGokwUPmjZ0VXQb1S/EPLAKmr44dXiWb2FuwuM i81Nz8x+lUzlD1bqlb2px9E7ALc0Uohnb6zoiqXG9ne5aw+OwbbBdCggGPP+ti3AOAhC R+qvmmXQZm+YJV4uMOV+JEJM2s76wTBxqaxEqPdbR6ajmEcRmxDeNo6ufY61ClZA3WtF ULjn6jXOcpveBRYkc6bdzYDTu40Yc3uG1cNvT4rPenPROVkqDmuoHN68AxRYBwagGX0u JLeQ== X-Gm-Message-State: AODbwcA08Ivkk5KdXzykqN87heN9PyyXGrNth0Rg376zfPXYBiaXJA2/ 3mLFMTXmu2AD6QgVP3E= X-Received: by 10.84.217.69 with SMTP id e5mr10618809plj.209.1496597781163; Sun, 04 Jun 2017 10:36:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:50 -0700 Message-Id: <20170604173509.29684-51-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 50/69] target/s390x: implement MOVE NUMERICS 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-12-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 13 +++++++++++++ target/s390x/translate.c | 8 ++++++++ 4 files changed, 24 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index a618fe5..e62e455 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -13,6 +13,7 @@ DEF_HELPER_FLAGS_3(divs64, TCG_CALL_NO_WG, s64, env, s64,= s64) DEF_HELPER_FLAGS_4(divu64, TCG_CALL_NO_WG, i64, env, i64, i64, i64) DEF_HELPER_4(srst, i64, env, i64, i64, i64) DEF_HELPER_4(clst, i64, env, i64, i64, i64) +DEF_HELPER_FLAGS_4(mvn, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(mvpg, TCG_CALL_NO_WG, i32, env, i64, i64, i64) DEF_HELPER_4(mvst, i64, env, i64, i64, i64) DEF_HELPER_4(ex, void, env, i32, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index c8f7761..6af7176 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -578,6 +578,8 @@ C(0x0e00, MVCL, RR_a, Z, 0, 0, 0, 0, mvcl, 0) /* MOVE LONG EXTENDED */ C(0xa800, MVCLE, RS_a, Z, 0, a2, 0, 0, mvcle, 0) +/* MOVE NUMERICS */ + C(0xd100, MVN, SS_a, Z, la1, a2, 0, 0, mvn, 0) /* MOVE PAGE */ C(0xb254, MVPG, RRE, Z, r1_o, r2_o, 0, 0, mvpg, 0) /* MOVE STRING */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index eef7547..5385278 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -243,6 +243,19 @@ void HELPER(mvcin)(CPUS390XState *env, uint32_t l, uin= t64_t dest, uint64_t src) } } =20 +/* move numerics */ +void HELPER(mvn)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) +{ + uintptr_t ra =3D GETPC(); + int i; + + for (i =3D 0; i <=3D l; i++) { + uint8_t v =3D cpu_ldub_data_ra(env, dest + i, ra) & 0xf0; + v |=3D cpu_ldub_data_ra(env, src + i, ra) & 0x0f; + cpu_stb_data_ra(env, dest + i, v, ra); + } +} + /* compare unsigned byte arrays */ static uint32_t do_helper_clc(CPUS390XState *env, uint32_t l, uint64_t s1, uint64_t s2, uintptr_t ra) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 61373df..4e72112 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2990,6 +2990,14 @@ static ExitStatus op_mvcs(DisasContext *s, DisasOps = *o) } #endif =20 +static ExitStatus op_mvn(DisasContext *s, DisasOps *o) +{ + TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); + gen_helper_mvn(cpu_env, l, o->addr1, o->in2); + tcg_temp_free_i32(l); + return NO_EXIT; +} + static ExitStatus op_mvpg(DisasContext *s, DisasOps *o) { gen_helper_mvpg(cc_op, cpu_env, regs[0], o->in1, o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149660006322939.56920372173056; Sun, 4 Jun 2017 11:14:23 -0700 (PDT) Received: from localhost ([::1]:57995 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa2f-0002Jo-Os for importer@patchew.org; Sun, 04 Jun 2017 14:14:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50679) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRy-00086A-5l for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRv-0003oT-Or for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:26 -0400 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:34673) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRv-0003nl-IR for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:23 -0400 Received: by mail-pf0-x242.google.com with SMTP id w69so18143953pfk.1 for ; Sun, 04 Jun 2017 10:36:23 -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.36.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:21 -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=mKg/KmzDIkttDKgUWyUL/psOxMZHMe3v/JCi7jVlW7Y=; b=Shu0ecbHTF5O4Htr+aRSVbxASNlRYSJo59oRGO5eMXuu+5JoOPWLFnKozU7z3604y5 9AbV5qYb73BFxz59nSjW3xeZhn9Ut0jYOxeDvb4NqgPQideVV5vYg2fIC2f0gxkP/khQ jXo50OXmsreoIWx5g1heETg5sCdgkBLlzXbPEPcnStxaHP+nHY9e1JCfin2SGHpTwBdd RXd4b1owg5NSxMQCAQxDh8lquANT59lmGIwm50e5drHr1MEPdfXDuPtXm45PiQagqqoB 1ho56i35rgSbZvWtKBB2ZZ4vAW0vomZRWE+j8M5FYrg1y4tRfruJlDDe079Vr31dNnnl AGkg== 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=mKg/KmzDIkttDKgUWyUL/psOxMZHMe3v/JCi7jVlW7Y=; b=huAg9/b9bjqM4x+6sE0VFkCfv4J7mphMUTO2dvqC2fCtn6RydRoTejx1UoXZ5Z3qeL a/++tVF1gkRTeCD20xFJtJNTehM6oO1iiOki8BXxtgKLDukb0AuL5G8sVVXXVpsqirlr aOrgZDJS1/vL5NzoFzmcSXHkbq4ukHQ4fUjM98Da/MVwjL5p7zyJK1HViTEFVUYFBIu1 tQY8zeDPqGEfmEZcyBDvAKZcdTvkDwBi6GFeDYLSfnor3xG0h2BtDubwxG2g97sBne3s rHLJ/fY/5dwdaXcgQ2SJiCoLxVufa55aMsY9NBtF7nnvdewoGHlyuziTg7eej2DxSExv /w4Q== X-Gm-Message-State: AODbwcBm/hsvKRmB2pv2lwvbVZlZYdf2kOU2IdwB8Qc+Qh+tKI7C0YT8 3OcSm4C0C+g+SS52d7M= X-Received: by 10.98.107.129 with SMTP id g123mr16333769pfc.219.1496597782481; Sun, 04 Jun 2017 10:36:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:51 -0700 Message-Id: <20170604173509.29684-52-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:c00::242 Subject: [Qemu-devel] [PULL 51/69] target/s390x: implement MOVE WITH OFFSET 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-13-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 4 ++++ target/s390x/mem_helper.c | 31 +++++++++++++++++++++++++++++++ target/s390x/translate.c | 8 ++++++++ 4 files changed, 44 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index e62e455..a197b8b 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -14,6 +14,7 @@ DEF_HELPER_FLAGS_4(divu64, TCG_CALL_NO_WG, i64, env, i64,= i64, i64) DEF_HELPER_4(srst, i64, env, i64, i64, i64) DEF_HELPER_4(clst, i64, env, i64, i64, i64) DEF_HELPER_FLAGS_4(mvn, TCG_CALL_NO_WG, void, env, i32, i64, i64) +DEF_HELPER_FLAGS_4(mvo, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(mvpg, TCG_CALL_NO_WG, i32, env, i64, i64, i64) DEF_HELPER_4(mvst, i64, env, i64, i64, i64) DEF_HELPER_4(ex, void, env, i32, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 6af7176..47542ee 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -584,6 +584,10 @@ C(0xb254, MVPG, RRE, Z, r1_o, r2_o, 0, 0, mvpg, 0) /* MOVE STRING */ C(0xb255, MVST, RRE, Z, r1_o, r2_o, 0, 0, mvst, 0) +/* MOVE WITH OFFSET */ + /* Really format SS_b, but we pack both lengths into one argument + for the helper call, so we might as well leave one 8-bit field. */ + C(0xf100, MVO, SS_a, Z, la1, a2, 0, 0, mvo, 0) =20 /* MULTIPLY */ C(0x1c00, MR, RR_a, Z, r1p1_32s, r2_32s, new, r1_D32, mul, 0) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 5385278..3601bb9 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -256,6 +256,37 @@ void HELPER(mvn)(CPUS390XState *env, uint32_t l, uint6= 4_t dest, uint64_t src) } } =20 +/* move with offset */ +void HELPER(mvo)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) +{ + uintptr_t ra =3D GETPC(); + int len_dest =3D l >> 4; + int len_src =3D l & 0xf; + uint8_t byte_dest, byte_src; + int i; + + src +=3D len_src; + dest +=3D len_dest; + + /* Handle rightmost byte */ + byte_src =3D cpu_ldub_data_ra(env, src, ra); + byte_dest =3D cpu_ldub_data_ra(env, dest, ra); + byte_dest =3D (byte_dest & 0x0f) | (byte_src << 4); + cpu_stb_data_ra(env, dest, byte_dest, ra); + + /* Process remaining bytes from right to left */ + for (i =3D 1; i <=3D len_dest; i++) { + byte_dest =3D byte_src >> 4; + if (len_src - i >=3D 0) { + byte_src =3D cpu_ldub_data_ra(env, src - i, ra); + } else { + byte_src =3D 0; + } + byte_dest |=3D byte_src << 4; + cpu_stb_data_ra(env, dest - i, byte_dest, ra); + } +} + /* compare unsigned byte arrays */ static uint32_t do_helper_clc(CPUS390XState *env, uint32_t l, uint64_t s1, uint64_t s2, uintptr_t ra) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 4e72112..b1877cf 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2998,6 +2998,14 @@ static ExitStatus op_mvn(DisasContext *s, DisasOps *= o) return NO_EXIT; } =20 +static ExitStatus op_mvo(DisasContext *s, DisasOps *o) +{ + TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); + gen_helper_mvo(cpu_env, l, o->addr1, o->in2); + tcg_temp_free_i32(l); + return NO_EXIT; +} + static ExitStatus op_mvpg(DisasContext *s, DisasOps *o) { gen_helper_mvpg(cc_op, cpu_env, regs[0], o->in1, o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600146792517.4046896470126; Sun, 4 Jun 2017 11:15:46 -0700 (PDT) Received: from localhost ([::1]:58011 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa41-0003Ze-DW for importer@patchew.org; Sun, 04 Jun 2017 14:15:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50683) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRy-00086L-9Z for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRx-0003pX-5M for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:26 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:33398) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRw-0003ow-W9 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:25 -0400 Received: by mail-pf0-x243.google.com with SMTP id f27so18146803pfe.0 for ; Sun, 04 Jun 2017 10:36:24 -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.36.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:23 -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=BC75oR3vtLbqQfuIS8bYXU6X6buAjkvUHPCVe2k5F+g=; b=pEVMM+J2MPov5afM3omCUzPQPnE+X4UqvFcCtI6UQowEUAP3WVCVL4U14eTSnrJ6UR sa0I7Ub9LVf2xYdPV46+u5l5Hn0bMOqNej7B9VTJVnZQIIct2uJ6BYTOy3wtlXaeBfz5 jTc4CmxoT5/rmch3bZVHKW37GcfJhVqlDp3JsSyi24cpNT2d8/9ks8xjevKnh1GyWgk8 uNuoRJDQzMSbGgZFj4G73f6dn19yTfRgPve8XVhQoUHIEujsHgAf3kauJWRzPTkcHufM 2wiuQ9kKoIczEVy8YFP1UPR86pdcx84TY2JQNbRVmpoh3BxhJNs7QDyZdgFZVd3uF6IL hEIg== 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=BC75oR3vtLbqQfuIS8bYXU6X6buAjkvUHPCVe2k5F+g=; b=pToT7j1p8Nf9go8F6zy1Kwue5vKTeblbxXI0NErAEQqmvdcnzCsnuYl83cei0UjLAa 3TXbgfFRbBW7QQu6mRWzQuG9S9rCkHLv9YNl6Ul705ATmceyMAkTQw3LpnuSR0FB8/tL uMfSEL/U94sCEc4I80lkG7KbUSDjwTQ8amCTKW1TbB5eBsJMHkvOEopafrvbjUWN4W2e M6lEHqPKLYOU+ZEb7XaAesnFqRvV5KcYUgEcfHnf5xOGbZUmQoqeV/wPmi85mhuguQB/ WyAxESR6qZhofIQfc01J7KQGZ4ESL37XMzOFzN+oENExJOlYVeK9cCI23j4HVpxRbsbc TDlg== X-Gm-Message-State: AODbwcCM6T1zAzOeaV/NSjGTB/mSy8i63hfQynUqClN+k+LiskMCr5b1 pv+EbSdz/+VzFNCSqQA= X-Received: by 10.99.152.25 with SMTP id q25mr17355599pgd.93.1496597783895; Sun, 04 Jun 2017 10:36:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:52 -0700 Message-Id: <20170604173509.29684-53-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:c00::243 Subject: [Qemu-devel] [PULL 52/69] target/s390x: implement MOVE ZONES 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-14-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 13 +++++++++++++ target/s390x/translate.c | 8 ++++++++ 4 files changed, 24 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index a197b8b..ba21e4d 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -16,6 +16,7 @@ DEF_HELPER_4(clst, i64, env, i64, i64, i64) DEF_HELPER_FLAGS_4(mvn, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(mvo, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(mvpg, TCG_CALL_NO_WG, i32, env, i64, i64, i64) +DEF_HELPER_FLAGS_4(mvz, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_4(mvst, i64, env, i64, i64, i64) DEF_HELPER_4(ex, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(stam, TCG_CALL_NO_WG, void, env, i32, i64, i32) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 47542ee..b40611b 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -588,6 +588,8 @@ /* Really format SS_b, but we pack both lengths into one argument for the helper call, so we might as well leave one 8-bit field. */ C(0xf100, MVO, SS_a, Z, la1, a2, 0, 0, mvo, 0) +/* MOVE ZONES */ + C(0xd300, MVZ, SS_a, Z, la1, a2, 0, 0, mvz, 0) =20 /* MULTIPLY */ C(0x1c00, MR, RR_a, Z, r1p1_32s, r2_32s, new, r1_D32, mul, 0) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 3601bb9..95f701d 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -287,6 +287,19 @@ void HELPER(mvo)(CPUS390XState *env, uint32_t l, uint6= 4_t dest, uint64_t src) } } =20 +/* move zones */ +void HELPER(mvz)(CPUS390XState *env, uint32_t l, uint64_t dest, uint64_t s= rc) +{ + uintptr_t ra =3D GETPC(); + int i; + + for (i =3D 0; i <=3D l; i++) { + uint8_t b =3D cpu_ldub_data_ra(env, dest + i, ra) & 0x0f; + b |=3D cpu_ldub_data_ra(env, src + i, ra) & 0xf0; + cpu_stb_data_ra(env, dest + i, b, ra); + } +} + /* compare unsigned byte arrays */ static uint32_t do_helper_clc(CPUS390XState *env, uint32_t l, uint64_t s1, uint64_t s2, uintptr_t ra) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index b1877cf..95ca53c 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3021,6 +3021,14 @@ static ExitStatus op_mvst(DisasContext *s, DisasOps = *o) return NO_EXIT; } =20 +static ExitStatus op_mvz(DisasContext *s, DisasOps *o) +{ + TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); + gen_helper_mvz(cpu_env, l, o->addr1, o->in2); + tcg_temp_free_i32(l); + return NO_EXIT; +} + static ExitStatus op_mul(DisasContext *s, DisasOps *o) { tcg_gen_mul_i64(o->out, o->in1, o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599372263493.3740819309204; Sun, 4 Jun 2017 11:02:52 -0700 (PDT) Received: from localhost ([::1]:57949 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZrW-0008G9-Mx for importer@patchew.org; Sun, 04 Jun 2017 14:02:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZRz-000886-PA for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRy-0003r7-JP for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:27 -0400 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:33400) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRy-0003qD-CQ for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:26 -0400 Received: by mail-pf0-x242.google.com with SMTP id f27so18146842pfe.0 for ; Sun, 04 Jun 2017 10:36:26 -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.36.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:24 -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=ImAwzw4ujy0OAkB64o+TEw5ZLtrnb9syTO7Bj2lmutY=; b=H2tr2WJ+YCc80AklixUNJKdZ7+ysZXz5aKiYfCLImDBIrT1tb5QS3ZaboxFXc+KBu4 1/nuS/+ph48SxFGQykaXeQX/POTTrFTDOm8CHoap27phDhyT7vmAuoEHRtED/PbqnSJk 5OBZsopDfyvcWKlouMuS64TbQ9bDQNf4UzGgIDx2oPIrev00qlImTwn3+8mfe/3WwiOF El8yUJXxj4ld05cPoHEepeSrSGEsWv1qodB1QqpR6prgIE8J8irOPq/aR8mIeRHJ6xMA PIvmuQBg7rkap8iWWYHvyQuktsg9kqJEBUMT5hcpGdCV4W5ntSwJbUJt6i7OZCeoJ9KY KR5w== 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=ImAwzw4ujy0OAkB64o+TEw5ZLtrnb9syTO7Bj2lmutY=; b=hcRvVkRTMdWzAh9LzEtjdBZ5c1s6hsWlk9zYIdGWzUnMw8WCNbGeLUHHsBZskKAGqp CloHirx6Xl8jlnTkKarAef0bzZfygMTp3OYqCb0spwRJnAlUCUzHe3I+luowYYYbPb8c GrkgVI9IGLoxexuqqM5FgRPUQy0sU1rTP6qrE+zjphQiwbdDIlPhoPiOUW9Wlm9S+u7c 7vX6I4oqqreWC4x5bjwCtKdgWx/ZH132iwbb58irTY+pAboWUF3MXK5BXSvCmVT0ArkK 0pO4d7nTpB9IsBtluy2gecjnr88YLpXLEkECY5uFFYtggCm2Zet6S7HZp9wNFM4FxY9N doTQ== X-Gm-Message-State: AODbwcB3TUsP1bqzhEtSsMUXDc/4sOLGQDjwOSjTl7ldnyyP5z4bxwdp pciTDXRlaNy5dqukui0= X-Received: by 10.99.127.78 with SMTP id p14mr17201521pgn.124.1496597785294; Sun, 04 Jun 2017 10:36:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:53 -0700 Message-Id: <20170604173509.29684-54-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:c00::242 Subject: [Qemu-devel] [PULL 53/69] target/s390x: improve 24-bit and 31-bit addresses read 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Improve fix_address to also handle the 24-bit mode. Rename fix_address to wrap_address to better explain what is changed. Replace the calls to get_address with x2 =3D 0 and b2 =3D 0 by call to wrap_address, leading to the removal of this function. Rename get_address_31fix into get_address. Reviewed-by: Thomas Huth Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-15-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 71 +++++++++++++++++++++----------------------= ---- 1 file changed, 31 insertions(+), 40 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 95f701d..2425bfc 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -365,30 +365,23 @@ uint32_t HELPER(clm)(CPUS390XState *env, uint32_t r1,= uint32_t mask, return cc; } =20 -static inline uint64_t fix_address(CPUS390XState *env, uint64_t a) +static inline uint64_t wrap_address(CPUS390XState *env, uint64_t a) { - /* 31-Bit mode */ if (!(env->psw.mask & PSW_MASK_64)) { - a &=3D 0x7fffffff; + if (!(env->psw.mask & PSW_MASK_32)) { + /* 24-Bit mode */ + a &=3D 0x00ffffff; + } else { + /* 31-Bit mode */ + a &=3D 0x7fffffff; + } } return a; } =20 -static inline uint64_t get_address(CPUS390XState *env, int x2, int b2, int= d2) -{ - uint64_t r =3D d2; - if (x2) { - r +=3D env->regs[x2]; - } - if (b2) { - r +=3D env->regs[b2]; - } - return fix_address(env, r); -} - -static inline uint64_t get_address_31fix(CPUS390XState *env, int reg) +static inline uint64_t get_address(CPUS390XState *env, int reg) { - return fix_address(env, env->regs[reg]); + return wrap_address(env, env->regs[reg]); } =20 /* search string (c is byte to search, r2 is string, r1 end of string) */ @@ -399,8 +392,8 @@ uint64_t HELPER(srst)(CPUS390XState *env, uint64_t r0, = uint64_t end, uint32_t len; uint8_t v, c =3D r0; =20 - str =3D fix_address(env, str); - end =3D fix_address(env, end); + str =3D wrap_address(env, str); + end =3D wrap_address(env, end); =20 /* Assume for now that R2 is unmodified. */ env->retxl =3D str; @@ -434,8 +427,8 @@ uint64_t HELPER(clst)(CPUS390XState *env, uint64_t c, u= int64_t s1, uint64_t s2) uint32_t len; =20 c =3D c & 0xff; - s1 =3D fix_address(env, s1); - s2 =3D fix_address(env, s2); + s1 =3D wrap_address(env, s1); + s2 =3D wrap_address(env, s2); =20 /* Lest we fail to service interrupts in a timely manner, limit the amount of work we're willing to do. For now, let's cap at 8k. */ @@ -481,8 +474,8 @@ uint64_t HELPER(mvst)(CPUS390XState *env, uint64_t c, u= int64_t d, uint64_t s) uint32_t len; =20 c =3D c & 0xff; - d =3D fix_address(env, d); - s =3D fix_address(env, s); + d =3D wrap_address(env, d); + s =3D wrap_address(env, s); =20 /* Lest we fail to service interrupts in a timely manner, limit the amount of work we're willing to do. For now, let's cap at 8k. */ @@ -540,9 +533,9 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) { uintptr_t ra =3D GETPC(); uint64_t destlen =3D env->regs[r1 + 1] & 0xffffff; - uint64_t dest =3D get_address_31fix(env, r1); + uint64_t dest =3D get_address(env, r1); uint64_t srclen =3D env->regs[r2 + 1] & 0xffffff; - uint64_t src =3D get_address_31fix(env, r2); + uint64_t src =3D get_address(env, r2); uint8_t pad =3D env->regs[r2 + 1] >> 24; uint8_t v; uint32_t cc; @@ -583,9 +576,9 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, { uintptr_t ra =3D GETPC(); uint64_t destlen =3D env->regs[r1 + 1]; - uint64_t dest =3D env->regs[r1]; + uint64_t dest =3D get_address(env, r1); uint64_t srclen =3D env->regs[r3 + 1]; - uint64_t src =3D env->regs[r3]; + uint64_t src =3D get_address(env, r3); uint8_t pad =3D a2 & 0xff; uint8_t v; uint32_t cc; @@ -593,8 +586,6 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, if (!(env->psw.mask & PSW_MASK_64)) { destlen =3D (uint32_t)destlen; srclen =3D (uint32_t)srclen; - dest &=3D 0x7fffffff; - src &=3D 0x7fffffff; } =20 if (destlen =3D=3D srclen) { @@ -634,9 +625,9 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, { uintptr_t ra =3D GETPC(); uint64_t destlen =3D env->regs[r1 + 1]; - uint64_t dest =3D get_address_31fix(env, r1); + uint64_t dest =3D get_address(env, r1); uint64_t srclen =3D env->regs[r3 + 1]; - uint64_t src =3D get_address_31fix(env, r3); + uint64_t src =3D get_address(env, r3); uint8_t pad =3D a2 & 0xff; uint32_t cc =3D 0; =20 @@ -1020,7 +1011,7 @@ uint32_t HELPER(testblock)(CPUS390XState *env, uint64= _t real_addr) uint64_t abs_addr; int i; =20 - real_addr =3D fix_address(env, real_addr); + real_addr =3D wrap_address(env, real_addr); abs_addr =3D mmu_real2abs(env, real_addr) & TARGET_PAGE_MASK; if (!address_space_access_valid(&address_space_memory, abs_addr, TARGET_PAGE_SIZE, true)) { @@ -1054,7 +1045,7 @@ uint64_t HELPER(iske)(CPUS390XState *env, uint64_t r2) { static S390SKeysState *ss; static S390SKeysClass *skeyclass; - uint64_t addr =3D get_address(env, 0, 0, r2); + uint64_t addr =3D wrap_address(env, r2); uint8_t key; =20 if (addr > ram_size) { @@ -1077,7 +1068,7 @@ void HELPER(sske)(CPUS390XState *env, uint64_t r1, ui= nt64_t r2) { static S390SKeysState *ss; static S390SKeysClass *skeyclass; - uint64_t addr =3D get_address(env, 0, 0, r2); + uint64_t addr =3D wrap_address(env, r2); uint8_t key; =20 if (addr > ram_size) { @@ -1234,14 +1225,14 @@ uint64_t HELPER(lura)(CPUS390XState *env, uint64_t = addr) { CPUState *cs =3D CPU(s390_env_get_cpu(env)); =20 - return (uint32_t)ldl_phys(cs->as, get_address(env, 0, 0, addr)); + return (uint32_t)ldl_phys(cs->as, wrap_address(env, addr)); } =20 uint64_t HELPER(lurag)(CPUS390XState *env, uint64_t addr) { CPUState *cs =3D CPU(s390_env_get_cpu(env)); =20 - return ldq_phys(cs->as, get_address(env, 0, 0, addr)); + return ldq_phys(cs->as, wrap_address(env, addr)); } =20 /* store using real address */ @@ -1249,7 +1240,7 @@ void HELPER(stura)(CPUS390XState *env, uint64_t addr,= uint64_t v1) { CPUState *cs =3D CPU(s390_env_get_cpu(env)); =20 - stl_phys(cs->as, get_address(env, 0, 0, addr), (uint32_t)v1); + stl_phys(cs->as, wrap_address(env, addr), (uint32_t)v1); =20 if ((env->psw.mask & PSW_MASK_PER) && (env->cregs[9] & PER_CR9_EVENT_STORE) && @@ -1264,7 +1255,7 @@ void HELPER(sturg)(CPUS390XState *env, uint64_t addr,= uint64_t v1) { CPUState *cs =3D CPU(s390_env_get_cpu(env)); =20 - stq_phys(cs->as, get_address(env, 0, 0, addr), v1); + stq_phys(cs->as, wrap_address(env, addr), v1); =20 if ((env->psw.mask & PSW_MASK_PER) && (env->cregs[9] & PER_CR9_EVENT_STORE) && @@ -1382,8 +1373,8 @@ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, ui= nt64_t r1, uint64_t addr) uint32_t d1 =3D extract64(insn, 32, 12); uint32_t b2 =3D extract64(insn, 28, 4); uint32_t d2 =3D extract64(insn, 16, 12); - uint64_t a1 =3D get_address(env, 0, b1, d1); - uint64_t a2 =3D get_address(env, 0, b2, d2); + uint64_t a1 =3D wrap_address(env, env->regs[b1] + d1); + uint64_t a2 =3D wrap_address(env, env->regs[b2] + d2); =20 env->cc_op =3D helper(env, l, a1, a2, 0); env->psw.addr +=3D ilen; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149659956177528.58639306256964; Sun, 4 Jun 2017 11:06:01 -0700 (PDT) Received: from localhost ([::1]:57962 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZua-0002ZL-73 for importer@patchew.org; Sun, 04 Jun 2017 14:06:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZS0-000899-QB for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZRz-0003sq-Rj for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:28 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:35820) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZRz-0003rq-MJ for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:27 -0400 Received: by mail-pg0-x241.google.com with SMTP id f127so7256828pgc.2 for ; Sun, 04 Jun 2017 10:36:27 -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.36.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:26 -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=qLnc189bsLtJu+KRrUaFtiCzFc/50JAzXakepXJwzjg=; b=TjTHZJulZGJ/FQUkhD0AD+WC0+/OMNQN27HlfaOIBhmVhr937IKllthH6+Iosl8mCe AMVOZGyptoTEiy64gys6BFNDIQHRaFjlMLgKoR8rkaby8qkuP67gLhT8zc7I0bCVpN5A avvcENR1SZH+I634BcUCiRPb0hTxwmXgBnHHIr3ae0PQWrBB2RYsiANAXOu75WXH25b/ 9Zb0yOYfGwIIYrJ5bf4aHaUvX/JF8UgVvkfgnqqhPT3wdGtcUzUtFmrNzNIqplBynSiE asqz+DeNFKRRNhjIkMUYfU5Evs/RiPsbkjdGH9RjGbcV3PU9h0qcOU3K4sKF1mBbgjjx eQDA== 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=qLnc189bsLtJu+KRrUaFtiCzFc/50JAzXakepXJwzjg=; b=PHjnP3iDABs93pTQWwxHPHnkMTmbe9C3JWYgJ9CSfaciKcKHNAYQ07WMIBLvDGRRF7 W3ma9nUNP9V2WzexrjK4tAvyZYW5Z4Zgk+NYjXZVvifZTl9rpgj/geJiRAG16Q8TkeaC KKkZUBdWvEgSVmShcysS+L5rzJKug96XbyKokNLCmw/szObLrMasadIId5ctGLhT3sY7 xueZqIaUDN+s5RcEISxaDbJhgqdt6TdGwGPK3sw1ojs5jF9ge6lkJWytyTEE29JS6tlg CiFQ8ELIb7xfr0Xq2XxX9thxyOItorsq6MCo6NQYeqEahU9VSliPTRQNywfLRsX7FuA9 uBIQ== X-Gm-Message-State: AODbwcCpyHqxhb/VlJdZDNvOJ+nwpTVhuCXZ046iqgG+kv6NhU8MH7SB Qjd2xMip24jxkbLJjAg= X-Received: by 10.101.85.14 with SMTP id f14mr17054813pgr.112.1496597786622; Sun, 04 Jun 2017 10:36:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:54 -0700 Message-Id: <20170604173509.29684-55-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::241 Subject: [Qemu-devel] [PULL 54/69] target/s390x: improve 24-bit and 31-bit addresses write 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-16-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 2425bfc..2113494 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -384,6 +384,29 @@ static inline uint64_t get_address(CPUS390XState *env,= int reg) return wrap_address(env, env->regs[reg]); } =20 +static inline void set_address(CPUS390XState *env, int reg, uint64_t addre= ss) +{ + if (env->psw.mask & PSW_MASK_64) { + /* 64-Bit mode */ + env->regs[reg] =3D address; + } else { + if (!(env->psw.mask & PSW_MASK_32)) { + /* 24-Bit mode. According to the PoO it is implementation + dependent if bits 32-39 remain unchanged or are set to + zeros. Choose the former so that the function can also be + used for TRT. */ + env->regs[reg] =3D deposit64(env->regs[reg], 0, 24, address); + } else { + /* 31-Bit mode. According to the PoO it is implementation + dependent if bit 32 remains unchanged or is set to zero. + Choose the latter so that the function can also be used for + TRT. */ + address &=3D 0x7fffffff; + env->regs[reg] =3D deposit64(env->regs[reg], 0, 32, address); + } + } +} + /* search string (c is byte to search, r2 is string, r1 end of string) */ uint64_t HELPER(srst)(CPUS390XState *env, uint64_t r0, uint64_t end, uint64_t str) @@ -564,8 +587,8 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) env->regs[r1 + 1] =3D destlen; /* can't use srclen here, we trunc'ed it */ env->regs[r2 + 1] -=3D src - env->regs[r2]; - env->regs[r1] =3D dest; - env->regs[r2] =3D src; + set_address(env, r1, dest); + set_address(env, r2, src); =20 return cc; } @@ -613,8 +636,8 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, /* can't use srclen here, we trunc'ed it */ /* FIXME: 31-bit mode! */ env->regs[r3 + 1] -=3D src - env->regs[r3]; - env->regs[r1] =3D dest; - env->regs[r3] =3D src; + set_address(env, r1, dest); + set_address(env, r3, src); =20 return cc; } @@ -651,8 +674,8 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, env->regs[r1 + 1] =3D destlen; /* can't use srclen here, we trunc'ed it */ env->regs[r3 + 1] -=3D src - env->regs[r3]; - env->regs[r1] =3D dest; - env->regs[r3] =3D src; + set_address(env, r1, dest); + set_address(env, r3, src); =20 return cc; } @@ -858,7 +881,7 @@ static uint32_t do_helper_trt(CPUS390XState *env, uint3= 2_t len, uint64_t array, uint8_t sbyte =3D cpu_ldub_data_ra(env, trans + byte, ra); =20 if (sbyte !=3D 0) { - env->regs[1] =3D array + i; + set_address(env, 1, array + i); env->regs[2] =3D deposit64(env->regs[2], 0, 8, sbyte); return (i =3D=3D len) ? 2 : 1; } --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600271935773.001468418629; Sun, 4 Jun 2017 11:17:51 -0700 (PDT) Received: from localhost ([::1]:58018 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa62-0005By-HN for importer@patchew.org; Sun, 04 Jun 2017 14:17:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50735) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZS2-0008Aj-6p for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZS1-0003tz-3i for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:30 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:36373) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZS0-0003tY-UT for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:29 -0400 Received: by mail-pf0-x241.google.com with SMTP id n23so18101599pfb.3 for ; Sun, 04 Jun 2017 10:36:28 -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.36.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:27 -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=1OnC1qOxmh+UCsNTijRSvBaWRuYi+Hg4akum8TuUY6o=; b=KwHutkACK1cLQEFXmpYfJu0dKBfvinnxo8TddmOrZG1Lx85Z7ocsHrlSV0IkzW212s tJ5kKG+gfHMwUgdJxcTObI/ZZTrxvPDdGA8S+LQxN1VPGq5+pkGqHCCUBL9FApPxVmRk s6/2/ivwyHREBZQ9aQmki4YGrC7zcCTE5XjrQgA4SauqiI28REaZftOBRTaPah+anMRf H5mVv3Csv26HTF93gyQbvbvxgODZYALWpg+8iRFof16vwGCbEcXKFzvV5AYilejXNIS8 Vridq9Y/iGm7jrEhcDORsrqZoss5kaz7whajd/8dAd6dkB9Sc0MjXR6N3h7PBNDsTma9 g4PQ== 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=1OnC1qOxmh+UCsNTijRSvBaWRuYi+Hg4akum8TuUY6o=; b=UIsyZnlVkkE23tWwtjHxmEv1ubX+8v+SPUE7GNGcswFI326ET5Fq6mjzencm6rwgaJ cl7sFS4yeUkSM76DSRsDrADL4ue6jPyalhITjXUvvtCsB8BwhXdws7LsFZUiuQ6DvnGe X0Z/8r+kWQzVXakESe5BnUEE4fE16njHO1dcfYDZkLQ/iK7apA8Gm3GVy/sX+wVZiEng cXBV/Xu374Qy1CTqW0K/KYNPQlAPOIJ3bJDviBTvxU5W/p+qTRUx6kNmQfQM0fF0rrZ2 y/Gpsz9oj9AvWVjPYUj2pwC4tO1YW44vdEHXmQDUv1khUGSNmaAYsD2Lbxs6UuuKR3YO KhyA== X-Gm-Message-State: AODbwcAJse7ZYiNdE6I789Yb1VjOHWlbmpqhVTeVmZ8t1MEl0aQgYRxA +wpa1Gpe8pVrDG1eZFE= X-Received: by 10.99.173.75 with SMTP id y11mr17104752pgo.108.1496597787860; Sun, 04 Jun 2017 10:36:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:55 -0700 Message-Id: <20170604173509.29684-56-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:c00::241 Subject: [Qemu-devel] [PULL 55/69] target/s390x: improve 24-bit and 31-bit lengths read/write 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-17-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 47 +++++++++++++++++++++++++++++++++----------= ---- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 2113494..98a7aa2 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -407,6 +407,31 @@ static inline void set_address(CPUS390XState *env, int= reg, uint64_t address) } } =20 +static inline uint64_t wrap_length(CPUS390XState *env, uint64_t length) +{ + if (!(env->psw.mask & PSW_MASK_64)) { + /* 24-Bit and 31-Bit mode */ + length &=3D 0x7fffffff; + } + return length; +} + +static inline uint64_t get_length(CPUS390XState *env, int reg) +{ + return wrap_length(env, env->regs[reg]); +} + +static inline void set_length(CPUS390XState *env, int reg, uint64_t length) +{ + if (env->psw.mask & PSW_MASK_64) { + /* 64-Bit mode */ + env->regs[reg] =3D length; + } else { + /* 24-Bit and 31-Bit mode */ + env->regs[reg] =3D deposit64(env->regs[reg], 0, 32, length); + } +} + /* search string (c is byte to search, r2 is string, r1 end of string) */ uint64_t HELPER(srst)(CPUS390XState *env, uint64_t r0, uint64_t end, uint64_t str) @@ -598,19 +623,14 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, uint32_t r3) { uintptr_t ra =3D GETPC(); - uint64_t destlen =3D env->regs[r1 + 1]; + uint64_t destlen =3D get_length(env, r1 + 1); uint64_t dest =3D get_address(env, r1); - uint64_t srclen =3D env->regs[r3 + 1]; + uint64_t srclen =3D get_length(env, r3 + 1); uint64_t src =3D get_address(env, r3); uint8_t pad =3D a2 & 0xff; uint8_t v; uint32_t cc; =20 - if (!(env->psw.mask & PSW_MASK_64)) { - destlen =3D (uint32_t)destlen; - srclen =3D (uint32_t)srclen; - } - if (destlen =3D=3D srclen) { cc =3D 0; } else if (destlen < srclen) { @@ -632,10 +652,9 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r1= , uint64_t a2, cpu_stb_data_ra(env, dest, pad, ra); } =20 - env->regs[r1 + 1] =3D destlen; + set_length(env, r1 + 1 , destlen); /* can't use srclen here, we trunc'ed it */ - /* FIXME: 31-bit mode! */ - env->regs[r3 + 1] -=3D src - env->regs[r3]; + set_length(env, r3 + 1, env->regs[r3 + 1] - src - env->regs[r3]); set_address(env, r1, dest); set_address(env, r3, src); =20 @@ -647,9 +666,9 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, uint32_t r3) { uintptr_t ra =3D GETPC(); - uint64_t destlen =3D env->regs[r1 + 1]; + uint64_t destlen =3D get_length(env, r1 + 1); uint64_t dest =3D get_address(env, r1); - uint64_t srclen =3D env->regs[r3 + 1]; + uint64_t srclen =3D get_length(env, r3 + 1); uint64_t src =3D get_address(env, r3); uint8_t pad =3D a2 & 0xff; uint32_t cc =3D 0; @@ -671,9 +690,9 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, } } =20 - env->regs[r1 + 1] =3D destlen; + set_length(env, r1 + 1, destlen); /* can't use srclen here, we trunc'ed it */ - env->regs[r3 + 1] -=3D src - env->regs[r3]; + set_length(env, r3 + 1, env->regs[r3 + 1] - src - env->regs[r3]); set_address(env, r1, dest); set_address(env, r3, src); =20 --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600394954867.1776562507712; Sun, 4 Jun 2017 11:19:54 -0700 (PDT) Received: from localhost ([::1]:58025 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa81-0006m8-Gz for importer@patchew.org; Sun, 04 Jun 2017 14:19:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50749) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZS3-0008CI-IX for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZS2-0003w8-E1 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:31 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:33460) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZS2-0003vI-8p for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:30 -0400 Received: by mail-pg0-x243.google.com with SMTP id s62so7257417pgc.0 for ; Sun, 04 Jun 2017 10:36:30 -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.36.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:28 -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=aeYDUeOMXf3uHYayrgcitKZLCYG8VBwDZHuVDkoNgIE=; b=KjTvrISZjtDhVdz2RFgktc2RQI927lHiLNCJC7KF8pSPiYk4YxWFCTOismqplfECZu UHcrHNmKmzgJFKkSdN8qqcaG4uvl6r6Hu06ntRLDD3QlPzR+29z5TlD4fkasXyJ0bbOS gTN6ryyNeZSZNmf0vKHQX8nV/ngwN9/IBxr8oE08EHRCFnT5wXk80UKhTSOAgU9gaZ6V xwLRuzS/QZrJfQV1mUdaG8c2noJAZI2JSb+1D3a/aY2E5YD1pWuo/BZf3ZueugnnWtFM XPpOUtdH1/OF22VBtjdgsAJ114HAOD6xa2U8upRZ2OCbmeJ+h20L+oNurwUAF1wU+IBw ni3g== 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=aeYDUeOMXf3uHYayrgcitKZLCYG8VBwDZHuVDkoNgIE=; b=jNQwbEje/p2vvAXKto3aHawOq2OQlBbrlBZ6h5wFZtr1432upLAM4I/pJmsTrHAzcd Xp0yi7ydG6Srjfp61C7jm2SO+1Bj6afrwzH0xheJO2/SX85xNXVdy7rccnSIzkKx9POL /3sa9Nq4PwaZuPsAIXNtMRFlOU22u6fFvohFt0gK5WhTv/hy6zSftNnKfmQgjpGk57ZJ Ekw6MbFeCYj++cNv9RxSNyd9L2IcsvZLzAbxarWC3YZbM5esWAwq1XgrR6V53aIGkjEc gAZx/g4lbeW6sv31xEX0nY2l5ymjFaLrM5qxydvm9AYiNPZC8jzitkwK4hay1fga5m7Y 6pSw== X-Gm-Message-State: AODbwcC6WGEVASqJxCBnCttJhAtpu58X7oin9Y0yIxuVJPqRttm4A+up aqnqQhkdRXv47KDoq6s= X-Received: by 10.99.218.69 with SMTP id l5mr17437550pgj.88.1496597789170; Sun, 04 Jun 2017 10:36:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:56 -0700 Message-Id: <20170604173509.29684-57-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::243 Subject: [Qemu-devel] [PULL 56/69] target/s390x: fix COMPARE LOGICAL LONG EXTENDED 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno There are multiple issues with the COMPARE LOGICAL LONG EXTENDED instruction: - The test between the two operands is inverted, leading to an inversion of the cc values 1 and 2. - The address and length of an operand continue to be decreased after reaching the end of this operand. These values are then wrong write back to the registers. - We should limit the amount of bytes to process, so that interrupts can be served correctly. At the same time rename dest into src1 and src into src3 to match the operand names and make the code less confusing. Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-18-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 54 ++++++++++++++++++++++++++++++++-----------= ---- target/s390x/translate.c | 20 +++++++++++++----- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 98a7aa2..e992fd9 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -666,35 +666,55 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, uint32_t r3) { uintptr_t ra =3D GETPC(); - uint64_t destlen =3D get_length(env, r1 + 1); - uint64_t dest =3D get_address(env, r1); - uint64_t srclen =3D get_length(env, r3 + 1); - uint64_t src =3D get_address(env, r3); + uint64_t src1len =3D get_length(env, r1 + 1); + uint64_t src1 =3D get_address(env, r1); + uint64_t src3len =3D get_length(env, r3 + 1); + uint64_t src3 =3D get_address(env, r3); uint8_t pad =3D a2 & 0xff; + uint64_t len =3D MAX(src1len, src3len); uint32_t cc =3D 0; =20 - if (!(destlen || srclen)) { + if (!len) { return cc; } =20 - if (srclen > destlen) { - srclen =3D destlen; + /* Lest we fail to service interrupts in a timely manner, limit the + amount of work we're willing to do. For now, let's cap at 8k. */ + if (len > 0x2000) { + len =3D 0x2000; + cc =3D 3; } =20 - for (; destlen || srclen; src++, dest++, destlen--, srclen--) { - uint8_t v1 =3D srclen ? cpu_ldub_data_ra(env, src, ra) : pad; - uint8_t v2 =3D destlen ? cpu_ldub_data_ra(env, dest, ra) : pad; - if (v1 !=3D v2) { - cc =3D (v1 < v2) ? 1 : 2; + for (; len; len--) { + uint8_t v1 =3D pad; + uint8_t v3 =3D pad; + + if (src1len) { + v1 =3D cpu_ldub_data_ra(env, src1, ra); + } + if (src3len) { + v3 =3D cpu_ldub_data_ra(env, src3, ra); + } + + if (v1 !=3D v3) { + cc =3D (v1 < v3) ? 1 : 2; break; } + + if (src1len) { + src1++; + src1len--; + } + if (src3len) { + src3++; + src3len--; + } } =20 - set_length(env, r1 + 1, destlen); - /* can't use srclen here, we trunc'ed it */ - set_length(env, r3 + 1, env->regs[r3 + 1] - src - env->regs[r3]); - set_address(env, r1, dest); - set_address(env, r3, src); + set_length(env, r1 + 1, src1len); + set_length(env, r3 + 1, src3len); + set_address(env, r1, src1); + set_address(env, r3, src3); =20 return cc; } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 95ca53c..9309e58 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1917,11 +1917,21 @@ static ExitStatus op_clc(DisasContext *s, DisasOps = *o) =20 static ExitStatus op_clcle(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); - TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); - gen_helper_clcle(cc_op, cpu_env, r1, o->in2, r3); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); + int r1 =3D get_field(s->fields, r1); + int r3 =3D get_field(s->fields, r3); + TCGv_i32 t1, t3; + + /* r1 and r3 must be even. */ + if (r1 & 1 || r3 & 1) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + + t1 =3D tcg_const_i32(r1); + t3 =3D tcg_const_i32(r3); + gen_helper_clcle(cc_op, cpu_env, t1, o->in2, t3); + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t3); set_cc_static(s); return NO_EXIT; } --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599832622377.48203521777316; Sun, 4 Jun 2017 11:10:32 -0700 (PDT) Received: from localhost ([::1]:57981 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZyx-0006mH-1m for importer@patchew.org; Sun, 04 Jun 2017 14:10:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50784) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZS7-0008Gu-Td for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZS3-0003xv-Vz for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:35 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:33403) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZS3-0003wr-Nw for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:31 -0400 Received: by mail-pf0-x243.google.com with SMTP id f27so18146954pfe.0 for ; Sun, 04 Jun 2017 10:36:31 -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.36.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:29 -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=d7djbnB8ck/1QpOhf/B7FKEGcIKO0DwcfySYZq8pIW0=; b=GnPR1LRZ5cIyMUJFKpA+edkJ4DbDlXSiscfWv2PFpIQBL56bmCkh/cjhau9eJlnKCs HdSgK2PWONzy1M/YVgOMcaRcr/skfHPsPUP3ZBlhK5SaoeEbe/KLWo67YH1st/h3aN5o UUxKuvAc6a2pk1kPCUW2r5fHAuQNcdD+/6FOZbCw4PmFz85Mahxr6wbXJ1kwXgasd+oE iVnPjRfQP7PIEN5o5vbMSKsWoZ2V4h6FWIdNNE1Ou38nhv0tbgERUvP+I2RcE5zr8az9 XwQ2IhYTInBs7J0I65he+ID8aCwPgiYC+O7SuXLC9QspU4puNv1qLaXLZ4u/pDRk5jeN DaoA== 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=d7djbnB8ck/1QpOhf/B7FKEGcIKO0DwcfySYZq8pIW0=; b=lcIPuwRkpjCwKBbuegtvQDfKfKFI376QoX8SCKRo/j8bNciQx82/gqkJLCFXfmPPR9 48q5AWRDUJuOKe+Wbvba3qHwotwO5wve03pctj6V4jaxl2zGczlMdgBjPcTvbhzYIaSi Rt8gfP7s12NpepUn/vZuW2W83yuPGYdLBNE4S1hGTF/Q2vXwyUzfd5w6+2kRjz6cT8k8 u14d3lle7hvTG6OxWIZly/k7c1GLiWRX1Y4WptjQhxIcpGKF+uUjzIeGua1EY2agEveh FfHMLu3O0u5T0oqR5lZdnHyPZsiTYEvCHfN77R9ns39rAJxZx2NPMTT2mKxp1g6Ppnk7 JnTA== X-Gm-Message-State: AODbwcDsWCjjj+nwpGnSIAHjRGN3UDLehQrAA8CBHX43fT15iDnonkuY Up7t5hGHDDDgAImNrlo= X-Received: by 10.99.5.147 with SMTP id 141mr17152349pgf.134.1496597790652; Sun, 04 Jun 2017 10:36:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:57 -0700 Message-Id: <20170604173509.29684-58-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:c00::243 Subject: [Qemu-devel] [PULL 57/69] target/s390x: implement COMPARE LOGICAL LONG 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno As CLCL and CLCLE mostly differ by their operands, use a common do_clcl helper. Another difference is that CLCL is not interruptible. Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-19-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 84 +++++++++++++++++++++++++++++++++---------= ---- target/s390x/translate.c | 21 ++++++++++++ 4 files changed, 84 insertions(+), 24 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index ba21e4d..546beec 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -6,6 +6,7 @@ DEF_HELPER_FLAGS_4(mvc, TCG_CALL_NO_WG, void, env, i32, i64= , i64) DEF_HELPER_FLAGS_4(mvcin, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(clc, TCG_CALL_NO_WG, i32, env, i32, i64, i64) DEF_HELPER_3(mvcl, i32, env, i32, i32) +DEF_HELPER_3(clcl, i32, env, i32, i32) DEF_HELPER_FLAGS_4(clm, TCG_CALL_NO_WG, i32, env, i32, i32, i64) DEF_HELPER_FLAGS_3(divs32, TCG_CALL_NO_WG, s64, env, s64, s64) DEF_HELPER_FLAGS_3(divu32, TCG_CALL_NO_WG, i64, env, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index b40611b..1aa2b8b 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -216,6 +216,8 @@ C(0xc60e, CLGFRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu64) C(0xc607, CLHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu32) C(0xc606, CLGHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu64) +/* COMPARE LOGICAL LONG */ + C(0x0f00, CLCL, RR_a, Z, 0, 0, 0, 0, clcl, 0) /* COMPARE LOGICAL LONG EXTENDED */ C(0xa900, CLCLE, RS_a, Z, 0, a2, 0, 0, clcle, 0) /* COMPARE LOGICAL CHARACTERS UNDER MASK */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index e992fd9..aaa347c 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -661,17 +661,14 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, return cc; } =20 -/* compare logical long extended memcompare insn with padding */ -uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1, uint64_t a2, - uint32_t r3) -{ - uintptr_t ra =3D GETPC(); - uint64_t src1len =3D get_length(env, r1 + 1); - uint64_t src1 =3D get_address(env, r1); - uint64_t src3len =3D get_length(env, r3 + 1); - uint64_t src3 =3D get_address(env, r3); - uint8_t pad =3D a2 & 0xff; - uint64_t len =3D MAX(src1len, src3len); +/* compare logical long helper */ +static inline uint32_t do_clcl(CPUS390XState *env, + uint64_t *src1, uint64_t *src1len, + uint64_t *src3, uint64_t *src3len, + uint8_t pad, uint64_t limit, + uintptr_t ra) +{ + uint64_t len =3D MAX(*src1len, *src3len); uint32_t cc =3D 0; =20 if (!len) { @@ -679,9 +676,9 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1,= uint64_t a2, } =20 /* Lest we fail to service interrupts in a timely manner, limit the - amount of work we're willing to do. For now, let's cap at 8k. */ - if (len > 0x2000) { - len =3D 0x2000; + amount of work we're willing to do. */ + if (len > limit) { + len =3D limit; cc =3D 3; } =20 @@ -689,11 +686,11 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, uint8_t v1 =3D pad; uint8_t v3 =3D pad; =20 - if (src1len) { - v1 =3D cpu_ldub_data_ra(env, src1, ra); + if (*src1len) { + v1 =3D cpu_ldub_data_ra(env, *src1, ra); } - if (src3len) { - v3 =3D cpu_ldub_data_ra(env, src3, ra); + if (*src3len) { + v3 =3D cpu_ldub_data_ra(env, *src3, ra); } =20 if (v1 !=3D v3) { @@ -701,16 +698,55 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, break; } =20 - if (src1len) { - src1++; - src1len--; + if (*src1len) { + *src1 +=3D 1; + *src1len -=3D 1; } - if (src3len) { - src3++; - src3len--; + if (*src3len) { + *src3 +=3D 1; + *src3len -=3D 1; } } =20 + return cc; +} + + +/* compare logical long */ +uint32_t HELPER(clcl)(CPUS390XState *env, uint32_t r1, uint32_t r2) +{ + uintptr_t ra =3D GETPC(); + uint64_t src1len =3D extract64(env->regs[r1 + 1], 0, 24); + uint64_t src1 =3D get_address(env, r1); + uint64_t src3len =3D extract64(env->regs[r2 + 1], 0, 24); + uint64_t src3 =3D get_address(env, r2); + uint8_t pad =3D env->regs[r2 + 1] >> 24; + uint32_t cc; + + cc =3D do_clcl(env, &src1, &src1len, &src3, &src3len, pad, -1, ra); + + env->regs[r1 + 1] =3D deposit64(env->regs[r1 + 1], 0, 24, src1len); + env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, src3len); + set_address(env, r1, src1); + set_address(env, r2, src3); + + return cc; +} + +/* compare logical long extended memcompare insn with padding */ +uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1, uint64_t a2, + uint32_t r3) +{ + uintptr_t ra =3D GETPC(); + uint64_t src1len =3D get_length(env, r1 + 1); + uint64_t src1 =3D get_address(env, r1); + uint64_t src3len =3D get_length(env, r3 + 1); + uint64_t src3 =3D get_address(env, r3); + uint8_t pad =3D a2; + uint32_t cc; + + cc =3D do_clcl(env, &src1, &src1len, &src3, &src3len, pad, 0x2000, ra); + set_length(env, r1 + 1, src1len); set_length(env, r3 + 1, src3len); set_address(env, r1, src1); diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 9309e58..999d716 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1915,6 +1915,27 @@ static ExitStatus op_clc(DisasContext *s, DisasOps *= o) return NO_EXIT; } =20 +static ExitStatus op_clcl(DisasContext *s, DisasOps *o) +{ + int r1 =3D get_field(s->fields, r1); + int r2 =3D get_field(s->fields, r2); + TCGv_i32 t1, t2; + + /* r1 and r2 must be even. */ + if (r1 & 1 || r2 & 1) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + + t1 =3D tcg_const_i32(r1); + t2 =3D tcg_const_i32(r2); + gen_helper_clcl(cc_op, cpu_env, t1, t2); + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t2); + set_cc_static(s); + return NO_EXIT; +} + static ExitStatus op_clcle(DisasContext *s, DisasOps *o) { int r1 =3D get_field(s->fields, r1); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599726487575.5671585119462; Sun, 4 Jun 2017 11:08:46 -0700 (PDT) Received: from localhost ([::1]:57970 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZxE-0005Ld-Lf for importer@patchew.org; Sun, 04 Jun 2017 14:08:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50786) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZS7-0008Gw-UI for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZS5-000405-Ap for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:35 -0400 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:35824) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZS5-0003z2-4l for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:33 -0400 Received: by mail-pg0-x242.google.com with SMTP id f127so7257052pgc.2 for ; Sun, 04 Jun 2017 10:36:33 -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.36.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:31 -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=WL1hZoy4boXIdWsTYPmxEBfEFKVBziZ+X95eyyvv03Q=; b=DKwL49139VlEgL3y/P23zhJq9fVViNWCP2vUo+37NDNdaSpwuYjku1j55pAVXlEYDZ pe03o8RyHGhvRgoC7Z42zKKK/Eq9WywlfggKLLm1hKyoBqADN8TQaRvGH6kBuopxpwD6 1Gk+QNwUQ7kBfXYZJcU3cwZ2RctamuXpZq6TGZ9OqbppfcbBmx0ZpEYvWxbuBHsmpEdu uIyU+rXEwjREP6e0YTBehQV0Fa6Y74OUyQi/+kXfmM1z8vRQ/Zgndfl38OCRrw9CeZQB 6pu04W506+fqUyNATLpDQ9hmdJzLq6wImwqAWTqeygZJFzfXMnYvUkL+PcFtEWNDCYx/ S5cg== 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=WL1hZoy4boXIdWsTYPmxEBfEFKVBziZ+X95eyyvv03Q=; b=suEuwGKFYBLBhc2N7gv+ivlBHOFOZvRoYMFi90YuC2zSy1yyl9qeYGBRFekHJHWEMA 5xBjKnpbOuTAybxiCxeK1zd/nDxNpseYYuAIwQKuUeDlKSrYmRikHrK07GVuijEGFXWw RhxHU+01qmeyWcLaPBvGsmBxE6V7mrTVh0CWJhycp0ZnMJ+/8apj41rYmrl0dZ8JHljv Jh0ZGCHVMuEpKtxMwvLgHByLEoQC2laXHepe7seWsbY+3lgCNZnt1ISFWaawvl4PjlCz hqlROGExEqdnOETEuvjV/IahCR8waL8rbKLuQznU0UNT0I4ALVh3UzwhKLBEikRDOFIK JOkA== X-Gm-Message-State: AODbwcBYWHQAtZHc4A6P4/5R0wLtcvU7tS/Tx+huGhqVfZz2LFXUsWI9 0UCpsSF0AOUTVgbVeeM= X-Received: by 10.98.88.196 with SMTP id m187mr1111098pfb.87.1496597792081; Sun, 04 Jun 2017 10:36:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:58 -0700 Message-Id: <20170604173509.29684-59-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 58/69] target/s390x: fix adj_len_to_page 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno adj_len_to_page doesn't return the correct result when the address is already page aligned and the length is bigger than a page. Fix that. Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-20-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index aaa347c..6dfa087 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -61,7 +61,7 @@ static inline uint32_t adj_len_to_page(uint32_t len, uint= 64_t addr) { #ifndef CONFIG_USER_ONLY if ((addr & ~TARGET_PAGE_MASK) + len - 1 >=3D TARGET_PAGE_SIZE) { - return -addr & ~TARGET_PAGE_MASK; + return -(addr | TARGET_PAGE_MASK); } #endif return len; --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599885202126.7248427923447; Sun, 4 Jun 2017 11:11:25 -0700 (PDT) Received: from localhost ([::1]:57984 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZzm-0007W5-OA for importer@patchew.org; Sun, 04 Jun 2017 14:11:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50789) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZS8-0008H9-4R for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZS6-00041Q-QA for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:36 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:35825) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZS6-00040m-HV for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:34 -0400 Received: by mail-pg0-x241.google.com with SMTP id f127so7257090pgc.2 for ; Sun, 04 Jun 2017 10:36:34 -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.36.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:32 -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=TT3D0mQseV77hu12Q6m4LlW0kLdzrABf5xjxLvUXbvY=; b=hJ3qTU2KIj219s0sFLOuAueMq4Gs4TuJ7GCtYPgmSle3qGdxgM0eZJ1GrootjKljuL CYts9WDaE7Yi6e3aTDtt3zjQS5bKDyUUjWvLi2fTPaTJ9dDQHKhVpEcQrLHn1M87lRvT H6Na+sFydmQfCZnC+R4HSHcbTbOKV7yQMk5ux+M3WfNpEIvqIZTV7Rau4zihL8rlPdVn 8F15FJBa/R5pg4eHcnKDGi6unf6+YoR6ji+ExboiEYBGPi+P6BSZ0zb4ASqr3Fz0XZw0 n2fkdeP8Pc6iQFy0NhxmwyErF5+aEwmGr+1qgUDGrZcQABAYbIjtg9yIq8pE106fZFdu blCA== 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=TT3D0mQseV77hu12Q6m4LlW0kLdzrABf5xjxLvUXbvY=; b=NZ55XevKe6EuUpeH2DnqVDDrzt0nS5+j0U8+0bWPicraOrpRqs3vB5/YRWdLttow6f ntXRRBCT/kdQncY+KsjDKvktZcT5K3cVeXegWOKPp3oIOlxkJeQ6XrSqJ4iumz1mPxYQ Ehj3rRJDUHIhVfRMlltq18o+pqBjKcgQKPAHAcz1nb0Vz4HRezIl8TER9jLkTCZp/JR6 sWNjWzai+nBQPM4N8V4uZonHh4s0tHEjcUSLZHU95G8OnLr7iqhS7cl7/Rqu7w7bKGqy nYWdaMIf3wmIsxLLS1gtokkd4G4gfGEW8XShv9y4obJfm2wMQoZuSxIKRKyAzjlZAF6s eOow== X-Gm-Message-State: AODbwcDw6yXEbnrfYRnsQyiUY85J3mkr+rs+iFp8f8fPSA49G0HZ6pyG z0I72w97Ne5dyI3mlGQ= X-Received: by 10.84.213.129 with SMTP id g1mr7871682pli.202.1496597793438; Sun, 04 Jun 2017 10:36:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:34:59 -0700 Message-Id: <20170604173509.29684-60-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::241 Subject: [Qemu-devel] [PULL 59/69] target/s390x: improve MOVE LONG and MOVE LONG EXTENDED 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno As MVCL and MVCLE only differ by their operands, use a common do_mvcl helper. Optimize it calling fast_memmove and fast_memset. Correctly write back addresses. Check that r1 and r2/r3 registers are even. Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-21-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 90 +++++++++++++++++++++----------------------= ---- target/s390x/translate.c | 40 +++++++++++++++------ 2 files changed, 70 insertions(+), 60 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 6dfa087..cb0ec3e 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -576,49 +576,60 @@ void HELPER(stam)(CPUS390XState *env, uint32_t r1, ui= nt64_t a2, uint32_t r3) } } =20 -/* move long */ -uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, uint32_t r2) +/* move long helper */ +static inline uint32_t do_mvcl(CPUS390XState *env, + uint64_t *dest, uint64_t *destlen, + uint64_t *src, uint64_t *srclen, + uint8_t pad, uintptr_t ra) { - uintptr_t ra =3D GETPC(); - uint64_t destlen =3D env->regs[r1 + 1] & 0xffffff; - uint64_t dest =3D get_address(env, r1); - uint64_t srclen =3D env->regs[r2 + 1] & 0xffffff; - uint64_t src =3D get_address(env, r2); - uint8_t pad =3D env->regs[r2 + 1] >> 24; - uint8_t v; + uint64_t len =3D MIN(*srclen, *destlen); uint32_t cc; =20 - if (destlen =3D=3D srclen) { + if (*destlen =3D=3D *srclen) { cc =3D 0; - } else if (destlen < srclen) { + } else if (*destlen < *srclen) { cc =3D 1; } else { cc =3D 2; } =20 - if (srclen > destlen) { - srclen =3D destlen; - } + /* Copy the src array */ + fast_memmove(env, *dest, *src, len, ra); + *src +=3D len; + *srclen -=3D len; + *dest +=3D len; + *destlen -=3D len; =20 - for (; destlen && srclen; src++, dest++, destlen--, srclen--) { - v =3D cpu_ldub_data_ra(env, src, ra); - cpu_stb_data_ra(env, dest, v, ra); - } + /* Pad the remaining area */ + fast_memset(env, *dest, pad, *destlen, ra); + *dest +=3D *destlen; + *destlen =3D 0; =20 - for (; destlen; dest++, destlen--) { - cpu_stb_data_ra(env, dest, pad, ra); - } + return cc; +} =20 - env->regs[r1 + 1] =3D destlen; - /* can't use srclen here, we trunc'ed it */ - env->regs[r2 + 1] -=3D src - env->regs[r2]; +/* move long */ +uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, uint32_t r2) +{ + uintptr_t ra =3D GETPC(); + uint64_t destlen =3D env->regs[r1 + 1] & 0xffffff; + uint64_t dest =3D get_address(env, r1); + uint64_t srclen =3D env->regs[r2 + 1] & 0xffffff; + uint64_t src =3D get_address(env, r2); + uint8_t pad =3D env->regs[r2 + 1] >> 24; + uint32_t cc; + + cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, ra); + + env->regs[r1 + 1] =3D deposit64(env->regs[r1 + 1], 0, 24, destlen); + env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, srclen); set_address(env, r1, dest); set_address(env, r2, src); =20 return cc; } =20 -/* move long extended another memcopy insn with more bells and whistles */ +/* move long extended */ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r1, uint64_t a2, uint32_t r3) { @@ -627,34 +638,13 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, uint64_t dest =3D get_address(env, r1); uint64_t srclen =3D get_length(env, r3 + 1); uint64_t src =3D get_address(env, r3); - uint8_t pad =3D a2 & 0xff; - uint8_t v; + uint8_t pad =3D a2; uint32_t cc; =20 - if (destlen =3D=3D srclen) { - cc =3D 0; - } else if (destlen < srclen) { - cc =3D 1; - } else { - cc =3D 2; - } - - if (srclen > destlen) { - srclen =3D destlen; - } - - for (; destlen && srclen; src++, dest++, destlen--, srclen--) { - v =3D cpu_ldub_data_ra(env, src, ra); - cpu_stb_data_ra(env, dest, v, ra); - } - - for (; destlen; dest++, destlen--) { - cpu_stb_data_ra(env, dest, pad, ra); - } + cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, ra); =20 - set_length(env, r1 + 1 , destlen); - /* can't use srclen here, we trunc'ed it */ - set_length(env, r3 + 1, env->regs[r3 + 1] - src - env->regs[r3]); + set_length(env, r1 + 1, destlen); + set_length(env, r3 + 1, srclen); set_address(env, r1, dest); set_address(env, r3, src); =20 diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 999d716..729d25d 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2981,22 +2981,42 @@ static ExitStatus op_mvcin(DisasContext *s, DisasOp= s *o) =20 static ExitStatus op_mvcl(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); - TCGv_i32 r2 =3D tcg_const_i32(get_field(s->fields, r2)); - gen_helper_mvcl(cc_op, cpu_env, r1, r2); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r2); + int r1 =3D get_field(s->fields, r1); + int r2 =3D get_field(s->fields, r2); + TCGv_i32 t1, t2; + + /* r1 and r2 must be even. */ + if (r1 & 1 || r2 & 1) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + + t1 =3D tcg_const_i32(r1); + t2 =3D tcg_const_i32(r2); + gen_helper_mvcl(cc_op, cpu_env, t1, t2); + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t2); set_cc_static(s); return NO_EXIT; } =20 static ExitStatus op_mvcle(DisasContext *s, DisasOps *o) { - TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); - TCGv_i32 r3 =3D tcg_const_i32(get_field(s->fields, r3)); - gen_helper_mvcle(cc_op, cpu_env, r1, o->in2, r3); - tcg_temp_free_i32(r1); - tcg_temp_free_i32(r3); + int r1 =3D get_field(s->fields, r1); + int r3 =3D get_field(s->fields, r3); + TCGv_i32 t1, t3; + + /* r1 and r3 must be even. */ + if (r1 & 1 || r3 & 1) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + + t1 =3D tcg_const_i32(r1); + t3 =3D tcg_const_i32(r3); + gen_helper_mvcle(cc_op, cpu_env, t1, o->in2, t3); + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t3); set_cc_static(s); return NO_EXIT; } --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600191735731.7310098803407; Sun, 4 Jun 2017 11:16:31 -0700 (PDT) Received: from localhost ([::1]:58014 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa4k-00049X-DS for importer@patchew.org; Sun, 04 Jun 2017 14:16:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50809) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZS9-0008Iq-NA for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZS8-00043a-6d for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:37 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:35931) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZS7-00042X-Vt for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:36 -0400 Received: by mail-pg0-x241.google.com with SMTP id v18so3987495pgb.3 for ; Sun, 04 Jun 2017 10:36:35 -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.36.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:34 -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=aOXfAf74TOSfHJlw3djcI7lDpJhIEs0EkFpKXQk6zIc=; b=MXG+/0LpDabBUXw9Myl/NLtEoq+cTDEshjyHZnIzQc09zovzKQOFoqBaJNcQ5DS+b0 76rFK+vnOsEZXb2O9Cboc4Ro1HWwq91VlLsud4R2QbT5vvRQongH0TRAtDqIIMCvEzQ0 zStUE8rMFPsa8I8gE/n/XpC8vQwPi5BvYOVNg2/OCQcJXbBxL+PdZ0B+LcIiuRquTNUa I8DDOa7KwUaWg4Sdx0GMyrzrn9qzAVKbh4ak1BwQ70hIjAenMnzx4YKIeVTrzADr05UE tNewQcRmTvjGQ6w8O/nhXiQWkkQ9XkXENO3XX0U5sY7JFtWkAeY4hw3U9FQU22ZNEjgC 8FTQ== 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=aOXfAf74TOSfHJlw3djcI7lDpJhIEs0EkFpKXQk6zIc=; b=oKadF52Ulir60zOiJHboQKLptNQI4bcFaAQXRTUjWZemimWe+v5b5m3EJfW8sqc8Zh lBjH98CF8ox/DgOowVFwVy0YWHYhRUsU9FuDCGBHac+LgKeuHEmNwAuBrQ5FLaQ71Ze3 mgN1i973Y9ia8Lytp0VJirHFNYCKlUHivenbuGfg//w8yNlV8E0xPkoS65V9Va0IyPDu 3K9tTUa3tdjmUIc7j9XemtTJR3hKR2FBhd9p1J6ZWR+6DXqtWJZSGjYT592BsxQdcTp+ aj43oyNm3QiTHxxOCuwS2BKO3RIJdpZYFRoE24GUF2t/hvYwlrDj8aWwtYAeLYZusKLo xEGw== X-Gm-Message-State: AODbwcCxIJdbtSo2so9eBkf74IowK7H50zNY7SJY2LErVtiDOqT0Hjn+ 1jL8ncZFeeka+EIVIfs= X-Received: by 10.84.174.197 with SMTP id r63mr10684303plb.36.1496597794881; Sun, 04 Jun 2017 10:36:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:00 -0700 Message-Id: <20170604173509.29684-61-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::241 Subject: [Qemu-devel] [PULL 60/69] target/s390x: implement COMPARE LOGICAL LONG UNICODE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno For that we need to make program_interrupt available to qemu-user. Fortunately there is almost nothing to change as both kvm_enabled and CONFIG_KVM evaluate to false in that case. Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-22-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 76 ++++++++++++++++++++++++++++++++++++++----= ---- target/s390x/misc_helper.c | 4 +-- target/s390x/translate.c | 22 ++++++++++++++ 5 files changed, 90 insertions(+), 15 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 546beec..509e3f3 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -24,6 +24,7 @@ DEF_HELPER_FLAGS_4(stam, TCG_CALL_NO_WG, void, env, i32, = i64, i32) DEF_HELPER_FLAGS_4(lam, TCG_CALL_NO_WG, void, env, i32, i64, i32) DEF_HELPER_4(mvcle, i32, env, i32, i64, i32) DEF_HELPER_4(clcle, i32, env, i32, i64, i32) +DEF_HELPER_4(clclu, i32, env, i32, i64, i32) DEF_HELPER_3(cegb, i64, env, s64, i32) DEF_HELPER_3(cdgb, i64, env, s64, i32) DEF_HELPER_3(cxgb, i64, env, s64, i32) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 1aa2b8b..c781a97 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -220,6 +220,8 @@ C(0x0f00, CLCL, RR_a, Z, 0, 0, 0, 0, clcl, 0) /* COMPARE LOGICAL LONG EXTENDED */ C(0xa900, CLCLE, RS_a, Z, 0, a2, 0, 0, clcle, 0) +/* COMPARE LOGICAL LONG UNICODE */ + C(0xeb8f, CLCLU, RSY_a, E2, 0, a2, 0, 0, clclu, 0) /* COMPARE LOGICAL CHARACTERS UNDER MASK */ C(0xbd00, CLM, RS_b, Z, r1_o, a2, 0, 0, clm, 0) C(0xeb21, CLMY, RSY_b, LD, r1_o, a2, 0, 0, clm, 0) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index cb0ec3e..59992fa 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -67,6 +67,32 @@ static inline uint32_t adj_len_to_page(uint32_t len, uin= t64_t addr) return len; } =20 +/* Trigger a SPECIFICATION exception if an address or a length is not + naturally aligned. */ +static inline void check_alignment(CPUS390XState *env, uint64_t v, + int wordsize, uintptr_t ra) +{ + if (v % wordsize) { + CPUState *cs =3D CPU(s390_env_get_cpu(env)); + cpu_restore_state(cs, ra); + program_interrupt(env, PGM_SPECIFICATION, 6); + } +} + +/* Load a value from memory according to its size. */ +static inline uint64_t cpu_ldusize_data_ra(CPUS390XState *env, uint64_t ad= dr, + int wordsize, uintptr_t ra) +{ + switch (wordsize) { + case 1: + return cpu_ldub_data_ra(env, addr, ra); + case 2: + return cpu_lduw_data_ra(env, addr, ra); + default: + abort(); + } +} + static void fast_memset(CPUS390XState *env, uint64_t dest, uint8_t byte, uint32_t l, uintptr_t ra) { @@ -655,12 +681,14 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r= 1, uint64_t a2, static inline uint32_t do_clcl(CPUS390XState *env, uint64_t *src1, uint64_t *src1len, uint64_t *src3, uint64_t *src3len, - uint8_t pad, uint64_t limit, - uintptr_t ra) + uint16_t pad, uint64_t limit, + int wordsize, uintptr_t ra) { uint64_t len =3D MAX(*src1len, *src3len); uint32_t cc =3D 0; =20 + check_alignment(env, *src1len | *src3len, wordsize, ra); + if (!len) { return cc; } @@ -672,15 +700,15 @@ static inline uint32_t do_clcl(CPUS390XState *env, cc =3D 3; } =20 - for (; len; len--) { - uint8_t v1 =3D pad; - uint8_t v3 =3D pad; + for (; len; len -=3D wordsize) { + uint16_t v1 =3D pad; + uint16_t v3 =3D pad; =20 if (*src1len) { - v1 =3D cpu_ldub_data_ra(env, *src1, ra); + v1 =3D cpu_ldusize_data_ra(env, *src1, wordsize, ra); } if (*src3len) { - v3 =3D cpu_ldub_data_ra(env, *src3, ra); + v3 =3D cpu_ldusize_data_ra(env, *src3, wordsize, ra); } =20 if (v1 !=3D v3) { @@ -689,12 +717,12 @@ static inline uint32_t do_clcl(CPUS390XState *env, } =20 if (*src1len) { - *src1 +=3D 1; - *src1len -=3D 1; + *src1 +=3D wordsize; + *src1len -=3D wordsize; } if (*src3len) { - *src3 +=3D 1; - *src3len -=3D 1; + *src3 +=3D wordsize; + *src3len -=3D wordsize; } } =20 @@ -713,7 +741,7 @@ uint32_t HELPER(clcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) uint8_t pad =3D env->regs[r2 + 1] >> 24; uint32_t cc; =20 - cc =3D do_clcl(env, &src1, &src1len, &src3, &src3len, pad, -1, ra); + cc =3D do_clcl(env, &src1, &src1len, &src3, &src3len, pad, -1, 1, ra); =20 env->regs[r1 + 1] =3D deposit64(env->regs[r1 + 1], 0, 24, src1len); env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, src3len); @@ -735,7 +763,29 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t r1= , uint64_t a2, uint8_t pad =3D a2; uint32_t cc; =20 - cc =3D do_clcl(env, &src1, &src1len, &src3, &src3len, pad, 0x2000, ra); + cc =3D do_clcl(env, &src1, &src1len, &src3, &src3len, pad, 0x2000, 1, = ra); + + set_length(env, r1 + 1, src1len); + set_length(env, r3 + 1, src3len); + set_address(env, r1, src1); + set_address(env, r3, src3); + + return cc; +} + +/* compare logical long unicode memcompare insn with padding */ +uint32_t HELPER(clclu)(CPUS390XState *env, uint32_t r1, uint64_t a2, + uint32_t r3) +{ + uintptr_t ra =3D GETPC(); + uint64_t src1len =3D get_length(env, r1 + 1); + uint64_t src1 =3D get_address(env, r1); + uint64_t src3len =3D get_length(env, r3 + 1); + uint64_t src3 =3D get_address(env, r3); + uint16_t pad =3D a2; + uint32_t cc =3D 0; + + cc =3D do_clcl(env, &src1, &src1len, &src3, &src3len, pad, 0x1000, 2, = ra); =20 set_length(env, r1 + 1, src1len); set_length(env, r3 + 1, src3len); diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index 1b9f448..edcdf17 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -80,8 +80,6 @@ void HELPER(exception)(CPUS390XState *env, uint32_t excp) cpu_loop_exit(cs); } =20 -#ifndef CONFIG_USER_ONLY - void program_interrupt(CPUS390XState *env, uint32_t code, int ilen) { S390CPU *cpu =3D s390_env_get_cpu(env); @@ -108,6 +106,8 @@ void program_interrupt(CPUS390XState *env, uint32_t cod= e, int ilen) } } =20 +#ifndef CONFIG_USER_ONLY + /* SCLP service call */ uint32_t HELPER(servc)(CPUS390XState *env, uint64_t r1, uint64_t r2) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 729d25d..892949a 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1200,6 +1200,7 @@ typedef enum DisasFacility { FAC_ILA, /* interlocked access facility 1 */ FAC_LPP, /* load-program-parameter */ FAC_DAT_ENH, /* DAT-enhancement */ + FAC_E2, /* extended-translation facility 2 */ } DisasFacility; =20 struct DisasInsn { @@ -1957,6 +1958,27 @@ static ExitStatus op_clcle(DisasContext *s, DisasOps= *o) return NO_EXIT; } =20 +static ExitStatus op_clclu(DisasContext *s, DisasOps *o) +{ + int r1 =3D get_field(s->fields, r1); + int r3 =3D get_field(s->fields, r3); + TCGv_i32 t1, t3; + + /* r1 and r3 must be even. */ + if (r1 & 1 || r3 & 1) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + + t1 =3D tcg_const_i32(r1); + t3 =3D tcg_const_i32(r3); + gen_helper_clclu(cc_op, cpu_env, t1, o->in2, t3); + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t3); + set_cc_static(s); + return NO_EXIT; +} + static ExitStatus op_clm(DisasContext *s, DisasOps *o) { TCGv_i32 m3 =3D tcg_const_i32(get_field(s->fields, m3)); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600317177268.7553902884291; Sun, 4 Jun 2017 11:18:37 -0700 (PDT) Received: from localhost ([::1]:58020 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa6l-0005j9-MP for importer@patchew.org; Sun, 04 Jun 2017 14:18:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50823) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSA-0008Jh-N7 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZS9-00044u-Gn for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:38 -0400 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:35075) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZS9-00044A-9Q for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:37 -0400 Received: by mail-pf0-x244.google.com with SMTP id u26so18119796pfd.2 for ; Sun, 04 Jun 2017 10:36:37 -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.36.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:35 -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=+IrUjH7Kjev0p2cebWwJYfUFmxL7msRbGwZA0KoqmGs=; b=N+0876afrSGr5p8mkkNPGvXODkzdFIF+wc0G1WybAQz76XoMIv66laXu34gx9ocrXV 3l7a6tn3NLCXLcToHNA5/22TCdUyOG/cpHiqeE7ZstXLm8uWnfnnVUIzedIOHRMCYIZ7 4dDJh+t+jPDUHtRiaWb7DmZikkoBsUYIagRqe5W6mxxSpJQRrStVSd1JqqgKN12C25yq nMdawy7gUCGgy5Yzjm5OrJfQz+Mi6/bTwZQRCXdhTFMtvXQkLVZVQG28w7q/28z2VY9i IgGM57pDdcDUrFukWRFgfn0xlfw3lMwbsREeBK5oD0v6M0ODQ/JS0FTGLsi3XEzJ7tg4 xomw== 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=+IrUjH7Kjev0p2cebWwJYfUFmxL7msRbGwZA0KoqmGs=; b=gOgUdd1fp/6KryP4xz0wmoOAQSOvD6Dd7N3GIIf425FgT+nF+8aTE3LVqZ1rdNK6hO lEXks7OJBzqiTpefKRvPE8Rnb6cBmU+t/mOdWfqDf/TqTKHk4XcnPPpBgNDTbSm8l2RS HCWy10IyK2djmCBP9qeB41+S/OL71Jp9UDAuTahALbwcJ436PjiEDau9fgcZum2eZ+Lc d427VzoD14tGc9sbfrg42uKj2j4OgxcvDMs+sU/FAonIOiHoqdnATuPLOQ4vyysRNMoS NcpqMiGksHhZWwd9x20BPuwS9PedVhTShdnGVO1BOaRNioFMbTLPRsanGLkYO7tioMEB joOg== X-Gm-Message-State: AODbwcBaILWMHGBlCMZfIHjW6ViQnWJ4MEGQqBKc5y7A6G7z6enqwwbe 4bl4MBEYS9Ue2lXH1UA= X-Received: by 10.84.238.131 with SMTP id v3mr10681856plk.168.1496597796205; Sun, 04 Jun 2017 10:36:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:01 -0700 Message-Id: <20170604173509.29684-62-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:c00::244 Subject: [Qemu-devel] [PULL 61/69] target/s390x: implement MOVE LONG UNICODE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-23-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 47 ++++++++++++++++++++++++++++++++++++++++--= ---- target/s390x/translate.c | 21 +++++++++++++++++++++ 4 files changed, 65 insertions(+), 6 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 509e3f3..5811911 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -23,6 +23,7 @@ DEF_HELPER_4(ex, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(stam, TCG_CALL_NO_WG, void, env, i32, i64, i32) DEF_HELPER_FLAGS_4(lam, TCG_CALL_NO_WG, void, env, i32, i64, i32) DEF_HELPER_4(mvcle, i32, env, i32, i64, i32) +DEF_HELPER_4(mvclu, i32, env, i32, i64, i32) DEF_HELPER_4(clcle, i32, env, i32, i64, i32) DEF_HELPER_4(clclu, i32, env, i32, i64, i32) DEF_HELPER_3(cegb, i64, env, s64, i32) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index c781a97..e3b7b78 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -582,6 +582,8 @@ C(0x0e00, MVCL, RR_a, Z, 0, 0, 0, 0, mvcl, 0) /* MOVE LONG EXTENDED */ C(0xa800, MVCLE, RS_a, Z, 0, a2, 0, 0, mvcle, 0) +/* MOVE LONG UNICODE */ + C(0xeb8e, MVCLU, RSY_a, E2, 0, a2, 0, 0, mvclu, 0) /* MOVE NUMERICS */ C(0xd100, MVN, SS_a, Z, la1, a2, 0, 0, mvn, 0) /* MOVE PAGE */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 59992fa..a2d65cf 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -606,7 +606,7 @@ void HELPER(stam)(CPUS390XState *env, uint32_t r1, uint= 64_t a2, uint32_t r3) static inline uint32_t do_mvcl(CPUS390XState *env, uint64_t *dest, uint64_t *destlen, uint64_t *src, uint64_t *srclen, - uint8_t pad, uintptr_t ra) + uint16_t pad, int wordsize, uintptr_t ra) { uint64_t len =3D MIN(*srclen, *destlen); uint32_t cc; @@ -627,9 +627,22 @@ static inline uint32_t do_mvcl(CPUS390XState *env, *destlen -=3D len; =20 /* Pad the remaining area */ - fast_memset(env, *dest, pad, *destlen, ra); - *dest +=3D *destlen; - *destlen =3D 0; + if (wordsize =3D=3D 1) { + fast_memset(env, *dest, pad, *destlen, ra); + *dest +=3D *destlen; + *destlen =3D 0; + } else { + /* If remaining length is odd, pad with odd byte first. */ + if (*destlen & 1) { + cpu_stb_data_ra(env, *dest, pad & 0xff, ra); + *dest +=3D 1; + *destlen -=3D 1; + } + /* The remaining length is even, pad using words. */ + for (; *destlen; *dest +=3D 2, *destlen -=3D 2) { + cpu_stw_data_ra(env, *dest, pad, ra); + } + } =20 return cc; } @@ -645,7 +658,7 @@ uint32_t HELPER(mvcl)(CPUS390XState *env, uint32_t r1, = uint32_t r2) uint8_t pad =3D env->regs[r2 + 1] >> 24; uint32_t cc; =20 - cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, ra); + cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, 1, ra); =20 env->regs[r1 + 1] =3D deposit64(env->regs[r1 + 1], 0, 24, destlen); env->regs[r2 + 1] =3D deposit64(env->regs[r2 + 1], 0, 24, srclen); @@ -667,7 +680,29 @@ uint32_t HELPER(mvcle)(CPUS390XState *env, uint32_t r1= , uint64_t a2, uint8_t pad =3D a2; uint32_t cc; =20 - cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, ra); + cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, 1, ra); + + set_length(env, r1 + 1, destlen); + set_length(env, r3 + 1, srclen); + set_address(env, r1, dest); + set_address(env, r3, src); + + return cc; +} + +/* move long unicode */ +uint32_t HELPER(mvclu)(CPUS390XState *env, uint32_t r1, uint64_t a2, + uint32_t r3) +{ + uintptr_t ra =3D GETPC(); + uint64_t destlen =3D get_length(env, r1 + 1); + uint64_t dest =3D get_address(env, r1); + uint64_t srclen =3D get_length(env, r3 + 1); + uint64_t src =3D get_address(env, r3); + uint16_t pad =3D a2; + uint32_t cc; + + cc =3D do_mvcl(env, &dest, &destlen, &src, &srclen, pad, 2, ra); =20 set_length(env, r1 + 1, destlen); set_length(env, r3 + 1, srclen); diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 892949a..b160a0c 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3043,6 +3043,27 @@ static ExitStatus op_mvcle(DisasContext *s, DisasOps= *o) return NO_EXIT; } =20 +static ExitStatus op_mvclu(DisasContext *s, DisasOps *o) +{ + int r1 =3D get_field(s->fields, r1); + int r3 =3D get_field(s->fields, r3); + TCGv_i32 t1, t3; + + /* r1 and r3 must be even. */ + if (r1 & 1 || r3 & 1) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + + t1 =3D tcg_const_i32(r1); + t3 =3D tcg_const_i32(r3); + gen_helper_mvclu(cc_op, cpu_env, t1, o->in2, t3); + tcg_temp_free_i32(t1); + tcg_temp_free_i32(t3); + set_cc_static(s); + return NO_EXIT; +} + #ifndef CONFIG_USER_ONLY static ExitStatus op_mvcp(DisasContext *s, DisasOps *o) { --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600521113924.925323955993; Sun, 4 Jun 2017 11:22:01 -0700 (PDT) Received: from localhost ([::1]:58039 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHaA3-0008Sa-Lk for importer@patchew.org; Sun, 04 Jun 2017 14:21:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50835) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSC-0008L5-31 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZSA-00046K-Pw for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:39 -0400 Received: from mail-pf0-x241.google.com ([2607:f8b0:400e:c00::241]:35076) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZSA-00045s-KB for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:38 -0400 Received: by mail-pf0-x241.google.com with SMTP id u26so18119815pfd.2 for ; Sun, 04 Jun 2017 10:36:38 -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.36.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:36 -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=tDSKjNwhuI6WkSqim5FMhuHuzowk+rQzFAm5ZCcD43Y=; b=htEVcG0pw1u/K2O7Mj3DjDwzTBpo8tsiFvv1Q1RvD1Me/e29bY0srCGnmzAoWYhjD3 ZG2qK5zcFoLB3JnWvK6fDtiLZrQR4iV0P9C26FEX+AJuGWoAcssUeRLp99isQke5olSN uJMBVamZFQH4h9d0r5SxurVN0cOXGYVBNmP03zjOOflr3Nx2PkAqUEOYh1RncJcF2Fqd iu8g/0Maua5NgaFQnczyV+shlfQhHFdAMryynQY8o+BvVPA/7XHQGBlo3MyhAu+OIlV8 GJr0D8p8Z9JFSd4uMBkFfhkUUrJ8TzJtw8VaxD51OkIsud64r82EYFVLkh/wQn5cMhPD MTQg== 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=tDSKjNwhuI6WkSqim5FMhuHuzowk+rQzFAm5ZCcD43Y=; b=MnWsnHCu2ogzEP04N4SnU/51v74VRHLlD4Okjm64tnSwc5kCABycmozTzzxV9Xh4z/ oyaSptBfcp8nr2oziUmB7kvvarjoy1ILhmYJaA7Zc9P0nnFuVqOK+FgAgLAs/+T0H58Q 0pK5D8PhDVOsiAudodovdHX/TX4hrbdimE8RUyjgy9D/hfRzgAX5inI1adItJisEutaH 90loFV2owWe0YvuTkLJlhtfOjGGj8N7w/jzskbmsg/3UT5V4hNNPTqzkSEjV+/Q54MYe cc1spu9N0moh/ujxyAI1c+Bi9d3YkqImLjYE0K+UvzWFJkI945WhYd3OpeTpQ0DyKFqS dK4A== X-Gm-Message-State: AODbwcAkmHeSmnFl6mhTGU+yQ1tF+V5wRjmV9epUNPQipf42owg3RoMl lF4F5AeWx8U25bvPltI= X-Received: by 10.84.139.3 with SMTP id 3mr10391373plq.79.1496597797561; Sun, 04 Jun 2017 10:36:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:02 -0700 Message-Id: <20170604173509.29684-63-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:c00::241 Subject: [Qemu-devel] [PULL 62/69] target/s390x: implement PACK ASCII 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-24-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 35 +++++++++++++++++++++++++++++++++++ target/s390x/translate.c | 16 ++++++++++++++++ 4 files changed, 54 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 5811911..7898064 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -83,6 +83,7 @@ DEF_HELPER_FLAGS_2(sqdb, TCG_CALL_NO_WG, i64, env, i64) DEF_HELPER_FLAGS_3(sqxb, TCG_CALL_NO_WG, i64, env, i64, i64) DEF_HELPER_FLAGS_1(cvd, TCG_CALL_NO_RWG_SE, i64, s32) DEF_HELPER_FLAGS_4(pack, TCG_CALL_NO_WG, void, env, i32, i64, i64) +DEF_HELPER_FLAGS_4(pka, TCG_CALL_NO_WG, void, env, i64, i64, i32) DEF_HELPER_FLAGS_4(unpk, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(tr, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_4(tre, i64, env, i64, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index e3b7b78..41431af 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -667,6 +667,8 @@ /* Really format SS_b, but we pack both lengths into one argument for the helper call, so we might as well leave one 8-bit field. */ C(0xf200, PACK, SS_a, Z, la1, a2, 0, 0, pack, 0) +/* PACK ASCII */ + C(0xe900, PKA, SS_f, E2, la1, a2, 0, 0, pka, 0) =20 /* PREFETCH */ /* Implemented as nops of course. */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index a2d65cf..425d4b6 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -914,6 +914,41 @@ void HELPER(pack)(CPUS390XState *env, uint32_t len, ui= nt64_t dest, uint64_t src) } } =20 +void HELPER(pka)(CPUS390XState *env, uint64_t dest, uint64_t src, + uint32_t srclen) +{ + uintptr_t ra =3D GETPC(); + int i; + /* The destination operand is always 16 bytes long. */ + const int destlen =3D 16; + + /* The operands are processed from right to left. */ + src +=3D srclen - 1; + dest +=3D destlen - 1; + + for (i =3D 0; i < destlen; i++) { + uint8_t b =3D 0; + + /* Start with a positive sign */ + if (i =3D=3D 0) { + b =3D 0xc; + } else if (srclen > 1) { + b =3D cpu_ldub_data_ra(env, src, ra) & 0x0f; + src--; + srclen--; + } + + if (srclen > 1) { + b |=3D cpu_ldub_data_ra(env, src, ra) << 4; + src--; + srclen--; + } + + cpu_stb_data_ra(env, dest, b, ra); + dest--; + } +} + void HELPER(unpk)(CPUS390XState *env, uint32_t len, uint64_t dest, uint64_t src) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index b160a0c..5093995 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3301,6 +3301,22 @@ static ExitStatus op_pack(DisasContext *s, DisasOps = *o) return NO_EXIT; } =20 +static ExitStatus op_pka(DisasContext *s, DisasOps *o) +{ + int l2 =3D get_field(s->fields, l2) + 1; + TCGv_i32 l; + + /* The length must not exceed 32 bytes. */ + if (l2 > 32) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + l =3D tcg_const_i32(l2); + gen_helper_pka(cpu_env, o->addr1, o->in2, l); + tcg_temp_free_i32(l); + return NO_EXIT; +} + static ExitStatus op_popcnt(DisasContext *s, DisasOps *o) { gen_helper_popcnt(o->out, o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600032915938.0533389081294; Sun, 4 Jun 2017 11:13:52 -0700 (PDT) Received: from localhost ([::1]:57992 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa2B-0001tP-0M for importer@patchew.org; Sun, 04 Jun 2017 14:13:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50848) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSD-0008Mw-HB for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZSC-00048K-Cw for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:41 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:34521) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZSC-00047C-54 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:40 -0400 Received: by mail-pg0-x241.google.com with SMTP id v14so3631532pgn.1 for ; Sun, 04 Jun 2017 10:36:39 -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.36.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:38 -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=Hh4e+y3nhwvkwogUQdMgTqYJ0ihcZ7kUDq803ZwgbGE=; b=Jsr5glcCRpK1SZNgRjo1VyPmwmHEIgZZgX794CCzu5jwZLhFGO1+XhhBBKancTc8fu OBtJgDFH8aTGq+x4SBRa0ndJiQuu6MZm0zQTQx8VuYGUwnJjItqn9V4XLNeLyE/+4w4C +xgWyhQxRUtCTt39ubkQ2E+qCRSjxukH8RGMtd41bNYEXUP+YEtKQYWofBR1y6m7uVnz OYNw8Jocawd+9094/JwRlLgExZgKUlJFmG+mJ9hP7ZqhicxpWncAp5NdxhZR3jHzvGvG 9gmgEFKWM9NQ4EIxvdHQGgwq9xF1pJvX9H+2HVCuTNZvo5gxVZ6b/nhgrV/2emTQNdXL 2zKw== 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=Hh4e+y3nhwvkwogUQdMgTqYJ0ihcZ7kUDq803ZwgbGE=; b=ZdJV/2vQV7C7VQ4WrUPd87KhDWFOwP2TA0XIp2u2VPQrnL8184R1AaCS1vvQJMFmem cNbii1f32Nc6/VHrvrTHt9LTVi3tbbT0bWcVsa6vhhCoquvoqxAJOQKMJOmGPGqTQJnq aLYsjW8agIAI5HEOBWwd0gFJo2xDG/RnokA88Il0sTVjweBGHpaejx9UZTUUoEcIf66S ytuyZPLJVWwwhu43YZ7v7bq/eO8vFyIo9XdzBKpLuqLAzn4ki2V0EsK2XdCJ1Zm39uDL aFAaD9ZOyohL5sA+P/g5KpDoZWy6ntKNL5Vz6OzWB64EixTjuJISjVp6zBL7B768+P1i Yrfg== X-Gm-Message-State: AODbwcADpKpKlidHrxs6GBgD65yzTNBIC6FurhbZLvm8XBxT4gLxROsp gHf4/JTjiQw4xPS6JLs= X-Received: by 10.98.14.13 with SMTP id w13mr16423720pfi.59.1496597798829; Sun, 04 Jun 2017 10:36:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:03 -0700 Message-Id: <20170604173509.29684-64-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::241 Subject: [Qemu-devel] [PULL 63/69] target/s390x: implement PACK UNICODE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Use a common helper with PACK ASCII as the differences are limited to the stride of the source operand. Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-25-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 30 +++++++++++++++++++++--------- target/s390x/translate.c | 16 ++++++++++++++++ 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 7898064..5b61a0d 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -84,6 +84,7 @@ DEF_HELPER_FLAGS_3(sqxb, TCG_CALL_NO_WG, i64, env, i64, i= 64) DEF_HELPER_FLAGS_1(cvd, TCG_CALL_NO_RWG_SE, i64, s32) DEF_HELPER_FLAGS_4(pack, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(pka, TCG_CALL_NO_WG, void, env, i64, i64, i32) +DEF_HELPER_FLAGS_4(pku, TCG_CALL_NO_WG, void, env, i64, i64, i32) DEF_HELPER_FLAGS_4(unpk, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(tr, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_4(tre, i64, env, i64, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 41431af..16f788c 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -669,6 +669,8 @@ C(0xf200, PACK, SS_a, Z, la1, a2, 0, 0, pack, 0) /* PACK ASCII */ C(0xe900, PKA, SS_f, E2, la1, a2, 0, 0, pka, 0) +/* PACK UNICODE */ + C(0xe100, PKU, SS_f, E2, la1, a2, 0, 0, pku, 0) =20 /* PREFETCH */ /* Implemented as nops of course. */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 425d4b6..d827a12 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -914,10 +914,9 @@ void HELPER(pack)(CPUS390XState *env, uint32_t len, ui= nt64_t dest, uint64_t src) } } =20 -void HELPER(pka)(CPUS390XState *env, uint64_t dest, uint64_t src, - uint32_t srclen) +static inline void do_pkau(CPUS390XState *env, uint64_t dest, uint64_t src, + uint32_t srclen, int ssize, uintptr_t ra) { - uintptr_t ra =3D GETPC(); int i; /* The destination operand is always 16 bytes long. */ const int destlen =3D 16; @@ -932,16 +931,16 @@ void HELPER(pka)(CPUS390XState *env, uint64_t dest, u= int64_t src, /* Start with a positive sign */ if (i =3D=3D 0) { b =3D 0xc; - } else if (srclen > 1) { + } else if (srclen > ssize) { b =3D cpu_ldub_data_ra(env, src, ra) & 0x0f; - src--; - srclen--; + src -=3D ssize; + srclen -=3D ssize; } =20 - if (srclen > 1) { + if (srclen > ssize) { b |=3D cpu_ldub_data_ra(env, src, ra) << 4; - src--; - srclen--; + src -=3D ssize; + srclen -=3D ssize; } =20 cpu_stb_data_ra(env, dest, b, ra); @@ -949,6 +948,19 @@ void HELPER(pka)(CPUS390XState *env, uint64_t dest, ui= nt64_t src, } } =20 + +void HELPER(pka)(CPUS390XState *env, uint64_t dest, uint64_t src, + uint32_t srclen) +{ + do_pkau(env, dest, src, srclen, 1, GETPC()); +} + +void HELPER(pku)(CPUS390XState *env, uint64_t dest, uint64_t src, + uint32_t srclen) +{ + do_pkau(env, dest, src, srclen, 2, GETPC()); +} + void HELPER(unpk)(CPUS390XState *env, uint32_t len, uint64_t dest, uint64_t src) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 5093995..d8b0515 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3317,6 +3317,22 @@ static ExitStatus op_pka(DisasContext *s, DisasOps *= o) return NO_EXIT; } =20 +static ExitStatus op_pku(DisasContext *s, DisasOps *o) +{ + int l2 =3D get_field(s->fields, l2) + 1; + TCGv_i32 l; + + /* The length must be even and should not exceed 64 bytes. */ + if ((l2 & 1) || (l2 > 64)) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + l =3D tcg_const_i32(l2); + gen_helper_pku(cpu_env, o->addr1, o->in2, l); + tcg_temp_free_i32(l); + return NO_EXIT; +} + static ExitStatus op_popcnt(DisasContext *s, DisasOps *o) { gen_helper_popcnt(o->out, o->in2); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149660043861172.85218535741387; Sun, 4 Jun 2017 11:20:38 -0700 (PDT) Received: from localhost ([::1]:58032 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa8j-0007P0-8c for importer@patchew.org; Sun, 04 Jun 2017 14:20:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50890) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSH-0008QD-Do for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZSD-00049D-EU for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:45 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:35837) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZSD-00048q-8Q for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:41 -0400 Received: by mail-pg0-x241.google.com with SMTP id f127so7257439pgc.2 for ; Sun, 04 Jun 2017 10:36: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.36.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:39 -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=Okv71PCtW78Xj1ficAhkZswb1v2QR7OXLoVIVYpCOpI=; b=rUiNGgI8o1dmjAnF9PvCn99GrO1OdxwfoJYnEzc1rXqpzM3Zbci71dryAyJGCPiArZ 4RYJXDiQ9DZFiysX4IqY+URlTH0Nyol+RxO74pIo/uKehJ1RP8B/hVTFYZ58R9Su9jm/ hheclhuO54FqAhzNQdtwlCRp8SfXphDLSpH+/bUmMuNwjta0vh5UlZFZ7dItfAvHkXTG uGda6KQp0CWlPXD2juHXD0OETnEGjmxMuPbTkjch18pbqbcVPVChSUQQpLr+j0+SXLlv sI0/KNW2IQLJyTZiX6iTmFSKgFY3CWr9EqciVPhD76BibSjtndhPXEY6wL9rgOh3Pn7/ G/kA== 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=Okv71PCtW78Xj1ficAhkZswb1v2QR7OXLoVIVYpCOpI=; b=NqpjW6J0j+QHY1rWyFDA0rJmSDslrC6BMGQnn2CZjHPh2rOxNIll24LxUtink0Vhcx HDVhWzevTO0XDKjUJXyMmWDhWoax39Gs1EI5lmPFcBlJDUZbL/gBkOrSOlI9K3k5X0hp 3wMhe9TqhpfnEMeIn+cQUirOfFDaLFN8BLIkEBMV6IBAoE0hjV0+iXQ1bMgwa2qPQBDN rZSAXElnG+Q2lo0HkA+x6PeCSNpJ+mFG1xweeGPy7TkI5/whCoJ0ETlDxtEiYoCzfcJz shjj0biyCq3bZDJwRP0UO5G1fLiuYioBcY8P7rr48/HZPZ5yxZb2Qq6w2mJ8BrYRUDmb 6OZw== X-Gm-Message-State: AODbwcC15shyD0K6qMpDQksWj+gacX4CZHZiQBfrWdcI+IbCaLFPvZIX R7qI1YszHwXRzUon6+4= X-Received: by 10.98.131.142 with SMTP id h136mr16626439pfe.138.1496597800164; Sun, 04 Jun 2017 10:36:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:04 -0700 Message-Id: <20170604173509.29684-65-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::241 Subject: [Qemu-devel] [PULL 64/69] target/s390x: implement UNPACK ASCII 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-26-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 51 ++++++++++++++++++++++++++++++++++++++++++= ++++ target/s390x/translate.c | 17 ++++++++++++++++ 4 files changed, 71 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 5b61a0d..42c3de6 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -86,6 +86,7 @@ DEF_HELPER_FLAGS_4(pack, TCG_CALL_NO_WG, void, env, i32, = i64, i64) DEF_HELPER_FLAGS_4(pka, TCG_CALL_NO_WG, void, env, i64, i64, i32) DEF_HELPER_FLAGS_4(pku, TCG_CALL_NO_WG, void, env, i64, i64, i32) DEF_HELPER_FLAGS_4(unpk, TCG_CALL_NO_WG, void, env, i32, i64, i64) +DEF_HELPER_FLAGS_4(unpka, TCG_CALL_NO_WG, i32, env, i64, i32, i64) DEF_HELPER_FLAGS_4(tr, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_4(tre, i64, env, i64, i64, i64) DEF_HELPER_4(trt, i32, env, i32, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 16f788c..33434a3 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -875,6 +875,8 @@ /* Really format SS_b, but we pack both lengths into one argument for the helper call, so we might as well leave one 8-bit field. */ C(0xf300, UNPK, SS_a, Z, la1, a2, 0, 0, unpk, 0) +/* UNPACK ASCII */ + C(0xea00, UNPKA, SS_a, E2, la1, a2, 0, 0, unpka, 0) =20 #ifndef CONFIG_USER_ONLY /* COMPARE AND SWAP AND PURGE */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index d827a12..1c5f29c 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1008,6 +1008,57 @@ void HELPER(unpk)(CPUS390XState *env, uint32_t len, = uint64_t dest, } } =20 +uint32_t HELPER(unpka)(CPUS390XState *env, uint64_t dest, uint32_t destlen, + uint64_t src) +{ + uintptr_t ra =3D GETPC(); + int i; + uint32_t cc; + uint8_t b; + /* The source operand is always 16 bytes long. */ + const int srclen =3D 16; + + /* The operands are processed from right to left. */ + src +=3D srclen - 1; + dest +=3D destlen - 1; + + /* Check for the sign. */ + b =3D cpu_ldub_data_ra(env, src, ra); + src--; + switch (b & 0xf) { + case 0xa: + case 0xc: + case 0xe ... 0xf: + cc =3D 0; /* plus */ + break; + case 0xb: + case 0xd: + cc =3D 1; /* minus */ + break; + default: + case 0x0 ... 0x9: + cc =3D 3; /* invalid */ + break; + } + + /* Now pad every nibble with 0x30, advancing one nibble at a time. */ + for (i =3D 0; i < destlen; i++) { + if (i =3D=3D 31) { + /* If length is 32 bytes, the leftmost byte is 0. */ + b =3D 0; + } else if (i % 2) { + b =3D cpu_ldub_data_ra(env, src, ra); + src--; + } else { + b >>=3D 4; + } + cpu_stb_data_ra(env, dest, 0x30 + (b & 0xf), ra); + dest--; + } + + return cc; +} + static uint32_t do_helper_tr(CPUS390XState *env, uint32_t len, uint64_t ar= ray, uint64_t trans, uintptr_t ra) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index d8b0515..2ff6665 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4357,6 +4357,23 @@ static ExitStatus op_unpk(DisasContext *s, DisasOps = *o) return NO_EXIT; } =20 +static ExitStatus op_unpka(DisasContext *s, DisasOps *o) +{ + int l1 =3D get_field(s->fields, l1) + 1; + TCGv_i32 l; + + /* The length must not exceed 32 bytes. */ + if (l1 > 32) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + l =3D tcg_const_i32(l1); + gen_helper_unpka(cc_op, cpu_env, o->addr1, l, o->in2); + tcg_temp_free_i32(l); + set_cc_static(s); + return NO_EXIT; +} + static ExitStatus op_xc(DisasContext *s, DisasOps *o) { int d1 =3D get_field(s->fields, d1); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149660056819837.556514934913594; Sun, 4 Jun 2017 11:22:48 -0700 (PDT) Received: from localhost ([::1]:58043 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHaAo-0000pg-Jp for importer@patchew.org; Sun, 04 Jun 2017 14:22:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSH-0008QE-Dy for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZSE-0004CF-Sh for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:45 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:33478) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZSE-0004BX-KL for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:42 -0400 Received: by mail-pg0-x243.google.com with SMTP id s62so7257969pgc.0 for ; Sun, 04 Jun 2017 10:36:42 -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.36.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:40 -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=l4Yz9l1brSsbaVIWNnFEUekt1bKehAN7hJYD8wj+iN4=; b=fwGRd+kvOAnTUAGINN1EPm8PttifuS8tmlu+obasrfqD4SOorLVUwnxIQLw81bJumo fhBcfYy/qDFgvWci2qMaflDWStxDvxPcEBu6oplCTnLE56RxTF3UhSoIfz5BACR3b/nO kFDcPF/lKKUKG8P+FYHyJejhumEI7zT4vjb4007o5K08cE3Piu3gZyCBYwX2qfV++id/ dW1B2tVtYEdaV31MpP+YGbECAUjPjI6z1Lvcymxf66hqsIK0LOmGQkS3EDjzJMyThbYs T1QCKsBW8GnA89KCsa4KDAVjmdXgF0HWv7ARXsxe+AFcYuJhFiOX6w0rKNAjb4jMGkBx j9dg== 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=l4Yz9l1brSsbaVIWNnFEUekt1bKehAN7hJYD8wj+iN4=; b=gwBnTzvhtp/6mHCvCcix+T9CAp8D4ImWLPzs28J8QL86m9IykTKiRU0X/9Ox1NbZa7 s6EowYjZidzRxISLNipjX+sWWdSpfaOPWAKEMAhWR3ZbsMnL3b0cyU9VUV+Z1H3OBPi9 sC2BwHfCo5VWiFmaytNFwHDPl/uripcRBUYGd6CnzkIpLTsOG7QsC+dK3lef2J1tkzb9 v8vPS9cVJM1/oAjfb0c3vGEbaOL5CrF4MbAOWmgWvRi3b8G/ETau89yCieu7ZWgO5tjD TMbnvwtK/Pe1HaDR0zo33n8If/j4IEFHQmoT73Y1QFud6smqa3sRQ4zjApqmreI3NbgD csCg== X-Gm-Message-State: AODbwcCE48H3R/Jwdt9dpk8RkUuLMutdokxmUVQkcw7tpAv2JVwPaf3c RilIfWqgF1F6LAr8Wng= X-Received: by 10.98.103.12 with SMTP id b12mr9311970pfc.171.1496597801520; Sun, 04 Jun 2017 10:36:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:05 -0700 Message-Id: <20170604173509.29684-66-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::243 Subject: [Qemu-devel] [PULL 65/69] target/s390x: implement UNPACK UNICODE 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-27-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 49 ++++++++++++++++++++++++++++++++++++------= ---- target/s390x/translate.c | 18 +++++++++++++++++ 4 files changed, 60 insertions(+), 10 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 42c3de6..dc85a14 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -87,6 +87,7 @@ DEF_HELPER_FLAGS_4(pka, TCG_CALL_NO_WG, void, env, i64, i= 64, i32) DEF_HELPER_FLAGS_4(pku, TCG_CALL_NO_WG, void, env, i64, i64, i32) DEF_HELPER_FLAGS_4(unpk, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(unpka, TCG_CALL_NO_WG, i32, env, i64, i32, i64) +DEF_HELPER_FLAGS_4(unpku, TCG_CALL_NO_WG, i32, env, i64, i32, i64) DEF_HELPER_FLAGS_4(tr, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_4(tre, i64, env, i64, i64, i64) DEF_HELPER_4(trt, i32, env, i32, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 33434a3..683f91b 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -877,6 +877,8 @@ C(0xf300, UNPK, SS_a, Z, la1, a2, 0, 0, unpk, 0) /* UNPACK ASCII */ C(0xea00, UNPKA, SS_a, E2, la1, a2, 0, 0, unpka, 0) +/* UNPACK UNICODE */ + C(0xe200, UNPKU, SS_a, E2, la1, a2, 0, 0, unpku, 0) =20 #ifndef CONFIG_USER_ONLY /* COMPARE AND SWAP AND PURGE */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 1c5f29c..5cb1a8a 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -93,6 +93,23 @@ static inline uint64_t cpu_ldusize_data_ra(CPUS390XState= *env, uint64_t addr, } } =20 +/* Store a to memory according to its size. */ +static inline void cpu_stsize_data_ra(CPUS390XState *env, uint64_t addr, + uint64_t value, int wordsize, + uintptr_t ra) +{ + switch (wordsize) { + case 1: + cpu_stb_data_ra(env, addr, value, ra); + break; + case 2: + cpu_stw_data_ra(env, addr, value, ra); + break; + default: + abort(); + } +} + static void fast_memset(CPUS390XState *env, uint64_t dest, uint8_t byte, uint32_t l, uintptr_t ra) { @@ -1008,10 +1025,10 @@ void HELPER(unpk)(CPUS390XState *env, uint32_t len,= uint64_t dest, } } =20 -uint32_t HELPER(unpka)(CPUS390XState *env, uint64_t dest, uint32_t destlen, - uint64_t src) +static inline uint32_t do_unpkau(CPUS390XState *env, uint64_t dest, + uint32_t destlen, int dsize, uint64_t src, + uintptr_t ra) { - uintptr_t ra =3D GETPC(); int i; uint32_t cc; uint8_t b; @@ -1020,7 +1037,7 @@ uint32_t HELPER(unpka)(CPUS390XState *env, uint64_t d= est, uint32_t destlen, =20 /* The operands are processed from right to left. */ src +=3D srclen - 1; - dest +=3D destlen - 1; + dest +=3D destlen - dsize; =20 /* Check for the sign. */ b =3D cpu_ldub_data_ra(env, src, ra); @@ -1042,23 +1059,35 @@ uint32_t HELPER(unpka)(CPUS390XState *env, uint64_t= dest, uint32_t destlen, } =20 /* Now pad every nibble with 0x30, advancing one nibble at a time. */ - for (i =3D 0; i < destlen; i++) { - if (i =3D=3D 31) { - /* If length is 32 bytes, the leftmost byte is 0. */ + for (i =3D 0; i < destlen; i +=3D dsize) { + if (i =3D=3D (31 * dsize)) { + /* If length is 32/64 bytes, the leftmost byte is 0. */ b =3D 0; - } else if (i % 2) { + } else if (i % (2 * dsize)) { b =3D cpu_ldub_data_ra(env, src, ra); src--; } else { b >>=3D 4; } - cpu_stb_data_ra(env, dest, 0x30 + (b & 0xf), ra); - dest--; + cpu_stsize_data_ra(env, dest, 0x30 + (b & 0xf), dsize, ra); + dest -=3D dsize; } =20 return cc; } =20 +uint32_t HELPER(unpka)(CPUS390XState *env, uint64_t dest, uint32_t destlen, + uint64_t src) +{ + return do_unpkau(env, dest, destlen, 1, src, GETPC()); +} + +uint32_t HELPER(unpku)(CPUS390XState *env, uint64_t dest, uint32_t destlen, + uint64_t src) +{ + return do_unpkau(env, dest, destlen, 2, src, GETPC()); +} + static uint32_t do_helper_tr(CPUS390XState *env, uint32_t len, uint64_t ar= ray, uint64_t trans, uintptr_t ra) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 2ff6665..747d4eb 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4374,6 +4374,24 @@ static ExitStatus op_unpka(DisasContext *s, DisasOps= *o) return NO_EXIT; } =20 +static ExitStatus op_unpku(DisasContext *s, DisasOps *o) +{ + int l1 =3D get_field(s->fields, l1) + 1; + TCGv_i32 l; + + /* The length must be even and should not exceed 64 bytes. */ + if ((l1 & 1) || (l1 > 64)) { + gen_program_exception(s, PGM_SPECIFICATION); + return EXIT_NORETURN; + } + l =3D tcg_const_i32(l1); + gen_helper_unpku(cc_op, cpu_env, o->addr1, l, o->in2); + tcg_temp_free_i32(l); + set_cc_static(s); + return NO_EXIT; +} + + static ExitStatus op_xc(DisasContext *s, DisasOps *o) { int d1 =3D get_field(s->fields, d1); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496599985214379.31454024002176; Sun, 4 Jun 2017 11:13:05 -0700 (PDT) Received: from localhost ([::1]:57990 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa1P-000139-Lv for importer@patchew.org; Sun, 04 Jun 2017 14:13:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50895) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSH-0008QG-F1 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZSG-0004Cq-32 for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:45 -0400 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]:35942) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZSF-0004CY-TH for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:44 -0400 Received: by mail-pg0-x242.google.com with SMTP id v18so3987760pgb.3 for ; Sun, 04 Jun 2017 10:36:43 -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.36.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36: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=aD2DrIJoEDjUa2Lufo1hfI+ld2k9GhPWtd2/SeCTR14=; b=IQxJfMpToLEvkUi5lYSGR64VQj0hZKUHjeaA6cl/74A7GluAtBMhURqYnJMmrgB7E7 GSAYuui7bc/KK/7i+r90uKxVRTknlqZfQXA0gFycC1SywB2+aDVWT5iS41S3tabxatXF ebdPS/V8g8lHmvY3zEIINXSjWjaT6SE15SLuO9d6kENWDGOKgLguLMbb0ADLc6okCePc ObaeusHPZbcu9/e3mad/1k6/y+qS3diAT5B4YWOpV0x5/vuUQekMXuWSTWriLeUtGHWF mFQLQboiqKVaN3un/MiP4W5YoAWwn29H7AJIqMi5bxVe9ASwriYdNAhhAi/mpmd6jDA2 GC9w== 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=aD2DrIJoEDjUa2Lufo1hfI+ld2k9GhPWtd2/SeCTR14=; b=PIpYv1upe8RXhx0whs47Rws1SXVFqKVFaWEVA9/0/AUFRFpnVP5spgqi/DBn7beKxw XzUXt6g5i7RV2Nz4xYfEKof6N6ANaTvaM4R9UCfauVqXuti3m5wfySWmYOxIPsTmOXCD 3jo6kGrPINxwAl3iVKNHwWJI+6k87egzC+sKI+LdRlA5h0h5fk4G2NE+Fsufhu76S4Qq FB1/Y9qLkPGaRLKid/Lb3Hiw8VLymmgGpsXYohBshMXrny1ynAOFHOxmCJ4n8+Esy9V6 mxpNVw5PLujDo6ciWIYNQhPtk1dXlJGO5NtwEbSybNVkt2+LlTItWccY5yJvyVEsmMC7 pjBQ== X-Gm-Message-State: AODbwcDlzRKtQl5u6aJAaNlXUoTrRonxOIFFJHajheEjl3tcRno9ICCY usnu2BVZUjDopeCbOOY= X-Received: by 10.98.60.139 with SMTP id b11mr5638181pfk.170.1496597802828; Sun, 04 Jun 2017 10:36:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:06 -0700 Message-Id: <20170604173509.29684-67-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 66/69] target/s390x: implement TEST DECIMAL 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Reviewed-by: Richard Henderson Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-28-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 3 +++ target/s390x/mem_helper.c | 23 +++++++++++++++++++++++ target/s390x/translate.c | 9 +++++++++ 4 files changed, 36 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index dc85a14..c043be6 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -88,6 +88,7 @@ DEF_HELPER_FLAGS_4(pku, TCG_CALL_NO_WG, void, env, i64, i= 64, i32) DEF_HELPER_FLAGS_4(unpk, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_FLAGS_4(unpka, TCG_CALL_NO_WG, i32, env, i64, i32, i64) DEF_HELPER_FLAGS_4(unpku, TCG_CALL_NO_WG, i32, env, i64, i32, i64) +DEF_HELPER_FLAGS_3(tp, TCG_CALL_NO_WG, i32, env, i64, i32) DEF_HELPER_FLAGS_4(tr, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_4(tre, i64, env, i64, i64, i64) DEF_HELPER_4(trt, i32, env, i32, i64, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 683f91b..7f554ab 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -856,6 +856,9 @@ C(0xed11, TCDB, RXE, Z, f1_o, a2, 0, 0, tcdb, 0) C(0xed12, TCXB, RXE, Z, x1_o, a2, 0, 0, tcxb, 0) =20 +/* TEST DECIMAL */ + C(0xebc0, TP, RSL, E2, la1, 0, 0, 0, tp, 0) + /* TEST UNDER MASK */ C(0x9100, TM, SI, Z, m1_8u, i2_8u, 0, 0, 0, tm32) C(0xeb51, TMY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, tm32) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 5cb1a8a..a9297c1 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1088,6 +1088,29 @@ uint32_t HELPER(unpku)(CPUS390XState *env, uint64_t = dest, uint32_t destlen, return do_unpkau(env, dest, destlen, 2, src, GETPC()); } =20 +uint32_t HELPER(tp)(CPUS390XState *env, uint64_t dest, uint32_t destlen) +{ + uintptr_t ra =3D GETPC(); + uint32_t cc =3D 0; + int i; + + for (i =3D 0; i < destlen; i++) { + uint8_t b =3D cpu_ldub_data_ra(env, dest + i, ra); + /* digit */ + cc |=3D (b & 0xf0) > 0x90 ? 2 : 0; + + if (i =3D=3D (destlen - 1)) { + /* sign */ + cc |=3D (b & 0xf) < 0xa ? 1 : 0; + } else { + /* digit */ + cc |=3D (b & 0xf) > 0x9 ? 2 : 0; + } + } + + return cc; +} + static uint32_t do_helper_tr(CPUS390XState *env, uint32_t len, uint64_t ar= ray, uint64_t trans, uintptr_t ra) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 747d4eb..a7c564f 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4313,6 +4313,15 @@ static ExitStatus op_tprot(DisasContext *s, DisasOps= *o) =20 #endif =20 +static ExitStatus op_tp(DisasContext *s, DisasOps *o) +{ + TCGv_i32 l1 =3D tcg_const_i32(get_field(s->fields, l1) + 1); + gen_helper_tp(cc_op, cpu_env, o->addr1, l1); + tcg_temp_free_i32(l1); + set_cc_static(s); + return NO_EXIT; +} + static ExitStatus op_tr(DisasContext *s, DisasOps *o) { TCGv_i32 l =3D tcg_const_i32(get_field(s->fields, l1)); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600165122476.8608750322172; Sun, 4 Jun 2017 11:16:05 -0700 (PDT) Received: from localhost ([::1]:58012 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa4J-0003nW-Lj for importer@patchew.org; Sun, 04 Jun 2017 14:16:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50923) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSI-0008RT-Mv for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZSH-0004F9-Gq for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:46 -0400 Received: from mail-pg0-x243.google.com ([2607:f8b0:400e:c05::243]:34817) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZSH-0004EA-8i for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:45 -0400 Received: by mail-pg0-x243.google.com with SMTP id f127so7257552pgc.2 for ; Sun, 04 Jun 2017 10:36:45 -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.36.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:43 -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=9KKCKn6D5Mt6GxDxc0wporwjcppwRwHGtuhIDzT95XM=; b=ffBvRx2/bVOdtjVxAJdCNC15X2GDPWeEA07FJNWqimg+KJqbN2C7n0+9K4euLueZur yb9SKaw2Vq/UVeV2s7o+ESixZi5DFwF8MPjansLtIU/BE2uDM0abY8/3oZJpDaRyZtCk 6IOp6RVhnIZefLccubXq1JMf6PUY/SfQ2tes6JeGK6NDhZJU1e51TRgZoeYhTMniT5wB YO8wJgF9ZsSSN8hmvSYzX0rBdlca0QiUxk9K/AKvhVtP6pU4q9UB54/CaPblkJ2Ql6ri HEQth9sZ/1b86/C5nH0z/uTWri5vEEtwrZdK/sVmeyJIh88LE89hi4D9P0XaVsL+X34d kg3Q== 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=9KKCKn6D5Mt6GxDxc0wporwjcppwRwHGtuhIDzT95XM=; b=W/TjYZJM2z3IjcniD4lpAn0UsMJLilhESVs81sSf6jkhFM80hKVZLdsZRTEAMn59cE QmE/XpdYGxivClKoQdWdKnssidam2MxdJ8BYH4lknO1b8Rzs53KRHxp7ywzTzJZ6ho0/ Sy05MFRxlX1BycCGHKLZFAjmit6o6pDebh7CTdtm/2zObaGEwRz8r9Q+zC1UFPRStJAp bCRwyIllLidpb/2OYNHw6mxJAZhuCgrqlB8HCm4VPBs5bG99L4lT538+jB4kDhPX4HLU TUAAR6cDt1pR92mvodcLytOisru2hq5C49Do11iQzw7T1ae5BLDMIW5VS9eljvIGef7N tdtw== X-Gm-Message-State: AODbwcAytXm7I69L1AawVynmigp0IGEZSwKC0xI6qR1AYmcUfzdXq4+y 0XVGk5kba5IivLdvsRc= X-Received: by 10.101.72.207 with SMTP id o15mr17154788pgs.212.1496597804205; Sun, 04 Jun 2017 10:36:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:07 -0700 Message-Id: <20170604173509.29684-68-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::243 Subject: [Qemu-devel] [PULL 67/69] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-29-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 9 +++++++++ target/s390x/mem_helper.c | 45 ++++++++++++++++++++++++++++++++++++++++++= +++ target/s390x/translate.c | 30 ++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index c043be6..e139611 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -92,6 +92,7 @@ DEF_HELPER_FLAGS_3(tp, TCG_CALL_NO_WG, i32, env, i64, i32) DEF_HELPER_FLAGS_4(tr, TCG_CALL_NO_WG, void, env, i32, i64, i64) DEF_HELPER_4(tre, i64, env, i64, i64, i64) DEF_HELPER_4(trt, i32, env, i32, i64, i64) +DEF_HELPER_5(trXX, i32, env, i32, i32, i32, i32) DEF_HELPER_4(cksm, i64, env, i64, i64, i64) DEF_HELPER_FLAGS_5(calc_cc, TCG_CALL_NO_RWG_SE, i32, env, i32, i64, i64, i= 64) DEF_HELPER_FLAGS_2(sfpc, TCG_CALL_NO_RWG, void, env, i64) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 7f554ab..73dd05d 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -874,6 +874,15 @@ /* TRANSLATE EXTENDED */ C(0xb2a5, TRE, RRE, Z, 0, r2, r1_P, 0, tre, 0) =20 +/* TRANSLATE ONE TO ONE */ + C(0xb993, TROO, RRF_c, E2, 0, 0, 0, 0, trXX, 0) +/* TRANSLATE ONE TO TWO */ + C(0xb992, TROT, RRF_c, E2, 0, 0, 0, 0, trXX, 0) +/* TRANSLATE TWO TO ONE */ + C(0xb991, TRTO, RRF_c, E2, 0, 0, 0, 0, trXX, 0) +/* TRANSLATE TWO TO TWO */ + C(0xb990, TRTT, RRF_c, E2, 0, 0, 0, 0, trXX, 0) + /* UNPACK */ /* Really format SS_b, but we pack both lengths into one argument for the helper call, so we might as well leave one 8-bit field. */ diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index a9297c1..6fb97fa 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1196,6 +1196,51 @@ uint32_t HELPER(trt)(CPUS390XState *env, uint32_t le= n, uint64_t array, return do_helper_trt(env, len, array, trans, GETPC()); } =20 +/* Translate one/two to one/two */ +uint32_t HELPER(trXX)(CPUS390XState *env, uint32_t r1, uint32_t r2, + uint32_t tst, uint32_t sizes) +{ + uintptr_t ra =3D GETPC(); + int dsize =3D (sizes & 1) ? 1 : 2; + int ssize =3D (sizes & 2) ? 1 : 2; + uint64_t tbl =3D get_address(env, 1) & ~7; + uint64_t dst =3D get_address(env, r1); + uint64_t len =3D get_length(env, r1 + 1); + uint64_t src =3D get_address(env, r2); + uint32_t cc =3D 3; + int i; + + check_alignment(env, len, ssize, ra); + + /* Lest we fail to service interrupts in a timely manner, */ + /* limit the amount of work we're willing to do. */ + for (i =3D 0; i < 0x2000; i++) { + uint16_t sval =3D cpu_ldusize_data_ra(env, src, ssize, ra); + uint64_t tble =3D tbl + (sval * dsize); + uint16_t dval =3D cpu_ldusize_data_ra(env, tble, dsize, ra); + if (dval =3D=3D tst) { + cc =3D 1; + break; + } + cpu_stsize_data_ra(env, dst, dval, dsize, ra); + + len -=3D ssize; + src +=3D ssize; + dst +=3D dsize; + + if (len =3D=3D 0) { + cc =3D 0; + break; + } + } + + set_address(env, r1, dst); + set_length(env, r1 + 1, len); + set_address(env, r2, src); + + return cc; +} + void HELPER(cdsg)(CPUS390XState *env, uint64_t addr, uint32_t r1, uint32_t r3) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index a7c564f..8702cc8 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4348,6 +4348,36 @@ static ExitStatus op_trt(DisasContext *s, DisasOps *= o) return NO_EXIT; } =20 +static ExitStatus op_trXX(DisasContext *s, DisasOps *o) +{ + TCGv_i32 r1 =3D tcg_const_i32(get_field(s->fields, r1)); + TCGv_i32 r2 =3D tcg_const_i32(get_field(s->fields, r2)); + TCGv_i32 sizes =3D tcg_const_i32(s->insn->opc & 3); + TCGv_i32 tst =3D tcg_temp_new_i32(); + int m3 =3D get_field(s->fields, m3); + + /* XXX: the C bit in M3 should be considered as 0 when the + ETF2-enhancement facility is not installed. */ + if (m3 & 1) { + tcg_gen_movi_i32(tst, -1); + } else { + tcg_gen_extrl_i64_i32(tst, regs[0]); + if (s->insn->opc & 3) { + tcg_gen_ext8u_i32(tst, tst); + } else { + tcg_gen_ext16u_i32(tst, tst); + } + } + gen_helper_trXX(cc_op, cpu_env, r1, r2, tst, sizes); + + tcg_temp_free_i32(r1); + tcg_temp_free_i32(r2); + tcg_temp_free_i32(sizes); + tcg_temp_free_i32(tst); + set_cc_static(s); + return NO_EXIT; +} + static ExitStatus op_ts(DisasContext *s, DisasOps *o) { TCGv_i32 t1 =3D tcg_const_i32(0xff); --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600648607366.0798005162568; Sun, 4 Jun 2017 11:24:08 -0700 (PDT) Received: from localhost ([::1]:58056 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHaC6-000370-Qh for importer@patchew.org; Sun, 04 Jun 2017 14:24:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50930) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSJ-0008SS-FF for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZSI-0004H0-Nj for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:47 -0400 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]:36384) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZSI-0004Fs-Ho for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:46 -0400 Received: by mail-pf0-x242.google.com with SMTP id n23so18101859pfb.3 for ; Sun, 04 Jun 2017 10:36:46 -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.36.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:44 -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=uiUnqjzTn003vEns/Y8DF7CoziFhI+kxJWKrIGKPq3w=; b=W+o3ntSmp32s+gNkv9ea/SK9TmDQlULxwV1ecUg5xQC6wrtvXHzftYanwPT34GiHA7 M81klQdaZCus3RjhhUsoHYgHd/yz5iU/VN2xAHFDQhxWGmDbMtBfl4Vkto3zA0MV1TO2 yQvXM+1/bkqvxDbalLUb3GGlcjIkvrdQQN5ebiU7FAXmdUzV8XaLr/xP6xTPkKK7NpHx DG4+W3N80Y16rcHDS3FzPkATLLVAlcu5KMbc1EE8UBLabr96xfrSftChHiMirFROMYK5 HX871cQiGs9PoTzRc9FoRjygpgstQREP5PD7OEbnlUOliPtwBaI5SCYoRXwLLxEcn46I uSFg== 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=uiUnqjzTn003vEns/Y8DF7CoziFhI+kxJWKrIGKPq3w=; b=otgM/kG+FdAAGDqo8d9A0vl4jn1974+S0u5OmDYO779bzrMYr5y5yuary5kZpeDZc1 nPF0XaPxCTe/Fykgm6p3w8QWIt4OFjBJlVaTDbqUe45MR/LyxnCV3bUZ2rJNGXGa53n6 YQtxZN4KUiHSUJIJYZZsrA0Rnavy0WAZA1W9tqyz0kVc6JqtCvNr7x2sE1Pw/hfkZ29A EGQY7K1O6H3AN8jvVJb83ZsOGuApV/CS0T5kkYjLxwOoBEpH3PUmjGZZP6Lj6I59KFUv zofV6xAsy0gruJU9opyUiCZDIO5Y3TotGIwjqyhLb+Tj3Xg6bt0zu5Q5it7IXmWWe3tu TlCQ== X-Gm-Message-State: AODbwcBRemuFcg8084cDKzfUnusu9bAnyALayyfxKofBP7pqHVCFUiQI KYCYh8z2y2LSUIiGNYU= X-Received: by 10.99.116.7 with SMTP id p7mr16833725pgc.162.1496597805517; Sun, 04 Jun 2017 10:36:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:08 -0700 Message-Id: <20170604173509.29684-69-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:c00::242 Subject: [Qemu-devel] [PULL 68/69] target/s390x: mark ETF2 and ETF2-ENH facilities as available 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Aurelien Jarno Signed-off-by: Aurelien Jarno Message-Id: <20170531220129.27724-30-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/cpu_models.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index e5e005a..fc3cb25 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -668,8 +668,10 @@ static void add_qemu_cpu_model_features(S390FeatBitmap= fbm) static const int feats[] =3D { S390_FEAT_STFLE, S390_FEAT_EXTENDED_IMMEDIATE, + S390_FEAT_EXTENDED_TRANSLATION_2, S390_FEAT_LONG_DISPLACEMENT, S390_FEAT_LONG_DISPLACEMENT_FAST, + S390_FEAT_ETF2_ENH, S390_FEAT_STORE_CLOCK_FAST, S390_FEAT_GENERAL_INSTRUCTIONS_EXT, S390_FEAT_EXECUTE_EXT, --=20 2.9.4 From nobody Wed Nov 5 16:38:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; dkim=fail spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1496600337310138.46541569223655; Sun, 4 Jun 2017 11:18:57 -0700 (PDT) Received: from localhost ([::1]:58023 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHa75-000632-Lj for importer@patchew.org; Sun, 04 Jun 2017 14:18:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50944) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dHZSL-0008Tr-1e for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dHZSK-0004Ip-7T for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:49 -0400 Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]:34819) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dHZSK-0004IB-1L for qemu-devel@nongnu.org; Sun, 04 Jun 2017 13:36:48 -0400 Received: by mail-pg0-x244.google.com with SMTP id f127so7257622pgc.2 for ; Sun, 04 Jun 2017 10:36:47 -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.36.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jun 2017 10:36:46 -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=VPagw5AzNBorqqgRbANXqMGVyFdurLi02dU5Uela6nE=; b=uh86M7jXGLJLTpGDIZQ51ImRO+ggfB+n0vU7pqF7JoKu0tZZg2Dnr96xiU1GPaSW+c bpTqgqQtXV6YSM8JgXENc4JgiUXjp2EDQVEZw82ziRY2O30Xnz2TLFM5tBJaOd1scxm1 Trg5Xsy/O7de10c/UGr5SUY2WvP04a1jkILbtdrBUFYkSzBpYv06Qm6UpM9CNUBbEPje KoYhJkPKG5Z+gjKBvAMIM9KvPVYLgUZRzvYBh192nKUbsXyzy/CnIwBdpnDdULENdHAe +JR+dDUbiXvWninjynHgY9iIjiq5sgs8L4l6CpuCtUZwDn9T5WqUacj8CwP/i9deQUng Ei4Q== 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=VPagw5AzNBorqqgRbANXqMGVyFdurLi02dU5Uela6nE=; b=FljZwNRSYG5WbVuFDGU8LAJEEfefGVJj7C1FcqGEEzlm//ymr/jXLAboeckKBdKbtS KyHRv72tDOdBIDndb9FVC7m+KHKy463GbN2pugakXEqfzSdTkiQsOlOT2ESP48QlOfT5 UGsQMssYC1aj03zsbOVdpKz6CduF4BsWP12pfWbPWvgYCXzN4Wa8nq3fzOu9Xi8BdSlo xU0szeP83qjYApUtrXcaok9Awc6wtOu0E7udIsliyiQKh5GZCjObake4F/Glhi5TnCmg fd84XceH3MumhExbK4bgLb+nXj6dpd+PsN4CiZL1cW/Auw1HjwE0ki6QlqIohg9rwMir m7Wg== X-Gm-Message-State: AODbwcDYt9QFz/DevNp3QqV9SP+I0G5IR977351QiF/oIzfWU4+SX9QF H2lviR7aWi9XqNoqQAk= X-Received: by 10.98.198.72 with SMTP id m69mr16752853pfg.169.1496597806958; Sun, 04 Jun 2017 10:36:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sun, 4 Jun 2017 10:35:09 -0700 Message-Id: <20170604173509.29684-70-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::244 Subject: [Qemu-devel] [PULL 69/69] target/s390x: addressing exceptions are suppressing 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, David Hildenbrand Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: David Hildenbrand We have to make the address in the old PSW point at the next instruction, as addressing exceptions are suppressing and not nullifying. I assume that there are a lot of other broken cases (as most instructions we care about are suppressing) - all trigger_pgm_exception() specifying and explicit number or ILEN_LATER look suspicious, however this is another story that might require bigger changes (and I have to understand when the address might already have been incremented first). This is needed to make an upcoming kvm-unit-test work. Reviewed-by: Thomas Huth Signed-off-by: David Hildenbrand Message-Id: <20170529121228.2789-1-david@redhat.com> Signed-off-by: Richard Henderson --- target/s390x/helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/helper.c b/target/s390x/helper.c index 291db72..a8d20c5 100644 --- a/target/s390x/helper.c +++ b/target/s390x/helper.c @@ -204,7 +204,7 @@ int s390_cpu_handle_mmu_fault(CPUState *cs, vaddr orig_= vaddr, if (raddr > ram_size) { DPRINTF("%s: raddr %" PRIx64 " > ram_size %" PRIx64 "\n", __func__, (uint64_t)raddr, (uint64_t)ram_size); - trigger_pgm_exception(env, PGM_ADDRESSING, ILEN_LATER); + trigger_pgm_exception(env, PGM_ADDRESSING, ILEN_LATER_INC); return 1; } =20 --=20 2.9.4