From nobody Wed Nov 5 15:48:21 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; 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 14972234070771009.3580880967845; Sun, 11 Jun 2017 16:23:27 -0700 (PDT) Received: from localhost ([::1]:35465 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKCCb-0007Iq-TK for importer@patchew.org; Sun, 11 Jun 2017 19:23:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37201) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKC6c-00026J-5I for qemu-devel@nongnu.org; Sun, 11 Jun 2017 19:17:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKC6Y-00082e-V4 for qemu-devel@nongnu.org; Sun, 11 Jun 2017 19:17:14 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:52582) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dKC6Y-00082W-JX for qemu-devel@nongnu.org; Sun, 11 Jun 2017 19:17:10 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue004 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MTcE0-1dSxWP3EkS-00QVKB; Mon, 12 Jun 2017 01:16:37 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 12 Jun 2017 01:16:29 +0200 Message-Id: <20170611231633.32582-4-laurent@vivier.eu> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170611231633.32582-1-laurent@vivier.eu> References: <20170611231633.32582-1-laurent@vivier.eu> X-Provags-ID: V03:K0:nSqcgzukyybbdEeSn5iaU/1/TGImyFmxIgdwssgrh5fUKKyhGmU IkHkR5Fja7oQ/npe9WniI2xIdxTxWQFQX7W+jm4uUM3RFF1Zr/TK4NPqFy8m5A8cu+x+iG0 RQP5yD9sFWhbZH+8UekiPEmjFH5PeK5IifRi+eIZKlOevCrZLnYizRdcaT/phR6Ao87qiZ9 rd6vINUfhL8eL94fwmAOg== X-UI-Out-Filterresults: notjunk:1;V01:K0:5psnIwCJQRE=:sg5RbBs5kYEXSr+DugCR06 T2Uc9U9FCn3070fm3v6mjoeu2Q3jeeuVXMLTeUli1a0gSZ7hR4yYamjA9jyt7GsBB8S9V8tDn YxkGHj6NILvsr2yNegbm0qCZ9sRhcnFigQMz+1D2HKrmDC94tzB441GonC985RvljGavPLew0 E1jSxcHNETlhKbxpIy1Hx668lDmJaCjQv2Vf5hTvGYhTlGIXLn5kmDzrtGNEs9DugQtakXwXt 7U+WPB6hK9x3LTdvjNxdXAhqQRC18cATY+/b9DlS3Zs62T5UYAX/oP73+OXEJ0zPMvRNosALn Gj/Oo9/ETSbOJTeziiw4d9qlY5gqao95MLnaZ53SycA8AjjyK6SQqmFB5EHPVQkn2/tr7bGsA k9CctqBdKGoPS0TMQeV+Ap7uW9dkgLi970T/vqxocTd4xymU0uoOdUcX5r/wK2VtAixqh2lbH A/Nr4SJlQcSWWJq53SmGanzYPMnuSUOxW1bOY7wZn8BQpQegQ+v1sPZDn0qJSfscPt0yIcKhj VItK5741Mz+vXpV4TwWGw5YWvpOuC2lPe3xF419N+Qd8tC+vfwIWZfI2VerqcMoZT2U/n81uR EwjeggldBszHq3FVKxA3zvzc+i7szmOpSHsHQ4p3xsWYKi/Ziooyag7L7JGt5HLfcCgnoyni4 Y+BAewuJxhZfJoPganh+/7DUTQeahTgt3Q72JsYpSqIMSVZLr8sxUeXiKjLk6pWSDuzc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.133 Subject: [Qemu-devel] [PATCH v4 3/7] target-m68k: define ext_opsize 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: Laurent Vivier , Aurelien Jarno , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson --- target/m68k/translate.c | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index ad4d4ef..049d837 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -669,6 +669,21 @@ static inline int insn_opsize(int insn) } } =20 +static inline int ext_opsize(int ext, int pos) +{ + switch ((ext >> pos) & 7) { + case 0: return OS_LONG; + case 1: return OS_SINGLE; + case 2: return OS_EXTENDED; + case 3: return OS_PACKED; + case 4: return OS_WORD; + case 5: return OS_DOUBLE; + case 6: return OS_BYTE; + default: + g_assert_not_reached(); + } +} + /* Assign value to a register. If the width is less than the register wid= th only the low part of the register is set. */ static void gen_partset_reg(int opsize, TCGv reg, TCGv val) @@ -4111,20 +4126,19 @@ DISAS_INSN(fpu) tmp32 =3D tcg_temp_new_i32(); /* fmove */ /* ??? TODO: Proper behavior on overflow. */ - switch ((ext >> 10) & 7) { - case 0: - opsize =3D OS_LONG; + + opsize =3D ext_opsize(ext, 10); + switch (opsize) { + case OS_LONG: gen_helper_f64_to_i32(tmp32, cpu_env, src); break; - case 1: - opsize =3D OS_SINGLE; + case OS_SINGLE: gen_helper_f64_to_f32(tmp32, cpu_env, src); break; - case 4: - opsize =3D OS_WORD; + case OS_WORD: gen_helper_f64_to_i32(tmp32, cpu_env, src); break; - case 5: /* OS_DOUBLE */ + case OS_DOUBLE: tcg_gen_mov_i32(tmp32, AREG(insn, 0)); switch ((insn >> 3) & 7) { case 2: @@ -4153,8 +4167,7 @@ DISAS_INSN(fpu) } tcg_temp_free_i32(tmp32); return; - case 6: - opsize =3D OS_BYTE; + case OS_BYTE: gen_helper_f64_to_i32(tmp32, cpu_env, src); break; default: @@ -4227,15 +4240,7 @@ DISAS_INSN(fpu) } if (ext & (1 << 14)) { /* Source effective address. */ - switch ((ext >> 10) & 7) { - case 0: opsize =3D OS_LONG; break; - case 1: opsize =3D OS_SINGLE; break; - case 4: opsize =3D OS_WORD; break; - case 5: opsize =3D OS_DOUBLE; break; - case 6: opsize =3D OS_BYTE; break; - default: - goto undef; - } + opsize =3D ext_opsize(ext, 10); if (opsize =3D=3D OS_DOUBLE) { tmp32 =3D tcg_temp_new_i32(); tcg_gen_mov_i32(tmp32, AREG(insn, 0)); --=20 2.9.4