From nobody Wed Nov 5 10:07:10 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 1533870340893451.4188248846866; Thu, 9 Aug 2018 20:05:40 -0700 (PDT) Received: from localhost ([::1]:54002 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fnxkB-0007yh-Bz for importer@patchew.org; Thu, 09 Aug 2018 23:05:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43998) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fnxiK-00063T-Bu for qemu-devel@nongnu.org; Thu, 09 Aug 2018 23:03:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fnxiJ-0003uD-AF for qemu-devel@nongnu.org; Thu, 09 Aug 2018 23:03:44 -0400 Received: from mail-qk0-x22c.google.com ([2607:f8b0:400d:c09::22c]:34551) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fnxiJ-0003t0-5p; Thu, 09 Aug 2018 23:03:43 -0400 Received: by mail-qk0-x22c.google.com with SMTP id b66-v6so5537358qkj.1; Thu, 09 Aug 2018 20:03:43 -0700 (PDT) Received: from WAL-L-PZ01.rocketsoftware.com ([2620:117:0:a::c]) by smtp.gmail.com with ESMTPSA id i1-v6sm4457425qtj.65.2018.08.09.20.03.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Aug 2018 20:03:41 -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=5xF+eJSkYgXngLdnDHpCrT3MkKnxFYSaIoaMAUzu0QU=; b=FO+FBWn7xVsZqBRtY1s2sHMve4Jp5NyUKhcIySzSJ2JJ8hNA2SkKnoJHsy1rUXgx8v eVSDYiYEFg6TDkEQ9OIOtcyiqSL+xbS6sDeFuTeyf0Nj9nj8RFR9iYHC7wVIrFbCDYXw sTlITf51TKo6ZLjXKPmkpohUUcEf7sQ/EgAZaet/ctGM8mJq49+gHxxvKFTkC45TBXE2 4Fhv5SkLn6yaaJr1KJZ1IgyjAXX75Otl5q7SxNkISr52Vh8UVhphxUqUPpPM2tCfVmkQ ubKD5lZUGH8jHjWmCyBDFUbl7UuXWSdwvINLgnIjVpqn9XWDEkJNuhTExFI4wpG0GaQe Z9eg== 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=5xF+eJSkYgXngLdnDHpCrT3MkKnxFYSaIoaMAUzu0QU=; b=W7H1XLeLtfY2qkAtJzBjf4kkpScsHEPoB84bN47uPTG0iuh9Ii4CEESqZWIus2NThc sPUos88PAJFn0L7u1MesDgTCE/ED3T8HDDkHMTyMbn8mm7NP9nKo4VHeC50nowLwsJxE ceDUswBnMez1u54NAa0geM+psIkXY90OBM5mzDKE1y00vecQdGI+M6x1Ty0f8nchs2qP TAbQlOL8UTFGfoYwpk6TTvfk4P8nAofhc3wsmNdwj0V52aiIcqaZT96p+WnbBhRQMAco aeWKdufDj1SUjkvNYhDH5xmReBH2ISRIf62LyzPQ20XaEhRcYLaAMgwZc/bVA4yW1jWb Lr1A== X-Gm-Message-State: AOUpUlEsZXy1nk8rqs1HCTBAMV+f/MQmQACMwgzzBYoVbkujZRiG6bfJ C737PMejgKUW1mIU5/OmAurOxIWj7KY= X-Google-Smtp-Source: AA+uWPycrFidJhb7ra8URTS0hQ/OWcd3a1vPr/oHs8H7lQRhyTroY8daFMfAsl2pV/bkTVtmahdKsQ== X-Received: by 2002:a37:1fdf:: with SMTP id n92-v6mr4422372qkh.333.1533870222266; Thu, 09 Aug 2018 20:03:42 -0700 (PDT) From: Pavel Zbitskiy To: qemu-devel@nongnu.org Date: Thu, 9 Aug 2018 23:01:34 -0400 Message-Id: <20180810030139.25916-3-pavel.zbitskiy@gmail.com> In-Reply-To: <20180810030139.25916-1-pavel.zbitskiy@gmail.com> References: <20180810030139.25916-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::22c Subject: [Qemu-devel] [PATCH 2/7] 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@redhat.com, cohuck@redhat.com, richard.henderson@linaro.org, Alexander Graf , qemu-s390x@nongnu.org, 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 | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 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..316ff79250 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1463,6 +1463,39 @@ static DisasJumpType op_bas(DisasContext *s, DisasOp= s *o) } } =20 +static void save_link_info(DisasContext *s, DisasOps *o) +{ + TCGv_i64 t; + + if (s->base.tb->flags & (FLAG_MASK_32 | FLAG_MASK_64)) { + tcg_gen_movi_i64(o->out, pc_to_link_info(s, s->pc_tmp)); + return; + } + gen_op_calc_cc(s); + tcg_gen_andi_i64(o->out, o->out, 0xffffffff00000000ull); + tcg_gen_ori_i64(o->out, o->out, ((s->ilen / 2) << 30) | s->pc_tmp); + 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(o->out, o->out, t); + tcg_gen_extu_i32_i64(t, cc_op); + tcg_gen_shli_i64(t, t, 28); + tcg_gen_or_i64(o->out, o->out, t); + tcg_temp_free_i64(t); +} + +static DisasJumpType op_bal(DisasContext *s, DisasOps *o) +{ + save_link_info(s, o); + 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.18.0