From nobody Wed Nov 5 05:10:24 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.zohomail.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; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533493900960122.24264593010332; Sun, 5 Aug 2018 11:31:40 -0700 (PDT) Received: from localhost ([::1]:59491 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNoW-000898-9L for importer@patchew.org; Sun, 05 Aug 2018 14:31:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39975) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNlz-00062x-Eb for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fmNly-0005FE-H7 for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:28:59 -0400 Received: from mail-qt0-x234.google.com ([2607:f8b0:400d:c0d::234]:34802) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fmNly-0005EC-B7; Sun, 05 Aug 2018 14:28:58 -0400 Received: by mail-qt0-x234.google.com with SMTP id m13-v6so11539424qth.1; Sun, 05 Aug 2018 11:28:58 -0700 (PDT) Received: from WAL-L-PZ01.rocketsoftware.com (inet-64-112-177-9.bos.netblazr.com. [64.112.177.9]) by smtp.gmail.com with ESMTPSA id j86-v6sm12842786qkh.60.2018.08.05.11.28.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Aug 2018 11:28:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=HQUo0Faw7Q3bsQZsiynXcW2kg/l9XhvDpKAcE/uuUec=; b=Vro8eb2eZjvcTe3qEmFFXLtdmwD6IBD5lo0c+0AfBDOGA2sqR1G3gnNHNVBaPA0qZ/ vn5iiG/sQ8BCby+PLlmO53LFkMOLO90t2igwOxpx/Lj8I4K7d4uTVuc3oFMmarXyM4lc hhMKqxiS63/FgMDz/mqgfXbC8bG3utslsZuaRfBN/+BJG7Uhwf47qomaWB27kWeYTTVK TMdcv+g7e31r971Zq13gECfLWBXWKD0rDeTYUj0cxweCsjeljGGdv5Ou6Psu1VxSj4zl wVuJ96UYFIxHLw53wgaFzJ/WrxTCsl3MNmXXysp71ykeNnlmiETOlSTqkZBe/F4CYf3S Hbbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=HQUo0Faw7Q3bsQZsiynXcW2kg/l9XhvDpKAcE/uuUec=; b=YdvDmEWUwfiiz6TyoNNcWCVzhiHudEIMTTApv59s1ziuTG7bPW2qJ0PgMA5bO5wMvq p7nw/1128/cyB3DFhhWAjYVFLHvCiarGcnSk5ZEyFYt8WIMiE5TT1A0aGsjiZ/KYqapb XgoeUvLcNZ7WUJ0/8MwnOE3bXtUTAPQZNn+nvde3+kpqMOy2duJKVfir2EGPdLypOulS XMgTjGKL66Ez3Dk6Tlc5wufSm56tXOWdz26vMMVhIM9lhfolPmErtlV9rx7lh7g8XZoc C3qUhw6Jp4+n4Da4Nenw5mQcBFfmVdkH1IJB5AW4Y89MUNq2wsZKhIoaW08HpGZGRxoM rOWw== X-Gm-Message-State: AOUpUlHbKWT30WBwIOWIQBwHaZ2GumfYWMa4gLU6SAYrIxVlBCFwPtFn Q8W20L4roCf/E2Sq2CmhGSGVfUBrqOI= X-Google-Smtp-Source: AAOMgpfRzZ80Zqm/WKMvQAGR2EvX9DgdrwWIwzcrjngyFdNvET8OZ+Xt9boopA1Pu6jEAK4Kdhq+bQ== X-Received: by 2002:ac8:2775:: with SMTP id h50-v6mr12101360qth.67.1533493737665; Sun, 05 Aug 2018 11:28:57 -0700 (PDT) From: Pavel Zbitskiy To: qemu-devel@nongnu.org Date: Sun, 5 Aug 2018 14:28:26 -0400 Message-Id: <20180805182832.3012-2-pavel.zbitskiy@gmail.com> In-Reply-To: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> References: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::234 Subject: [Qemu-devel] [PATCH 1/6] target/s390x: add BAL and BALR instructions 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: Pavel Zbitskiy , David Hildenbrand , qemu-trivial@nongnu.org, Cornelia Huck , Alexander Graf , "open list:S390" , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" These instructions are provided for compatibility purposes and are used only by old software, in the new code BAS and BASR are preferred. The difference between the old and new instruction exists only in the 24-bit mode. Signed-off-by: Pavel Zbitskiy --- target/s390x/insn-data.def | 3 +++ target/s390x/translate.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 5c6f33ed9c..9c7b434fca 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -102,6 +102,9 @@ D(0x9400, NI, SI, Z, la1, i2_8u, new, 0, ni, nz64, MO_UB) D(0xeb54, NIY, SIY, LD, la1, i2_8u, new, 0, ni, nz64, MO_UB) =20 +/* BRANCH AND LINK */ + C(0x0500, BALR, RR_a, Z, 0, r2_nz, r1, 0, bal, 0) + C(0x4500, BAL, RX_a, Z, 0, a2, r1, 0, bal, 0) /* BRANCH AND SAVE */ C(0x0d00, BASR, RR_a, Z, 0, r2_nz, r1, 0, bas, 0) C(0x4d00, BAS, RX_a, Z, 0, a2, r1, 0, bas, 0) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 57c03cbf58..efdc88e227 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1463,6 +1463,38 @@ static DisasJumpType op_bas(DisasContext *s, DisasOp= s *o) } } =20 +static void save_link_info(TCGv_i64 out, uint64_t pc, uint64_t ilc) +{ + TCGv_i64 t; + + tcg_gen_andi_i64(out, out, 0xffffffff00000000); + tcg_gen_ori_i64(out, out, (ilc << 30) | pc); + t =3D tcg_temp_new_i64(); + tcg_gen_shri_i64(t, psw_mask, 16); + tcg_gen_andi_i64(t, t, 0x0f000000); + tcg_gen_or_i64(out, out, t); + tcg_gen_extu_i32_i64(t, cc_op); + tcg_gen_shli_i64(t, t, 28); + tcg_gen_or_i64(out, out, t); + tcg_temp_free_i64(t); +} + +static DisasJumpType op_bal(DisasContext *s, DisasOps *o) +{ + if (s->base.tb->flags & FLAG_MASK_32) { + return op_bas(s, o); + } + gen_op_calc_cc(s); + save_link_info(o->out, s->pc_tmp, s->ilen / 2); + if (o->in2) { + tcg_gen_mov_i64(psw_addr, o->in2); + per_branch(s, false); + return DISAS_PC_UPDATED; + } else { + return DISAS_NEXT; + } +} + static DisasJumpType op_basi(DisasContext *s, DisasOps *o) { tcg_gen_movi_i64(o->out, pc_to_link_info(s, s->pc_tmp)); --=20 2.16.2.windows.1 From nobody Wed Nov 5 05:10:24 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.zohomail.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; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533493882695495.17214662402387; Sun, 5 Aug 2018 11:31:22 -0700 (PDT) Received: from localhost ([::1]:59489 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNoH-0007u9-DP for importer@patchew.org; Sun, 05 Aug 2018 14:31:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40018) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNm7-00066D-RH for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fmNm6-0005MY-Qz for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:07 -0400 Received: from mail-qk0-x22a.google.com ([2607:f8b0:400d:c09::22a]:40684) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fmNm6-0005MJ-ML; Sun, 05 Aug 2018 14:29:06 -0400 Received: by mail-qk0-x22a.google.com with SMTP id c126-v6so7431940qkd.7; Sun, 05 Aug 2018 11:29:06 -0700 (PDT) Received: from WAL-L-PZ01.rocketsoftware.com (inet-64-112-177-9.bos.netblazr.com. [64.112.177.9]) by smtp.gmail.com with ESMTPSA id j86-v6sm12842786qkh.60.2018.08.05.11.29.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Aug 2018 11:29:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=QSdeksk5KZp0zoSqpymTMvZVcIg7UjuSDx5IpR+bAOE=; b=dnPn62XyurPddCWn1lD6Aa4SChmWQLelgY+9caTKQvlOFXeT5bs3e9PV0CDJ8lc+C+ MkbC2gwP8ZhFILl9Ko1tYq4qLLpnFO9DRYxYJVbF5qDH7rASMiS00EfnQYbxjdoTajAj LsFcwqS9KHGJxi+uEyFB4Lmb1LME077Cl1yl83n4VTIKf3QhDafBP87Jr6gAc7CUPkWO YeX59+mKxkiOwcT8eHlbO0ZCZ05NhU64zaH6r5rLHvA+/sbA113MAxUbQDpF8HrSDGeX T/vZDei9KlORFWf3S9kDaFLqeZphTI8zdXn7OHp0Voyj22t+XiSX0F8bJXWP8YpZ0OuE x1rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=QSdeksk5KZp0zoSqpymTMvZVcIg7UjuSDx5IpR+bAOE=; b=E1OqKo+6ZnRlUQNWM5jQozxJg4LVCAUH8GDK3xtqwTIYFNXlLsdV6v4GOGzn6wRTde xognEBT57ksHm0wTBuwhCTG1gv9xFBjyuMAdsN9TSgacByQCuVp/ZWcaPctdZ08zokDS TSsgXbmPpQjixWywNJwl1CThSABjIcQOtA8e5bpQi8HTQ1lCuK/w6wiTWObiZtdi4yvk qWvQJEy3za7jkkgOtSZ7EYzmJ59rxbq6rSSGG4EkwleWjek/BQ6HQs2Q0SaUu+quWeAN fOTJSxOLw4nhy4kvpbQNF11Bb4f0MK6ichVH9ev1dN9tyTqWyDI/+v7+hMoUhd/hUSqR f8NA== X-Gm-Message-State: AOUpUlFtoCTyt+ixNv+5boXi2WSNzekJHpkdIim22/gYPKkTY0Gsnrqm M+V0g9LwmJb2QXhSAnIiaQmpLAnYvhs= X-Google-Smtp-Source: AAOMgpf3SHCunwZXlzIxiFJX1jMz2/DqjUEYf5aYn9eTTbeHiO02eufrxUjE56ZSxEEBXGQIwTxyrA== X-Received: by 2002:a37:a98e:: with SMTP id s136-v6mr10916060qke.407.1533493746000; Sun, 05 Aug 2018 11:29:06 -0700 (PDT) From: Pavel Zbitskiy To: qemu-devel@nongnu.org Date: Sun, 5 Aug 2018 14:28:27 -0400 Message-Id: <20180805182832.3012-3-pavel.zbitskiy@gmail.com> In-Reply-To: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> References: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::22a Subject: [Qemu-devel] [PATCH 2/6] target/s390x: fix CSST decoding and runtime alignment check 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: Pavel Zbitskiy , David Hildenbrand , qemu-trivial@nongnu.org, Cornelia Huck , Alexander Graf , "open list:S390" , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" CSST is defined as: C(0xc802, CSST, SSF, CASS, la1, a2, 0, 0, csst, 0) It means that the first parameter is handled by in1_la1(). in1_la1() fills addr1 field, and not in1. Furthermore, when extract32() is used for the alignment check, the third parameter should specify the number of trailing bits that must be 0. For FC these numbers are: FC=3D0: 2 FC=3D1: 3 FC=3D2: 4 For SC these numbers are: SC=3D0: 0 SC=3D1: 1 SC=3D2: 2 SC=3D3: 3 SC=3D4: 4 Signed-off-by: Pavel Zbitskiy Reviewed-by: David Hildenbrand --- target/s390x/mem_helper.c | 2 +- target/s390x/translate.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index e21a47fb4d..c94dbf3fcb 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1442,7 +1442,7 @@ static uint32_t do_csst(CPUS390XState *env, uint32_t = r3, uint64_t a1, } =20 /* Sanity check the alignments. */ - if (extract32(a1, 0, 4 << fc) || extract32(a2, 0, 1 << sc)) { + if (extract32(a1, 0, fc + 2) || extract32(a2, 0, sc)) { goto spec_exception; } =20 diff --git a/target/s390x/translate.c b/target/s390x/translate.c index efdc88e227..f318fb6e4e 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2050,9 +2050,9 @@ static DisasJumpType op_csst(DisasContext *s, DisasOp= s *o) TCGv_i32 t_r3 =3D tcg_const_i32(r3); =20 if (tb_cflags(s->base.tb) & CF_PARALLEL) { - gen_helper_csst_parallel(cc_op, cpu_env, t_r3, o->in1, o->in2); + gen_helper_csst_parallel(cc_op, cpu_env, t_r3, o->addr1, o->in2); } else { - gen_helper_csst(cc_op, cpu_env, t_r3, o->in1, o->in2); + gen_helper_csst(cc_op, cpu_env, t_r3, o->addr1, o->in2); } tcg_temp_free_i32(t_r3); =20 --=20 2.16.2.windows.1 From nobody Wed Nov 5 05:10:24 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.zohomail.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; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533493883648693.8563386717045; Sun, 5 Aug 2018 11:31:23 -0700 (PDT) Received: from localhost ([::1]:59490 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNoI-0007un-DX for importer@patchew.org; Sun, 05 Aug 2018 14:31:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40040) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNm8-000675-Vb for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fmNm8-0005No-7J for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:08 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:36491) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fmNm8-0005NT-3F; Sun, 05 Aug 2018 14:29:08 -0400 Received: by mail-qt0-x243.google.com with SMTP id t5-v6so11517184qtn.3; Sun, 05 Aug 2018 11:29:07 -0700 (PDT) Received: from WAL-L-PZ01.rocketsoftware.com (inet-64-112-177-9.bos.netblazr.com. [64.112.177.9]) by smtp.gmail.com with ESMTPSA id j86-v6sm12842786qkh.60.2018.08.05.11.29.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Aug 2018 11:29:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ONCGhK3cISoK+xkij5LWkorBj4hdHejynu5QRtlwveY=; b=spFKZOQ9HbL1sZ2DGkUuEwvAoIEL1tjSvcBA3VTGwD755V2qjPIb8sCgjCX+sskTLs vltX4ihMei/bp5HR4eH9kZSWxR/ORyK2ptD5M5rA8Pah6Sqh14XOlkvrR+Q1G+1E9xTq 3CZJ8xXDHVmauJYK7NFvsbgKujjRYraWSGmYMlqepOYoYp3IEtTZPWVvdXPFN6EosaIB 30npquZfOjRhsuOqN3Sg7WtDk+THVoAINRvVvtIRluTUv+9dSMsQoHJ7z6kAMno5N+p7 aG0oKlKqV/0mXFnIUR4Yrv1htJ8lO8lsyrTFZZhYp9p4DzSo4ksslmrxxk6nwfh6gwFQ r87A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ONCGhK3cISoK+xkij5LWkorBj4hdHejynu5QRtlwveY=; b=K9sbWKAvFkJraRRqaY5M32jkLJEos8eRJzLBu7msu9dPxIBZ0QBgeFrT5zycKnGU/B T4GnpDGohesODhQlhMyR8i9Ig6l3jqG71uiaF64ZFzkcXOg5XgBO3LWS5e4HAaPLoBtt 9u8bzIDVhZUt8rZDd6c0QfZ8zN7fq3IjtVBPES/9JgEO8LKw0fpiqIcqDBC7igB7clVB 59RX/Rn5PP490kFBi8qIWK8qQCvfki3qjiie8l7CnDL5k9oWwEb9ubtDONrZZ/XTion7 ZklkLmIpj/xthhS3/4HU1MtLBzf2zn84jotZrVS1IaY+MH8qmR+HQEjv6byAAGZ/PdLR tRGA== X-Gm-Message-State: AOUpUlE5FgKZDLGTR+N1shLwNdvFlPAwsfKO4qgVhIA3WxcAc7NEMaCR 9HnNGqtw8WUIl5sxP76fvvyavqIEf1k= X-Google-Smtp-Source: AAOMgpeAzUSDGfiasumOy9lBI57MoDbpz6qVExYwmSOAmm+wqj8PhzMMPKOaAhDtxyUmfhtBxtQ5uQ== X-Received: by 2002:ac8:32c1:: with SMTP id a1-v6mr10063584qtb.73.1533493747420; Sun, 05 Aug 2018 11:29:07 -0700 (PDT) From: Pavel Zbitskiy To: qemu-devel@nongnu.org Date: Sun, 5 Aug 2018 14:28:28 -0400 Message-Id: <20180805182832.3012-4-pavel.zbitskiy@gmail.com> In-Reply-To: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> References: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> 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] [PATCH 3/6] target/s390x: fix ipm polluting irrelevant bits 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: Pavel Zbitskiy , David Hildenbrand , qemu-trivial@nongnu.org, Cornelia Huck , Alexander Graf , "open list:S390" , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Suppose psw.mask=3D0x0000000080000000, cc=3D2, r1=3D0 and we do "ipm 1". This command must touch only bits 32-39, so the expected output is r1=3D0x20000000. However, currently qemu yields r1=3D0x20008000, because irrelevant parts of PSW leak into r1 during program mask transfer. Signed-off-by: Pavel Zbitskiy --- target/s390x/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index f318fb6e4e..05442dff36 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2442,8 +2442,8 @@ static DisasJumpType op_ipm(DisasContext *s, DisasOps= *o) tcg_gen_andi_i64(o->out, o->out, ~0xff000000ull); =20 t1 =3D tcg_temp_new_i64(); - tcg_gen_shli_i64(t1, psw_mask, 20); - tcg_gen_shri_i64(t1, t1, 36); + tcg_gen_andi_i64(t1, psw_mask, 0x00000f0000000000); + tcg_gen_shri_i64(t1, t1, 16); tcg_gen_or_i64(o->out, o->out, t1); =20 tcg_gen_extu_i32_i64(t1, cc_op); --=20 2.16.2.windows.1 From nobody Wed Nov 5 05:10:24 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.zohomail.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; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533494020736895.3283829489261; Sun, 5 Aug 2018 11:33:40 -0700 (PDT) Received: from localhost ([::1]:59508 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNqV-0001Ir-Lb for importer@patchew.org; Sun, 05 Aug 2018 14:33:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40068) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNmA-00068M-9a for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fmNm9-0005Or-C4 for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:10 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:35640) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fmNm9-0005OV-7V; Sun, 05 Aug 2018 14:29:09 -0400 Received: by mail-qt0-x243.google.com with SMTP id a5-v6so11535372qtp.2; Sun, 05 Aug 2018 11:29:09 -0700 (PDT) Received: from WAL-L-PZ01.rocketsoftware.com (inet-64-112-177-9.bos.netblazr.com. [64.112.177.9]) by smtp.gmail.com with ESMTPSA id j86-v6sm12842786qkh.60.2018.08.05.11.29.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Aug 2018 11:29:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=MELa9Ot7tmPh7QmfhDd+ogHTkQkGQj/WtxKFWZq3b1E=; b=COF7OK7Xgy5JS99xwkvojqmlL11O+Ut6+GNouPrt2wDamfkQJpv0jAzeoDoXvH1H+n uFjeG9lToTzSA0dRgGxecgwaed7vRspU1dgknl8uuVYqaaoomPbwof9gHetdIph7V7L5 ZxPLhp0Z2JgRPWWtKa6ny4J1zCNekEMFjabo2/kCyQ2Ahg1vtbbt569jTWoZ9iVRBRbi 3aCjAC2dmduoS/tOyssn4GsGmP4+PojYbHNiZH+UIztt8IsTnavXzwlyM31xBB9W+Lc4 VNosen2w43AKeclL3+O1pX/SJKn5EIu3Sl5617NVXbsIMg4gC/b6486RSphCwZ4qY5Ua YqAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=MELa9Ot7tmPh7QmfhDd+ogHTkQkGQj/WtxKFWZq3b1E=; b=kAacLuDoCHr4IFHas3xILaBVweIGyojBIvpsveUKNmOmGsvMcjWZ9472uEgcGm7snh lJOFut1uMaS1ngSRwS/8QTtBEC6RDxDDjA8AxuN4qqOd7v58M015mBZ1Cklk50Ubqmjl YB+SBndO/3i6jKTHzvr6flAN5kc1Gx3n85JoYUzF+WE1lmxXfS3pYhg5C0QF8wpbLIRN sOsgC+Cyoo3600ki329fbYFWK0khV6u/AcNfI2IyvLOnOA/pqvgcUfwWlpUk203JMrLk 2sUW2HNyJaSugKehMuZW+mhwY9Jkvr6jx7Fa+fni45ZzmRzlwadOCtmzRy+o8guhfxx9 kvng== X-Gm-Message-State: AOUpUlEzpxR83LpZq+lMAxsuvL8gTUEhof9pPwIR83VkXzGsPdUXZQsI a8nR5+CaqlKBQMjbfzp5E2dutd3bgDs= X-Google-Smtp-Source: AAOMgpd6hPgIj5kMR4IwbVQhc+TwyiVDLZ1oq+y/VtlAofnbT7e05q9w59q8XKrvsQXSXmcgZjZ6Cg== X-Received: by 2002:aed:3c8c:: with SMTP id d12-v6mr11844173qtf.203.1533493748634; Sun, 05 Aug 2018 11:29:08 -0700 (PDT) From: Pavel Zbitskiy To: qemu-devel@nongnu.org Date: Sun, 5 Aug 2018 14:28:29 -0400 Message-Id: <20180805182832.3012-5-pavel.zbitskiy@gmail.com> In-Reply-To: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> References: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> 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] [PATCH 4/6] target/s390x: add EX support for TRT and TRTR 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: Pavel Zbitskiy , David Hildenbrand , qemu-trivial@nongnu.org, Cornelia Huck , Alexander Graf , "open list:S390" , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Improves "b213c9f5: target/s390x: Implement TRTR" by introducing the intermediate functions, which are compatible with dx_helper type. Signed-off-by: Pavel Zbitskiy --- target/s390x/mem_helper.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index c94dbf3fcb..704d0193b5 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1299,12 +1299,26 @@ static inline uint32_t do_helper_trt(CPUS390XState = *env, int len, return 0; } =20 +static uint32_t do_helper_trt_fwd(CPUS390XState *env, uint32_t len, + uint64_t array, uint64_t trans, + uintptr_t ra) +{ + return do_helper_trt(env, len, array, trans, 1, ra); +} + uint32_t HELPER(trt)(CPUS390XState *env, uint32_t len, uint64_t array, uint64_t trans) { return do_helper_trt(env, len, array, trans, 1, GETPC()); } =20 +static uint32_t do_helper_trt_bkwd(CPUS390XState *env, uint32_t len, + uint64_t array, uint64_t trans, + uintptr_t ra) +{ + return do_helper_trt(env, len, array, trans, -1, ra); +} + uint32_t HELPER(trtr)(CPUS390XState *env, uint32_t len, uint64_t array, uint64_t trans) { @@ -2193,12 +2207,14 @@ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, = uint64_t r1, uint64_t addr) typedef uint32_t (*dx_helper)(CPUS390XState *, uint32_t, uint64_t, uint64_t, uintptr_t); static const dx_helper dx[16] =3D { + [0x0] =3D do_helper_trt_bkwd, [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_fwd, }; dx_helper helper =3D dx[opc & 0xf]; =20 --=20 2.16.2.windows.1 From nobody Wed Nov 5 05:10:24 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.zohomail.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; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533494104141171.0185978394619; Sun, 5 Aug 2018 11:35:04 -0700 (PDT) Received: from localhost ([::1]:59513 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNrj-0002A8-W6 for importer@patchew.org; Sun, 05 Aug 2018 14:34:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40112) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNmF-0006Cg-00 for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fmNmA-0005Py-K7 for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:14 -0400 Received: from mail-qt0-x231.google.com ([2607:f8b0:400d:c0d::231]:38911) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fmNmA-0005Pc-FR; Sun, 05 Aug 2018 14:29:10 -0400 Received: by mail-qt0-x231.google.com with SMTP id y19-v6so11511250qto.5; Sun, 05 Aug 2018 11:29:10 -0700 (PDT) Received: from WAL-L-PZ01.rocketsoftware.com (inet-64-112-177-9.bos.netblazr.com. [64.112.177.9]) by smtp.gmail.com with ESMTPSA id j86-v6sm12842786qkh.60.2018.08.05.11.29.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Aug 2018 11:29:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+VKhO36koDNkSBGKp1QnGAwedkdPu0J9zdxDeaLOCms=; b=aD3LgUoAdk9Y619/LEecTPIbBZqc6moTJhBQfHQ73Gdj3KijKg1dybYCpyrvbRK/F1 hIWWm3nB2+iZrRcq0nKjh9rHnwgOIyeF8EcAPSPScm1UBYuW1lvPukxXWZ/N246T94zk XKMPJqxaeg9fxrOGKq+mS66PzCGbu5PvXnZKREQb41nfAFfCwN/6P1wSpA4CmStwF/3l FHSA1Wcz59aqXE36lqs5UxhQZWSHa1CGCOYUd6YDPqks4clHJXtvuzz9+SW03VlE5lFY hHxcuZcQUFBD3cTXp9Hd8PF9tB+Vr3+qXfD3DUWOPwd85jCDW3B2cr8KLzJRLA9ZpVAm CXkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+VKhO36koDNkSBGKp1QnGAwedkdPu0J9zdxDeaLOCms=; b=AEeGgZrFlD5eUuWAjG76srr9wGP5hrAuthtNN73llrb+dp9o6kGcFWFhc9z8nDpdLa 8NXi8Fln53Ok7H4NyWfRKV2u41r9Hkp+GWVIi9IpYsget1g9Qv5FRgvhAuK62Ne5RA99 baqvUZWzsw65QKWwlXxmnmGh6RIf5x6x7AGsMB4IGcsiTuB2eEEohDzDpK4zzk4fLuIm N9Op3BiO8BWlbHtwy/Y4vOBdZqkG7pfQJummMlnuu6rrGxX75ldEjvYldqClDXRRl2hN FnFUDIyKnjnKHH20WdgNlr7CYwr7QGN3056InejgiHzjPEQQIGjZTdzENHXrv4CD/cyN IjWg== X-Gm-Message-State: AOUpUlFUTUwECIkMo01A1ZxUymlAs3qG8xzDST0R7cxrSwgkcoAsGo1x YwQppY4TYLfH3/VUfkxanVrt4dqbNag= X-Google-Smtp-Source: AAOMgpdTbnZTMOcr7Hp2pto8Y7Hcn9CY/I5fpPvOe+adJMw5EbHC9wWGT/eEple2H4ZiT81CkNhAjQ== X-Received: by 2002:ac8:2bea:: with SMTP id n39-v6mr11974887qtn.292.1533493749827; Sun, 05 Aug 2018 11:29:09 -0700 (PDT) From: Pavel Zbitskiy To: qemu-devel@nongnu.org Date: Sun, 5 Aug 2018 14:28:30 -0400 Message-Id: <20180805182832.3012-6-pavel.zbitskiy@gmail.com> In-Reply-To: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> References: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::231 Subject: [Qemu-devel] [PATCH 5/6] target/s390x: fix PACK reading 1 byte less and writing 1 byte more 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: Pavel Zbitskiy , David Hildenbrand , qemu-trivial@nongnu.org, Cornelia Huck , Alexander Graf , "open list:S390" , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" PACK fails on the test from the Principles of Operation: F1F2F3F4 becomes 0000234C instead of 0001234C due to an off-by-one error. Furthermore, it overwrites one extra byte to the left of F1. Signed-off-by: Pavel Zbitskiy --- target/s390x/mem_helper.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 704d0193b5..bacae4f503 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -1019,15 +1019,15 @@ void HELPER(pack)(CPUS390XState *env, uint32_t len,= uint64_t dest, uint64_t src) len_src--; =20 /* now pack every value */ - while (len_dest >=3D 0) { + while (len_dest > 0) { b =3D 0; =20 - if (len_src > 0) { + if (len_src >=3D 0) { b =3D cpu_ldub_data_ra(env, src, ra) & 0x0f; src--; len_src--; } - if (len_src > 0) { + if (len_src >=3D 0) { b |=3D cpu_ldub_data_ra(env, src, ra) << 4; src--; len_src--; --=20 2.16.2.windows.1 From nobody Wed Nov 5 05:10:24 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.zohomail.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; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533494187465626.2470819511583; Sun, 5 Aug 2018 11:36:27 -0700 (PDT) Received: from localhost ([::1]:59525 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNtC-0003Ea-7c for importer@patchew.org; Sun, 05 Aug 2018 14:36:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fmNmF-0006Cr-0z for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fmNmC-0005R1-05 for qemu-devel@nongnu.org; Sun, 05 Aug 2018 14:29:14 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:46687) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fmNmB-0005Qi-RR; Sun, 05 Aug 2018 14:29:11 -0400 Received: by mail-qt0-x244.google.com with SMTP id d4-v6so11463926qtn.13; Sun, 05 Aug 2018 11:29:11 -0700 (PDT) Received: from WAL-L-PZ01.rocketsoftware.com (inet-64-112-177-9.bos.netblazr.com. [64.112.177.9]) by smtp.gmail.com with ESMTPSA id j86-v6sm12842786qkh.60.2018.08.05.11.29.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Aug 2018 11:29:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+yLklP5iOABIJxXt7F80B3I0wj9JAaqmteTKzymM0lo=; b=mIDw57VTJ6spCi0SeIPW2gao7aqfl1H0Zv8gdIxGCXPpKPMnzs/nXrjQc48TKoP6Fx 50cbmcqIsjz2v3i48slB7DM9Om4Pw7g5qKDcj23Tz1EEudMP2TTCwYTj7vwmIBI5cQm7 LKEwa3vr+Y9LSBF0AsoIOUQciXQUK3tENJhL26tggE+6sWAUQBtDnjuUUGEj1pc/6X+F nSV6hhblO5RgrTgym5XQWbdLkNE69g1Zrrr0WLhhOWPokZPNOL7Zm/OoFdcNZqnJ2zSl huz5S51xI06ZvMCSZjvRjZFJhOEKd78gIdORBlK6cf1XETFlAespXRqSubJJ9S+JVLbZ pRdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+yLklP5iOABIJxXt7F80B3I0wj9JAaqmteTKzymM0lo=; b=VrmAKdg2USvrFfk5h6cQhHkSLvQngC2nQjXL08uCBOb9pybjL13PpefZoyVlckdXr0 0ijmH6VdF23sD/HW98D4fh1oS8Rpmf3lJLGMHqvlIR6YQZBaDy52AXoJUqciw2TJHlSe 9Oox11Fo1Dn8EwM6+/+OZBCjv6CfgCGvxOg0jxieqGJyC2rByDu+euT2b7SnnaZ3rTJA aZnDJ00UZMAcptP8eC8/tMQkLGFYdl6vlPN5EIy9KK6PzGmGYNmG1AujzeyW3rdPoSFM 2IUS7vB2jaa6iLy1ItetJOM9cRHvmQeMGvK95dUQVsqMDeMF5EsoGmOTgkv8VqcqZBHu vXhw== X-Gm-Message-State: AOUpUlGplslDBI3sJ3/U06mfTzmTmljrd1rMq4A1So1FMpw9PvSNq6vj lz6E65iSyDvxWKvrTc4P4PE3o225E4Y= X-Google-Smtp-Source: AAOMgpfnPhijPTRSevDp0UEf3EwPf9knb/z7t+OYfS4XqWoV7+Fe6nr1vxoebKHREArWIUxN1Ksslg== X-Received: by 2002:a0c:d44a:: with SMTP id r10-v6mr10396032qvh.248.1533493751191; Sun, 05 Aug 2018 11:29:11 -0700 (PDT) From: Pavel Zbitskiy To: qemu-devel@nongnu.org Date: Sun, 5 Aug 2018 14:28:31 -0400 Message-Id: <20180805182832.3012-7-pavel.zbitskiy@gmail.com> In-Reply-To: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> References: <20180805182832.3012-1-pavel.zbitskiy@gmail.com> 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] [PATCH 6/6] target/s390x: implement CVB, CVBY and CVBG 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: Pavel Zbitskiy , David Hildenbrand , qemu-trivial@nongnu.org, Cornelia Huck , Alexander Graf , "open list:S390" , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Convert to Binary - counterparts of the already implemented Convert to Decimal (CVD*) instructions. Example from the Principles of Operation: 25594C becomes 63FA. Signed-off-by: Pavel Zbitskiy --- target/s390x/helper.h | 2 ++ target/s390x/insn-data.def | 4 ++++ target/s390x/int_helper.c | 58 ++++++++++++++++++++++++++++++++++++++++++= ++++ target/s390x/translate.c | 12 ++++++++++ 4 files changed, 76 insertions(+) diff --git a/target/s390x/helper.h b/target/s390x/helper.h index 97c60ca7bc..20e0c424f9 100644 --- a/target/s390x/helper.h +++ b/target/s390x/helper.h @@ -88,6 +88,8 @@ DEF_HELPER_FLAGS_4(tcxb, TCG_CALL_NO_RWG_SE, i32, env, i6= 4, i64, i64) 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_2(cvb, TCG_CALL_NO_WG, i64, env, i64) +DEF_HELPER_FLAGS_2(cvbg, TCG_CALL_NO_WG, i64, env, 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) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index 9c7b434fca..f0b1cbc4b2 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -284,6 +284,10 @@ D(0xec73, CLFIT, RIE_a, GIE, r1_32u, i2_32u, 0, 0, ct, 0, 1) D(0xec71, CLGIT, RIE_a, GIE, r1_o, i2_32u, 0, 0, ct, 0, 1) =20 +/* CONVERT TO BINARY */ + C(0x4f00, CVB, RX_a, Z, 0, a2, new, r1_32, cvb, 0) + C(0xe306, CVBY, RXY_a, LD, 0, a2, new, r1_32, cvb, 0) + C(0xe30e, CVBG, RXY_a, Z, 0, a2, r1, 0, cvbg, 0) /* CONVERT TO DECIMAL */ C(0x4e00, CVD, RX_a, Z, r1_o, a2, 0, 0, cvd, 0) C(0xe326, CVDY, RXY_a, LD, r1_o, a2, 0, 0, cvd, 0) diff --git a/target/s390x/int_helper.c b/target/s390x/int_helper.c index abf77a94e6..2d67347d08 100644 --- a/target/s390x/int_helper.c +++ b/target/s390x/int_helper.c @@ -24,6 +24,7 @@ #include "exec/exec-all.h" #include "qemu/host-utils.h" #include "exec/helper-proto.h" +#include "exec/cpu_ldst.h" =20 /* #define DEBUG_HELPER */ #ifdef DEBUG_HELPER @@ -118,6 +119,63 @@ uint64_t HELPER(divu64)(CPUS390XState *env, uint64_t a= h, uint64_t al, return ret; } =20 +static void general_operand_exception(CPUS390XState *env, uintptr_t ra) +{ + LowCore *lowcore; + + lowcore =3D cpu_map_lowcore(env); + lowcore->data_exc_code =3D 0; + cpu_unmap_lowcore(lowcore); + s390_program_interrupt(env, PGM_DATA, ILEN_AUTO, ra); +} + +static int64_t do_cvb(CPUS390XState *env, uint64_t src, int n) +{ + int i, j; + uintptr_t ra =3D GETPC(); + int64_t dec, sign, digit, val, pow10; + + for (i =3D 0; i < n; i++) { + dec =3D cpu_ldq_data_ra(env, src + (n - i - 1) * 8, ra); + for (j =3D 0; j < 16; j++, dec >>=3D 4) { + if (i =3D=3D 0 && j =3D=3D 0) { + sign =3D dec & 0xf; + if (sign < 0xa) { + general_operand_exception(env, ra); + } + continue; + } + digit =3D dec & 0xf; + if (digit > 0x9) { + general_operand_exception(env, ra); + } + if (i =3D=3D 0 && j =3D=3D 1) { + if (sign =3D=3D 0xb || sign =3D=3D 0xd) { + val =3D -digit; + pow10 =3D -10; + } else { + val =3D digit; + pow10 =3D 10; + } + } else { + val +=3D digit * pow10; + pow10 *=3D 10; + } + } + } + return val; +} + +uint64_t HELPER(cvb)(CPUS390XState *env, uint64_t src) +{ + return do_cvb(env, src, 1); +} + +uint64_t HELPER(cvbg)(CPUS390XState *env, uint64_t src) +{ + return do_cvb(env, src, 2); +} + uint64_t HELPER(cvd)(int32_t reg) { /* positive 0 */ diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 05442dff36..83d71815d4 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -2106,6 +2106,18 @@ static DisasJumpType op_csp(DisasContext *s, DisasOp= s *o) } #endif =20 +static DisasJumpType op_cvb(DisasContext *s, DisasOps *o) +{ + gen_helper_cvb(o->out, cpu_env, o->in2); + return DISAS_NEXT; +} + +static DisasJumpType op_cvbg(DisasContext *s, DisasOps *o) +{ + gen_helper_cvbg(o->out, cpu_env, o->in2); + return DISAS_NEXT; +} + static DisasJumpType op_cvd(DisasContext *s, DisasOps *o) { TCGv_i64 t1 =3D tcg_temp_new_i64(); --=20 2.16.2.windows.1