From nobody Wed Nov 5 15:40:37 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 1496795614628339.9531987711513; Tue, 6 Jun 2017 17:33:34 -0700 (PDT) Received: from localhost ([::1]:40559 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOuh-00047a-CD for importer@patchew.org; Tue, 06 Jun 2017 20:33:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33463) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsj-0002IS-3Z for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsh-0001nN-Cu for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:29 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:34034) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsh-0001nI-7T for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:27 -0400 Received: by mail-qt0-x242.google.com with SMTP id o21so22861118qtb.1 for ; Tue, 06 Jun 2017 17:31:27 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=oHZ59cMTS51+z39wvru3ITyHo4oBlkcKYcs6QaFM+yc=; b=e2dKtqTgqhZCEU9vt8747HpdeVK8ABhxSKqtWio92JVT5tpYpzfT9Cn+Z+sG4wUyzI Sa7M68hFtANj+omZDl6bt36C1ZNms6MMNOgb7P1BgNtwDUoDp9gVayNrCe/eUAQP7jg6 aO40NOzeFDV8brxburBBYJLW795LIz1gpb6TOrmd38CugNrej07NHKpTIlS2g9uNKaVo OWkJZCNrMgPMo79TjPcT2/TZJ7qrSQsv1Ro5mg4EUDJczb4JNyLQv05BcWKoEJ7mYB3k z8bAaMnAx73R/Gch8SMfSbgK1xJSUelCIvTDBAQTQnKE5WhjzRVnfSCB6D6/UTir1c4z rk+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=oHZ59cMTS51+z39wvru3ITyHo4oBlkcKYcs6QaFM+yc=; b=TG37Y5fSsbjtrs/QfiGqOoW1JssClfZnH+Tv9Rg/hy7IrRg9FyaqYYBfRKHV1h47mR Hj7GuKfQEB3dq4HShi0y8L7UnGN7fiZjhdUBt7poKzhx41yL8WAX/AKwaV3RvIEfYpm6 KMwhQbsFdv99dT6aFsLeR1pUpYDihjIr8b7adVG4erA5B73Xy+16GwcKdSnxX4wbLC5r gNk33eo7zc9ByGCg513Feh588Zn3qVF7/J2VlIluNjdozvMKrpMVWuBYpFEXnefv2GUZ gPZGvTRAgDiJD5O4EXJlYPt8qLH5Y5t+b3RhULFsi4aiSmYNl/bFRyVozGEjYX2JefVT L8DQ== X-Gm-Message-State: AODbwcCGcVwaxNlvfakW3KMyaAofXHNz5HDmSNSua2l9UToi192fzjla 6fTCeMZYlhCOqdRr+8c= X-Received: by 10.200.48.245 with SMTP id w50mr16960103qta.54.1496795486395; Tue, 06 Jun 2017 17:31:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:10 -0700 Message-Id: <20170607003119.14778-2-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PULL v2 01/70] 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 628fb86..837d90c 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4062,6 +4062,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); @@ -4069,6 +4079,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 15:40:37 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 1496795614633187.3914891945136; Tue, 6 Jun 2017 17:33:34 -0700 (PDT) Received: from localhost ([::1]:40561 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOuj-00048q-7e for importer@patchew.org; Tue, 06 Jun 2017 20:33:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33468) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsj-0002IT-J5 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsi-0001ni-K0 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:29 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:34807) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsi-0001nZ-G0 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:28 -0400 Received: by mail-qk0-x244.google.com with SMTP id d14so12247222qkb.1 for ; Tue, 06 Jun 2017 17:31:28 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=+GfOcnKSDkkX/FFhxaDP4mO/IW/nyKPMH5vrdv1okg8=; b=tFFWaqQpE/LiRn8uANcwySwkOK68RBakMdzZHJle3vy7qc72vO07DcVVVScl6hgJgY 93YA3CGxJ9usbtpc4jZW1F8Ci+dVnVCaIyN6ajOrFaAiuD2tjrtbW44tK3IOBBUc7mww 7ttppojoOofoBu5eZSUGjW86wlpSpbwNdHwWsilXQ9O3QrO3P6vIpOipi4ETmco/bShY NPnUY6btcf62XOR/Lv/nvQeTfurzbT/azzigy0T22zwM8vt4FTCiZe15NtZ713Ch21P1 RkK3KD5P8yNzow1k1a8Fl88aWIf5nNiaNBTHN5GxYoLoCSehKqRKOjgbYwgomhyeOEuB +Z3g== 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=peiCU/63K9/bFitmE7u3TcgNbV0jPBBi2ZKDqgD6UBEzfT6tr2NO8iYSZ9np1VQHK6 0uJ4SRk8T6mJ0Fp61xFSHoYkam4tGJPoyn/XH/ZFAXeQdc+nZbOy9o0hxjZexOjKWy4H 34X/UEXMeSwPh2uMywS+R/H48BIb44ukxDIQ4wdTyogd1CCO4jv69rqnrcbFY7BVXRKw 8EnBI8hwTpRYA7zabyJHZZF4AbUHnrfaIHxXkbBMuOck8O+8OuM5gGSLJanPlYXGLF0U tStpBDmNjyYulPzQ1CqQBXxZsckzOQ+SllFTnhJ0Rx2fAP/YO0TOby4xEvEW0ACmBi1w eIAw== X-Gm-Message-State: AODbwcDy8eVjd952P90lU63Iqj3Ier8/x3mfAMO4S0v0udtDYJTGjAn2 ymjRL0pqAdWLO+YKC5s= X-Received: by 10.55.77.215 with SMTP id a206mr31085542qkb.11.1496795487718; Tue, 06 Jun 2017 17:31:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:11 -0700 Message-Id: <20170607003119.14778-3-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 02/70] 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 15:40:37 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 1496795616319619.9779379469134; Tue, 6 Jun 2017 17:33:36 -0700 (PDT) Received: from localhost ([::1]:40562 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOuk-0004AC-PL for importer@patchew.org; Tue, 06 Jun 2017 20:33:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33488) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsl-0002Ig-Bk for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsj-0001oE-UM for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:31 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35978) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsj-0001nw-PK for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:29 -0400 Received: by mail-qt0-x244.google.com with SMTP id s33so19303313qtg.3 for ; Tue, 06 Jun 2017 17:31:29 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=ZbdnupYWtSaqaWBVaKxg4uD14LABlehwujsNfxC/Ls8=; b=LuVN44dTBS3IB7wKmEbV9b3UvdV4eqYUkxbyDZCAwS/+VthHDMMuaifRKHH++RbI9z XOre3oH5X9xvR1n0GTb7jzUosoA6Pmp8szUNG887T55X2hrEcxnosqfZU9Rb2es2+GAa pdD69pR/k1x+dzEkvkgLCJ1zfaSJ175g0onDfCBJkKaXc5WoAD028kYM6SrmxBHobbUN DOVHAS2qJheu0yJad+i37pqpxqrMn2cvP7nLyB/eGfqASvxPZ8oom8ZQ50pxz3T2BqaD w43mwToHScgTsYsuIrp05TQt5a+RMRlBF2Mk+3NB9O3tbNQs70mH/IJJyiqSvoDZROoC LOeQ== 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=lKdEtdn8fXk4a0SM4uVXShwPifj3A0cIh/vj7KkWzcD5FojQRhFtG3yKFpSXni9Qv2 VQ9gj6kqzsmr6YHHmQ+whuV1paq2zVZmgN3NPGhgtgk6INGr2bJThxklESFzvUHwH0K0 Ijn/DV9ew9655FIyBnaoEvfSoKt2AukwwTLqqQHHS5MT8URTFaPpSTTOW+f5wgZflYxY PjUxmri1YPh08Rq5+usKybDC/QEVfr52QUtWIwadeutO/EBI1otmyeN1C8WW3iQdZF1M Gx1zvvLVzvKgvUuY+CFaVYnb2j2Fk01Oi8UM38Gf8vwoBZjYw7SDzZ+XLZ2CedRM4wAl B2Cw== X-Gm-Message-State: AKS2vOyRRGUF6UEz74bB7G5Ka9U+zK+0VWxDsac16cHLBS0bs+XjAser kXnrjXMF28bIy3H35Ig= X-Received: by 10.237.38.71 with SMTP id z65mr35738512qtc.52.1496795488974; Tue, 06 Jun 2017 17:31:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:12 -0700 Message-Id: <20170607003119.14778-4-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 03/70] 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 15:40:37 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 1496795776084932.4362167708307; Tue, 6 Jun 2017 17:36:16 -0700 (PDT) Received: from localhost ([::1]:40577 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOxK-0006UM-Hl for importer@patchew.org; Tue, 06 Jun 2017 20:36:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33494) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsm-0002Ix-2y for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsl-0001oe-8O for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:32 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:33756) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsl-0001oZ-44 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:31 -0400 Received: by mail-qk0-x241.google.com with SMTP id c206so15444243qkb.0 for ; Tue, 06 Jun 2017 17:31:31 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=1vmA2LN7zLl/DbWzXhos6fSiS9m2MhOsUKa0ZINcWG8=; b=ODuc/dcUsdoqkDlpq5rXWzhypZIU1xSyPoC7Db/jHgc+meyNt54cuKhv3nSZFpRQOP UBgJljRHLIm7BhA9JhAW+avecwjWgG8BJ8/v+Modm69yWodtH/Nu/kEsqZn2eIg8v5jj dzB/HFfqkfGxx9mMWPkkB1C1sRhRgebbQnJMZ3N60sbis0wwLKZAxrhLdjpuQzx6LPMg BExzytWPvy64HQBu3lZgb4LUgK9AOKHEOuO3qoTaOhQ4BuzIkmVo6yrjvkUxmyzQuh3m 4Ojn5KLjVAtXVof1mATSbKwlYPjlSs04lyD2l8rnr1AAruGq2MHNscdpcmw0kOp+6RNB uNVQ== 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=1vmA2LN7zLl/DbWzXhos6fSiS9m2MhOsUKa0ZINcWG8=; b=kZ/JJgXHL4zqj/ujq791B5KBWdnfMZZEwJ7gfB7EPHXP0jSXWg3h+O5WUvJSh7sq1f scvtVdma/QYRFKdcnZ3Mzpgx9dQsPoW1tQsO6vvxeBPguokLh2qkppG/8qn898cIvOcS Xrxo+PBxwiDapjcadMGsg/30FMtuaG11pV0jCO8ZrbLZzxsCzsXBDqYFLBWcHBAYA8/6 MAjSOhK6mt7faWFIXLIsOeqfknfsPkQZkIE9OnUPx0tvXphWMe9WFIYlakrf2mEenioB EYaNNn+paSv7e4xUrmZktRv1s0bhMmKIZfBC0mEZPMwN6FzuOzMKODp4vZtPenvxYhIF iNQQ== X-Gm-Message-State: AKS2vOwBV3swh42LsVtn5r7ex+0aDWLzGGQOyZpq6iTTQRklKj0jos9K /FWhbU0Iks8XytDDiHw= X-Received: by 10.55.214.204 with SMTP id p73mr31854640qkl.86.1496795490428; Tue, 06 Jun 2017 17:31:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:13 -0700 Message-Id: <20170607003119.14778-5-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PULL v2 04/70] 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 837d90c..afa2c6b 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3048,7 +3048,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 15:40:37 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 1496795772864539.9020562037036; Tue, 6 Jun 2017 17:36:12 -0700 (PDT) Received: from localhost ([::1]:40575 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOxH-0006R3-B8 for importer@patchew.org; Tue, 06 Jun 2017 20:36:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33509) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsn-0002Kv-JY for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsm-0001p9-Nt for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:33 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:36512) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsm-0001p0-Jg for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:32 -0400 Received: by mail-qk0-x244.google.com with SMTP id y201so11027764qka.3 for ; Tue, 06 Jun 2017 17:31:32 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=vYBsE/b0bNiBz4Z7THJOq/Ldbd1EfC9IX4zWtaStlVI=; b=JRNL0u9Igj1k2W/IgO2BRMU4CdLdwDz8NIDJvZr/wv8i5I4rosvASgEYxpe5A4rbyd s2hOJqIEzzYIHgUf2KPnVLV6hPKHmy4Kdzcu3WDG9kuVYeJz2fOJndglNB5DanLbmR9L CIz8rsGtbwVWpY9gf/fLp4KAepw/a7QMCEbOBBU8aCD0D+TEIKbAPfBNHURgiiSnaZWs NCM8ukEnbeDY99fCMhZFNb8tdm5eREOVKphl98afcba1EQ3f8rnx5Um8lqc8JvjswthV O5KgjRup49bkYr/36+dRuEQdlJetfKOiHCNJl0IH1/clG58hl/vDfg5wM0wBINwavGpp NRZQ== 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=vYBsE/b0bNiBz4Z7THJOq/Ldbd1EfC9IX4zWtaStlVI=; b=DqhM12FyMlzDKVHtI5JtVEfOboOBrAqsENmz7FYYny77EkKgFFP38tIq2dbL9+Wcpg Tnb2QxKy/9yI08649u/AKRxd6sbtBu7ZSLlZvOYtjXReLF7FHsb7eXHlbxjj1oKlra3D xbjCnOaKiy8UDui7r8RkBimNHu4FLGTTMH+nfkBwY0AeapsJQqJTunWrjkCpRzdXQIal Fy6xDS1VJjKfZ6T0sE03MesPShuwMV2CE0bpBVw5hNbSFJJtE5xTBVy0K3impwRj4SHz WPiAb8a66MSsc0AVTBsokYS8Z4ickWFsXRcE9NKRvGlZibTB2fFKfUEC5Ot3wu0fcu5t JUaQ== X-Gm-Message-State: AKS2vOwhwH9kny+91SQ8WJYR/i+0fd2uhaJJSEgAfdC1CcudcHo2dM59 pL+34ISXfEGOwKefJjI= X-Received: by 10.55.212.3 with SMTP id l3mr23534270qki.112.1496795491895; Tue, 06 Jun 2017 17:31:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:14 -0700 Message-Id: <20170607003119.14778-6-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 05/70] 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 afa2c6b..b1c1047 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3082,7 +3082,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 15:40:37 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 1496795929699561.8928924447788; Tue, 6 Jun 2017 17:38:49 -0700 (PDT) Received: from localhost ([::1]:40585 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOzo-0000eM-Di for importer@patchew.org; Tue, 06 Jun 2017 20:38:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33520) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsp-0002Mr-Et for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOso-0001pa-88 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:35 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:35982) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOso-0001pO-3I for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:34 -0400 Received: by mail-qt0-x243.google.com with SMTP id s33so19303424qtg.3 for ; Tue, 06 Jun 2017 17:31:34 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=Fe9UlZNXwq9rjT/4dYudugs+SGZkffVdyfwu1uqeZ74=; b=HOZFoeVM+gyV4kGLfGs6JOqQogjd7S7bamEMJWsnhUEAXCbnBmabOM/Qga09FrVg4J 2imv6Tt8gWU05b+jQAodV70C2l7/SzH7J/ophP+Z4YO8XY06PmfpXIRGlOpS1bbo4fab +/d7959yDl8K8sYsf2B1kazdPAnVEjKOm0fwYhzqBM0mgf9d6G6Uq2cJew22qT8E1CKS ejOqIhBMH3Ktb1ynm873JT3gA4trhdP3Iz6W4ESyDAUvsmwvdgHNzcUGND1XrnJXqAOT EtFKm7YyuH9JIhG6URO2J/bRg1y7kZBdtpuNz4E5bfPQCTcXHuabmsUnBydAmaCu9A9a /elA== 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=Fe9UlZNXwq9rjT/4dYudugs+SGZkffVdyfwu1uqeZ74=; b=S1o93A6Fi4oDtf2g9i7i9wkA3Upmts3ORTvOcgYcXrGN3lKaiKx8wk/3VjdiEfGIGB lc0jnb6F5xJN6mi1yAkr/W7saoSz9RNOHlcT0JFneKzQzsfzlJQY6f1KMClgdKb0i0/X MZsexbJ/A4RbaD9irmXx1X946ZocS92gFxOhqf5EsJUifbzPFyPlejVP/qzVThtv+++o bzmDj+jTmOHRodnSGmp7WFBwDK4XzmEXyiPaH0/4vcZNUrYifkaNVY0+3ARKfQetKPSM n2Wa7UDTRj9LCVHQ0ExUzlQyiFdb/6o8h7z8Fn533fnrimzUklGubDNN3qO2ueVH2jQx bhCw== X-Gm-Message-State: AODbwcCPsrWE9o3X4YWEhRWQDqq3jjsNbJzzydrQU5MUygye1BRixMxY XUr6ZAcLHOh5Pwsh0wE= X-Received: by 10.200.40.9 with SMTP id 9mr36341667qtq.22.1496795493269; Tue, 06 Jun 2017 17:31:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:15 -0700 Message-Id: <20170607003119.14778-7-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PULL v2 06/70] 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 b1c1047..2c26308 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4165,7 +4165,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 15:40:37 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 1496796241118562.3956821105422; Tue, 6 Jun 2017 17:44:01 -0700 (PDT) Received: from localhost ([::1]:40606 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP4p-0005XW-MD for importer@patchew.org; Tue, 06 Jun 2017 20:43:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33547) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOss-0002Pe-N4 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsp-0001q1-Kv for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:38 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:35611) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsp-0001pq-GZ for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:35 -0400 Received: by mail-qk0-x243.google.com with SMTP id u129so438368qka.2 for ; Tue, 06 Jun 2017 17:31:35 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=0iAUEgtY/vVog8H/qbRpzNkvCbx1HtatZo4RCrJ4HLo=; b=ExNfHqH5MciO9W5VhrxZvcqKu7uEollS0pxIUMcYJpvrY2WWBKCdPfsCPNufG4YJDa BMGOMwvdCzk5tOwV/27aC+gtuLpEC4BwxK8g4AMm4dUENdyo5ehvI+oTAU1yRJWnrFlm AgY1R+Mpv3Eqn8iXfRGvyuxMrVsmp+AT4yXedAmJnmQHSF2SDmmggtgDWkBtBTUaJrb5 dUGqN0EvXjwTKMZr2SUp9CfLVXqw4Ib52suOogIMbQc748nlnqPRWpmCESA/I42Unak4 XE7aiHsVMtwAgBh1OGLfY/QDSLd098ONDF6pTdNMguMeF1wJt+bgafO+3DMtITIKcv+A RuYQ== 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=0iAUEgtY/vVog8H/qbRpzNkvCbx1HtatZo4RCrJ4HLo=; b=gRpLHdIomNqpuwVzgojq0ek6paqb0FevDuDdBgM5xTM3biY3m/WMkNJFAJntSpYpZb g2BA7sTg4Y2V73tBDspPCY1CvzA/7OnlsZV+NB96aV9t6lpFkqEVd1aqCwKMBwvo2/ou Kb8LluPi13vGg+woHqBSazY4gfNtBArEexJoC1JExSaFNo4neKH3kIEPT3D+9mnPO95f a08yaFP9VN4gC+Jf99quVVwtO1R483byXAvjttIMebC4kxb1tYKIWWg/amjuM1TC3/eT Q4ayoui0MJQ+BFudXDSB763JADZAIDnt7Py6796QcOZRwStulf8x02tfgzat3NO6GwDM MDrw== X-Gm-Message-State: AKS2vOyAcokXyjpTVrK8fQdqziAYWjJttMMpfE8Zk3Xv3sPrBrvl/Xqo gsw9zsCMnKSQtW9Hf/Y= X-Received: by 10.55.162.196 with SMTP id l187mr37214896qke.182.1496795494675; Tue, 06 Jun 2017 17:31:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:16 -0700 Message-Id: <20170607003119.14778-8-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PULL v2 07/70] 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 2c26308..a9502cc 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2871,7 +2871,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 15:40:37 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 1496796092023486.4901826231114; Tue, 6 Jun 2017 17:41:32 -0700 (PDT) Received: from localhost ([::1]:40598 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP2Q-0002u1-KE for importer@patchew.org; Tue, 06 Jun 2017 20:41:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33546) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOss-0002Pd-Md for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsq-0001qM-KD for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:38 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:33032) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsq-0001qC-GM for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:36 -0400 Received: by mail-qt0-x243.google.com with SMTP id w1so26595183qtg.0 for ; Tue, 06 Jun 2017 17:31:36 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=OFl/XiMRB4MYms8JhGoCm6LsrLWwuA39VLu3qOIHBjw=; b=g2KFq6JtafLAnAJ+KmsFetZHMvyFUQYYtlv0zqHWGMaaq7tql/XtT4quzcEyO+MR9a JKjSG+OUi852ftBoh0Ul/9rWqWrCR50PuaJRhQsRkTTamg3YIGFBtJy7GRvFVlddt2TL 6rxtYsSQPeSwrTBJfFmU+CqrfQkwmLZqtkPqb54wc4OvRWVoiU0bW1BlXe13UgFVMUST VApCfn7SaJoR7tfXlzdQzfgE6z5tmRmKsLtwtneU2cIfd6f+opi5DY7Rcf1HW+fuJlR0 wx68mgd+tPJFkv3WcddPOUG9+iH9azLt1zXb/txVZI11OINO/xaJGVGyJga6sH9m04ob 3cKw== 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=OFl/XiMRB4MYms8JhGoCm6LsrLWwuA39VLu3qOIHBjw=; b=V7ZHBR5NtMBP1MFWKB5aTDJLVyuBkmjEvp1KRNuhuzh52Z7bD0r53O19W9RtJ0Biu0 8aRoB1mnpgEAgIs5DIUy0Ug+m9TFpjTRimMRNm5c6gGN8+7/Dd/jWcwqOGoiw7Nsnlwg 5dbFELVRq1iR2IIXIXvcitD8wWp9irjl65JNEwDJpP37xGckQTWTlB+gz7tRQ2Qvf+4r rWq/HF061cEZxPCn8A/TDEYq+Use7+aS4OEVV3nhN3IqFHcWyaFVnWAkhPmC3b6TIATp XmThm++CU4kbXo2qgwILeK9MdPysPHBsOg0IiKiXVsuG6QPnTDRQNYdnliDZZ6cCy4Uo 5/VQ== X-Gm-Message-State: AODbwcCzBeMf7G0FOUGXWqK6ohWvR2ze4XIWVYTh4z9b1sn5g2AYOpEq Ueq8A8JjfqiOgx6G0o4= X-Received: by 10.237.54.10 with SMTP id e10mr36524336qtb.51.1496795495833; Tue, 06 Jun 2017 17:31:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:17 -0700 Message-Id: <20170607003119.14778-9-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PULL v2 08/70] 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 a9502cc..c47b818 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1906,7 +1906,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 15:40:37 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 1496795767003780.5961942523948; Tue, 6 Jun 2017 17:36:07 -0700 (PDT) Received: from localhost ([::1]:40574 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOxB-0006Pj-Hv for importer@patchew.org; Tue, 06 Jun 2017 20:36:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOss-0002Pt-TM for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsr-0001qk-Tk for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:38 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:36517) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsr-0001qg-Pz for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:37 -0400 Received: by mail-qk0-x241.google.com with SMTP id y201so11027924qka.3 for ; Tue, 06 Jun 2017 17:31:37 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=lfY/Co7S1cHh3ue4yQX5l5j6c1LcDI8rIES1DQ5vUEU=; b=qVyDmgdCJZG3A49cHR9DV1cFUN2+4e4ydJkZEd7QdUweA14dDvsmF/E4Kf/adTe7Q/ gLjTmPnf8sYD0DmbJUG1RgfKVNCpx0jTfUvx8D46sNgLn9Ibh6vfHbUTfLdI1mJrHbRb lij0pJPPbVQUvn3gcAnk11a1w2HvpkQJl0kVQOQi0VJr5zhb2TDncKWdqk+91lw+xrCW O9xb9FPQP3Mdc3jzGWVHalL6VlpgSjhmjDIgKaMWy+D5byAd3NHWG9G+UWCMluZabb1Y jWYFYOpQEwpR0M/DAtLwMJGiAD2yhOv3ixMpwES4TL5Ol1pXDHIRv3EZY+44fA+eQBb4 +bgA== 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=lfY/Co7S1cHh3ue4yQX5l5j6c1LcDI8rIES1DQ5vUEU=; b=G/bvOUaTDLSIFLwwKphKltsIG+lp53HUxGVeHHFk73ZM3JuZZczb41A1U4qxLBTLce C2dSxfhyWFyYOuZPYQ2YvXtah4waJgrDNA03QI4sXqVepyNm1ccH790HE3i5Kk1ESNL9 QPKGSEX5JFdnj8DSoA5Rps+zD4AWGMyeAcj1iHzEnu1y7aeAvJB+9u+fY0mqBvbBhdKM xRt6cLNvs2iQoqpOkWHHXplUY8SN+UiJSitvKLWiMMWHyjmuhwKFXjX1dnqgeWZjiUMr OYi/RzQiAteymXrHVJefpBhStl0q6O8EyygR4dldPgWBtIi41UqufiiGxK/EMxIDYhCr RNKg== X-Gm-Message-State: AODbwcCvLSggeCHoFEPnPnmybiO0otiuWLEQHlBjh4jZYQy8/OXo0ZTL Hv9a39dX1x+HJq3lxGQ= X-Received: by 10.55.6.18 with SMTP id 18mr31237048qkg.179.1496795497109; Tue, 06 Jun 2017 17:31:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:18 -0700 Message-Id: <20170607003119.14778-10-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PULL v2 09/70] 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 c47b818..d4c5fa3 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1933,7 +1933,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 15:40:37 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 1496795925000828.821885927226; Tue, 6 Jun 2017 17:38:45 -0700 (PDT) Received: from localhost ([::1]:40583 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOzj-0000ad-Ia for importer@patchew.org; Tue, 06 Jun 2017 20:38:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33569) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsu-0002Qu-0l for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOst-0001rM-5L for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:40 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35988) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOst-0001r8-0u for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:39 -0400 Received: by mail-qt0-x244.google.com with SMTP id s33so19303589qtg.3 for ; Tue, 06 Jun 2017 17:31:38 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=B2Lv1EoKgZPdxqxAGLUfuBk3FR2uXsMtD7KfI0ZEwnk=; b=p9FJ86RNcTUlK9jy5jkQBIL4InmnsddBzWdkUIeMF0Mn5GvGy/9dl45oFymclTDMln +zfglZ+eARAqJc8Vyy1/fi9V/ZmYIk8Gy29QiF8DnXQlpMk+jGNk8WSlsSG5Fyg7w3Wy iRFMuUqlfdCsqRjFVsF0CHIPQ1Y0xKTsyglTKN0Ua24+57bYEjwfSWoHEOfKjPKtrZFu C4YtZ0aooHyuiF5nOvvRtvYRnZxcF2eA9+8280iclr/sOwjiJj/I7WJS1ulxmKZHh5IB JAWEXRwCmxznPd3u7e18Ej7+UO9DIJJS6IFJqXAUrZeVx6TOaVaYtKPpSNnMpiyyl/G/ e44g== 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=B2Lv1EoKgZPdxqxAGLUfuBk3FR2uXsMtD7KfI0ZEwnk=; b=MC+ps/OL9dwI8lpQ9rkRP6lTxV8X1gh4TqsJA3L3ZuS01ToaUrL5PfpLaRYNm1ytKy vex8jjGwGR9gE+6/585Qp/7b1bZ3XvbE8hmYzf4XmvHD4gB5+m4lxWwJtpCfesbiSiZn /e3utWFBQjtWiAYPM4UIJj6s0JbA54RxjVQzIpEOMLoOJmQpHikhD39ITx/fAMKWOmcF WqIXAKbcqapp7suEIqqEa2yrO4gaeR83YDPiGtzWO1i84p9ssnX7N2ANYvMVnNPvieWl Ot4G0zZyXmsKlQ2nvN4yxWxmVia/2YrqzjJ7/Bh7YpwdoF2c+IJtkZ1Zb5PQiihkHBXG +oIw== X-Gm-Message-State: AODbwcATcv7kBxMtqeTt6725mBO4qQSLTzr22lojAg1jktSBYVYlhmiD rOdyPM1agNbpWFyjFBE= X-Received: by 10.237.32.176 with SMTP id 45mr36649339qtb.30.1496795498367; Tue, 06 Jun 2017 17:31:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:19 -0700 Message-Id: <20170607003119.14778-11-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 10/70] 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 d4c5fa3..9fc5b31 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3977,7 +3977,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 15:40:37 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 1496795924327611.2807648482458; Tue, 6 Jun 2017 17:38:44 -0700 (PDT) Received: from localhost ([::1]:40582 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOzi-0000Yr-5D for importer@patchew.org; Tue, 06 Jun 2017 20:38:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33586) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsv-0002TV-H5 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsu-0001sV-D7 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:41 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35613) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsu-0001rr-8r for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:40 -0400 Received: by mail-qk0-x244.google.com with SMTP id u129so438472qka.2 for ; Tue, 06 Jun 2017 17:31:40 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=wgjOS/db5rSjvvXeONFkRrzEHrdEzEM8nFnIVUnsfKQ=; b=fPWh/0nI5VoqkoeDFYZ8UpvXQBswklBNpH2GvuVNcOOE/70sy08Jm3hdACDfpQFUZZ nSUK/xokNRbpKzVW255iYiqqeX8quoEDPmBGBKZZwhbi42pGEm5lclIGz2zjAg0yz/Qq 5vn1XPAHddwhA6buGYHsfiU8JxVLGwqXyXj1e3Ju6rNGKdXK3mLm7bgR3+2iyxA/D4CC uWC89cz4BnF3KC9128yClgB51C6wMEEDj6ybYQQdIcBhPy9YwLpU7zUKsbOe3G+tCnvl 9axuHcpolHJWkzuxUGkQum2JOwNkkD2VGeyUnViy3DhSZKk4wWJMUpAI8iyfwUJunfJc hFTg== 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=wgjOS/db5rSjvvXeONFkRrzEHrdEzEM8nFnIVUnsfKQ=; b=fKBrmAH3ojLInZelx0mMJeOjoNshFNKWzfiifSZR7GBwMM/Kzwmi9XP10B7Yd2W+eX M3Rl5I1Xea8RGO25AlbB/gWn44iBKj0yW5so6lOx7knbIQv0dc6AHFQjS7boL+BFBzmn p/QGjF5ZiTsiVeg/Cc4+8B2oJQhYep28ULnPq4eUDTmnAvkKyrg6vIWygdMUyooBGY3Z r/J5KGWCGG4d3ci3oG1QkxKj8SXsVUxaJKfv2FmX+D8LcwBnLkzXIhWkXrdpvGJ+rZRk mESGvKRf6Iuzq1q3osly4k+D8zn38ZPj/d4Y6W9OWCVtOUV+KGCuZvAuMTAE0+QZzVyR polg== X-Gm-Message-State: AKS2vOyIEvE4nARartcG7Wh5fxN75YDMrWjOm1xDuiVdXx1udEellOEb LhvDS/aKzSf3dB5j1TE= X-Received: by 10.55.37.210 with SMTP id l79mr31083243qkl.227.1496795499599; Tue, 06 Jun 2017 17:31:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:20 -0700 Message-Id: <20170607003119.14778-12-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 11/70] 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 9fc5b31..b87755e 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1942,7 +1942,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 15:40:37 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 1496795772981349.7332265780849; Tue, 6 Jun 2017 17:36:12 -0700 (PDT) Received: from localhost ([::1]:40576 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOxH-0006Rn-Nc for importer@patchew.org; Tue, 06 Jun 2017 20:36:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33610) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsw-0002Ub-UV for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsv-0001tz-Ln for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:42 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35614) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsv-0001tp-Hj for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:41 -0400 Received: by mail-qk0-x244.google.com with SMTP id u129so438509qka.2 for ; Tue, 06 Jun 2017 17:31:41 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=E8qWpXtOC71OufwP8EUI/mYVWfZRp7WpeAuKvgo8hLM=; b=BzEv03S/CDtNe6p3Rwk4hMMB5w/9sby6EONkc7I6NI6+d7+Pqlbyb/076CiU363zTX UxZ88bZNnf4Ai/Sehx52IoPP+5RoQAeOagCVeKGrPFM2oH54UbmNg+n7jfme9hcoL9vv hLAevq0iPcWok6hI+WiMVEzBdx/E6wo8qhZsHpctdyQCG1sdTDjjSONCqZ2leFNdXtHQ QcOQTR4ba3NlL4vLEFcr0yI+7MdZcK/VwqMDmM+10Ck6x4gaJiVzOcHh8lrCSBQkQc4O ytWDo/aoqG+z6Djpw48+LPYZLiIe9AS6ViqckMbbwJnsyRzSrONyTwaZxp9dAEIEmeRf GbKA== 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=E8qWpXtOC71OufwP8EUI/mYVWfZRp7WpeAuKvgo8hLM=; b=KA2yHTrOnNzpKyXQ2xlDnlc509DuYqwLjiOUPdWI/8LmAz0XyIa15of/yd6e1AkCg8 MZ34DRA7bYFy+qxusxrfk5bnB6tTB33/YR1eyxRuDCtFcecOJdfoGFX1KbNOdPNpewYs yGa10uYg/Zhk/FpUzkERrrpka77//yO23CK6x6rE1VUbu0vZbwZ/6DZo4wCxfU8W1L5a q6WhLs3jGQf/yqS12Rm5aIV6Z7HUEmlTPBpNIpUcM9rboPQ5zdGS88sk52W9386RuaOR IC5u38QBIS1cOL14OY+35Bm3XL6qEV66D/kx0AePWt4XaMIhKK2ffapejbOdSoNgbVRF 8hXw== X-Gm-Message-State: AKS2vOwmWBCEza3rW44w2y7MucK6UousSHEnN8gNaDlsVYe9OS6ZXw3m UvnyQsXLOH1U+BiJzGo= X-Received: by 10.55.4.139 with SMTP id 133mr35619596qke.204.1496795500875; Tue, 06 Jun 2017 17:31:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:21 -0700 Message-Id: <20170607003119.14778-13-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 12/70] 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 b87755e..ae29889 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2921,8 +2921,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 15:40:37 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 1496796084221885.0986285704663; Tue, 6 Jun 2017 17:41:24 -0700 (PDT) Received: from localhost ([::1]:40595 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP2I-0002nL-O0 for importer@patchew.org; Tue, 06 Jun 2017 20:41:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33638) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOsx-0002VL-T5 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsx-0001uU-21 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:43 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35615) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsw-0001uI-UG for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:42 -0400 Received: by mail-qk0-x244.google.com with SMTP id u129so438541qka.2 for ; Tue, 06 Jun 2017 17:31:42 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=tUBzeTZqy/Lh4/nvvrFH/u/KhnwPtgqFkxEpZuPxlJM=; b=FWbB/o0RfRhoeM2jEy7UNxRFCvFDIPwEs4lhJ0kNyzA5ucPI5DkEIHE1KGvCnwBK6A FsageIHdRjFpdACKy3P+INojMC6eP1tc0YPZNqd0NxQ2rh5ENpBfht4UXWsEJUnrXBrQ 3YrZX4WiKKMYxxH08UAGILMkHLR1oLmbFi/NgRv2s5jZwadDjg/pMzkLbRzvGyCjread 3ajP7R/ze1M1Eooa+RxLPT7ujIh/mHsbr3yNH332nTD9izttY93tR0++Qzrl2AkHbN0g aAYkkGj0DhQRIXmVYe8Wqy1ro3xcqHWuPBKUhkxMMajf41XB2d44x7IGIJowwZHXQoE+ Vefw== 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=tUBzeTZqy/Lh4/nvvrFH/u/KhnwPtgqFkxEpZuPxlJM=; b=LT5d/6fle+dEBKz8qZh1Fno83pVgsCEkFxhn5EIZDDpR/XdQlXLFzX4HIsg7UYF2JN FwTYVtfZzFxdIHeSp7Hh6xVw41IVdtMiPT9TPm91GrqFNUmXWEZTbR6mSNf2SKU5Ow+M c0baB6yrUHnw8tqkZLDxYWdoSvKdXq0s/cO0lUKDII9rFopSGn2tb6h9Wf/uYiLrovsh EcerDPDUc58F5oeMBdxZTA1wTAz1fzz9k12YaBQpG3k8wowIGBLNbhXPgKWs14Ox72lD j3xL8SshX26j+j7PjZGO6znwN2FHaSFtIa8gDIRXc76xOHoWutys+VtD6X+P66Ke43R0 +Jiw== X-Gm-Message-State: AKS2vOxKYCYUY271CkaGzKCEQBoGa434LLgQGU7P2e6bc9LVW+T8NjLM m66HyJGKiJa9xaupq6Q= X-Received: by 10.55.170.15 with SMTP id t15mr8272935qke.186.1496795502249; Tue, 06 Jun 2017 17:31:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:22 -0700 Message-Id: <20170607003119.14778-14-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 13/70] 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 ae29889..d41a0fd 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2928,7 +2928,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 15:40:37 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 149679592598758.63819210169913; Tue, 6 Jun 2017 17:38:45 -0700 (PDT) Received: from localhost ([::1]:40584 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOzk-0000bU-FA for importer@patchew.org; Tue, 06 Jun 2017 20:38:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33672) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOt1-0002Yr-3g for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsy-0001vG-7R for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:47 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33765) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsy-0001v6-3i for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:44 -0400 Received: by mail-qk0-x243.google.com with SMTP id c206so15444591qkb.0 for ; Tue, 06 Jun 2017 17:31:44 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=fN4qPeStdbbwYA0UWeo5cJKjhGHxovKoQuzUfP/2lsw=; b=LDtZH10wrDWj0GEMD6EYS/dwki8HZry7MYsoOKbksOXWxuh1ba+UT7ZK3tzbIKqTjI NQxmz+IQoJWvsK2gOqHftiwdh4SSHGCYpRHghbPvN0UfqAgxLItTPg2+w7W0i+W9qqpo +/e6ty0B7JgizyfIzwA1PB1t3yctqWRSy8txL4tmHPK5lYOApndgCUMlwsmE+yDMntuQ +1YcWGEO8nTU5rUuRyQ5AZuYd7fLs0CmTcTwsHHo+uAZoQDCGlOkJ9G+Si0Gas6peLRl 0zcAC2B0zsNWRMT05cAvwbZSzWUDrzBujmCN6Ao691imzCGjaWegZw+wQw8yx0P2b/uU sUGQ== 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=fN4qPeStdbbwYA0UWeo5cJKjhGHxovKoQuzUfP/2lsw=; b=rCMfi5YqRgVeIGKUznqlwJb8CxgXYRsGfjEgR05lVplq2RW4w39Tag7gatsLGnK5dJ pyDrgWFQPvCVD01T02qdau0ZUVJNBSKbBnD03lxge57ti/CRywhsDPEprdXF3n6ztE6Y N9P+zG9LxBgWsWsNLBDdPMJU8RDV1cLhFi8I2n+KtlHTK5NK9WZ1Mco559njxEZ1NWOz POygML23TCyrxvZLr3MvLSllSw1M1nuu+plJl84CySn3AKheH/NE1zyS1r/Nixi6TwPC EiToV8W/8ePvZuAp8xd7Y43O8A+Od8MMrmYYyLvY6dQMz+8QJITiOJ4X7lTwqFaEOFh+ l3tQ== X-Gm-Message-State: AKS2vOxtRQzMZBBqr3pmKpwobTYV/+7VE7o/B1THC0AG6k+Ply6aANY2 0z6tMHln3p6QzRqYPpU= X-Received: by 10.55.99.131 with SMTP id x125mr33882323qkb.17.1496795503431; Tue, 06 Jun 2017 17:31:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:23 -0700 Message-Id: <20170607003119.14778-15-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PULL v2 14/70] 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 d41a0fd..16477fc 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2626,7 +2626,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 15:40:37 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 1496796087221177.57379227133708; Tue, 6 Jun 2017 17:41:27 -0700 (PDT) Received: from localhost ([::1]:40596 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP2L-0002pL-OA for importer@patchew.org; Tue, 06 Jun 2017 20:41:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33671) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOt1-0002Yq-3d for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOsz-0001vU-HF for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:47 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35096) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOsz-0001vQ-DT for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:45 -0400 Received: by mail-qt0-x244.google.com with SMTP id x58so19242283qtc.2 for ; Tue, 06 Jun 2017 17:31:45 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=7YHhs8SRU+kHelVyk0DzdUWpp9e1+Bo2BuPlZ1NXW24=; b=k1X7H2owNqa8hCovC2+KCWoZ8FTtGc7wdVROICgu8nKBCvaeskoIMfZawx7P5NFOwk xj71hUvZxjnx+zJbxSBWPdnRRBILW1i79TyKdMbVktL37f4DfltqhWwqZl64oiNmpuRK Ih7THOtL80PPGS+SvC52MgDbemFepOdGn7tTNMnS9tkGiHw3TgXR7Ne+ApLAqHuxA8v9 XVtxaiU7JK7mF0nnBkvMbmEWETfYM25s6Iin8zK9p45ulDlt+ss3TJ0N1dZoERPk8+qR gesmACixUvVdpILdwLuEbcOdj/ohUD7cHasm1D8y91wfrHUIiF6ZuYKq3IrgHtANlG+o 0TLw== 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=7YHhs8SRU+kHelVyk0DzdUWpp9e1+Bo2BuPlZ1NXW24=; b=lhcdYApDqAoYa+pzNiPr7eK87mf6v1+Ewp8SBntDiVW/M/A0CUeOBMXIl1FlMERYaQ 0Gl9WdDzYyaDqNY3Wau+rqPagLEQbLOFScawmP8HWfujgQLGeOnJlS72twQ6pCC3ivvR 1XIDyqj+ZG3ONruc8iUWpYjUc8OtsKg8T7h7ywRMrg5xDMYyVrfaH0hb3dQTPHl3TsRs hHBSRLVi7shNMHR7anfKCgoWwvB0Eaf6JX5pRamBNSSbmAEmxxrcvfuM+pIjHZgi20Gj TXQ53HLuFT+CN4yqtX590Jf7nfTtX6oAIzKUW7cfEfBJDwOrCgCTn9u0ipqFSAnFi18N 7FPg== X-Gm-Message-State: AODbwcDIDu9X9rnz0E7IePhfkWdD8LMaJ+7dO66CdWFHZvxSwmjqtZjk LBsfQ+m56IEWItx8Vas= X-Received: by 10.200.11.193 with SMTP id p1mr33115701qti.221.1496795504746; Tue, 06 Jun 2017 17:31:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:24 -0700 Message-Id: <20170607003119.14778-16-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 15/70] 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 16477fc..4ae949a 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3867,7 +3867,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 15:40:37 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 1496796087042151.88598445558978; Tue, 6 Jun 2017 17:41:27 -0700 (PDT) Received: from localhost ([::1]:40597 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP2L-0002pU-JU for importer@patchew.org; Tue, 06 Jun 2017 20:41:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33688) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOt2-0002Zi-1f for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOt1-0001vp-0Q for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:48 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:36524) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOt0-0001vi-TA for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:46 -0400 Received: by mail-qk0-x243.google.com with SMTP id y201so11028236qka.3 for ; Tue, 06 Jun 2017 17:31:46 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31:45 -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=qJ8WgrcjmoY+c983MAuEcxZf9L0ZzuumUfjPKYENsbY=; b=oBOULfR+79r61mZ4SiBwFPkMs1ZVZ97SvX2iNrDGFaXjR11aoANO9X08XUUbX9LCaq nKO1EQgQ8gpidyFvhy+OWDQLzkkj1D5ZmKUN5tr4Gz8adIm/fRbRM87TzVAKe6EX+6KS JFcwFfZO5DWEeh4gY5sA2/tfD8cygg31jOCniTK9kxN0802kHTmxl1SXZn7216cRPEQs Ttpnwcon9YDZgUyMYcpo9DzD6UnbYMaRfkW4FgJ5RqDyDghLgAe74sRuqtx9z0dqM3/8 XJc0K0w4RGhlmxRmKQwuGPjucXMW+t97MqQJZ8n8Q2D9rxcEUorwyrSpU3xuUkQbHENR 9mRQ== 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=qJ8WgrcjmoY+c983MAuEcxZf9L0ZzuumUfjPKYENsbY=; b=VBRnEB1jFvHxah3Cl1cA9uOwZkMaMrWq3y/6UH72S51+w2Mg7IljuMeQCO3UcaVIZf UYon0Exb+ikBP0j9HGhCf6K9TiaF/Wh9vkpB3JcuDyNObVoCOSr3NtgIW94YCQuaD7pF vabRBgCJF4JB+QuIDGnXpQ8nCApwEQrYn2UyRLdQ5HyPWtFJ9Z4v0AxYJdo7qmkiNw+2 Z9/sWMr9NJQojCDFnby9rlYZgXTD5kxu/n5uQXe7DJKFRUXSIYNB1E4GSN6NN10L3j5s 6WzxPuGI25a2AwwpBeDz8sHH8EZuiFPV123lxB4njve3XfAPpOjtjMcNb49tlWaNOjCz pm/Q== X-Gm-Message-State: AODbwcDWtI5mKOfbJxavZyH9ND9jEAMprHbBTJHK4K5mCJPINppPUC0r yVq9HgLi70Q413ygjFA= X-Received: by 10.55.43.93 with SMTP id r90mr32217682qkh.196.1496795506123; Tue, 06 Jun 2017 17:31:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:25 -0700 Message-Id: <20170607003119.14778-17-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PULL v2 16/70] 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 4ae949a..e3c5ba1 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2876,7 +2876,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 15:40:37 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 1496796454663758.7046691565638; Tue, 6 Jun 2017 17:47:34 -0700 (PDT) Received: from localhost ([::1]:40622 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP8H-0008W6-At for importer@patchew.org; Tue, 06 Jun 2017 20:47:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33698) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOt2-0002aV-Ux for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOt2-0001wK-3I for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:48 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:33041) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOt1-0001w8-Ui for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:48 -0400 Received: by mail-qt0-x243.google.com with SMTP id w1so26595514qtg.0 for ; Tue, 06 Jun 2017 17:31:47 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=uEolkX3Fhf+5sGFCwikj2a4r+aT2bQ99p0yrILxbERE=; b=nKxrW3ii0ZsoIk+pLay5nG7yahRCSxxdcioselmlOG0AAQRPGQnJNAiytl8B+giOzm XfvhdrBDWM2Hv9N+jlhvftGWPGJCRNqtTLSMseeSwft/aw6zCF9kqoef/VmXFCy2vmFZ d7cplKIVkHLM7Yq4eg2fHfvhmop1CcFn9xJx1+FTWO1BNnrXG7gbiST6vX5K9YzD7V3O skRq0kdpOZa8kQEn227V4GszeAZ8Qi+GSKpryHBumX4H1TuwZjkbJDSoN0PnpwPxtMHH Whrbwghoj0i639vrjjQjntOgn8WgIStfYMFf5kp0Bvm1TVcsiO1yWU6XwLFv7F/7AkMh 0wdQ== 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=uEolkX3Fhf+5sGFCwikj2a4r+aT2bQ99p0yrILxbERE=; b=S7sX4mbw9AkjlQbPtE6RwYdUUWWEX5YNotBjL1E1p0VzNyUhTm0/B4JlYxPyECTyP+ 3McDJ7eZfEFMhZQnG3ppL3HnV/p4gKCyReqR6zHBXZ4uVG03k1JcSDjOZv7PLcF/s18h HpL2XumV/z2zZfqR2l6d7M3fbcgS5qOX9+WyB5inuTvJ9b4DYdPNqa1bUXAXE2fnRuVo 0wekfhy4SVg09CFI+vjLEC8wYTD1N4KbSV7ln/xW4YxGoLPeFBGGbCgWRMJCSgJiVW0v 0Ffw3/XxwCLwsvis+O/qrHfneAtKAbwnxOC3UzopjixLuJ5s0MkNEzcJ8FfV5GZB3B/Y Q4jw== X-Gm-Message-State: AODbwcCZ9n/8eX4+Z0xV9FkdJdOO5ALC+4RcD1c8KOkwWv8Ci0HxFtcD HrIGU6Ir7LMW57GMxz0= X-Received: by 10.237.60.77 with SMTP id u13mr37347676qte.18.1496795507307; Tue, 06 Jun 2017 17:31:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:26 -0700 Message-Id: <20170607003119.14778-18-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PULL v2 17/70] 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 e3c5ba1..eaa3adc 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2887,7 +2887,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 15:40:37 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 1496796610540655.3007526512135; Tue, 6 Jun 2017 17:50:10 -0700 (PDT) Received: from localhost ([::1]:40630 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPAm-0002lb-4M for importer@patchew.org; Tue, 06 Jun 2017 20:50:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33711) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOt4-0002bz-A8 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOt3-0001wj-CA for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:50 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:33042) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOt3-0001wd-8a for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:49 -0400 Received: by mail-qt0-x244.google.com with SMTP id w1so26595544qtg.0 for ; Tue, 06 Jun 2017 17:31:49 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=Tn4dCIYITd4Gp+fwl4kOQ8868zZIxOl9xihFK0OJ650=; b=fbt+oNCa5+ibFjuNpc6q53itWPD7ulLEPG3p1OdA0ux2hsbMnGjRsig4Id9udfM/Er E3dYsq9eL93W0edKNVnFMy/U4e9EP5qKmgxcLCaFJw2Alr/8L+15xSfPF2wV2l0MfUt4 Flp7Ni0lgbgBGYTzcBiROk0wZbtq4nEQ5N+4RkW8zd8llzxkOoV2fyAbUl9rT74qZvRo pg2gl6iIykPNnCbsab2i2kTQEmAXnMkYe1fn60+K4nJkieZW1ozL3qjK3RaDzDEfWBG7 n2iqrLvTsEgtkik6fS1M+AMSxe92s3XtBq8AX5jxKMxwSPJbAogif9dpfcduh9612/am OXOw== 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=Tn4dCIYITd4Gp+fwl4kOQ8868zZIxOl9xihFK0OJ650=; b=IPn5lpQX0zJQ3AlOjph/0bYVliY9vTMbWt/SSltcYEQn7WPcowXbzcK6sXUZvgblSD kmkeXfUxpjpCLksLQoCz2DgSLJZA9j5ESLz3S2gpVm6EWgkZwZfyVZ52dcA/i5INj1TN 9z3CpqykEYgxNIsOUwcbK9Ie2XB12KulR1t67h8Y/7Iktuky2AU9CFS+jFIJmG60pX40 OLKfitUcsn/dBASSoRnAjmQJNtoVGyMGLgyVu9i6RZkuthCxCUUhCUxdDGt12UaX2/6I a75I4HHvfDBQF1LNg1kA3Cicuu+iNmRkvdr/N/JAyU16zn/HBZAq+eJ+rzYvJm4ZxYwh Qjyw== X-Gm-Message-State: AODbwcABKv7eHXWdlOVi4FFVmF23mRwyX/V2WtmhC8lZfeGsyevI+pJH X23+BwuiyW95qXW7CC8= X-Received: by 10.200.45.83 with SMTP id o19mr27551809qta.43.1496795508585; Tue, 06 Jun 2017 17:31:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:27 -0700 Message-Id: <20170607003119.14778-19-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 18/70] 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 eaa3adc..600b76d 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1920,7 +1920,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 15:40:37 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 149679623373311.848468169796547; Tue, 6 Jun 2017 17:43:53 -0700 (PDT) Received: from localhost ([::1]:40603 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP4i-0005Qg-6F for importer@patchew.org; Tue, 06 Jun 2017 20:43:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33723) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOt5-0002cp-Cx for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOt4-0001xH-G3 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:51 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35997) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOt4-0001x4-Bl for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:50 -0400 Received: by mail-qt0-x244.google.com with SMTP id s33so19303896qtg.3 for ; Tue, 06 Jun 2017 17:31:50 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31:49 -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=YmHxGq2B/YPKDp4Ey4WRzh4EgurAn6bqEFyRL1t7Wps=; b=RkcB+k4ajTcm9BrU8h5iD4MSXQMBv7GtJIDnAkuPtWTTf5M7Y4DaVhMY63fMGDHcej /5uu4uM8TofPMzWyqwbI14kL+jYxiUtCflmIds2yXbRzkzvl71OF9xraCGBzVOQku/j5 JB61XPieoEd3kHD3hC096njGhhXiKo8SBgs7kPsyh2MQnoarOAI5TQnOaXDAeDWLmGzy jgoYuNixeRyw4H39JeyonWETZmsk87w7QpKWJULYpqNmTVMRZNcrEzsvXQo+4YAgsDea EnHSh1O8qcJ/9YrLWvGHS2ZyFqGVxqoZ/CvRDCKeA9eFbUIf62vlBqmOvL0JPcNUhaaD moPw== 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=YmHxGq2B/YPKDp4Ey4WRzh4EgurAn6bqEFyRL1t7Wps=; b=rHC+VFQf93ovMbYbsMNHAfWCbwxG03DhSNBpBq5kZYH5bQn+R2aW+Q+53qo6GuoZXr AFLAHuRX3Md7YIhFbQffFVYQ9ycw/MvjhMR4iT+FsE/HB+f2e10YhScNnhmM/9xaPhDU FH3Lq9LZ1YC+KHu5I1FsHkjH1XsGg9BR50J9bsokBhkIClXTVC6pPNUFi1cd56ouXV1k 47+boo1PFzbRSkFZui9iiYcn5xKWnpTlrPLcqOvltwQZ+4+bNrfV3qidnYg05N97QXZz whllO2cu3upOkYfmb4tosXNkh6wQujdtOixzG0ClLPC7JlOco0snzr7k55jWQ3KMV1Du BDig== X-Gm-Message-State: AODbwcC/AyNmqksNEEv1TR00T8D0roH9JxIlu3Y+VU4aTAjQBJyRZ5/u +/G9MXdOgwB8wQRHnjc= X-Received: by 10.200.38.178 with SMTP id 47mr9165024qto.239.1496795509687; Tue, 06 Jun 2017 17:31:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:28 -0700 Message-Id: <20170607003119.14778-20-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 19/70] 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 600b76d..40965ea 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1871,7 +1871,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 15:40:37 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 149679623708022.159279701121704; Tue, 6 Jun 2017 17:43:57 -0700 (PDT) Received: from localhost ([::1]:40604 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP4l-0005Td-HS for importer@patchew.org; Tue, 06 Jun 2017 20:43:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33734) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOt6-0002cq-Kb for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOt5-0001xa-JO for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:52 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:34055) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOt5-0001xS-FR for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:51 -0400 Received: by mail-qt0-x242.google.com with SMTP id o21so22861841qtb.1 for ; Tue, 06 Jun 2017 17:31:51 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=mPE2h0S4CZqDOvT20HWH/txbcn+27tcxn2OSy9mwJ2g=; b=HTRJ4E949Zr2IpCH1xlSFcwlrXt02HEfoRTYvAhW/cl1wqSEnGUzMaNAIn0Zl5th/Z UcGl+Vn/IWnv8zbeIZflBAnG+DnK3brzPJSvdFqG14Ej5W9gCcOFYN8rW0XY7JWnTteI uAI1CLwlfgeIQIeZVof5HcBwUdR0Lr+HVp7PEG4YVHhm0rtK+B6PImyX+l8nU9olzNTB y8/WaKNb1OpvB/9OPaFkJw3iP0r3dzxT/GNFINa4bJr7EHD0YI89iuqQLkLMUkaoJ7E1 jRl2NokdjbgERuqXN+G8e4Z8rtztAS9UdSn9bEibM2u9vrKXRBQ8f4t77riWsNFSpBDQ bPYQ== 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=mPE2h0S4CZqDOvT20HWH/txbcn+27tcxn2OSy9mwJ2g=; b=jLAtud2A+gdYi7JZkKmaTooMw0575SASOUyMmQKTJlC2XIquOeD3cDVuObtB4TZkXU rvGlHguk11om4m3LNl5jN5tnOgbjePZz3ik2sAfaYDgS3up0p16tlCtzAgPtcxy9QjwA +BJqAOlSU2j2ppaqr35sNjT5Zv4e+GwTHp/r8WRx9wAtTN9HGzr/3WgWIcL/JqDxcGTv bYO1OYJOe3HS1yihys1wCdIvqfvfADZdDTtuoxttJsmG+Gh8Gt2aSZhytLqqNycE/VxF jejpZRix4RTjtLUrGFgXpEZx73a7DUjyS/LD/v835326xsc5HwqNr3gIpIOi1TktRt90 nqXw== X-Gm-Message-State: AODbwcB18pNqT0PaU1kSB3lcaOBHJjSNOXN+Dn1Remx3mX4L8gn5TQbp QqOHkDNWCBkoKEY7G3Y= X-Received: by 10.237.33.107 with SMTP id 98mr31332865qtc.116.1496795510802; Tue, 06 Jun 2017 17:31:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:29 -0700 Message-Id: <20170607003119.14778-21-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PULL v2 20/70] 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 40965ea..10262f5 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4099,7 +4099,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 15:40:37 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 1496796384335333.23394430631583; Tue, 6 Jun 2017 17:46:24 -0700 (PDT) Received: from localhost ([::1]:40619 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP78-0007bb-VK for importer@patchew.org; Tue, 06 Jun 2017 20:46:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33753) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOt7-0002cs-Ow for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOt6-0001y1-QU for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:53 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:34055) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOt6-0001xr-Mz for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:52 -0400 Received: by mail-qt0-x244.google.com with SMTP id o21so22861862qtb.1 for ; Tue, 06 Jun 2017 17:31:52 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=75bF8NT6LA3g7HaD5RH5HSWYpX6LZ4N25ol7Y9S9TKw=; b=iwJE5d98YLHMQFJ1sKAOmibfi9RoSbtIvdKpeinw4X31x60m5HdSL8PbzBiKBjf+q3 2vLkybgCLQFF4gikDikXnHrnsaP0kKx1WKSwV9NCtxVqs/J+sT6MXuICG/m4RH27pqgf xDkaeLpQ0b3XWttt+vA56zBCMFUcx3Dk4n6lFle0UD3IQlQHIm3kk1L4RKCCvmGFfBoF wy1EZOiUlKCbkXcZqwQWXbysd8i2wzZ6DGkL3mxK83yeXulQ66TSBCMXi7iR5fk15lib ArPc2JTibuJEYWDoeO968HXD4NWhCmzo5q0kKgptyU+FgtYq4ryQLyvJhK2kqQ8yGs+o K1TQ== 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=75bF8NT6LA3g7HaD5RH5HSWYpX6LZ4N25ol7Y9S9TKw=; b=XjrFzaTd037YPUWHhavVroqYR3r27KC9Cppio2K9IKmXf9PKjPXyuHv+JrOOEJfAlF ZIK3Gp1irsMKGC4h2iTCIuRBGZ2yQ2HWDjAgypdybwwAb7+b/AC2A8Jgzh2dL3wuLbrm eneXXori3FUzYy2lk3baQUw8gUf214YiQvhLML6TwimGuEgW75erAxXaHIK47PmfR3O+ 8PqEPUwXE0RT/RwojZHydjCVHfK9s5O77yOrzKbN06pZsn5Bf07gLR5cB8vSJA2PPnBw k088ZYtDy9cEoYvjP3ZKsj4NxoRws5tYJxQ58hBu3i8E5F0q4kRRV6jartKj8kZA7ekG fXAg== X-Gm-Message-State: AKS2vOzgiVOvgOgtWTkQwVrs1N96o53+okhSU4nAsGiMAtYM+AFswyZy TxBHmc/meKccAA4VYKU= X-Received: by 10.237.57.170 with SMTP id m39mr34131995qte.235.1496795512037; Tue, 06 Jun 2017 17:31:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:30 -0700 Message-Id: <20170607003119.14778-22-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 21/70] 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 10262f5..e4da94d 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4070,7 +4070,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 15:40:37 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 1496796384834256.34875224669963; Tue, 6 Jun 2017 17:46:24 -0700 (PDT) Received: from localhost ([::1]:40620 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP79-0007cN-4e for importer@patchew.org; Tue, 06 Jun 2017 20:46:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33785) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtA-0002g9-WC for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOt8-0001yn-41 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:56 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:33047) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOt8-0001ya-0J for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:54 -0400 Received: by mail-qt0-x241.google.com with SMTP id w1so26595652qtg.0 for ; Tue, 06 Jun 2017 17:31:53 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=rV2xg1M3NgkVH6SAAJoujatHk5l0HD7q1Ewc16Z+I0Y=; b=NBYYzqRZ16JjbES1oAdsYsMWAHpJExM5G0l8YR6urGKZ2BPyxJCRqwUM+corQmrGni 9W9V0eE19pss7OXa4OihSDqCMnrgXFzMM4qs15zmqG2WYreG7nq4rjdTF6AHWqBinEcI WisS7FbykJEwQj77sbTfRmIBGnH7oEChCnTWP53gk/zuZKiPBibBhYOXXfLknPn5nQnC X3FcoryMOCiMOxLSOrM2RdDlAN3KRL7pgI6E1kmxKMNvb6YLtpoWkkMvtjm3kyLsLj+T kc6Wdri+TG+Dn8/mDP+rKsjw7XZhty2GYteGdlg+0denzX70CvGf+1wQuTgSMSkcIiRR aBvw== 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=rV2xg1M3NgkVH6SAAJoujatHk5l0HD7q1Ewc16Z+I0Y=; b=PGG6YLgqk0m7qcKq5d60gaFxEuKdFIyf9aiARG5p+cVgXMu+ESKycJh7Kc9eocDlOs dlgaxBN9guboYZpSo4+VGeyTQo/OIHhm49IQ9zj2xEwLjflb6CL0NKMDdocKcnEKvJzM 4U1+kJ9M6Ft4YLNCst94iGfykEHGkXh7BhLhvz8Zvq7opgmLLpXyEylyh/lLQA4lLTpC wBUgZS+iDyuZcU0pMGnYGLTUTv9XZNCX2nQnXJPo4Me68ELfaIbpHyl3ajrQnCGNn8WF HEqhiEai3+ijk+8QYaKLZFRKZiBOjGjKxTZbCuPgfE9q94NLNmaBvuIhqcuv5vTfIH1P CvUg== X-Gm-Message-State: AODbwcDMMZTF2YI3iyg2PB32Sju2In6O2QEWBghg1xZo5/yeZd74JCMK RKK+9i7bvo124KES7zA= X-Received: by 10.200.58.163 with SMTP id x32mr6924260qte.110.1496795513276; Tue, 06 Jun 2017 17:31:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:31 -0700 Message-Id: <20170607003119.14778-23-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 22/70] 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 e4da94d..d42896f 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4078,7 +4078,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 15:40:37 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 1496796542414362.02738802082774; Tue, 6 Jun 2017 17:49:02 -0700 (PDT) Received: from localhost ([::1]:40627 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP9f-0001oX-PE for importer@patchew.org; Tue, 06 Jun 2017 20:48:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33786) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtB-0002gA-04 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOt9-0001zC-A6 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:56 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:33047) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOt9-0001z6-5n for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:55 -0400 Received: by mail-qt0-x244.google.com with SMTP id w1so26595688qtg.0 for ; Tue, 06 Jun 2017 17:31:55 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31:53 -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=7jMqZH0AUbBoyaI0j/CbGflsuclS0yf544JuE1WqlEc=; b=IqCV1SYRlXbSlunRu2Yt7GFIaGQr2OcDm2FCzMkRnHVS9hgUmIVrjg9oEAuebOtMPP CPDIj1O3ztNhlYUEpjOOuh2wfiaoYKS6p8HNoKtBTFqh2WW6BQsmfVU/LSeAhZMZHb32 0ebuVeaMsshOpv4ypW2K2v15ajICAa7LwlYwgL10bJ6KSDWnRwl2WG5TNpvwLTcNYZi7 dH0ZJUbKbzW+8AlALn5VN8OLp5XEMYYAjqi5xHy6D1HBs+CWoPlYKtJltDzu8rnxCYki tInsh83yj4bKwhxMGsoOFyDO2miSlcdgRssO+hdFX87LgYDE/iMV9t1UqVPI/IeYMscp TMng== 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=7jMqZH0AUbBoyaI0j/CbGflsuclS0yf544JuE1WqlEc=; b=WXsJTq/FbBXPQ50kZEvik1oeLec94gqE22ZL8DtQpmo8qlW2AWlLwbj+oHh5ztzGw1 673J2QBqEHXVqQWewbWPZiHvKd5yhRbGbHoLoQ1MShcM+dpJXsqNTOcZ0g5bFcjERcGP wJXTPbaQSo94BDoqlLDTLZqlLlJhf6ipdEpAaPsUMtrnXbh60PIeLqiCmYN2VuQDNl9B 0UNA8D86pnQNOgy/hLZGyeEokfmHcTASWMtRX241qplrSMfJzHv8B+DrDCeogL0ndTAk 8mTvYHW2lOYldjfnETdL7UBHxVlUGrPJHf9/EarhFCnW2JeIMJTUcIR8YKr4CUsRFvmK XUIw== X-Gm-Message-State: AKS2vOwYuQ+AfYd69AxacMSvad3cB33IYIo6Lj8yyUFjt5FkI6YSbdwB jbiiYQUa2R/9X4xEYnc= X-Received: by 10.200.8.169 with SMTP id v38mr30836348qth.213.1496795514499; Tue, 06 Jun 2017 17:31:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:32 -0700 Message-Id: <20170607003119.14778-24-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 23/70] 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 d42896f..c95adcd 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4087,7 +4087,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 15:40:37 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 149679623681252.47771234925801; Tue, 6 Jun 2017 17:43:56 -0700 (PDT) Received: from localhost ([::1]:40605 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP4l-0005Tm-FZ for importer@patchew.org; Tue, 06 Jun 2017 20:43:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33797) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtB-0002gj-Gj for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtA-0001zZ-MA for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:57 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:35629) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtA-0001zL-IC for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:56 -0400 Received: by mail-qk0-x242.google.com with SMTP id u129so438991qka.2 for ; Tue, 06 Jun 2017 17:31:56 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=nhlhyITiE/P22zYjO3naPfjfH2Dv+KiP/sKNAE9hcsA=; b=oKkpzOx1SVRR5bLG4xdyGKuoUeYSo2Ig052gxcybXBPaP+FbSNiwL5MRMhQf6Y/dK2 qsSyeA6QaXLR2Q4Q45gS6Rce1BfpL8FwpDVr7kTTXf96fH65GfCxsAzgBQckzQ84tgdm cwNgQ3vSOP6S0hnBH1ym/BZYtkkejH/41TEsAu6VPnaIG6pk7bHGM19xPPHMFId4bViG 5rWYRftrXpCzwemf2lagURn5qbsa19BTdvWmXue++Y/dXfaLOVJuzP9PRlM3TQx9lxjr CJoCvLGg6JAzOQuVpBExViOX4kmeHWgsqPrNPFV3BosDJ+T0azsDtbMskulUVK/Xx46t EYYQ== 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=nhlhyITiE/P22zYjO3naPfjfH2Dv+KiP/sKNAE9hcsA=; b=IBgzkfTMmkDjwYsqE1TdldVJVQYNwy9CgKKNkLuIROMRdVd/czRnDCARFVCuLJUw2p VHQw4XX5ZiSMADXIPNF4WwuvzvXGexlxcoXfN1Zj6wcFvbslNfWZshVSJnSecoNtcsAL j9FF0MNoN3WMYlhtRnTk4E2XUG8toeZWcSH2H+6TrgTvAgwbmoA+8iEAxKjCqrtnD3tu Bk6Mo9msXeLSP5gTw4BOmwkQEEr4UOiW2hrQsy6Xo0CJGV1v5VI6ioVdsfBfNvLYCNGQ 4PRPM/uKQGdcnk4/DyqF2BT7HTZy8NZeeUhbfw5HIxgxnbmCXyYx/rmbXN++wcdOpykB Vs5A== X-Gm-Message-State: AKS2vOzuRziZecURrZ/ejVn2xniZdgI4wrdiBmRVz3BBQ6asNY6vC3ni 61M7TRjCgRUlFotXUnI= X-Received: by 10.55.212.3 with SMTP id l3mr23535647qki.112.1496795515780; Tue, 06 Jun 2017 17:31:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:33 -0700 Message-Id: <20170607003119.14778-25-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 24/70] 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 c95adcd..2386c41 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2557,7 +2557,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 15:40:37 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 1496796384952250.81391376324575; Tue, 6 Jun 2017 17:46:24 -0700 (PDT) Received: from localhost ([::1]:40621 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP79-0007cs-GB for importer@patchew.org; Tue, 06 Jun 2017 20:46:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33819) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtC-0002hy-Mv for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtB-00020A-PD for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:58 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33776) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtB-0001zv-Ll for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:57 -0400 Received: by mail-qk0-x243.google.com with SMTP id c206so15445036qkb.0 for ; Tue, 06 Jun 2017 17:31:57 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31:56 -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=hIr7Vxi0+LOwmFvkRW2SNgHOuHOhgdRi91E28ZqpajA=; b=jwfyg/+Rzx9yMh4ayZ0/PpZ3IdkstYu4XP85UsDRj8em/K+LMaxg45AGipdtxvnsN7 JdYgsTn1ahQQDd9p2WK6xkooiJjnzqyCUkILTsqUblXvJ8FnuX5KAsjOJt5/q9vYIVI1 k4b78wa/AbaiFusf1OQjzpnPoXYMN47NCvRtcb9DXUgDlzKw+dxsBhmdVBgIlEKTlxkG kR6eGi2X0/1RoG8+/ERbDduITJBS5cc5rdqxHP9WgWnnfgCneEiqPe2z8VG70k1gSOm2 KnraasVO/tQNab48wSlPKk03H+/xJz12QzBSfuLo+3//0lItaU/4zl/OOujuowjLoQGd 7H6A== 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=hIr7Vxi0+LOwmFvkRW2SNgHOuHOhgdRi91E28ZqpajA=; b=t6i9I25TNaWwPy/kFD+lvWBoNI1tHhdUAFeH5UWCmCb5hMQoZaKx29QKUT6/DYpozI bxzf0M80Lr3KxbRqNs5UwLnQe1Ra4wAg8HnDS4BzqtM58w29hmCAdSHDFdJAANB5zmy4 FC9RPb06AAirl+9rKnHPQ9FQ7xrOVX7frdzzqmOQyJCDMdo9Fj1WHVAL0ffwppwlNUgG N0IhfcxkRGgDcj0q+aFyAJVqZfa5JBQ2eoD7tyFi2l4Zt4QdWlfLQmRpM49VYfNkdKTW Hj8qBentJV5lNgNIQdAN6SkxwdoxplrxDDo4wEISoMwkhMVA2ZpaAfNZ3MKm/SzqDhFa A6cQ== X-Gm-Message-State: AODbwcCM6B/z8w3IPVbs6o4Lzg0KziPRjYIItfIYvkAOio61msTqEclj 0Wo1xYEWrUoQ/sHlLqo= X-Received: by 10.55.15.26 with SMTP id z26mr34607814qkg.114.1496795516992; Tue, 06 Jun 2017 17:31:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:34 -0700 Message-Id: <20170607003119.14778-26-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PULL v2 25/70] 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 2386c41..3a98c57 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2545,7 +2545,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 15:40:37 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 1496796543266493.1475475729046; Tue, 6 Jun 2017 17:49:03 -0700 (PDT) Received: from localhost ([::1]:40629 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP9h-0001qe-T7 for importer@patchew.org; Tue, 06 Jun 2017 20:49:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33837) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtD-0002im-Rt for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtD-00020i-0B for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:59 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:33805) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtC-00020X-T6 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:31:58 -0400 Received: by mail-qk0-x244.google.com with SMTP id d14so12247973qkb.1 for ; Tue, 06 Jun 2017 17:31:58 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=aNvRSdqH5I9uzHn+zWds7ZYzS3cTybnr3t6gdwpzJNM=; b=SyUvQGvH+pKWyKnPfg3VbhFH8n++DRnt/G5/AU88qv6zpkvyM0pffpgdpM2QXR0KJq /Uw2R1s/v8RsbAKmcE+LLn7Y8Y60qI0qiYAjwBmXrZZrZKZs1hzGmy3iw9fwKonmKL// wQ+UmxqYPKH3pIx1Ab8/pNV9CicXE+ZfK3yY7lFnF7DU9X8HdRqLVsBgeBK0K2pJxBlh xqQNwyq49WUj8EPHb7T72kqGPKV0Nx4avsjl+L0t2H30GAyq+VA7uwVN6k6rt4024uLX I6EN5/BZHIylT61VCoJtC4Gb069iuKaf7Nkmr0atNoybU+w3AxPHbLj4UMsJSRDIbhO2 naDg== 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=aNvRSdqH5I9uzHn+zWds7ZYzS3cTybnr3t6gdwpzJNM=; b=N/iIaOpOMPsI5hwF/RbJp4XsTSSCrdQl133qZXcD1+FhewazVKWTipo4axnrfH4vQZ iJTDmEXnhFtTJC8iybXjmZg0qsgth+HXaO2cjFW1TStnivfB0MZ82El81aWIUMi2IDlV aeHyjyUlrvLTuNHfuOUfGF7HsAd68guguXBodwPShSyZ29UH9QEDgBbhqj0CXs84uvdG calqU1ujqr/nEsj8i6lGibgnTYqMfY3CYaA1N8QXPWIMeMYY3kjguC4bwd2SRoMeX363 I9E8WBEgXeUv3iy/loe7zqFjtr39kiGpY2qI3MggDqLQSQv349RJbdd5obfYU7tHk/l5 OiXg== X-Gm-Message-State: AKS2vOwO45c+SKZHcMwGYeb4HZqXTjmnsvmHEz+IzEpwtWnaLsUvJKGq Kghx73QOfFdPn3ewUjc= X-Received: by 10.55.162.196 with SMTP id l187mr37216367qke.182.1496795518238; Tue, 06 Jun 2017 17:31:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:35 -0700 Message-Id: <20170607003119.14778-27-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 26/70] 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 3a98c57..2f15329 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3617,7 +3617,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); @@ -3629,7 +3628,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 15:40:37 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 1496796693866189.63991346688044; Tue, 6 Jun 2017 17:51:33 -0700 (PDT) Received: from localhost ([::1]:40640 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPC6-0003yY-Hr for importer@patchew.org; Tue, 06 Jun 2017 20:51:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33858) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtF-0002j4-LU for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtE-00021U-P3 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:01 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:36005) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtE-00021B-LT for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:00 -0400 Received: by mail-qt0-x241.google.com with SMTP id s33so19304141qtg.3 for ; Tue, 06 Jun 2017 17:32:00 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:31: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=bFGlzYX490reNPMP/xRgGHIVaTvUEv8Kv0Q+zLgfYKA=; b=rAJZ1fucsNaiNxd5vmf4KQcH1rCH0+YWZPVNsAEal3oepOYGDr9G9fnnfkmil1iIdK mLdsVPzB5oYJr4zm0WwxKmWfAAAOz+m8eJzJj8jb9wSn046gfu2tHfxDR1iBjNIFv7Eg OsBVtAYoTmaOB7+41SHZTraSdzYWS07RmnnKmf4SvoHbbbwrfw7VlmQZ7El/1ym4THAH S/+iLwA9l2eCAiMiXAnwx2zMrlkM5ody16L5X7PbLaHABUrEY3EJJkGMFHiyfbxaYKYy 7TLvtKpVOMMrlcjxAQeFVLwtyA7vznxK5VO/MntS4dRyp6CKt7ig9R98g+wdmcOPKyUD u53w== 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=bFGlzYX490reNPMP/xRgGHIVaTvUEv8Kv0Q+zLgfYKA=; b=BwQ97weC45ruA1tjI2b2eLyJBhUU4hjQAIP6/Wm9uqP7OmTUZw/iieFi3Yk2BGJsnx mjXBqqJSXFHiJQ8fljQDXRNvJZfvfRKWP01zr2IeO9EX2SL8p4rQdkghUEWFx5H0Vfq6 wHVL3YSgmdpOuAB4GHK8BUL6lhoMwjVTAav4Y27aqgdOy5Q3IJtGFrmGC+pl/obUWSi0 a7iS+QEZSqrYuGYot8NQ5I0QyYY9YFduALSp1WI34GtSfhsno7oB3buc9TRGHA9tEjTP nfj0PBLsnbMkRyeiBMjW80yq51au9UjziERRhA015Z0HRNeyy2sAkId+0iEApWBIUnbs sPpw== X-Gm-Message-State: AODbwcAJ7qDIw0tSidhX2m9HjTDzPA621oFKGUUZm0E2X241BNDH7KCn ueVkiX2PvfdDSkUJKAg= X-Received: by 10.237.32.176 with SMTP id 45mr36650593qtb.30.1496795519473; Tue, 06 Jun 2017 17:31:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:36 -0700 Message-Id: <20170607003119.14778-28-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 27/70] 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 2f15329..16e39d3 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4047,7 +4047,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 15:40:37 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 1496796692208195.3635008885749; Tue, 6 Jun 2017 17:51:32 -0700 (PDT) Received: from localhost ([::1]:40642 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPC6-0003zL-Ut for importer@patchew.org; Tue, 06 Jun 2017 20:51:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33869) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtG-0002jS-CT for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtF-00021r-LO for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:02 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:35111) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtF-00021c-H7 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:01 -0400 Received: by mail-qt0-x242.google.com with SMTP id x58so19242752qtc.2 for ; Tue, 06 Jun 2017 17:32:01 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.31.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32:00 -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=f2QZXlBnrOPGBJeOw89pnpOG85T3Hfs0lb5q0lJN0+U=; b=UqVPnTmtkwSKsL/M8vH9NM7FGVKJGjWhIMQQQ5LE9xPxdAu8AZim6VyCEntjUUSpVs BFjPqF0L80hdRwbVL872BYVQSFBvcAwhkJ5q/svhq3PyNjc8+QDCYTrgjTfim51QpoDc fVOVsglOlp8CM6NPDzejrUL8WPMCVj1LiIrZ0p+jjwJeDQcpgD7A3O0h+nsDUdMRhZNY 4auOrZPTU8rQyAuJ+PYgZIFtyfB8YzE6r21RUHj9Q+fUy8ffivJEaWVTQRE9N+MHDllJ VmX6n7EpQqUy1UOAHYXsBby5m5TF5KUct7Ikg02i5E2eC8YsDFHKVX9pydI75jvwZLe7 TLRA== 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=f2QZXlBnrOPGBJeOw89pnpOG85T3Hfs0lb5q0lJN0+U=; b=sgkMRLBmXutPQqz3m4YOBgzxhvd15w/tH9q2ZSijJFS9OAaukhUjmOvzLtkVt/Hlsf 2SVI6tHl2n/rKUuGiEym5XG8O3pmArsODEAU52TBpwqogRJmY3shiYFZnKGolRq8n10D QdW87cU4BiXkZ/2mRugTO9gPKDhMiszfSpt4+a9CGdSvL+qOHHHj6bhwsRQZXzq8tokH lXV5gtHmrFtHVN3RCnPvbyAhsrfFXkRwlQ+Hw84r+JdZ0GUR9oM4PlVKazuFGqufCHRm Q17INt9TgLzYHIma/PhZ74O3HoJZk5JjV1OxP8r4aawy9RL4pChhZlrJqRzuS3HCjfye V+oA== X-Gm-Message-State: AODbwcDfX4cVV4DokigIn4ZFhBZY628vAEdYZzYxJKXnZp6bZ9kP9oRE 6hzPCvrnBY5Gdpvi8qw= X-Received: by 10.200.48.245 with SMTP id w50mr16961906qta.54.1496795520866; Tue, 06 Jun 2017 17:32:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:37 -0700 Message-Id: <20170607003119.14778-29-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PULL v2 28/70] 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 16e39d3..cafcecb 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4054,7 +4054,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 15:40:37 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 1496796838320692.5281575260373; Tue, 6 Jun 2017 17:53:58 -0700 (PDT) Received: from localhost ([::1]:40649 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPES-0006fz-Sb for importer@patchew.org; Tue, 06 Jun 2017 20:53:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33898) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtJ-0002mI-JF for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtG-00022K-Us for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:05 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:35112) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtG-00022D-RR for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:02 -0400 Received: by mail-qt0-x243.google.com with SMTP id x58so19242790qtc.2 for ; Tue, 06 Jun 2017 17:32:02 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=FjcfMp4qrhBJLtfWG00jKbYlrFTJF+J7gA1hgU1i3vQ=; b=jGsOMVKtO3OMOIDdW0tczCmnB+ktjMaIkCypLXtUCphul39/Boh/mAlLvsaE55Ws8h iOIyPX/fC37/N8Spw/SCtVK1IxT/3SOKiI6byoy4PTAp+M8VGz3UG3wdBKbfmmptNZOo JC6L3KQTNI5sdI+EO4uWNzTgmfJYREMrVQKwhXDJrIn0jY1JMUWWujmZMe65h0W/saHj 9ANj4dRv4KPTjP+1UUmz/EG6PNyE6K+MsqeBaQy5JdQDYwaVDzonJY7dWwI8jR46yIg3 Gp3JLJkt6FFJRmlUv0Civ5sUNDCfWHL+jtiFhUZ5RlnsDSM4lDFfrkQqFLYGR6OvYe32 ZR2g== 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=FjcfMp4qrhBJLtfWG00jKbYlrFTJF+J7gA1hgU1i3vQ=; b=PECaJROK+Xz4rrugcGKxIyjzZTKPHmdFZvPzkNy89K2tJ9Rraqeneyux5jGChxK3dh /qZJwth2xooXu9KkHHlsiHUIk1Y6mZZ36gACidJwssRmmUVeHgbExRbY3iNatWLX193X LDlBdOS1CX83F7OEhDmsZcVFvq2bwISFE4YJeU1YEEmC/nsloVieW87JMUB9wV0/WpD+ OQGQ4VJoUVJymntAvvFSkn/Lz4dgVIP4iaF+jEcvxaUe4af3zFKrr7SI0YhdyCIl7CEt xQfVRsGtCm7P0RIWauB08T2jREHIeOeJJT+W+XiAqF7CMOOmirqjb8oGcWSOZkAQOOXU dxYQ== X-Gm-Message-State: AODbwcB1leOxz5647Hl4UCLus498GTggBEzcaTEi6CXsTr7tnsL7hBYa mOqg8kJmAGgHSBELi14= X-Received: by 10.200.45.83 with SMTP id o19mr27552560qta.43.1496795522205; Tue, 06 Jun 2017 17:32:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:38 -0700 Message-Id: <20170607003119.14778-30-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PULL v2 29/70] 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 cafcecb..80b08b9 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2565,7 +2565,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 15:40:37 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 149679675691283.50591877738555; Tue, 6 Jun 2017 17:52:36 -0700 (PDT) Received: from localhost ([::1]:40643 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPD9-0004vP-EM for importer@patchew.org; Tue, 06 Jun 2017 20:52:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33897) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtJ-0002mG-Iv for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtI-00022d-Bv for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:05 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:36008) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtI-00022U-8H for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:04 -0400 Received: by mail-qt0-x242.google.com with SMTP id s33so19304262qtg.3 for ; Tue, 06 Jun 2017 17:32:04 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=3z3myeUSmxEIcLGHaj0+FMkuciy3gt9ikRwgDBqESZ8=; b=goVsvzLPb+tiS9TffjZdSR3QPR6KcxH/J/jgnk6CfwYK75/Dtf04ehN1xmgSyQEzrz sdvBPOdnpe6Q896TqJIP2QzshmzZS7aK6mcORhoAdT3SJUi3jpyhy7dATPQyKvPdCYUz lhOrtR53w/Ej2G+Un3k53MRMhiiKwAnHF1p/V5wgqgQzrSxQ138oiN/haWCuH08+edEP n4KWz0kP2SJtrXQs8aY5Yw/X+jIqslV7Q1ZoyQK6IGrzXThPoz22+DfKFdWA/RMVOPuJ mp6mVPmmnWaxeBiLiueF97IyYHEMB2K8ScltInyqihgyyTBtK7/y9mnTmnsBbIri5Nxs CB0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=3z3myeUSmxEIcLGHaj0+FMkuciy3gt9ikRwgDBqESZ8=; b=XQqfcSpW3S6d4qUR19UCf/7oFDqpnCswekFwpE9m7BxeSO04Agi8LR0W2dulvrVMO/ 1R3Lci3P+KKBdQN707hWrUrFgiK+vv5yvrF+WN9OgfXDaQbyPjIGyoCmfSoRGyeZG4JV sKI/Wvt4igpWmttuow3A1msvx59v119oRVHCVQdEeQN6x1eRgWJSPb//rsyk/l0tLXVH WxsR1RdJSysnFMFKJJS/epWKOJW7PJNCaa2C7p5Nwd0TLmCHv4ryGO5hZUj1CIK3Qo5j FMHvFUaGg8FzK0ZV6sumKz5pwQZwcItar0PQcXY7TKrv6GspZUE18xRjcJvcATKogu7J zbyA== X-Gm-Message-State: AODbwcDcOVQ6y6078g3xYZPhDVa5p4PgW1/bAtut7MzaIBn0qIG+LzQz jK9EEHGw4gc+sRudDF4= X-Received: by 10.200.58.163 with SMTP id x32mr6924866qte.110.1496795523550; Tue, 06 Jun 2017 17:32:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:39 -0700 Message-Id: <20170607003119.14778-31-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PULL v2 30/70] target/s390x: Use unwind data for helper_mvcs/mvcp X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, aurelien@aurel32.net Errors-To: qemu-devel-bounces+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 80b08b9..e99fbd9 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2894,7 +2894,6 @@ static ExitStatus op_mvcp(DisasContext *s, DisasOps *= o) { int r1 =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; @@ -2904,7 +2903,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 15:40:37 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 1496796904154520.633531469425; Tue, 6 Jun 2017 17:55:04 -0700 (PDT) Received: from localhost ([::1]:40651 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPFW-0007bJ-5r for importer@patchew.org; Tue, 06 Jun 2017 20:55:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33916) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtK-0002nl-W3 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtJ-00023A-No for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:07 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33810) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtJ-00022v-JY for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:05 -0400 Received: by mail-qk0-x243.google.com with SMTP id d14so12248156qkb.1 for ; Tue, 06 Jun 2017 17:32:05 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=pKdVMyq6NUl9Uax3AnPkTszRhUZ/SIxkkQqCZ8YdAmU=; b=AOJOln/Tekfoq/itrz0uOP14hVQ/66m9MmFij1BOO6N5/rLkuHIIbK3L1l8qevJhfH j56mkLA+YlFa7ceehGyTi5bPzWZ4nHkyBDHR2DPufaU99BXklPCYZRxr7+aIOLOXRJDi daaH8ssfbmJIZ9BrPhRxfYb0U8mpMtQirIE7UNObjOK9Gw98jM+Rg2BTCiKD/czDtTrS NJ9duL/1dc+XW9onjYVQY92QB0vgpdMSscgS28f6LdfmsZ7H6VjsIsGU59+Onx4YDq6K 6D137OW8qvrv3+ClSczTpIDOLr0xQg7wnm/JpmqYkv4N+8UHvyeumwW1u/LhP30P091k iZVw== 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=pKdVMyq6NUl9Uax3AnPkTszRhUZ/SIxkkQqCZ8YdAmU=; b=CYMm+qBS25jHhm/WxXipWgAVeYWUCyXu/kKXgBQYOhiLqQjMYiyt3mbKWVwrB2HX5a 1MjN3Qcw2W9I9iiVwZSmINdWIl0ysMDm7Mc4L7Vu2CPY1Lx8G3unzSIjH1eO3cybmT2j Z4YMsEum4Q6V1Z01h/KiXq9gWHQx3iwyFVw7wirop97P6+IKYlJ43UBikbimF/UlxznT SdWCFGOozLAxuhjO3xNf8dGTxdPKPULz5ESo5+ii/fuYcMmTburgJpFsDei7TUzgXDia z4FwEsOedo0ztnD5rR4LlOqu1LVx24vgddHO0AMFwBPpW39TQzXsIQUIiXPjrjs5jBgK n+7A== X-Gm-Message-State: AKS2vOxxWBlT38zNkeF1JTishAJfkcvWXhxCBMjQF4NjSOijTh7oM1Xy YtEG/ofs1r1aderHYpY= X-Received: by 10.55.124.194 with SMTP id x185mr22152791qkc.215.1496795524846; Tue, 06 Jun 2017 17:32:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:40 -0700 Message-Id: <20170607003119.14778-32-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PULL v2 31/70] 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 e99fbd9..c1162a1 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2164,14 +2164,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 15:40:37 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 1496796838840135.96859172165648; Tue, 6 Jun 2017 17:53:58 -0700 (PDT) Received: from localhost ([::1]:40650 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPET-0006gd-7D for importer@patchew.org; Tue, 06 Jun 2017 20:53:57 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33922) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtL-0002ot-SH for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtK-00023Q-Vt for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:07 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:36010) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtK-00023L-Ry for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:06 -0400 Received: by mail-qt0-x241.google.com with SMTP id s33so19304364qtg.3 for ; Tue, 06 Jun 2017 17:32:06 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=YQBW8ieQfu+dv4kgXRs3Mg/Ye2gyrG9MFH6XDvTycAI=; b=LTVKkXNrJvErWFp6AZ5Li/Y3RsxkO12ecYB4rlKfjPCCtBMV2EO0kynsk6h3v3i8rp o7cOm7bOt/LQ3ezH12dihGFxcP0Gvk77mF88SytJYu6+Jzd5cQsJmqOGDj681gNoxrU4 QYisJSxiNA9UnReazFejAcrLM2D0hkoYJ4E9huIr6+2+qbuL7Db66TXG+r0cCnMYWTPu NrHh/0h2cD0m0RoZt5diGvzLfbFWxvM+tfTqLjHsreFSY9Kkd77UlGtE3lxGcLx3NF79 K6ML5DRx9u/yQBBxNGhcnlQU6A2ZXpiMwBU4hL3/3QtNyytvPacRhhEfC+xvSLpYAYb6 C0oQ== 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=YQBW8ieQfu+dv4kgXRs3Mg/Ye2gyrG9MFH6XDvTycAI=; b=P0kMkV/TeeDem+OeYhUMUbqAxcvN8Jihq0a2eo09ziWNuJHlmLx5iIx0l1dr9yGkoJ pqq3SXSmq9b237zbN5u6CaXJrjiys+hLnb9pgFLHjC126GmvPVkw1CsEJGW0qbAjlUBl agAMTHJCUJtDG1ZuPqfp8AQrw2yPvxrDB9UIC4xI32jFBySHK5uYaZ5MEK1FZphrVEvJ QTaWoI4UPS1WXwlTQR3k3HfQ2yhFrZQCPyy6jCmgXdGVPu1JunGYmiKS3O3gNNo51+O8 iRiAdqz7hUjvEoOIvYqvjvz3c3XPuUGLsZkcg10CkIyQbCjAabi81f8SJ40BjdCdicKc 4zMA== X-Gm-Message-State: AODbwcAqy/PyaqJ4zDq4KqK0vAEzDH2pNRhIchSARIYaliC1R1/7tzzk RHDSRPJj/WEMy/coNZo= X-Received: by 10.237.61.39 with SMTP id g36mr33555928qtf.60.1496795526184; Tue, 06 Jun 2017 17:32:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:41 -0700 Message-Id: <20170607003119.14778-33-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 32/70] 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 c1162a1..78c14ef 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2164,15 +2164,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 15:40:37 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 14967970508801011.3149398162403; Tue, 6 Jun 2017 17:57:30 -0700 (PDT) Received: from localhost ([::1]:40664 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPHt-0001KV-IS for importer@patchew.org; Tue, 06 Jun 2017 20:57:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33937) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtN-0002qT-Ed for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtM-00023p-A2 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:09 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35637) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtM-00023h-5L for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:08 -0400 Received: by mail-qk0-x244.google.com with SMTP id u129so439279qka.2 for ; Tue, 06 Jun 2017 17:32:08 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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; bh=dNSgaPrY8fBIk35+kGtGW59Vc8g2qPoryb6YWYoUkQ0=; b=R6a9+JgblEFROmP1WuOMW4C1FnXfZ6pIOhdUzv0nXTKkZbMpdGEhTqHtSF8E+YRSh3 YdVnDoZ4Zff4jRWDzQprxjH5fsXg2AM+qEMBs0o3R/C6Ce0OMY0QlBSyDHBu7G0e6gh7 FDEDZXlx/HpuKC/S0I7ThaJy6zHPSK9j/QLb0J+4obn96YoJKXeBkSHtx6XWRG0b+Mi/ SVTZ9GetkP9rRcTSNgb1Y7szttXZMzB97Pw7dqWOuiVoh9XRo4DRGgXnnp20BfRW0CYC b07WgEb0b644xMlMC4rdgs+6ZGaYwB6/iyLL+oJkMPJKmB3+3P4lOYI0QcJ/Gi72CDRh PWTw== 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=dNSgaPrY8fBIk35+kGtGW59Vc8g2qPoryb6YWYoUkQ0=; b=HMQakH4OfTWjdNQrT0klbIWxCISZRdjQO1N+4d4zuqijSEheJ9GraXBQ117qXc4R12 HAUdUz/xNOy28/sbKXgrHYOBtNyngfgTOL+WXiCmjPszBYT2+a3XsMkk6VGMWiScFida nRVBgwY3wAZj82trFeRJN4hCMpnPWoR7fVqTeXRXQGAjRVf9cTCguuWksLEvruqMrS1G H8BGhK1036hPjyj5ZKs49BzwXpXUQlLx76tlnOo9XziTSDCegtbdWlePF+AmMFMI4CkI Aajh8EwzRWma7qbfGQDr5DCcbXUBK+5RfckXaKnvFatRZ4KgimyqFL1/WqwQRGEUQ+Zm m0JQ== X-Gm-Message-State: AKS2vOzNW1VjGFV9T0bYwpGxrKkKjVbH+aywH+6deQ7FdhJlMyPqn97m NK7Mg/Pq2wewSmfJbhY= X-Received: by 10.55.170.15 with SMTP id t15mr8274452qke.186.1496795527440; Tue, 06 Jun 2017 17:32:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:42 -0700 Message-Id: <20170607003119.14778-34-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 33/70] 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 78c14ef..711b9c9 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2006,11 +2006,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 15:40:37 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 1496796542453932.5379013038462; Tue, 6 Jun 2017 17:49:02 -0700 (PDT) Received: from localhost ([::1]:40628 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIP9g-0001pU-Ro for importer@patchew.org; Tue, 06 Jun 2017 20:49:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33946) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtO-0002rZ-De for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtN-00024B-Kt for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:10 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:36542) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtN-000242-HQ for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:09 -0400 Received: by mail-qk0-x241.google.com with SMTP id y201so11028803qka.3 for ; Tue, 06 Jun 2017 17:32:09 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=VFfMhuygKAQ2tzhIkpdD/0OvanmVl8YN6efeOuDeegg=; b=nwvCkqYp46yuOOkwlrBnMuO+ZJi4SJssd8znbEb9z4m0gs4zIYqsMbb2kxJoeuZ/z6 IQKzGB3SURNAhE7c1tJ4thc4vut0gAr7Mwv9cAbHlYPlDARYOs/n0WebxRiUhELZI8c2 uKWVWvLAgxI+uzqRbw4KlhscvczyjwwTc/lvh/Wc2T3L4jw2sfnygi7RMmEV83phgzKT w1iUd0aDysWvQiI/6gyZCCZx1z95JuwisZmTnVyxFlfw036NKlxD2GSZnVW+U1nMaGY4 lELBF8tsX+6r7P2w5LM+K2en7AuR/tUCT+UXT/XYRlXM07/jQErwbb+cHlQ6mKQIue/8 9UGQ== 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=VFfMhuygKAQ2tzhIkpdD/0OvanmVl8YN6efeOuDeegg=; b=T5H3D2xWl7RFmJkl8w/YR5v/KC941DSdTusSlOe25yGw046nQDuTFYqxPzx1HvQAC3 ujCD39J4Vscy+HmpijI/gVa6MHgjZq5iVLMcem5YH66fiZMIR5ITExyC98r4qxuaA2tQ pZccdxTrFlEm/v/3/Qm2inHXoddcMEbh1JE/hUkAp+62zfPnEfUfKGfhFq8voSYb91q3 5Rj3v34Z5FoQ6hWn338Xvoq+h3fsJjnRyvtaVHK+W1Eiw0ZPTqjqrWeXGpGo3w+aay89 bBFbirXvuFgP/9m0YXGw3lh9r9Avctzy0moRsoZwyTLNnrErQbkGf/gA4OfrXjubcwaF zM3w== X-Gm-Message-State: AKS2vOwLhrcUc89rsDOvL/AequvKlFmwP8TH0t4VDFweifeoa4ZpWWcZ WFpoXb1A4i4apysbrdY= X-Received: by 10.55.99.131 with SMTP id x125mr33883789qkb.17.1496795528819; Tue, 06 Jun 2017 17:32:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:43 -0700 Message-Id: <20170607003119.14778-35-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PULL v2 34/70] 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 711b9c9..737b577 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1200,6 +1200,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 15:40:37 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 1496796984015710.1716623518852; Tue, 6 Jun 2017 17:56:24 -0700 (PDT) Received: from localhost ([::1]:40662 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPGo-0000Ox-Nl for importer@patchew.org; Tue, 06 Jun 2017 20:56:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33959) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtP-0002t1-NJ for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtO-00024Y-Ti for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:11 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:33061) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtO-00024R-PL for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:10 -0400 Received: by mail-qt0-x243.google.com with SMTP id w1so26596206qtg.0 for ; Tue, 06 Jun 2017 17:32:10 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=aP3gO8c44OI7HApXhhF1pXFO+vtMjk7v6FgUhS1p3hY=; b=vZuuLoC5uAX+kfTUn0sUwe9OHRGoqCxKG6/0Q/jIJ59Rxi7CUaBV2y/7EVapRfzTvU e/ptHaGyGrbaSKmAbncS+Jm8ahUeLYS7w3uc6VDKv8slG7xJTzVIfQvFAE6L0YDEtXD0 3NJkwfQMaPGWE5mE1WCXpmAa/7EDWS+cHd4zmY3HHQOTmK5Kr495+qNVe0pNgDdCkKHd ex+OWUSO2Zl+kNdFYLhc41Wtb2v0N/X7TAJEBC4+0wX/XOdiASVtkraQUKNCy2nayGIP hNFmn0U8MnrQtbzkNKRnN7u1SAGOh1rjqxZgROMcn09y+4xP+gYkZPaXABWmGr1/129z /J5g== 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=aP3gO8c44OI7HApXhhF1pXFO+vtMjk7v6FgUhS1p3hY=; b=NSYR477E/xw6wEyeK1dqc2PoEGnGTxv3FSqE5HP+/3VnPpZ5RMwyEWevrJ+qCAiqvl 18hCpV4M/uklAku84tc/Vaa2dnDV4z0h0cyBDF4gyUsa9TD0wCsRUKnCSoo+52kfkKhW 3XyLipdSTSxQFYv1gix0v19vQn3rSKtJLdyDaLpEF+nzRIVCL7UtX/wbKMf0RbvPPZ79 /epDpfyLw9lGwEI1gvU31sjE4O4mM+9JRktdU7L0/PoutjtIJx4DdCzulEEq0lOpo/IY VdSxG3ehY/zjbRiddB2w9vujx++Z3v0wLKzzLT+Ue6bKHcDtb1oLztFAj2Gn4uZ9Uq7b 5+QA== X-Gm-Message-State: AODbwcB4LKuIDBwNu1/6X1Y5orDyRE1XaEWT5uqZmo96BKrf9a/muYg7 uxGxA+egmPwaL1JYmm8= X-Received: by 10.200.53.51 with SMTP id y48mr24650155qtb.98.1496795530122; Tue, 06 Jun 2017 17:32:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:44 -0700 Message-Id: <20170607003119.14778-36-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PULL v2 35/70] 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 737b577..5c7e5c1 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 @@ -2212,7 +2213,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 @@ -4057,7 +4058,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 @@ -5196,6 +5197,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 15:40:37 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 1496797196695558.3438236678675; Tue, 6 Jun 2017 17:59:56 -0700 (PDT) Received: from localhost ([::1]:40675 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPKF-00041s-1i for importer@patchew.org; Tue, 06 Jun 2017 20:59:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33989) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtS-0002yN-Sy for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtQ-000253-8W for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:14 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35119) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtQ-00024v-36 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:12 -0400 Received: by mail-qt0-x244.google.com with SMTP id x58so19243132qtc.2 for ; Tue, 06 Jun 2017 17:32:12 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32:10 -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=hBIzy1OAFqJ19gAL5OvhqJiERhXWinMY8gxbkRzNVbw=; b=vVjAiU/R7bfVx/cvR93S3/ZUtaGutZ6A20N2Q7sqh8uZEU00Q9uVeVwIvIkg8eA4rP /3Q3lgv3Q95xlbB6+znsKDuNZi4IluInsC3xWlA0uLmyxNdkqBItFypRc6S1Bj33JJ22 EEO6kvZaNQUbrwcjZgeYyjP+UG07l6DlrFtrVmYK24H9r/18MLf92yl6EBUSRfJ2mOB1 uFo6MRWF+tUUSDIF8IHVWvUc9cx9V3UxpRAsFLlS6xNp9cwkcGPEuIIqwQdNWiVbmjDR jIHx+q3jhd2qS0GCIVLAqzo7wq/GBnfOS2PuhRHM4WOA9x1IP6QOHQTiOae9y/BI81cP Ozmw== 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=hBIzy1OAFqJ19gAL5OvhqJiERhXWinMY8gxbkRzNVbw=; b=XrF/Z5o3TZ7ZziLxRy70VRAG+zpi4KDxBEKZJdgnkURC8OApAwFQAXLLecXOJFEWdP eJiuJiD+U5wP5RuC987pTmnZpLrOTvu/xt1O9My0AgTb4QquynBryEPcQmd4q73xTm0F VPMLLyQtzZUjLynx1B+IWaqjTwGyXxVidbKFruMAeiNC6LA4MqdesC90v2vmlBp/XJv/ SYKWJWb8XNylsg2IFxzyzyUq9bEsVA+iwhzm6BorcR0hGvEr331bRPHhwdZWfl0VQ62s rr2L8WpozVi4wdyHdFrecBEDStl1HGeFWb8nnuIrwUH/gl4IjCNO788qX6qWHLua3j6i zkrQ== X-Gm-Message-State: AODbwcCikIdw10izuNUj2qndtqLlvlN+XFHeCar2o5zH8vbBRr2sVqUR PJ8P6dRzrvyYprxfsuw= X-Received: by 10.237.59.197 with SMTP id s5mr9427596qte.192.1496795531353; Tue, 06 Jun 2017 17:32:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:45 -0700 Message-Id: <20170607003119.14778-37-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 36/70] 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 5c7e5c1..b6b9d75 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1168,6 +1168,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, @@ -2221,7 +2223,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) @@ -5494,6 +5496,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 15:40:37 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 1496796985539710.9445588499892; Tue, 6 Jun 2017 17:56:25 -0700 (PDT) Received: from localhost ([::1]:40663 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPGp-0000Q7-Uy for importer@patchew.org; Tue, 06 Jun 2017 20:56:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33996) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtT-00030g-BR for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtR-00025Y-KD for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:15 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:36016) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtR-00025L-GC for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:13 -0400 Received: by mail-qt0-x244.google.com with SMTP id s33so19304592qtg.3 for ; Tue, 06 Jun 2017 17:32:13 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=IVcjwjRQKI+dx8TlMdD6IvfFJqV+Unjl87LMx9DJPNQ=; b=LbestVAtAkWHw6rljyB1aSLyCqCSeQVuY34dUjU2W7L/eibukrw5kdRuEj01oyfc33 ejKQAgBlxAOMbeuk9YHvSihHnf5g7fQ5X1+1zRltv0kXxqbNqHIRr2UZyokfdEUOI4BV nHIMGGig1ui9bmJoYMTZNht6fIKA9KeL/SMyh9R4aVRvzXPehiIx3zaCcw4QJvGnjHvd q4yBIkn9Hg03XhpghZmgMCBLSYmok19QkTUCR3rkf7WBzLoxKK/bB+fCf7VX4L24eqQZ ENJTcTq5de4tHRZql+RdrsU7C+k+uRhWybB3zPXi8fCr+b3A3hDwjnoPJCouqYeUoZ/C 5OUQ== 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=IVcjwjRQKI+dx8TlMdD6IvfFJqV+Unjl87LMx9DJPNQ=; b=tlhbv8Ag6SqE1DXIvHUqCdvbseULGXcwb8W4sf+wutJU9nm3tf0xpyjPZ/CGDh5GQT xdjSx0v0JF67fok7nipXdRWMNa7dMzqTYt3mpsboK12Am1jOS1JqROsTsq3/y71jxPXF 6/dtKR/iIAawBNLRAEKPSY4YnNYdO84+N6KajRVPwTnw2M5XExg8KBr0WSg1iW48B/l3 cFDA48idiW6A9imG+IHpqFsuZqJi2PfgxXmsBKHIWMGdUuC6PFlQe6ayZgkOM6D6h28L VShH8qKP4GyBNXDzWX93V8wx/WXL2BOxvFMJZRBhGz4a57gQ1XTYZEbzh4xY5X5ERsxD Q8Nw== X-Gm-Message-State: AODbwcCp6D3rqTV1yZvXxv8FHUiGCxbcM5AUdINYSl8eXf+ALL+1yvSo uJOaf4bGQK+X2PEmhrQ= X-Received: by 10.237.60.77 with SMTP id u13mr37349250qte.18.1496795532628; Tue, 06 Jun 2017 17:32:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:46 -0700 Message-Id: <20170607003119.14778-38-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 37/70] 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 b6b9d75..0406f22 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; @@ -2191,23 +2192,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); @@ -5195,25 +5191,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 @@ -5430,6 +5437,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; @@ -5476,7 +5484,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); @@ -5520,9 +5529,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 15:40:37 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 1496797128480205.24608011278895; Tue, 6 Jun 2017 17:58:48 -0700 (PDT) Received: from localhost ([::1]:40672 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPJ8-0002qm-SZ for importer@patchew.org; Tue, 06 Jun 2017 20:58:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34008) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtU-00033u-0K for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtS-00025o-SW for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:16 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:33063) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtS-00025i-OA for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:14 -0400 Received: by mail-qt0-x244.google.com with SMTP id w1so26596343qtg.0 for ; Tue, 06 Jun 2017 17:32:14 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=/kr8ps84mVKBjpfIXGC8Z9DgOi3pc9TVx3w/2qYjHEI=; b=pPNUR+o2nwBzioP9sujGqjc1fNpNacIQZ16CjMzKzJEJJhFKlZZ/1Ded7KPI9m7l/M IzT2XKFXxleGqZN/waDv0M1bN6F5RgIBwGivy2h5atc0vgGYULuB0MLRXzwA2TkivHuu G4XNj38B/7VqIVXfsLPcdiWkdpWpBiZ8z5ajSixewhpaqc6wL+x7NBD0q8OSD7wfsWNN 0QOPYey+KG4sOy0XjjMKPEbg0BPh6POyIl+OsW9Ag9QKBNvvwzDilFVNg8qr6udaQyRa hxJ9wdUcpq+tOkuNRXrxojgW07+VCyirFsPTqgM68slSigtad6HXCuaVE3ppJUCMfvJN 1efQ== 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=ltPH+OdqIx5mFAVfL8Mi7mCfqND/vew3Va6+F8iyfH2e1xhkKKthIgB3IktW0dSfx1 SgEHjf47Zzwm8/753/2Edbvg6hnyOsD8iXxSInsqeOqbkySMazJwmguUKDkVsniML7la fZ1NvPxDrn28VFeIWk4s5l5720UBPump/fu51Ood15SGFDtVRM4Rb9n9U5QT2WIYQ4Zf x6/tNHHxCePo5Y2OznAveDJt+ECKgRGvQS/ez+4RLUoYdp7jcbyHlLJPFU2WrH3a9k32 LjDk/0PA4oJAtBrkeyLjuHVRdr1Lm4jJIkuNAcIJs7JcKwj2m2ZxvPHjV98gfUmxX3iD FYew== X-Gm-Message-State: AODbwcC2DL2WHPONvw58JiwEcb2zhZ/GN2EOoonrzGObSLO2ES8W9fxC WZ6Vs1vGXCpKxRfaRzY= X-Received: by 10.200.45.83 with SMTP id o19mr27553262qta.43.1496795533997; Tue, 06 Jun 2017 17:32:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:47 -0700 Message-Id: <20170607003119.14778-39-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 38/70] 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 15:40:37 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 1496797279248493.8563627334797; Tue, 6 Jun 2017 18:01:19 -0700 (PDT) Received: from localhost ([::1]:40688 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPLZ-0005ED-Id for importer@patchew.org; Tue, 06 Jun 2017 21:01:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34032) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtV-00038I-A3 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtU-00026T-3l for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:17 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:33815) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtU-00026K-04 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:16 -0400 Received: by mail-qk0-x242.google.com with SMTP id d14so12248395qkb.1 for ; Tue, 06 Jun 2017 17:32:15 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=c5BgNqfHyFGCcuu3fG4DeIhExwBiHL7ytqoU9RK+fyk=; b=QtVU3S3ExKRrRO2uGAkKIN6OGlOq/Tq+pe76mw4iRRiizlvfpH2m/dCs/W8FKfnswY c7vbMgVHQFfKG8Ko22D7Fi0qno9ANEEDne1Vpip/toj03081lU9Baq742m2ffrY9fOe6 RLX4+0QKTq2fS1vEBvN8E8M9s7hpGSsVqv0Ujl8TakiBVs6gRe5CXfLI7BwNTCaWb61+ KkqQ2kx/fOdRcQDzvfuHObi6W9uZ8ib7BACqdZWf3IAQrFxpSdw9USxAVHwgIyHAuhvw InoYjsfrrrPvC1MHVe5mgnCNFVoXmYHbAnKPXgta5YTEZcg4KV6ajnufKNaykIaQEo1r RrkQ== 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=EEwsv7XAG5dsH7dIHpn+NQs/fsxCyJ7EmPeqztdTXlepuM4GXqWbF3g4VDr3Gj5ZrC 03gKAHUe70n76ssXv7JARHvU1vwDYTZ7g8RMVBdDKKL3mbT3ACIQshO4xIN3bxtQeQIR FLjQ4lOAbmWnGZaQDsEznkXQEkee+P9KOKWnbiewD3kT2FNAKwyP8Mw3DvyrV1K0r9mk DMym6aQXOt7KR7N0mybI0+g0uYBLJIrwc76TBeBDBdrIY45R/mFiPK11xOrqsjCWuasR 3qkUgrQ7YOJbTgB0wEJvOZdIfWTuDp1yxDorp73umgnuhf2fMoTSf4Bo1CmDBYFzxhfJ dn4g== X-Gm-Message-State: AODbwcAVuYPo78Oso8zg390gydESD1f697r3G9JtQpxL75s29AHpEseK +imRpyWyjuUWb+iMdyk= X-Received: by 10.55.43.93 with SMTP id r90mr32219247qkh.196.1496795535249; Tue, 06 Jun 2017 17:32:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:48 -0700 Message-Id: <20170607003119.14778-40-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 39/70] 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 15:40:37 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 1496796693073846.8935452007601; Tue, 6 Jun 2017 17:51:33 -0700 (PDT) Received: from localhost ([::1]:40641 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPC6-0003yo-G4 for importer@patchew.org; Tue, 06 Jun 2017 20:51:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34048) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtW-000393-1P for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtV-000274-Bs for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:18 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:32768) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtV-00026u-7Z for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:17 -0400 Received: by mail-qk0-x243.google.com with SMTP id c206so15445615qkb.0 for ; Tue, 06 Jun 2017 17:32:17 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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 :mime-version:content-transfer-encoding; bh=i61yL7JNAS/uchl2U/HLw/Gyu7acCST2fu7hk29G5HI=; b=TGR8vaKv1B6qoO+/LZNBmlh7o4vBB2vxLxhdJPIny9eP2nlyxZZxgUCTieewMg56Z2 fJtwP/lZzI05c++3Xwvnt2xDIJDxnCcQ2mmhIVAsyCwJc8jj0JhRfXL8jZbdb3f3pK+2 T6lchCfO0H4YBlBojhBSDByr8zYGpSd5bcuKAAAtYgydsuurcARn/Zf0YuJKuddQqg0r pvoRuDcTZJjKj59oE357LbcVmPKGqGBaZzxIVs0acSXzHUT8HjIg6w0vqX/aHha/JIum XggVByTqdhMS096/ChbXXq7o9W9I1nGsNgSaTaT1boRDtbSgJYuL2N7qyj1Indt/k17f LtsA== 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=i61yL7JNAS/uchl2U/HLw/Gyu7acCST2fu7hk29G5HI=; b=kDohd+TBpqzH9drDv0cM3z8mwDqV0/ScngUQlTNg59Xm23oHw+nzaJWxBGJXwD/5Z7 nt+U0bG5WMnG+Y8rwIiMZci8VBo7cfOKAoBh0PzJ9ixB3KNoA85MTsBLEnj1qBlhYxIS RmjcCzIGdpK8fT8TWdXa7W/anF6/P/UR2bL+pJOqWyqPW9dTo0a+kCw5RSm4RmdwxMl7 bho/kGu19bYsnniQfG7jd5MvIXsbaW8HbUI3ZhDqGPpUcuTx7CBjFysDwXkd55G+tC+7 48LkNJms9HbS9KtykSlTHePIjHa2EQS6A/wHpsB0fuGjrkiOJIJjgGTEyHjs5YxEdGWz +JmQ== X-Gm-Message-State: AODbwcBCsYx/r0eR8tmvmzAsKM7aKIImMFZG7fFBIi7Lnd6Eors7o60v Sc3LmusOmh7Geh86Szo= X-Received: by 10.55.77.215 with SMTP id a206mr31088031qkb.11.1496795536587; Tue, 06 Jun 2017 17:32:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:49 -0700 Message-Id: <20170607003119.14778-41-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> 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:400d:c09::243 Subject: [Qemu-devel] [PULL v2 40/70] 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 0406f22..67ddf1b 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -5472,10 +5472,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 15:40:37 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 14967973571931001.4062267214927; Tue, 6 Jun 2017 18:02:37 -0700 (PDT) Received: from localhost ([::1]:40693 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPMp-0006Jy-Mm for importer@patchew.org; Tue, 06 Jun 2017 21:02:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34069) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtX-0003B7-QF for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtW-00027Y-ND for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:19 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:33817) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtW-00027S-Ik for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:18 -0400 Received: by mail-qk0-x242.google.com with SMTP id d14so12248463qkb.1 for ; Tue, 06 Jun 2017 17:32:18 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=MzN6WgQr71L2/xXK27EE1KtDv4KAeHjvgEGGF0GV0Sw=; b=CTlu/7w40NMwFriDyPd01bW/Jp8xMGThgmaf+zyHtHjy2ZeIAMnZgDn3F4sfkuF4dX KwPvxr0VWvcH4wWkw6iTetrN4JeKxKF+PiHXK46HYujdBouTgLZcJxtJYSk9hdhIG/DX amD2655n29RPtfvuhtC88ATLKbV10UozaDht91nv4N+1ragbmWTN7xS2fALmN+xwxpSs ZHdV+pJB+7TTwAXK4yRSNqLke8huEqgAX5bmIijV0g+/Opup7Ind25H3rMy96jpV/8Ib nY3kQ+gksm935AOrK4el7nqa6G0frlg4PyRgnbxQIAr3UQTkvo/jm5gFZ1/TGDHk7vEk yJaA== 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=rTMqSCwiJiL2Ha6dO9Xyq1QXqtdYTriP1VsJnUUItyAIAAGR6LjyQzJP7oK22Rns3/ Ki/Pd6eOIZWRcKhrrvO+VeHz4PJZ9M1+6MFbqXemgD4xFoCAfs331Mm5grMhrkyemInl 22ynrn1iUsPg+WJdzzJ/IZSRb9D6G6wgtoxoIMUgiUfvLYXaxkITD1DGwap3XBaQjVGA +t44TjyVwDAn7EErf5SzSVYQpz4F3fDDiKKtDkBc93pj+sw53Jsb99fqDidMUJ0SalEQ moq1jAikWUqtEogs92vYTmZI4ojLNGrylUm6MIsojdNlVo81iTniK+Dl4zNDBCX5EWXO OOrQ== X-Gm-Message-State: AODbwcA7VEGRGQ8T+Y3oLZY7y5ulzpBZfj184CzeehMEqQjLnCmlRAv5 o9P3PVwPlMakRaRLdSE= X-Received: by 10.55.201.68 with SMTP id q65mr35711772qki.249.1496795537877; Tue, 06 Jun 2017 17:32:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:50 -0700 Message-Id: <20170607003119.14778-42-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 41/70] 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 15:40:37 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 1496797655436695.3298764888423; Tue, 6 Jun 2017 18:07:35 -0700 (PDT) Received: from localhost ([::1]:40715 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPRd-0002ix-Qc for importer@patchew.org; Tue, 06 Jun 2017 21:07:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34144) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtb-0003Eu-3x for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtY-00028T-0l for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:23 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:33818) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtX-00028A-TD for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:19 -0400 Received: by mail-qk0-x242.google.com with SMTP id d14so12248494qkb.1 for ; Tue, 06 Jun 2017 17:32:19 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=cMvMSDaxZcgVYTAFsZKc1ipb5aHwQo39q6nLQA7y7oE=; b=s9vJUVjC0lLZ4ndHrFvNs3TBFD/vOGOFUZ6Uo9fOM5sJtE8Uy8CzWmNyFMTfIF9ILX IgsCtbkVizjVPB3WJ5Z4vSqO8velq5dwyTvIofgbUKmbzFwCwMV+na67+DB51zig6jyQ MQCwafpzTm6NWa1revgNTExxfT2+szvGijnl/yXMqSA5Xp+ncc9hOuxJb8pXYQNAQJvl 91D2Feu7OZG8B/x6iPP7X5GUQAtpkBJFwXQtv6T110OXyN67EPnNXnBJvtkguLKOryn+ iamXOT7IhOZPlOFYUzZdCpvNl2cMH//TGG5IGiIU0S3QOf3INWryblHqo78CMGottMmQ 951w== 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=cMvMSDaxZcgVYTAFsZKc1ipb5aHwQo39q6nLQA7y7oE=; b=dwZOy5T1CKgg39bfFMt8xuMmy5xbYILonk7HKt/pXcMWAOBlHmbmdnr7J+HHHQ8Md+ ND+QQrhz2Vg4PXkSA3ELqKcHpio2mQKRVKvf25U8xlKleGRl4x5LHEsELyMkl7nEO9B9 cF95iXL07b7bEmPnkb1XyAGdSjoAXXoz5a+lXqpE4/gcTGUndSJtBOPTjR55hdq3ZRCr QKMuIRkOT5lXLZz8nhxkldfRNjDE6PVOS8XHm8SDznuTjeY6n7N5Q5vIdb/WXQQJ2HX/ qGUOUjONB4iBwPW5oa1sVUxGYEyJGkRxBIvAIs2AQ01uBQHyVti+yCEMc/wclaXIVaKl 2WwQ== X-Gm-Message-State: AODbwcDsMD81gkcT/auX5fCJRFdZjg9fjTZ3oPijZ6h4p7NKc/YT+Pbc 57ao8O10RbYUAdR/9PY= X-Received: by 10.55.4.135 with SMTP id 129mr31322034qke.10.1496795539217; Tue, 06 Jun 2017 17:32:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:51 -0700 Message-Id: <20170607003119.14778-43-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 42/70] 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 67ddf1b..0a1b3b3 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2357,8 +2357,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 15:40:37 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 1496797509238523.2060312296402; Tue, 6 Jun 2017 18:05:09 -0700 (PDT) Received: from localhost ([::1]:40701 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPPG-0000a6-Pv for importer@patchew.org; Tue, 06 Jun 2017 21:05:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34145) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtb-0003Ev-4B for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtZ-000297-BI for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:23 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35647) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtZ-000292-7A for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:21 -0400 Received: by mail-qk0-x244.google.com with SMTP id u129so439622qka.2 for ; Tue, 06 Jun 2017 17:32:21 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=32QL8pQTOFuruMSkK6PzVDck8Ooq28RJlGgbRc8TpSI=; b=tWCZlBOwlsZE6UOmxoBFRCYKH/hcz9F6XgpiKo2kCPIkMTjGgO1VWCHhEFRQ6p3rGc kift4ZR4AjY0AYwMZnEUsy8zBX0gW2lYwsYBmNwFeS/X+BZY1lq9ahXCs4oabTPhXbOY maVCkv/0/HrfrOg7KMoLM1P3azbEtvwiG9nPZnCJThhRgkuMnvd6wp6iXPD7JN0j3yaw ad2lh8A+3+6INcix19/siFJdwZiYvu73wy9A4oyfs0uhIWxcNUav4KRXfnp2E8ClvejK yPhf9CspSaP7oOEK2MJqpqNFl6vALY2molrdr9EBBFXYZ15MwPgWduakgkdKsUZspYtL x5jA== 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=32QL8pQTOFuruMSkK6PzVDck8Ooq28RJlGgbRc8TpSI=; b=bLc+Pfu/+XuOcdbNoo+8lj7uskMXx0C+bJtGoQVyjT5D4VUzHkUPBEuzI6Lefrdm3/ JIu8CmlKqjP9XSuO89A2EWAE8+4hbDPllEDYrYrSCFnug8QyHWwSH1PO4joctyHShfEW qEvAp9KdxSpoByRnYYfVGu1TUGJ/akhyq1ZpmzQCTtQgvNHqYs4msZOxgv3OseUM/5t1 0MgPkrSzEqOl34vPuO8MIFjINJLkHlfsjUaCgXleVi/VqfqjtMgSttNt9+cTDxXFQcjX LT7eus4NxFipIk9Xd1MlUSTSAU5ornmWW+Rcqn7NR8QqCUjHzCE8IDK3vfO5LL88gOle /X8g== X-Gm-Message-State: AKS2vOzW0+FiIkZdrMXRMNGHE6flsFLZ5QgUTcGvh57Sy2FwQ2a5n3WA lxUclua74LBw8KoQOaU= X-Received: by 10.55.64.133 with SMTP id n127mr31912403qka.145.1496795540558; Tue, 06 Jun 2017 17:32:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:52 -0700 Message-Id: <20170607003119.14778-44-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 43/70] 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 0a1b3b3..2d45132 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4134,6 +4134,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 15:40:37 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 1496797191891603.6849957264917; Tue, 6 Jun 2017 17:59:51 -0700 (PDT) Received: from localhost ([::1]:40673 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPKA-0003xT-6e for importer@patchew.org; Tue, 06 Jun 2017 20:59:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34156) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtb-0003FL-H8 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOta-00029l-HI for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:23 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:35649) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOta-00029P-Cw for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:22 -0400 Received: by mail-qk0-x242.google.com with SMTP id u129so439644qka.2 for ; Tue, 06 Jun 2017 17:32:22 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=PkxioDAmbokWu3w57tXchj8bwwUqDVt3WOVWNs7nQgo=; b=pULit+CPSeTc82JuCMgQzClSKJYMaT94gGr6mmWerGxUYnpu1s0UAmxbeUUQf1oE3z 06sXkkbkN2r3aNRRU1EOlEp7FfQIT6cenAJOTOFTfxbIMxNh+UO+4aJckoWkPHjx9KrG Lti5apbIjpo70Vuwi9t5cXZOrGdTHGNUeJmb/PrD2tJ2I6pu9RV7zKD9mee8lE+AJb1m XZeJHvwfbB8nTabYbPdFE97D5x8RRgipQUQcbPZ0hwmE0iPEuY3DBw2kmxq4PlAz8dXr giSOIlcYoVuHlFlmpg3S6QsWXoAsnR2+jiipivSIlDSWw5dZLpUZnsj6t8vFoU1AmB3M C+3A== 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=PkxioDAmbokWu3w57tXchj8bwwUqDVt3WOVWNs7nQgo=; b=IwTAjSMvSG7laG2C4dqFP4ItLWL6AQqRkqy9CSMzw/NSpdnyvfiULZybZG0FIkK6sK fErHDCWiwM6OcSpa3Ddyf/D6Y2BBsTuQAGW42ztUYxjiHrOqYfYMI+wyXGNmmUIuXviT AC9yJKz4nA/d5cUITg8RuNbxQJ8C0GJCN8u8F0rm+eNOnIBEPy73beoxA8v8io5ZTF/7 jbzDjGPQUg1ewzS1TG8H2SUec4tti4cLe2aSX/9HOqnHJVqFk6+qTBoFm1DP+tvtjMy8 H8AiiINcskhs2ZAYXnphSwRCgKHd86o4ZPhiY9fLSLLl9s07JQgM9LP7zWb2GBZ4ApEz SPQA== X-Gm-Message-State: AODbwcD/K4u+hN70odfH7lbLOlBEenesPyP3yglN1CdHgvG6AFYGe3Df ek/DqQMIxrtw/WDvdys= X-Received: by 10.55.6.18 with SMTP id 18mr31239372qkg.179.1496795541734; Tue, 06 Jun 2017 17:32:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:53 -0700 Message-Id: <20170607003119.14778-45-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 44/70] 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 2d45132..854a66a 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4068,6 +4068,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 15:40:37 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 149679780162288.66376483413217; Tue, 6 Jun 2017 18:10:01 -0700 (PDT) Received: from localhost ([::1]:40724 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPU0-0005VI-4Z for importer@patchew.org; Tue, 06 Jun 2017 21:10:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34206) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtd-0003Gv-25 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtb-0002Al-Sa for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:25 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:35650) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtb-0002AU-Ns for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:23 -0400 Received: by mail-qk0-x242.google.com with SMTP id u129so439671qka.2 for ; Tue, 06 Jun 2017 17:32:23 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=o1yx6FyliTH2ESmDhl2kQ2HeTj74WjF1HtAj7heyI78=; b=rHI21WlvChE3gyWy3kFLEAlFI7LLfCZz0M97MmrW9Au8jt/nJepuQ4vzuKRtR/feUs pHk9axB+USMkpJ+y3M6r+rZLxefW8U+WBNbqSBLXtfhunihIkTEnw+iW7spFtbyB5bLV JtNfvvKcUp9oTdzEZsPFVm4l+obf9z2/jJQKh11x6/eeF0AQrVTJVPIMrVOGgq6R2Jk3 xxcq2oScRNvbenBKzuDmyCk2yQpDLM2PPEFNJg4YCGuDgfxygC3J6AT1ZCtWGW6bLUkz p9Fwo9RhI3KqLAeioqB8Oqe1S3pdOwMnrIztmgoHGKZpn85NAUVMe/zVDPvu0urCEIO1 B1jw== 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=o1yx6FyliTH2ESmDhl2kQ2HeTj74WjF1HtAj7heyI78=; b=WOlqJF+i7b3cH6Jgh1a1a9xHPjVqorZDlPFg/GNhw4n9bc3Z7IowajQsgXkTBWR1X/ uDQPeHzQfGtTiJcOMDjviVaDlBIep6lqetigBkGBuvaYN8d8LiEZj/t/Yx1AxwTvQlSa vaHIteDLXXidqKmqM3lBobtiPDSakJeFOhyyuUSuchpgl/km/qjPkzNsrFmcP5/a0Ydf 6jTgOG5Hw74tJZfuRYOgVk6RU5i6WKzR0sZ5y1WFVUl5ieJB39qn/qkc6QAHRSOd4w6R 35OPFoj+4dDq+mu99Ku3EJb0Ff1xbIGhK+f7hcAuHwNEkB/rnDhFw8vzXO+CII7hQwrK DeHQ== X-Gm-Message-State: AKS2vOwTLhigIXCXiqhfOU1k0frTgX/holIpJsDqdyW1NTqZb3MUxnbl lR5C80l7bUwU1pVqA7s= X-Received: by 10.55.22.84 with SMTP id g81mr34708315qkh.110.1496795543017; Tue, 06 Jun 2017 17:32:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:54 -0700 Message-Id: <20170607003119.14778-46-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 45/70] 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 854a66a..b3cc349 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3144,6 +3144,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 15:40:37 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 1496797436941564.2407795890148; Tue, 6 Jun 2017 18:03:56 -0700 (PDT) Received: from localhost ([::1]:40698 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPO7-00080i-EE for importer@patchew.org; Tue, 06 Jun 2017 21:03:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34234) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOte-0003I0-6p for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtd-0002BS-2C for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:26 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36554) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtc-0002BG-UC for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:25 -0400 Received: by mail-qk0-x242.google.com with SMTP id y201so11029183qka.3 for ; Tue, 06 Jun 2017 17:32:24 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=iXXwG9PEMg9gycIDA5dtEjmGHRBaSUinnY9FtqUz4dI=; b=muNpNqO4FJg+EBWf1w//4LoWetHpC87/Q78pks5UGZzREHyXUrcHEDaVUWkefjY9cU jSBICi2RQTXeBzZsURhwuZgcT80h8g3jEcwqm54BfYegJql3BZtrP0Eic5mOt9nzIiSo EAKOQHrWFPjb/mMkA2HmwLCeihoYSf2ZGHHbV66HJKzEqiDCL3z/QhWCdn+XJQSx6w4s F3kE2RSHaesPfky1a9dCK/Wz4zOLX8t1485Qn1e0QcR0WstG0ukZbk12MGzFxclizvcb 1Wuk6JacPGFdHe5N11N1j6+XofMldL/MwwdY0Io1Q1DCmvhe34RcvKdjJmolbMrbxZOF 3DIg== 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=iXXwG9PEMg9gycIDA5dtEjmGHRBaSUinnY9FtqUz4dI=; b=OM8VrgJXQpOwaOMVL6jtatS/+vEUBdLrbk7WwKyFSvDw5ufk2BNpDz6ASDMFK9fTY1 mwlx3F3comgrdUJPvLindwG12t1bKk1pYvaDdzm7wiUkZVA7pc0XyfRYybijO8P/faze WFpHyZc176jk+kawQDSUVjK/y9TIvHfAvvLx7By+CSpbyLVExcCoY5LsUNS3awfrooTE xPt0Xz8AlffsCoj2aFLxNuMe68jOOxnOdW2DzevIsay3RpId5ebsY1cE0CZCevRVepOA bPotQ0QaqWzizXn8Dcx8Ub2oEi4Bq/fyTvAnQlxaO0oLyygRVqvTw2yo5ZeG4M3G0zUL Wp/g== X-Gm-Message-State: AODbwcCTEZcPlhnqgBu8iFjprdiCaOqN5B/WuNSdYISpmyf6QQPL6/q6 gDVB759PUEB9lj9h1Bg= X-Received: by 10.233.223.197 with SMTP id t188mr32446008qkf.203.1496795544230; Tue, 06 Jun 2017 17:32:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:55 -0700 Message-Id: <20170607003119.14778-47-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 46/70] 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 c6fbc3b..86e2bc1 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -49,6 +49,9 @@ DEF_HELPER_FLAGS_3(lexb, TCG_CALL_NO_WG, i64, env, i64, i= 64) DEF_HELPER_FLAGS_3(ceb, TCG_CALL_NO_WG_SE, i32, env, i64, i64) DEF_HELPER_FLAGS_3(cdb, TCG_CALL_NO_WG_SE, i32, env, i64, i64) DEF_HELPER_FLAGS_5(cxb, TCG_CALL_NO_WG_SE, i32, env, i64, 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) DEF_HELPER_FLAGS_3(cgeb, TCG_CALL_NO_WG, i64, env, i64, i32) DEF_HELPER_FLAGS_3(cgdb, TCG_CALL_NO_WG, i64, env, i64, i32) DEF_HELPER_FLAGS_4(cgxb, TCG_CALL_NO_WG, i64, env, i64, i64, i32) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index f92bfde..39fcce5 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 b3cc349..0a35eed 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2374,6 +2374,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 15:40:37 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 1496796838029784.2293881081393; Tue, 6 Jun 2017 17:53:58 -0700 (PDT) Received: from localhost ([::1]:40648 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPES-0006ff-Ie for importer@patchew.org; Tue, 06 Jun 2017 20:53:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34247) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtf-0003N6-A1 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOte-0002CG-C8 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:27 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:33068) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOte-0002C2-87 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:26 -0400 Received: by mail-qt0-x244.google.com with SMTP id w1so26596586qtg.0 for ; Tue, 06 Jun 2017 17:32:26 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=0XxsLl5GDyh25/6I9F8MRoDTnhcv/AzbX2Tn7Zd+svM=; b=iQcd7SsADDwnAFGC3WwExCjma/270S/dsuxdhTYAMACuJQCqKJpHfviu9TFFmFg9E+ d4Jtn3KNbAD8AUgRm7C33CM4tT97pYAlPINcnKGn+cybhPY+ZEzAfeYtQYsSrUoYLHVl C19X/O1nM8BnITY2pn5FAAYFjZ0WXJ9M5Aq/JG2HB7ptt6oBZ9N3a7HB6v9Edz2au6xZ nj1aBx+uc3/jKTOINGj0y5BfYB3aOaIcKeidJ1tq6ZYuEDogRCa2kGljcNUSv7tYUOsU sB7nPQhSmYi3GlxgPqZKmA4nvxYomLHj+qTWeHNlogIZ0x72liTYIubCgDvSDb34cLLr X7YA== 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=0XxsLl5GDyh25/6I9F8MRoDTnhcv/AzbX2Tn7Zd+svM=; b=JHbF/DZVhqwjp4QapoBVcZZJqZ1mRT7GpefBIP5w0bmIyUYd8NTWbNo+6YJhDzsWhD FlWKwRC+TEcF55cCRa9BbzJ/U3nLopMGEZLIQ+prPxv9aIAxPbWdPFCm5SJgvRM3Ln0j lihV6fH0fyUPsZx9/2Y0Va9AViO5PifGl00+DWgM5D6Jj0+p0RxtMmpXRAGAajLiKFac W9viLs76RGqw6LIuFYFHTuov8s02AydIOUqMzJsEcp85+jacOQ/Y1RscUxhhkon2ZLFk 1u9FicXfinQX4zb31zSR1lFBYNM6Hoz6vpobrUuHJZRh7rOOG59tW4Iz9079pvpg1GtV Pauw== X-Gm-Message-State: AODbwcC7wYiO1Sj6k4qdQTX2zCypON4nMT2jmjW8uoYvHh8fLJK45Ya5 iYB9UNfOCibAOQsMQv4= X-Received: by 10.200.53.51 with SMTP id y48mr24651004qtb.98.1496795545559; Tue, 06 Jun 2017 17:32:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:56 -0700 Message-Id: <20170607003119.14778-48-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 47/70] 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 86e2bc1..4b6c756 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 39fcce5..c1303d6 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -570,6 +570,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 850472e..6faaadd 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 0a35eed..a9b96e7 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2938,6 +2938,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 15:40:37 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 1496797348277137.04233345362036; Tue, 6 Jun 2017 18:02:28 -0700 (PDT) Received: from localhost ([::1]:40690 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPMg-0006AU-Oq for importer@patchew.org; Tue, 06 Jun 2017 21:02:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34277) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtg-0003Nu-P1 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtf-0002Ci-QJ for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:28 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:36024) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtf-0002CZ-M9 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:27 -0400 Received: by mail-qt0-x243.google.com with SMTP id s33so19304961qtg.3 for ; Tue, 06 Jun 2017 17:32:27 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=TwznwLqQEbsXdtOGQZTv6cTTuoTrMl5A/ZV5/ShX2Ko=; b=FuSoukDg13t8lgv6Be9uH5F9hKRERhQoyrik3gkN9mCB5u9I1i6qTrpz1i0l01dznS 43lJMNaKzwu1x/ylTTJGcymiC1HTFDuY+y54cCjliz9Gvz3BsaFdCjsBpWAkiFxm2Ruj bDZjy8qogfeTdFfa+F4wC8GyTgD4osCy7nT+aH2hw9eEuOY0YKHO9j91Va/SEuQ/WKxe A3h3xDUV1qT4CXHEQOqklXwdD1q3oae+4v0wN84UmHP3Ui/N4DA3Xw7iZCFohBi+gdBi SqaEacmZHkOYx/Vki0KAhXjEvclxEJVVYeApaPPkqXe0UsYFSbm8pLRfC8rqnT/MhzN5 loCA== 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=TwznwLqQEbsXdtOGQZTv6cTTuoTrMl5A/ZV5/ShX2Ko=; b=KHRGupQmuYmTJrLM1rJIwnd3qJ7gUWUO1Pixp+8G45119qvyjGkE2iSPhIIP6ObgRw VFM4AJOqgB5km+Ta1yzvZEt+6l2+IU6tJL3H9KV8KmDKrFDfyjsAjXbhIkbTpcVarX5J co4spyTPMem84ow/SUP7IHHhW5lUXRG6Lx7qZh/cnDn2gAZxZ766T0dQuOqLlVTrnLb1 V9R8fZZVszojw4Yq9FSmTKz0RCV8/omICyfrT+jMuAB6bdhTXPhH++/Yqby+zSx+3SAb YJhmVCDvzV0HAMGjLvRtrDHSBN4hXqm95/xvCZXGM9uyHhuHVd3L8wMWZfa8pi0qBi8R rvgw== X-Gm-Message-State: AODbwcACmxbCNtd/Ofbkz277bVu5OZl5I0quIb4ocn3mNtmEaGe50QnV PgSyRU4N93W8eDi/C4g= X-Received: by 10.237.59.197 with SMTP id s5mr9428551qte.192.1496795546987; Tue, 06 Jun 2017 17:32:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:57 -0700 Message-Id: <20170607003119.14778-49-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PULL v2 48/70] 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 4b6c756..5780bb5 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 c1303d6..cbb91bb 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -576,6 +576,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 6faaadd..f80b7a5 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 a9b96e7..7b42c02 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2988,6 +2988,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 15:40:37 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 1496797587351595.9515476498053; Tue, 6 Jun 2017 18:06:27 -0700 (PDT) Received: from localhost ([::1]:40712 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPQX-0001lH-Ux for importer@patchew.org; Tue, 06 Jun 2017 21:06:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34318) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtk-0003Pv-9W for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOth-0002DP-5G for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:32 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:35132) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOth-0002DJ-1O for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:29 -0400 Received: by mail-qt0-x241.google.com with SMTP id x58so19243609qtc.2 for ; Tue, 06 Jun 2017 17:32:28 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=F3DPvTmh6fUxcTY8CNKIi5cBaLwIt0L6/gstnFhZKg0=; b=B7jtZwO1OJkKxh/M604FUpxRjhrW+KJHWkY4q4vt4S3gW37D9CStVhL/V8TFySkKTp GRE3rEIKfwMrqJuD1BPXGnU32LQ2iSIHHA6iW7B+wleJYrRSFkD0Vfa45TdyUmUzRaTh Oh9i3Pm6yzJVOoLwOd3QQdLUwVp/rMzDYaN8qwCEDBBM0NEGADEGzQGNBjTZhXmvuau/ ugIHBBBk0PbCCt2M+a6WpA7f/UB6/z68OIVdZ0J+Iz8kgeS7W1iAyoSP2WFIjXtj0M3k fZoZP6N1+YYeDmu/1rHnI8hE6++Y4wRAD2urtR+6GCGkSNzLMwXXMaLAtoWRPpJAbqXC IyPA== 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=F3DPvTmh6fUxcTY8CNKIi5cBaLwIt0L6/gstnFhZKg0=; b=Gd37h15PTbXZKSUEWwSJK/gzW9FqmK+UevhLWna1Nx1Zb4siRF8SkSjNrzlbrYMuz3 mUD/GM9kCt2f6snhg10IKmXe2Ji6uy8GeAMFKvx0rw7Dw9ht/IP0390PLUj1z1+5f4/Y had9poJ1dMTSyW1GX3m7ngqngI82JOPZEAPlAPKmLxcd2qHWd1Kg2aWSlO/oy0tK1m2v cOYKPEhogmsaiX32wUCagg3QmVdDrrjy8z1d30LAax8yw8Ca4dtKFE1ckFImsANlGpAf btPcXQlCu+OnXpGrwTfNuJPPJYbrvbD+6sZKrzcaLbdbX+3A66jz2PKTiPPYpdRL74ug nQng== X-Gm-Message-State: AODbwcCW1Wg3TMT48swO6nPrycoPTPKOhT1fC/396vFh+USNwJxbLzxR 3tQXtNnGQw4w/rB6oY4= X-Received: by 10.237.60.77 with SMTP id u13mr37350227qte.18.1496795548325; Tue, 06 Jun 2017 17:32:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:58 -0700 Message-Id: <20170607003119.14778-50-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 49/70] 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 5780bb5..385ce9a 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 cbb91bb..45aaf11 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -582,6 +582,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 f80b7a5..facac4b 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 7b42c02..7be1c70 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2996,6 +2996,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 15:40:37 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 149679750155559.77795692619486; Tue, 6 Jun 2017 18:05:01 -0700 (PDT) Received: from localhost ([::1]:40699 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPPA-0000Td-2I for importer@patchew.org; Tue, 06 Jun 2017 21:05:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34316) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtk-0003Pt-87 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOti-0002Dj-BP for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:32 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:36027) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOti-0002Dd-82 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:30 -0400 Received: by mail-qt0-x241.google.com with SMTP id s33so19305037qtg.3 for ; Tue, 06 Jun 2017 17:32:30 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=D/b4PjCdQu0RYNyCDMQLndJJMv4w2S+AO1qodNncADQ=; b=OGLT5RXS9mSVgka5FeqjcNXeOj+PPcTTx1Oxq4TckGvfxdqu+Db1EbTNtYAbyEiBH0 Q9/cxpDQqOFzLBFIYa4Cw8X3cPNifErWyQ5q9eQ5i0FMA7KjhF3O6qMvs40lOeei1X0j HzREEcl/3K/mmWYuJboOvIJuzi5OjTeJWBLMjzgFS1+jnnBX4q5CBPLCEC8a/MtVNjJV o3oq+mCvp2VzQW8FqSRwxH4H6UrYSU0CnuJEqTuLCIHIiq1fspE7CV5uLnyCXGelsenh sFfHPVauiJPhfG8GlzDQRDVz6PhygalD0WX59sOz1Qr4hOMkr97OIKW7gtY/L1jn17uV 5a5A== 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=D/b4PjCdQu0RYNyCDMQLndJJMv4w2S+AO1qodNncADQ=; b=R697372qoFH0SwRXhLgxZdcQLbcbauTnMCHJmUL4O/dpdH/lDrJ0OWgMbAAzp2Od5F vYznRz6qguWSaUtBc95vMdqOnHoJ3pEqIqhoDhO4UU19yE97WpcCWUsC3+5umExGvB7l yqH35gmR5CG3eiwCCNF3ZgzgHRouFXrReEpHueaoMn/Hr73fuuXDKEDGdyQb0tipo9YW H0+cU6vGUg5rMp2w8kGU6ggnv/vha18eXxzlxoda6GSd1RNZSmX4WyqkXHwmltELch3r RXOQAdTSZlHS2EcWGfxuFloImLKnxzVo1Sqsq4gTonhgVl5WhlMCePZNMlPr9i4xNJBo VXwQ== X-Gm-Message-State: AODbwcDhDA7Z/DntjKLZ8ZLbiXvpkbZLj2/H/HUQ8XeANzQxJ2ygbvAn R3q/UxVSeYiLQ30KhmA= X-Received: by 10.237.47.69 with SMTP id l63mr2164429qtd.196.1496795549548; Tue, 06 Jun 2017 17:32:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:30:59 -0700 Message-Id: <20170607003119.14778-51-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 50/70] 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 385ce9a..a537e51 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 45aaf11..7fb2e25 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -586,6 +586,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 facac4b..10754dd 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 7be1c70..a21de09 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3019,6 +3019,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 15:40:37 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 1496797651608935.1273961169898; Tue, 6 Jun 2017 18:07:31 -0700 (PDT) Received: from localhost ([::1]:40713 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPRa-0002eD-6N for importer@patchew.org; Tue, 06 Jun 2017 21:07:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34329) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtk-0003Qi-VY for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtj-0002EC-L6 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:32 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:36029) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtj-0002Dx-G5 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:31 -0400 Received: by mail-qt0-x241.google.com with SMTP id s33so19305068qtg.3 for ; Tue, 06 Jun 2017 17:32:31 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=QRlMq/Nsw8+mt5uBCN4VitwFULn94ZdP17RU4FwLSZE=; b=FzA6qZ4NjxCHR4/Kb68s/F0DLGR0BtszQY+cT0uEcp3B17sUYiWcFMAGMJmxKbfr0R eOcsZRENk1M3HYgjpidI8saeGGCCgtQuVTk46Ae/mn0OjQq9xB8KftlhLRZed3Kx6Vku rdrBWRE97ytweqvgyIjL8jr2vkaz95vzckh2vcMMyaEFa/aoeVbMrSf85kmWr8KY14MG Bq7+K4QOfxQL4etMhLAXUZarW4j8ZDGX9KVa0D6jJK/sCql8Q6na9dtVxIpw9p7ZO7HP vBu13K6l7+IzLr4bnB/eS/rMGGhvsa+/0J9XRrD60/QwkBzur/hYKJATJURJAVkkgA0B AArA== 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=QRlMq/Nsw8+mt5uBCN4VitwFULn94ZdP17RU4FwLSZE=; b=CEpbMT812mFvA3JOpKqqX4o12iww46FRjRAzomGkrPEZs4NYsYuKu9NCZyHm4JQRp8 rCsewFsiis/1xuzYksSnsLSjNq9OuDNS2qa8rg0+frxvD5ofZ0NGh53OpLUe/uKvTmiM Cbmo0z2H74nBFwdKPFMIJYEyTwqMNi+XjowPpwP9y2v7B9hnJ34M0R2RqEDaS0o79cMG docikV60inVgGCU4exc0J7s374lxwV3sLUHPYafBy+PCawB5SooVDXUjsNQPsOsneJGF iDT5T2EYGmwjxp4B4a0QifeE+O8mWZP/rdRjPfxJZzA7Rvvn4FwcnUAKufOY/BuaVKwo tVIQ== X-Gm-Message-State: AODbwcCiDrFoc6/yzV3rhyLUrYS7wOEteF/spq5RcRcuwZChmNtCeejb 1bYxt3ApHUKvtl2Z5Dg= X-Received: by 10.200.39.219 with SMTP id x27mr35615364qtx.80.1496795550775; Tue, 06 Jun 2017 17:32:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:00 -0700 Message-Id: <20170607003119.14778-52-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 51/70] 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 10754dd..aba26be 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) && @@ -1357,8 +1348,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 15:40:37 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 149679773513737.5063941300798; Tue, 6 Jun 2017 18:08:55 -0700 (PDT) Received: from localhost ([::1]:40722 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPSv-0004Y9-JI for importer@patchew.org; Tue, 06 Jun 2017 21:08:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34342) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtm-0003Ry-3K for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtk-0002Ef-Vr for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:34 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:35137) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtk-0002Ea-S9 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:32 -0400 Received: by mail-qt0-x242.google.com with SMTP id x58so19243717qtc.2 for ; Tue, 06 Jun 2017 17:32:32 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=Mng/HvoohNEN2ryITWfbFDhYVXKMwVkdQSYzbWIavfw=; b=lPEgtknffUzW9lGoUm3c41718SEE4ZaFysHrMhOuDJzyCSib9xyuxDyT1q/dARSPi/ /gO8AMRkt/FTUgqSx1n7zSnRcAbZOmuRdnmT+/euOCjNpfhefu3Fyn+yHNJBOD0BdthM 2L6Zv/UlUV5ih0rXr2JsPRcZ9wcmXQE8A8RM0DL4SMPzOeUv/IXJots0u/DurouDG5L+ ixGk6uB5EcKtm7GLawKXuwg86JlLR/bnrl0uJOfpmBo+prP2PuPdN+rfWIfjbnd7qPoR x2IHP9X9JOaz7jSZQmD4f/vz82kB6DD2jTXbt21Hsm8Icgrj8GfLd1YAZ0WuSAa38UBe LSzw== 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=Mng/HvoohNEN2ryITWfbFDhYVXKMwVkdQSYzbWIavfw=; b=dy50PP4MGE5UTpC6HAKbHmEHhysnht9dg7WiCYEQrjutVRnFmzdYNgJqZLJVqJBMF0 C4fVUq0hLm+ahflLTgvYWyIHb1QFoTwieL35fuMKNNewvtMQqdOKB+ahvdC4udM4JPWc WsXeohjHkf8zXFzW2B21iXEPuhuyeF23zzqCW9kvnrsz1AOk/qavobV7/b8A5zNKmVLA 1c58n9OfvGHIYih1jbEjoyk5ySsos0Tte2FzpPPOSQf/KdkIQH6oMONMjwuuVhus4EQJ 9L+zRlh99NqFFujMWYDsbtZrGI0AxeGPEHDUQE7NM5HIXO/KNyXEeudWmBkqXKmymd5K ypkQ== X-Gm-Message-State: AKS2vOxMC5rY5qzbHZIjdGHWmAN6zS1a907+tHCrH43XtZQ0kopQgbfY D3QayoQKeqtmpvb0U0Y= X-Received: by 10.237.57.170 with SMTP id m39mr34134256qte.235.1496795552108; Tue, 06 Jun 2017 17:32:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:01 -0700 Message-Id: <20170607003119.14778-53-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PULL v2 52/70] 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 aba26be..5f11e1e 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 15:40:37 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 1496797952921518.6950740534747; Tue, 6 Jun 2017 18:12:32 -0700 (PDT) Received: from localhost ([::1]:40741 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPWQ-0007hv-Eo for importer@patchew.org; Tue, 06 Jun 2017 21:12:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34355) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtn-0003TW-DU for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtm-0002FA-9F for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:35 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:36564) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtm-0002Ex-5N for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:34 -0400 Received: by mail-qk0-x244.google.com with SMTP id y201so11029518qka.3 for ; Tue, 06 Jun 2017 17:32:34 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=e4qORPrxyE468YUchgT6oJlY09q09Ume8N+c34OkwZY=; b=ouFhDX/gK95ZobXE85WQ0rECq7h3WkSI9b5yGhwwHDI5kRAGPxXP6vUVnSLb1jcks6 4gedkkj8EAAtTBQxUX/k5krVWZhaYs+ykem9h8jKrlBcQXuoeZ/4Rdlt3Z+hcz6z8dw9 0EmTv2XG/Ud6qqel33cPzFv+eaTJByKzs0MbIC9KrYV517Jr9/F2uXYSPac7f89lgJcy rZmzu9SLXQMOKB5LRvBVugDiY0RB1LlR1p8ye0lC+R8OHsE9fsKHNgxdzZ+UQPihdnse sxWi5uswwhcjZ3tUUOJicblasZGF/1Q2H8FwdnVre7nXWZ5DK2PFehic/bFVB3krC0lq 8Wqg== 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=e4qORPrxyE468YUchgT6oJlY09q09Ume8N+c34OkwZY=; b=dGlVQh2G5Czm4yfOreanqTGosDh5Z5lMfE/+E8yHNQIct9symXvB4v96he6w30L8Be WuCPMxREEmvaD2u5L+bbjdg8uCMaU7AePpGkNRANat0x3irJ+5bxn3s5i6+yOb7if7HH FVk7VVWTZiL2My1FSs6u/hgY6wFr0ux7mzDeW0VDRv2g+mBmzquBP1AebhH2QKCnYC6f uIRfmiS7ZDD4QgqhrWAcFgB7twRU9mVTCbwpN+EC1dw+qspLzAX8UhOOQffVQI9z0rjP TdO2zrtjf9v5qcj3Y2R/6NcRM/FTcKbaDwZN8+tenwORfNiI+iRcvr8nyZBnTW6+6R1o JEog== X-Gm-Message-State: AODbwcDPDasAx3h3wMNBS627eyJwiI3iwA8cPNLovJT5fxdQ0X8Po6/K 0D+69ZTJN0CahWpaN2Q= X-Received: by 10.55.43.93 with SMTP id r90mr32220226qkh.196.1496795553428; Tue, 06 Jun 2017 17:32:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:02 -0700 Message-Id: <20170607003119.14778-54-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 53/70] 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 5f11e1e..83c32c4 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 15:40:37 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 1496798095259897.6418840563963; Tue, 6 Jun 2017 18:14:55 -0700 (PDT) Received: from localhost ([::1]:40752 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPYj-00026l-Lf for importer@patchew.org; Tue, 06 Jun 2017 21:14:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34370) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOto-0003Un-LC for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtn-0002FY-Im for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:36 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:34083) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtn-0002FQ-F0 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:35 -0400 Received: by mail-qt0-x243.google.com with SMTP id o21so22863055qtb.1 for ; Tue, 06 Jun 2017 17:32:35 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=h4RuZ57yDJwk0W7cRl6L+jphFefUipej2+QivMFpoxQ=; b=CpNUCKC6C92UUCnmvkIUphxkaFHIDFXQWLtNe1aVPHfNiigX9RCEKF46y5f316GQI/ +rt3gtkBuExWF310i9Q+kqLMYTvWkRkMEcci+9WZPH8K+nm9TUdWVpPZfcQeC8uU1552 FFhNGUVF+nSZhDlhivglo3U+Wje7wnPCnCQe823VyEqdfCQPp1n1jCRR5WzWGt0ROzuG eraJGc4Tlikx1irO1NkAkU8MUSeLiBx7QRUz0RawgbhR0RyrbFTdtHtCz14G1W8Su2+Y syusPZIbKVu+4xVvruZujju9DPeiz7Y6YmeDLyEy+sNbgOLqtq6i0k9hkI9E6J5oKUWB kucw== 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=h4RuZ57yDJwk0W7cRl6L+jphFefUipej2+QivMFpoxQ=; b=jkGahtvqzCoPYO9nIwRA9IdDkJxvqm4yMtpWhCQWdUzTYnfk74fdFTwh9fd4eAHp/Z o6a+bQ3nUHsOfey//IbqexLHrIxDAiZeTvv8PIE/RtEEaDUNdhey9dk64S8cERqV4MN4 prmrVQcfRPXcRJ14fBJUjj890DBLL8/TPhv18tZsF//nBBJbFEU95hQ4iT2aUG11iwXx jXoX8mqzsYsJW9nbwd9IHoXMWSDeQugesJKc2mg/7SevUOdONi6MrhpmqgNws1DzdE3q 0RhCBgeHdxoIz1gkAtqltQR8A3QIYYVT63HlTxd9UewIjP8SOVQRt/bag+0E+hLciq2w JCVQ== X-Gm-Message-State: AODbwcClwsqnLFvqiicd5fzN/2fnaVdMWzCWKfB+ApQHzW9sWi++nDL9 Law8qtS+8BUESezltKE= X-Received: by 10.237.60.218 with SMTP id e26mr26679653qtf.106.1496795554716; Tue, 06 Jun 2017 17:32:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:03 -0700 Message-Id: <20170607003119.14778-55-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PULL v2 54/70] 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 83c32c4..e30020c 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 a21de09..ecd0a91 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1922,11 +1922,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 15:40:37 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 1496798198717300.00912398742696; Tue, 6 Jun 2017 18:16:38 -0700 (PDT) Received: from localhost ([::1]:40762 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPaP-0003VN-EN for importer@patchew.org; Tue, 06 Jun 2017 21:16:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34384) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtq-0003WV-DB for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtp-0002G3-2J for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:38 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:33078) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOto-0002Fr-Tx for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:36 -0400 Received: by mail-qt0-x241.google.com with SMTP id w1so26596897qtg.0 for ; Tue, 06 Jun 2017 17:32:36 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=G8GXNGf9RrMSyaN+r6dmF/068V0b0WCAVeg5jXiP2Pk=; b=d/opkOnlUCLNtFGoMjuL2ZYKWnlgU22wDtXsOVVdZxoEVL2fPa6Fy6Bv2Wkt4HA74a h8OE4C1Q++UkCwRDqxEd5u/dNzul8H9DJQeicmonQuWU+pvAR3bh22W725FXNn5n/Q1C I+IBFbty5N5gH1OZVmmiZO2c/gDNpCBTUEaHwnMUINR8+/BE1/Ezc9ClqJMiN1qHSaE3 A4fSg6BC/PIbdHr+r+u9377x/ZVL+2zmnCSKc2ieqalo9QhljU0u7CGNtkIzG9XrgQWe rdPiK0xxyO0bRVWLJKY3j0p4d5D1zhbXjCX08A9848OV2Ia2CJmdB0qScs7nDgRXmlJz wDVw== 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=G8GXNGf9RrMSyaN+r6dmF/068V0b0WCAVeg5jXiP2Pk=; b=p6UQzAwBrlTE9CEdEbT1xn3BPg5sSUjzYZBJ4nb7eWJi0I5vocvedarRhVQ4exDc5N OETpxtmeQ1KIB88L/ulwn1tRokP/wyppAaVsGSZWZRLrmtgKpYYf8NOg0675FfGn61EL dUHOErt5XajrFNyp7D1HYpfG22HVBs8w8vtpBMKCiOokuEG8HVJ4rT0VtIQZtII5WZnz E3L1i24rd/y52quDw9tG5oUMFXLD5X/zlDQ0B6c1xx/nRZA2Awv2YQynqEr8B/bolQzU cIVjnteyPWBd6PwxK4NCKNjoMexiLnLBID13KzpFP7wRuogNMpCxI3zeAS3/tLhubhQ6 v3GQ== X-Gm-Message-State: AODbwcBUKB6CpgSjrX831EZwMNxV3PuXSPFt48z14oplV79L6JBQqtPx 0yd9VSKnwAAQsczS4/8= X-Received: by 10.200.53.51 with SMTP id y48mr24651557qtb.98.1496795556182; Tue, 06 Jun 2017 17:32:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:04 -0700 Message-Id: <20170607003119.14778-56-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 55/70] 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 | 82 +++++++++++++++++++++++++++++++++---------= ---- target/s390x/translate.c | 21 ++++++++++++ 4 files changed, 83 insertions(+), 23 deletions(-) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index a537e51..a06e276 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 7fb2e25..e30b1b9 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 e30020c..4ed0b65 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) +/* 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) { - 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); + 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 ecd0a91..2d47f1d 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1920,6 +1920,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 15:40:37 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 1496796982917983.6198005015367; Tue, 6 Jun 2017 17:56:22 -0700 (PDT) Received: from localhost ([::1]:40661 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPGn-0000O1-AA for importer@patchew.org; Tue, 06 Jun 2017 20:56:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34407) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtt-0003b6-KB for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtq-0002GL-Az for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:41 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:34084) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtq-0002GG-6i for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:38 -0400 Received: by mail-qt0-x242.google.com with SMTP id o21so22863108qtb.1 for ; Tue, 06 Jun 2017 17:32:38 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=2lMoQBesf/X/8TP6TkCMYxtcFzLxysSTVmgmNUtz1yE=; b=DnYEalkrw7Cqca0IIVu/XnAIITqbVB1diQxSYqJfzIhr6PXaxkzXtK+HILHIDN2A7q kPkepAu39sVrmFoDW2xncWO5yQU74Bg8hqSC3Do3M9EECxtmLdy0/wHpFOY0gnOQI9Y9 7jWVKICzM8TpknWtVAhjR0B5zGcAwqT2lvqnEqqovVpLklauPhvk1VZckoK6KcxeWmrh NcX3fXow8kfpoZXthsJbx2TK9POinIrYkV8cb7VaveNpGJi7zn2SvNOuZ0zgUrcaphaf c8HTmrMhQJUkWGOoFl2HAZtmrtQWhaKKuPNw4WpYF3UNG2sxJxG7qjyIpyfpEbrgOID2 B4pg== 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=2lMoQBesf/X/8TP6TkCMYxtcFzLxysSTVmgmNUtz1yE=; b=W8y20X1xsbpmfeq4/ac+ukUmIOvk/Zif8JRSmTQ9rfmRriDlHVHQV5JbpP2h6vBvt6 6ZUCYcjfOTJFJXAjwm+PH8EpnVY31E/5d9UUtKrZocNI8JYAycrQw0+vMFSag+FwsLtm d/xFObn0zA9yEDfV6MP0im+fTQcQMb6bMU60MGBj26MMLnvNAX0Qe1pLqp1J+Kz5rcKp E6UO3FqG6MZJScd+/5sBXxJk/H3PLVtarTOL3kzV4m1E7d9aY6SSNR0Fw5tUBTSg5XOe gkuAhYuuT6LLLnpvkdn5cxVQDYy8lBWhEQNfRSBVfTMtRhGaeOW+wxRIPq31pWmXEpih r/4w== X-Gm-Message-State: AODbwcDWN6ryGk0DiprwqE/iAe1GvVLIb5x/ZdoeuIOCIhUjhN7qNzId 472Z/nA/yfj1G14Ow3c= X-Received: by 10.237.48.161 with SMTP id 30mr36285599qtf.201.1496795557549; Tue, 06 Jun 2017 17:32:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:05 -0700 Message-Id: <20170607003119.14778-57-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PULL v2 56/70] 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 4ed0b65..2326f0b 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 15:40:37 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 1496797936928746.8993297745462; Tue, 6 Jun 2017 18:12:16 -0700 (PDT) Received: from localhost ([::1]:40739 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPWB-0007Uw-CT for importer@patchew.org; Tue, 06 Jun 2017 21:12:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34406) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtt-0003b4-Jw for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtr-0002Gq-NG for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:41 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:34086) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtr-0002Gl-Hp for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:39 -0400 Received: by mail-qt0-x241.google.com with SMTP id o21so22863198qtb.1 for ; Tue, 06 Jun 2017 17:32:39 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=Ug6UnD8A/899AvBgDHPymNY5W+wVHT55o7huJioR4lo=; b=suSktHE6xN2XLqjQAFEzE8y+VD4HpUHfi30V+rJZVBv9cSE7FO3RARqMZWb9T4idZN ZmECw+k7V6NN2czf4MX7rJ5L1obqHY/+UNDD9U6sBij8kvviaiKe/EmIMtG3ivhV1457 cjcT3feFDJxX8ceRyRlLcBH9WHTinLwI2n/5JvqUnbvbiK8OxB46nVLJGFQKHdSz5mwJ FVB9UzFRMZQKRSLM9SAiJTcSOsmdEsYBU4bhTYmir15hFFqWvcdKQuAwNO3M+M2wFqxl WYHrCcYfGZOtT05MDvO7E4wH657vvXN3meKtwWa56Cb3RwhkhjJ2pGzPIQcdMsCiIYju QbGA== 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=Ug6UnD8A/899AvBgDHPymNY5W+wVHT55o7huJioR4lo=; b=XcNOrtu2ynfn4V6vIwNb4AefCsfMQpg3Vn3Aey+KCdBs4+3Kvx025qAzhWwk6fBou8 qE3jhjlqIo8/O8sE/hepeF19ZpMqmq+FlYfPxwFyI0yA89Md2eP/TiupcoOL71wHf9ib 9ouE1HLg3ZJBct52pAswjZ97ONF+I7muC6ZglHqXXXRkgQuQr5ynhM4CN3GG+/m+WHyK EcTLr+cOHDF0XAr95IzXud+Oox9hLUHjFjt1fOtO8zAv4CEzTmUZ3/F62F8z+tuy6JY2 aaahFW9J9u8/9xpCXrbNgmqvxJ4N1qDV4QFjVtFTuYjGpd4IsigbEoE4cvaCSNDU6Y16 pimA== X-Gm-Message-State: AKS2vOzZZDBIe5DimjEZGo4rHLdGFq/G3bankk84ZHGNybeM/oCsf5e9 lBdfujzEFpSM335xh1o= X-Received: by 10.200.42.107 with SMTP id l40mr37694384qtl.32.1496795558794; Tue, 06 Jun 2017 17:32:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:06 -0700 Message-Id: <20170607003119.14778-58-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 57/70] 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 2326f0b..3b2ff09 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 2d47f1d..c131f67 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2979,22 +2979,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 15:40:37 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 1496798081352647.2395693937848; Tue, 6 Jun 2017 18:14:41 -0700 (PDT) Received: from localhost ([::1]:40750 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPYV-0001t9-LT for importer@patchew.org; Tue, 06 Jun 2017 21:14:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34421) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtu-0003by-G9 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtt-0002IT-2r for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:42 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33838) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOts-0002HX-Ur for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:41 -0400 Received: by mail-qk0-x243.google.com with SMTP id d14so12249164qkb.1 for ; Tue, 06 Jun 2017 17:32:40 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=IUuomO2DOZBivA/83LWvhN2e7dpiYWjihh2G+PX73E4=; b=MUB6/ORoT33CHqLWLy6nCh4SoHewd165H/yu4502uyOCdY1TMWsfDcgoVlYMGxh11t KmmHtBETs9ZdEHcKEJ0sTr73LzfOnxkItraewoI9WDLyMo3ixVZBPMtJqDjApIc5nZRk eGxgK6gUWj6hcggb4w3GMQVyCTTNUYeUHVuU+mAEAmaMdFWZwEDh1X5K3JaNweTchsvr a39BxkkqU0ucKde81jgdUey/D/JDcKoVB2RBi2Aj0KwKrslz/K4EjOBC1l7eE6XVokmr qXk7ddJ+oaE+BNxg8CpHJt1jdi9vi34u9ZMgS93IRTucmbALvLqMF8D1lPMUWC6NRDbf M5xQ== 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=IUuomO2DOZBivA/83LWvhN2e7dpiYWjihh2G+PX73E4=; b=gjHADbm698WnLuVULc/fCcHkf9NpG7Gmn9FsgjfMOPLnX0lgKCat4TVEFIwv2PC5B2 ZmbLt3goQS0MMivLA0dO87rlkEmWBHV6qZfgbNlPPxXS3+LxHkYJoXG+HDb9wT8wAOGz KgMFxUgJdUHMOPyZsH38NyT6vbtPSG6X1CgXgpvYJ8LIDKnD6e97Woe3wvqg3j2A+lWn pZy1Mu//ftba/Xh4ZTrxnP5CkE8jgtkWra5apqEopM6ghgT1MxwRDlHwI7whaErVhww5 D30aktNkzmgazTa/lfDJbN6uYL87SFNRJmmndb4DrYZEaKQXg9BRMlBVLL9HeT8PW2IZ pxkg== X-Gm-Message-State: AODbwcAC+2xjchrypB2HdV7zNVWF0V2MfJIra3LDVscfhNFw1lc6gHbX UUQeskMrD0eC85FIeFI= X-Received: by 10.55.82.7 with SMTP id g7mr34574838qkb.253.1496795560000; Tue, 06 Jun 2017 17:32:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:07 -0700 Message-Id: <20170607003119.14778-59-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PULL v2 58/70] 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 a06e276..b672c3b 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 e30b1b9..a6aaf50 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 3b2ff09..4a7c66c 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 c131f67..d371d45 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1205,6 +1205,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 { @@ -1962,6 +1963,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 15:40:37 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 1496798189533741.7557802433743; Tue, 6 Jun 2017 18:16:29 -0700 (PDT) Received: from localhost ([::1]:40761 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPaF-0003PP-52 for importer@patchew.org; Tue, 06 Jun 2017 21:16:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34429) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtv-0003cv-AQ for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtu-0002Iw-7D for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:43 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36570) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtu-0002Io-2g for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:42 -0400 Received: by mail-qk0-x242.google.com with SMTP id y201so11029736qka.3 for ; Tue, 06 Jun 2017 17:32:41 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=OEzK5ZV/zGlbJQ9DAZsOA1zxT2CuiExan7T+xUTiDiM=; b=ChSKcZBL0fa6xQrDO9xra+v8hK5KvXg1DzV7KkQxawtzDcdYYDxGdvUsconv79E1JD X/rOongoxQnR3fZrkNHM1bBqBkpxevEkZ7sQJUp2tRwDQZqU50sTazIHv+/54Mrb46ri Da1d6/Q1upPclGs43plmKKvC+N1eLtk1akTGKsyAH9+gELsd6o0fAj/yIQmjbUM5EtaA mHAk0dG4VUOtWFd/5wr3611LeUsGRYdItOsfthciFU4mgjF44Tm7Hl5zeUJntEIPTli7 U6eImgqAvvni2pJjlv5pF31uU41VW1TwUK7K752jqL7k9fwDwYd1kLaIYwkhQ7LK1itI HQqg== 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=OEzK5ZV/zGlbJQ9DAZsOA1zxT2CuiExan7T+xUTiDiM=; b=orp4BlVhqhkuf1BAlecP1khYIupYt9ngFage97V9CIozPEEJNjBUFDxdZJhgLkt5eN b0PyvMvMPjnfKq/FdZdPQHA0G18w8ale11Y8b2dbd/sTcGPCmNfY2DnudokWXQvj5lFK PUHSiBD3vLr2Q5kpdZaw+vOXyKxvNo5SZRVXacoS5rKQPIr+gtUMFRWTMGchpKydF3cp XHP6C3oh0kNMWifx+UUWxY/kZyjmrsHB+xOflIm+gxBGi/nH/bfNGSanWYk3RlRFBP8Q V82C0paOIBGbocGmkWTjXYrRBlYQnjV2qrWs3QaBGZiDSOTiyb45B8KPyaBHvuiy+D8A /0lQ== X-Gm-Message-State: AODbwcCq0KNzGGgVmT7kjdYeHz2Uuht5X4bW1fWWG9OL9vQ762USfesu RUidFITsropUHjqlGUY= X-Received: by 10.55.77.215 with SMTP id a206mr31089323qkb.11.1496795561361; Tue, 06 Jun 2017 17:32:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:08 -0700 Message-Id: <20170607003119.14778-60-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 59/70] 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 b672c3b..8ce5e3f 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 a6aaf50..d16857a 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -580,6 +580,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 4a7c66c..581f107 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 d371d45..4f1a50e 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3041,6 +3041,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 15:40:37 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 14967982948101016.766520888606; Tue, 6 Jun 2017 18:18:14 -0700 (PDT) Received: from localhost ([::1]:40766 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPbw-0004Vt-Pj for importer@patchew.org; Tue, 06 Jun 2017 21:18:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34444) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtw-0003eL-Mg for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtv-0002JP-Kt for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:44 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:32791) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtv-0002JF-Hg for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:43 -0400 Received: by mail-qk0-x242.google.com with SMTP id c206so15446376qkb.0 for ; Tue, 06 Jun 2017 17:32:43 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=eN2cKwddceHsfktMedz0PvJ9AHG/zj2GpCyr/bCWJU4=; b=rCouzF1P2u+nKT9JBPXtVEefgluRM4VSgDcYTu4oIqHx9uwJO5LvoK/3MswsdQxqk3 ItkHQz5V/5+pcK1mSB9q0Zcpuy+jKhCoXdBwsAzhSWMQbp3ROpjz+9RW/VqkJ/0EVljt FGv7jg6ahGfU3sydYSum5x0WOYqATij7+FP1maCoA7JkwBy4VUFgXUJPBNF/O2WNrdZh ACkUxde/D7ELQQX925Fabe7BCMenl1hE+k/ZSqj76acpylwO4AIhmfiZnkEXzJHtyu6f doTYVTXwWp+gxb1xj3abKNTV/t0M4oVP8KpTBbS/fQ6ScXJppcWxSIWC4bYGjvWKyq6c t7uw== 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=eN2cKwddceHsfktMedz0PvJ9AHG/zj2GpCyr/bCWJU4=; b=sTuxH6M46aMpIRDiRxFyYDPuqKG2CTTMwGnHup//p6n/bIuoNLs5oywF4DG/QshIM2 fFAtoPLox0krMJSEXMhMFTmPkGY1xa4qK9hCMpaQkKI8Bj6HBgSd/F7VXq27gfiLcOFX ERhUX1GJqS40FRrgHZwLXEWpZNsGmGdIRayU3Uldbs7VgxypfeIuqRQft0RtTU7ntDkm baMLu6IlF0Jyipzd1MEUjV0rayBLmRhup9u+3kiYLZT11e/zVb1gIwzbzWgkbBkRt41m bpwKVyr8+z6zpIvPqJg/IbnbNFDtVPXAMBHtscZ7qPWXGmMG40ci8uZpXIW+CuuqSMyX lU9A== X-Gm-Message-State: AODbwcArfxs+2plIIILiz4vLkHmB9mNedADy1D044lSzlQL8FCgMHxyI gpl1GC0MNTl9kkZ0Flg= X-Received: by 10.55.201.68 with SMTP id q65mr35713345qki.249.1496795562790; Tue, 06 Jun 2017 17:32:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:09 -0700 Message-Id: <20170607003119.14778-61-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 60/70] 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 8ce5e3f..61f3ead 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -86,6 +86,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 d16857a..a5063a4 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -665,6 +665,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 581f107..4cf96c8 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 4f1a50e..4939311 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3299,6 +3299,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 15:40:37 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 1496797126037424.80425104097037; Tue, 6 Jun 2017 17:58:46 -0700 (PDT) Received: from localhost ([::1]:40671 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPJ6-0002oG-JE for importer@patchew.org; Tue, 06 Jun 2017 20:58:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOty-0003fa-0r for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtx-0002K2-1P for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:46 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:35670) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtw-0002JY-SV for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:44 -0400 Received: by mail-qk0-x241.google.com with SMTP id u129so440394qka.2 for ; Tue, 06 Jun 2017 17:32:44 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=chJ4pM6fNoWIReomCXFzvbvborDJ3xUNLn+8ROcVXtI=; b=dkgAoLgfRSvWvutwiclBBCsf8ltJo7azwnH5QDTwwiZOy+6egzlOBHXkDT6rgYK0M6 7udeFwlFDQ9v8a4CT1ujLAXbB5ZlZmS9/WfUDTbfa/YL0tsIXbJ2jGZ4DZ1WB8aov0u6 gQVUbWPIAu3tlu9/2ouH+vynnrFUQtCIZ6pwt+2hvAMpkW31OAMXJe76SwkoI/xc2igl KCQ6zBGl5ntEPOBMSIZFWFMyF4ULASQd4ecJTaq5ulfaca5xU339knbwrsKmsWOfowQT WO+G2gz4nB6AVhO3NpcK0hs9LWUUsR0KxWyEJJ1kgLAt4EIhZOaoeO/abaHabx4rE9lb FfzQ== 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=chJ4pM6fNoWIReomCXFzvbvborDJ3xUNLn+8ROcVXtI=; b=k+Wqb42JxV0ao/XOuwe9IQGjS8OwZ+XZoeNbdZ7F7jXmws/I6xEzAg9ihr2QGF13vh 7A/DQVYyn9r28k3tcpi49zIUr04guREKLiTPsjOOQMDwJpZh6INlTb4TrIkuVFDSOQZX AWXYCk2ncTGXKv/9VSyhIgxQqlVYHc9WrKipAJQxNnBcTKc1TGqQCgyOoFx6WrUwOMok mMpRgQNS9gAIvS5hbB6CkpHyFggUwvJbDH2rPrxg8z6tnJy/z2VJiPIngfgU+T0c+GSI oDXkH0pcAddtjedrTnECzV2OOms5wMAgjLut8lVUj2HgUkWoeP34LfHGKDpK6m1JufCz RANQ== X-Gm-Message-State: AKS2vOxecVKttV26pYuJiVAQsayb8qzfKT0ReWTPpDP4JmmJ4R531CqK Nq+gQ2tHJ/VfnejWF40= X-Received: by 10.55.212.3 with SMTP id l3mr23538575qki.112.1496795564095; Tue, 06 Jun 2017 17:32:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:10 -0700 Message-Id: <20170607003119.14778-62-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PULL v2 61/70] 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 61f3ead..cda7f7f 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -87,6 +87,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 a5063a4..1b487c3 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -667,6 +667,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 4cf96c8..218f1ab 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 4939311..7e01c40 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3315,6 +3315,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 15:40:37 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 149679727588130.81406394467217; Tue, 6 Jun 2017 18:01:15 -0700 (PDT) Received: from localhost ([::1]:40686 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPLV-0005BL-Bi for importer@patchew.org; Tue, 06 Jun 2017 21:01:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOtz-0003g8-8W for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOty-0002M3-66 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:47 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:32793) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOty-0002LX-1a for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:46 -0400 Received: by mail-qk0-x241.google.com with SMTP id c206so15446437qkb.0 for ; Tue, 06 Jun 2017 17:32:45 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=aoyqz1cwRAFdpDJJjV+m2IJRXkAKTrq9TGbDFKXB7yE=; b=qKVoDnzF2gL5MzDgnxB47JPeSo9GPDG178ucCBVBkWl3/gBcm78/BXLsSpRn+Jpv+T nRA/pOa0EIHyVdGD+eiSq9ts09M48Hdp5+e40FkE2vDg45utXZzbUbSDylQ8LXkuZKeX u7YUP5odhAU9OOzqzC+W+njKCFJMkG8WkQXxrijgrtFg58KjFPZd8bfv1RDcaw4fXMxC hS1gY8Zny/e/qdSwwNX5wl64R0CXtZpg42opeLwo26SLujO8sNgAcO6J/Rh8oHeHr7uq hvyY+pdg1GI8wS27gavHJcPx1wq6piNTSTeZC3YnihAx3GK06pECI5ZeuY/WyFhapJMH 29sA== 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=aoyqz1cwRAFdpDJJjV+m2IJRXkAKTrq9TGbDFKXB7yE=; b=BK4n3jD9qsZFFUkwE/xqsJ7BlP6Xk6eAYi4XQOwh+kCgzMVaTfYl3wI+JzLDfjDpRU ckk7VXwRRfc3OzBJ/n85/FloJCM1w3Gj7SXZuYQphFhuXua5xx9QjLJOHLAnq2L0lekd p9uJ07rzSwp9jX1cY/IwFyajvCD8dpBsDpoFFBLVECP5fpRMmttX4aS2LrtJ3yV6tdHI +YQA84zmYU2fbM8+WmwKIC1cea+cs6zWOl53Iv+PYBQTAYbD/KpU/pwKpX4pGRXhuU5e 3u1Ih04P00Hretp/6yzF4MTCdKR9s3EX+w9medUFQVjSsrM46IVfXvsCslaDL+sRwl2x D93Q== X-Gm-Message-State: AODbwcACi8BShn+htXfoTdOqfyco1R441OYYgC1t4geCNG0iGgbbU91U 6Qn4NXePVbxn/SE7YkE= X-Received: by 10.55.4.135 with SMTP id 129mr31323414qke.10.1496795565338; Tue, 06 Jun 2017 17:32:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:11 -0700 Message-Id: <20170607003119.14778-63-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PULL v2 62/70] 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 cda7f7f..c21be50 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -89,6 +89,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 1b487c3..1782e2f 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -871,6 +871,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 218f1ab..b87e417 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 7e01c40..cd5cbd1 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4349,6 +4349,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 15:40:37 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 1496797433257769.0485873457018; Tue, 6 Jun 2017 18:03:53 -0700 (PDT) Received: from localhost ([::1]:40697 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPO2-0007x2-Jm for importer@patchew.org; Tue, 06 Jun 2017 21:03:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34484) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOu2-0003lz-FP for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOtz-0002O8-Hp for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:50 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:35149) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOtz-0002Na-CS for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:47 -0400 Received: by mail-qt0-x243.google.com with SMTP id x58so19244152qtc.2 for ; Tue, 06 Jun 2017 17:32:47 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=AEHR97kJJU9R8GSFywlzUU1Z7XwYITt4uZ5y1Kf2fYM=; b=UXILzI3Gm2usXbac9amL4xgK6fhLgY9RKf2huPbPiYrpH9e8h50uswUIVIlLZughNI tvXvYYzL7u7VyJNVaKub+ThVWPejQ/y87aoyy/xPh1CX2OVVHRkVvyej4UZobMl/wwEf 6F10/e9bqUUc5GGnUXGVuVGDiCbBDkfz8Mvdea8STsyrNlnwEwgnbyagaFMhgRd2cfha ew2alv2RF+6Y+T/tqUk3Uegty50lLK9hCVm4MWQIV98SkAHg4oYBYtzIhHxn4GwfC6Wn f5nPlbSaCH4nqgKNpCEznnCFz2aWLtxel0mjG9Vn9xOEI6SO0bHXFXnGFbL1q0ehPP6G dBrQ== 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=AEHR97kJJU9R8GSFywlzUU1Z7XwYITt4uZ5y1Kf2fYM=; b=uA0FTqM16Blh7C6xDfVlMsZeIKttucmVkSWbR+XYLwMxLN2M6BR7BSzp4bBxmUkDXw 5qXMOhWHcECek6u1HDafVisHzC76hQK64sYP+Z3ffr19+xGxK0pXN12uedmirwMTVyIR uTJcePGHzNyrYFB6D064vgO56bX8ycP4YFLSrIOibgCviW1GTBiO/FFHfVQEF68Inh2F komWp8AM+JZZEqZCiBz3TqCrkUaI3PXGWycX5qalVsupatCAJ3DnVgtGs35Dc1XuC64J VM2ix+X/1p1La1OGqdvWaL+mFV04i5bI9+BCysa28yboI1xur4IfuPgRuqLIFthpk8Fh 7pbw== X-Gm-Message-State: AODbwcCMjfKEOGlYIA+YtcxEi4gVLFekNFgQ5LItSNkD9XPJfelZSfDS GRwjIzqiS9eqtj9Mbqo= X-Received: by 10.200.51.112 with SMTP id u45mr22782112qta.12.1496795566590; Tue, 06 Jun 2017 17:32:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:12 -0700 Message-Id: <20170607003119.14778-64-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PULL v2 63/70] 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 c21be50..9d4bf64 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -90,6 +90,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 1782e2f..6aa0221 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -873,6 +873,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 b87e417..402147e 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 cd5cbd1..bba9ce8 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4366,6 +4366,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 15:40:37 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 1496798394843371.0734285098814; Tue, 6 Jun 2017 18:19:54 -0700 (PDT) Received: from localhost ([::1]:40770 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPdZ-0005oL-Fs for importer@patchew.org; Tue, 06 Jun 2017 21:19:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34485) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOu2-0003m0-Fq for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOu0-0002QF-T4 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:50 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:33845) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOu0-0002Pl-On for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:48 -0400 Received: by mail-qk0-x242.google.com with SMTP id d14so12249464qkb.1 for ; Tue, 06 Jun 2017 17:32:48 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=habpC/VxxbDFJQmfltvQRfBZqB3sFkVJAWolRP+yIDc=; b=fE7FN0gKGOfuDQxMQLy17NliOmYS8OhOgLoyS4Yvgx3YBjaouPlmNhF1qIcJI+vyTh 1IB13D6v0E7o0ExzX/Qy/cfxbaXHyMd914QrJ1eIJ0QxMfEOz+HyafAJBS2aFCCDDSNx X6kB9CAfx1uGjOCiCdWIT/QkCBOBcc8ZKtzI3vi39kXZMb+nULcCqfdwaTlptDWvTql2 8AQIwxPu22l0NKpwvhJiDMccDNPxuSY0R9T3j0/Fy2YVLVoBGG1NvYc7auOttjL8s83G cJEmlVcA5KH7d6ieJPyah+/W+KnNGyrj0JgfZ94Mn7o6fteIh45oeZ8yVgfnN2frg++p Uuhg== 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=habpC/VxxbDFJQmfltvQRfBZqB3sFkVJAWolRP+yIDc=; b=Zfxx+QUYBcgmvsNIIgHoxsp11PlRjxD6pgELQmiOjx/FoyPRSWUd1Vh3bpOMtCutvV ABIhzYlE1tNbwZBNLSav9JUbVEDIBrJamK2c8zYtLogmamEN0waHtI4/e8y1WhBax3B6 H1uMb7EJXPXvw+TdgSfDob5SryPRiRC1e+3jfomnaGLxedQM6B1hS5jfYpcXYbH8nTEZ OAAoi+8kFggqpVToWfB3rddfgqbo6HDycRyy2wIIEr1wplZ0OKaRYdDSG6v1imeYDG96 Yp4S/qKqvLg0NlpUqpobdacdsGjMORi+ay1DtQQvSCIgFkXbc9yi0QQn9BAaM7JNF4RE PToQ== X-Gm-Message-State: AKS2vOxVNSwrMLCH/C7mF5y320N0R5rNg8FgubVuXMrIdz8IxXYtUMY8 YOer90LHu/KpXCB2jLE= X-Received: by 10.55.64.133 with SMTP id n127mr31913897qka.145.1496795568047; Tue, 06 Jun 2017 17:32:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:13 -0700 Message-Id: <20170607003119.14778-65-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 64/70] 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 9d4bf64..5871568 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -91,6 +91,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 6aa0221..7db5133 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -852,6 +852,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 402147e..fa2bfbb 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 bba9ce8..2253ce6 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4305,6 +4305,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 15:40:37 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 1496798304787847.1715250951125; Tue, 6 Jun 2017 18:18:24 -0700 (PDT) Received: from localhost ([::1]:40767 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPc7-0004cD-A0 for importer@patchew.org; Tue, 06 Jun 2017 21:18:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34501) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOu4-0003sA-10 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOu2-0002RU-WF for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:52 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:32797) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOu2-0002RL-R9 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:50 -0400 Received: by mail-qk0-x244.google.com with SMTP id c206so15446540qkb.0 for ; Tue, 06 Jun 2017 17:32:50 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=7a3iQgtqjF4MGFYtEPLUDPYXk8cmX+UfI0+5XXAwDLI=; b=s0zjT0rR544wbiTH+SeSFkT84ShWTTZ9n9F8TdFN10oTTgGZTR+mAuUFZ0LBCSNDn4 ZYqKJ0BYv5cx1jnD4zO3d1yPnM+eyz/MVhSpomGY5pTvaIF5wmV4s4hnPL2vlOSjJxcs SPZ2vsQfZvmIc4vT49h2zxEG9KCHTbvC79vdrQJbNt+riKHsO/Pi755T14jb0SE8yDs/ kwwzcPeMMphgbx7JTcqlnjRYrBl4WkNE/Mwb0pskwEsTKIOnpVGcdIHC/T+r5FRXbMoY SA72BChkanCQ1hSe32mSLa4tAkF6xFmdcuP/Z7eECgAl6ANipm1pTO/TkhiKwYYqazZj ogRg== 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=7a3iQgtqjF4MGFYtEPLUDPYXk8cmX+UfI0+5XXAwDLI=; b=k9mNR9BsINtUyHR5VMElvtOOSziVHcTGEfca/1Ienn4sh6vQX4n2zInbMSuTzMxqGx GuWGsV6333WnRB3r/Xaa7kAZRvokADDNWDyqEdxBEbcAofM/NHvp7AHZyMjyEEY+QODX RxXL35NjGmnITGXUcnt5lMPy3UtQ0lVHN6K3IBV6qLgMMjBzzbO4c8g9tb3gA5QZblCv wC5zl/gPkCBd0PCdaRsOIiVBGU2QsafZMNZXtgRPy08nR7ZgJ1fJpXC2t0eNbC30JJ3A h2A2KCgy1nQVE0TpmEgfG+EWCSaxLPDxY6h5eDyJxG/F9+aNTUsCzv/rgL2vMY+AKSLo i/Ew== X-Gm-Message-State: AODbwcAmrk1F9UNf3pYDs+LXUNZ9jTGKgNnjpdJq4wszCnH+Cm+6+32X brxCkS4QJU8u2oMFonw= X-Received: by 10.55.88.199 with SMTP id m190mr35061646qkb.56.1496795569989; Tue, 06 Jun 2017 17:32:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:14 -0700 Message-Id: <20170607003119.14778-66-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 65/70] 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 5871568..11a545e 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -95,6 +95,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 7db5133..9976d29 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -870,6 +870,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 fa2bfbb..be89cc4 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 2253ce6..9f3443e 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4340,6 +4340,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 15:40:37 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 1496797581096683.1369060598641; Tue, 6 Jun 2017 18:06:21 -0700 (PDT) Received: from localhost ([::1]:40711 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPQR-0001fc-GS for importer@patchew.org; Tue, 06 Jun 2017 21:06:19 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34512) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOu5-0003w9-9U for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOu4-0002S6-7i for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:53 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:36042) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOu4-0002Rd-43 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:52 -0400 Received: by mail-qt0-x241.google.com with SMTP id s33so19305660qtg.3 for ; Tue, 06 Jun 2017 17:32:52 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=Cq5lpFOkQv00k1Y5uM+OanvEhv6Ud2DUyq4uSjF7g80=; b=Vm0HUXBJh9UXZKM87IBdy72JEaK+MyVeFRAe1fRf4tZ4sUcN/CRZupM6AdeE38OWd5 WZVWxthuX20NJF8tyiUv1TDv4x/JkvO1RIX96XpnBug/zqLUxJ8JPfVglGLsn0YHwLc3 4Iu4Vqtz8gLyLiTRqOs2eFRcT/XgKuOhXCZdHm2nyeGUQKecFunCkfILNfxsHRrEPc0T WvPXKhxLqvL8zrHvMrFReHtFyJwDD8wC/7AgRBIUATorBCLLes+InqwS1VoiaNUtCgvT SN/rJHNXCEg6JyP1CHU12cGhxftWP8AhuIZu1NzZgbG8x0SZQUXYgR8WIvwT+lgq5syI Ta5Q== 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=Cq5lpFOkQv00k1Y5uM+OanvEhv6Ud2DUyq4uSjF7g80=; b=uNC2onRZV/N/vd4OHTMdFJSQU6JpXY/1JVBkiPLcQbzqG5gpjWk1TNbfI0/Ybh4qMA VZZNg9X5EG5+OTP0kC8IzVJ8VB+4bCJ8tOBr62/5OXuX2zRjbudLZgXg6TjAsvfnyNL3 J8PVTvpkg7Vkwn02Sikh88q+qfWvESbXhlk43XpCehFx7jlfZ5T9IBVjPtd0oM3Qyg7x dvfuR5s5a2KKUS5NMGDitt3klwOMjMtR4dOqE67lI1Ww4XatgAsvEB6qliBhdsz71OnC +anC3vlOfBBWypNniWzSHWz1/ZjSUIULAFSftYKf//3KW+LdrV51XeDwuLR8uSFE+JtI 9BJw== X-Gm-Message-State: AKS2vOyaRGKslEVKU3DrWarjV3nYJ6y5brxlBhxH8+/JVuB7NWt7VWdP cf2wBNuYldtuu2zQU4k= X-Received: by 10.200.8.169 with SMTP id v38mr30839920qth.213.1496795571381; Tue, 06 Jun 2017 17:32:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:15 -0700 Message-Id: <20170607003119.14778-67-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL v2 66/70] 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: <20170604202034.16615-2-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 27 +++++++++++++++++++++++++++ target/s390x/translate.c | 7 +++++++ 4 files changed, 37 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 11a545e..054ccd6 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -103,6 +103,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 9976d29..32dee40 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -517,6 +517,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 be89cc4..f48908c 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1665,6 +1665,33 @@ 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(); + uint64_t hi, lo; + + if (parallel_cpus) { +#ifndef CONFIG_ATOMIC128 + cpu_loop_exit_atomic(ENV_GET_CPU(env), ra); +#else + 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); + hi =3D int128_gethi(v); + lo =3D int128_getlo(v); +#endif + } else { + check_alignment(env, addr, 16, ra); + + hi =3D cpu_ldq_data_ra(env, addr + 0, ra); + lo =3D cpu_ldq_data_ra(env, addr + 8, ra); + } + + env->retxl =3D lo; + return hi; +} + /* 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 9f3443e..10019ed 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2909,6 +2909,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 15:40:37 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 1496798405110476.4771119646207; Tue, 6 Jun 2017 18:20:05 -0700 (PDT) Received: from localhost ([::1]:40771 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPdj-0005yD-Oj for importer@patchew.org; Tue, 06 Jun 2017 21:20:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34523) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOu6-0003xZ-HY for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOu5-0002UZ-K3 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:54 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35676) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOu5-0002U2-Fx for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:53 -0400 Received: by mail-qk0-x244.google.com with SMTP id u129so440612qka.2 for ; Tue, 06 Jun 2017 17:32:53 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=XLzXfbq9XGeIxZtBvSC8qQbLBeGNZAXU2a8vbNUJaUk=; b=d/jYf90CtNPiucKfFvBzLBYmt+av3izuLAJ0gsyA9363cokd4+9YTq2q4LoJL1jfMr 0jXdJO+49mo4neBphC8QcEcnxJy1ojLalFgDMvAbKTbMT1YHPf30CahrX0VrrA3UEEZP g7SDfvZAY7wyZxdcWaObibkC8JNShjpuZYcBd+e9sHVfrzn40KDXsoweL+wSmcCd22CD xD4aBa6rZE54DHzNWVuItMjRwfy0WWQQzcXyxblGO4PvBzsgpX+JNcscUygIYN1UrOCh CZlKXYsGiM52Tyf5YUb5g20o/rlm1Icvo9J5MM9PgUTvUX9TUTgO3rC1N6AAOXwadMJo BAIw== 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=XLzXfbq9XGeIxZtBvSC8qQbLBeGNZAXU2a8vbNUJaUk=; b=tFe9dlP7dMkurWbpWrhxnKfVrLxPru+O4YFTAUH+lUGh829ndzc1RIMA+5fWz2gg5U jrRsoe4lMjQyZlzrJcJUx5PJTOljBU32Ru7iMORVblC1YPRX0DZXH49QdjTkLy+QH2aQ RzzzY6epqnevY47q/Fq3e86Fa5/P1cRKtWGKZQdh75TTnK5UiM79+Zi0/4aur+UDqqIC pK7q05hWwCMDiDCxDf8vKrOOEoqBHATYAOQ8XjOOY1FfUsI1/tD5zP7gnKmmRCyQsi/q H7PRlMWvxjFqm833o05M1+0dVsJQUDB1YbttDZ7ZkP/X2RIP4LwHi2HwaY8emSdjLyT1 mdRw== X-Gm-Message-State: AKS2vOwp2pmX+tqPhRIJzN4+xnu76oLKYj7bYvpY8QaX4zupJQPDlqkd JGKvQ4fDRdmu/4uq+3U= X-Received: by 10.55.170.15 with SMTP id t15mr8277347qke.186.1496795572812; Tue, 06 Jun 2017 17:32:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:16 -0700 Message-Id: <20170607003119.14778-68-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PULL v2 67/70] 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: <20170604202034.16615-3-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/helper.h | 1 + target/s390x/insn-data.def | 2 ++ target/s390x/mem_helper.c | 24 ++++++++++++++++++++++++ target/s390x/translate.c | 6 ++++++ 4 files changed, 33 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 054ccd6..69249a5 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -104,6 +104,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 32dee40..73dd05d 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -796,6 +796,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 f48908c..a8988e0 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1692,6 +1692,30 @@ uint64_t HELPER(lpq)(CPUS390XState *env, uint64_t ad= dr) return hi; } =20 +/* store pair to quadword */ +void HELPER(stpq)(CPUS390XState *env, uint64_t addr, + uint64_t low, uint64_t high) +{ + uintptr_t ra =3D GETPC(); + + if (parallel_cpus) { +#ifndef CONFIG_ATOMIC128 + cpu_loop_exit_atomic(ENV_GET_CPU(env), ra); +#else + 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); +#endif + } else { + check_alignment(env, addr, 16, ra); + + cpu_stq_data_ra(env, addr + 0, high, ra); + cpu_stq_data_ra(env, addr + 8, low, 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 10019ed..95f91d4 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -4203,6 +4203,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 15:40:37 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 1496797728445365.0058606248589; Tue, 6 Jun 2017 18:08:48 -0700 (PDT) Received: from localhost ([::1]:40721 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPSo-0004Rz-Rd for importer@patchew.org; Tue, 06 Jun 2017 21:08:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34534) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOu7-0003yq-KN for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOu6-0002Wm-Ub for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:55 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35155) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOu6-0002WC-QC for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:54 -0400 Received: by mail-qt0-x244.google.com with SMTP id x58so19244365qtc.2 for ; Tue, 06 Jun 2017 17:32:54 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32:53 -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=ANsQcmfPUH5F9tw1lI5XqSp+fKkEEquAyoG3FkEwKVA=; b=WmFrIB2OLaepeFkUlVvUPOuqkFN8+jqwb4X286y5JUTIYW+Aci97oq/3PdxmxJ9ieu t/3ui/eYjgsjTdvqLsw9twz1SNfIniUOZNiFpRtyHoGK6RetCW4vrodDeJoukDv7Fqzj WYHvEcQ26Ig96x4T3qAXSA4j5obvOxAPyEtb85AbL+5TA0jjiVb6TYfuw4+Y66RaXoiv YPoYwUMgFitZCLWq99RPSh0/+fP3i8MspWagpMFliPbsOuekWzaemdRh6AOj25si7eDq T7d3/qLrtT8KXI3tY0kcrZP9iXWofBByt1+KHV4AZhrAzeufocfMVER5rAGtwCRiPrz7 M7nA== 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=ANsQcmfPUH5F9tw1lI5XqSp+fKkEEquAyoG3FkEwKVA=; b=NkpJ96zThBmQpG5ni/476rjGLOZlTDLZtmkHp6ee8y9GelGKApXxy2ya5lW5MdWIPs 7mGAhn4S/iomLoZyyood9yfIsRIIh2DnlvaU8k0vxEaVIdCnPQGj9+oqiR9G58N+4UF2 sBCyqm/IskqmAQlLtFJn/JgBFxJoukwy77/qojnz90Pc7np6aaObfRRdAWwGc0Z5Tskr uSpNPW71Cw/8cxwbPS3m2x+lgVamRp7kiHT8sbK0V7IsJehSBYMY9AxtdGmVdj6faGTC vApEhhmUF5aIHFA226AMXCQWppdXJKa9WMyR9Favf1S/zVbZIOt7YjRC7hdxKeQIUt2s rccA== X-Gm-Message-State: AODbwcBHyooroFiO7olxRRNjk10m5yUCSR1ex5rQkdlaFADe64uzZlNP DQ529wjbrjqLQE/1eLY= X-Received: by 10.237.61.110 with SMTP id h43mr31363220qtf.1.1496795574071; Tue, 06 Jun 2017 17:32:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:17 -0700 Message-Id: <20170607003119.14778-69-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PULL v2 68/70] target/s390x: check alignment in CDSG in the !CONFIG_ATOMIC128 case 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 The CDSG instruction requires a 16-byte alignement, as expressed in the MO_ALIGN_16 passed to helper_atomic_cmpxchgo_be_mmu. In the non parallel case, use check_alignment to enforce this. Signed-off-by: Aurelien Jarno Message-Id: <20170604202034.16615-4-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index a8988e0..80caab9 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1262,6 +1262,8 @@ void HELPER(cdsg)(CPUS390XState *env, uint64_t addr, } else { uint64_t oldh, oldl; =20 + check_alignment(env, addr, 16, ra); + oldh =3D cpu_ldq_data_ra(env, addr + 0, ra); oldl =3D cpu_ldq_data_ra(env, addr + 8, ra); =20 --=20 2.9.4 From nobody Wed Nov 5 15:40:37 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 1496798502306902.7714898323201; Tue, 6 Jun 2017 18:21:42 -0700 (PDT) Received: from localhost ([::1]:40781 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPfI-0007Dy-Sm for importer@patchew.org; Tue, 06 Jun 2017 21:21:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34555) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOuB-00042f-7s for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:33:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOu8-0002Yq-5Q for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:59 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:35681) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOu8-0002YD-1H for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:56 -0400 Received: by mail-qk0-x242.google.com with SMTP id u129so440719qka.2 for ; Tue, 06 Jun 2017 17:32:55 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32: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=uiUnqjzTn003vEns/Y8DF7CoziFhI+kxJWKrIGKPq3w=; b=Hqj+I1jhPPHFwiI2RdLhaDk939Y+uc65Xu2q+rD1QWzMfqjpbpDylt6SPFBrTyFIXj xpO7nGU+PrP6B9ma91otS9bixpWAcwqDc5uFlo7XuCyPDAAFLBBVz39qkroCqKTNDaRs jnAV0bSYIayuBw4NcfzBaDItCzPr8EQpnVQ7DhJcHOx6cpgmEvrXMuF5tkBUQ63iHcmP n2BwaxsxHQimjtTn7ktCWBftL8AtRqBrzIwG5jMYZyQ3F4O/SQX+g9chLx2xY6E+OQoq sJ7zTk98oGvXqoDD2s6gXSjuNknadse4/avN+kBbjr0vABdDiGmmEWFFxiaHap+vVdRq GYww== 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=nyaVJ4Crt2Q0TjhQnYH9eagG9Ae6aCCPctAaxb0+1O2cycdA3xmQWdfFnZDwVJmb68 vfnVmrIwTixcmpK/7koq5I8xe7V5IIPEBQzxMqH2K9u1C/s80X9k6JQqRutywtRe4/DI R2sgdfhgNKac6R99e/P/Khxe4SpZq2Fq62RkUtndDAY1Wxtf5Jedq3hL/7HuvGaasxxE +qqWB7cD4B39A43r8McVt9I1e4DAn7oY7DbDbSi4gXenH/3aMFFtK+nHF7CcdzqZNeZq 0+FxW9+MWIgjdeSsC2ua2QujewYzwatTsBIMdm7qNqcMc74Hnb2DC5pszD45fdAdNsMn kSYA== X-Gm-Message-State: AODbwcDhp9P8DCylH2FR5WfpdrE+EJUnWbhX8Q0l2LyYtjqLxBlwFxEr DzOdTxBY/sqvLo03VIM= X-Received: by 10.55.43.93 with SMTP id r90mr32221455qkh.196.1496795575387; Tue, 06 Jun 2017 17:32:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:18 -0700 Message-Id: <20170607003119.14778-70-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 69/70] 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 15:40:37 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 1496798492571163.1365081759643; Tue, 6 Jun 2017 18:21:32 -0700 (PDT) Received: from localhost ([::1]:40780 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIPf8-00076M-TJ for importer@patchew.org; Tue, 06 Jun 2017 21:21:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34556) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIOuB-00042g-7x for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:33:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIOu9-0002bA-OX for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:59 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36583) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIOu9-0002ac-K0 for qemu-devel@nongnu.org; Tue, 06 Jun 2017 20:32:57 -0400 Received: by mail-qk0-x242.google.com with SMTP id y201so11030198qka.3 for ; Tue, 06 Jun 2017 17:32:57 -0700 (PDT) Received: from bigtime.twiddle.net.com (71-217-91-69.tukw.qwest.net. [71.217.91.69]) by smtp.gmail.com with ESMTPSA id m47sm29286qtc.36.2017.06.06.17.32.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Jun 2017 17:32:56 -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=CHflBii6VBwlRUHaL3h1aP3KZ78Dk6uR04DGogTlV15k8wpPkeZXoPz9fXFJ1e70SX wlrLnohk33XN1cOTjnNNKo7h4On3K+shZqx8zkrlkaLsN+ieWSJik2KF9OaR/pGskgbN VC8tZIFVTxYKjQ6r1N68IWeG4h6XhE2TkMTh2q7qbvv+N2YdeVuyZ58x0AWEE9P5BKDI o58L0KPRojGiFoDf/4bI7xMXGm6M70BtJiF1PttiqlC99WmrHpP6KZgcEJ7Evd5YVcMm SQkoN1kRub9vgQYKXCyCIO22SdwLlrUjRxR8JPgWtbHJnFMzUgFe1ljCLRwDLB9mY9w+ gLdw== 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=pc5dBUxJi9/5Ubl+jufa0nC5NhCCb6//a9WTz1WRGCCXQsfx03Hi7GtAgq8vebOfE3 zpiVDuT8cvr3hgsBn0ZVhy+kyDPIRP/ukeJpdpR5vKRrS6j4s831kJQrorSWNBgQAYHR BKWKvWyu0LHUJ1coixjUI/kF3sRU+ck3bFighEmGy/0H6DSkEopjT5D3SNzrmW/R/zzr kjJS+Vv77Kk6E9Y16t5D8TUIYBwe7FukBiDW2o2+cNkso/4FRawFLzAa7sx174gH7aPE jH01/9sRGSgP82PiG86MH4F7aHzAKG49+cw9i0JK/s1sSiqcNCU4WNlkUvwiE2ciN9DA LsQQ== X-Gm-Message-State: AKS2vOzLspuE6OwsKxa+Vn+N9gJnFVdvLOncN/jgWCkusmNxffvwmo/o 3w9muh5i+NbxTONn/8g= X-Received: by 10.55.147.135 with SMTP id v129mr35440068qkd.146.1496795576898; Tue, 06 Jun 2017 17:32:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 6 Jun 2017 17:31:19 -0700 Message-Id: <20170607003119.14778-71-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170607003119.14778-1-rth@twiddle.net> References: <20170607003119.14778-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PULL v2 70/70] 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