From nobody Tue Oct 28 04:29:56 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; 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 1515084499172523.0100983333181; Thu, 4 Jan 2018 08:48:19 -0800 (PST) Received: from localhost ([::1]:49998 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eX8gk-0004RN-DF for importer@patchew.org; Thu, 04 Jan 2018 11:48:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55436) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eX8be-0007c9-O6 for qemu-devel@nongnu.org; Thu, 04 Jan 2018 11:43:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eX8bc-0003dt-8x for qemu-devel@nongnu.org; Thu, 04 Jan 2018 11:43:02 -0500 Received: from mout.kundenserver.de ([212.227.126.133]:53421) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eX8bb-0003b3-NE for qemu-devel@nongnu.org; Thu, 04 Jan 2018 11:43:00 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue003 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MBo9r-1eebOn0bIt-00Al3g; Thu, 04 Jan 2018 17:42:58 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Thu, 4 Jan 2018 17:42:47 +0100 Message-Id: <20180104164251.26494-14-laurent@vivier.eu> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180104164251.26494-1-laurent@vivier.eu> References: <20180104164251.26494-1-laurent@vivier.eu> X-Provags-ID: V03:K0:+EiCe3YlrjWz6GxAzBNrCGGgBI5uX9IzyL7MmW892gR+/aRYdpd Zbztb/m8zLESS3hOG6vfSQPVvpu8oLS3ds1nKq4k4EVMCxN9dm9yz0mv35P4AFopheVf1YN TiRjJ+amI26DIhC1mCqxvdE6ZrytPQ2pmQaFJ/R7WZUeiJfQ6T9uHbqmZNhYvZNeKpRwcej cxkZya+68LhWjEQgQFhZg== X-UI-Out-Filterresults: notjunk:1;V01:K0:SH3RDRYXJT8=:iEen37kquEKqTBTEtAZo9g tinR8EEHB21Lbh/c3mFDdraD7JNi66jZ0TpI5QhX3G9LvgnDhf9C9LERah0eKNz9r/0gKcdzc JviAXUjocNEJJpWo0rvOZBJt1Fhs2hRB3kFE9wtj/Q3dbZQTYULqzDlFfzlgELHjCuvc6aFMS z4zwuDuh06fX08HOEzv6/1hx2nfaC03wBUh13UNKVEHFr4jf3JjALAXgptAFvi8QKcHg9B0UN KdkIoXluALNgtcFfg79fB2XAiWTca3JPMWxZjh/dLkoxa0TDqkBWl+j/lEMljPskFuAIJFCgW oQybEN3CFtyGRKA2UQi1y4ugWKChjERacPSPOgoprQSuk33VUDsBBulS8p0UxOopKwOhA8/xc oFkfhV1FzttJlUNIu0ERlPYsbVjAsFmPtmUyHu0Knge9Ro9Hxg6CfnbDaHWhp482gb211KK36 bq+4pL6d7hSBgDeSFCEHE41fr6U9Y+8A6IxVnWh7qnhi2fxRE5edarobBX4zCLYiW7ib8+Jb1 ONZYBw7dVFpaPwAdW3Dv9Vqc+cpG1/AgpZD50TcXk+j6ycK8kUuaWwCZMeqFh1HxlUvXL3/Fv 64D+x6GBw7cI0tZo4cBoWkqyc4nCXEUHNJhM5PODjqkLtIiYPg5NtUqDCXT+/XtMZYxktbeeD 4zu5VN7pv2KVD3ZaSx13ZoXiYdZcORGHFAyq17szGi/E4SKuFh9noB8IX7IwLUX8if4iYQQ7d nOj0xXrVawNxh0MK7x99RPgUXCzaaQdXNQT8s8odtrvNvc32S2Pt0wpeIIU= 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] [PULL 13/17] target/m68k: move CCR/SR functions 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 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" The following patches will be clearer if we move functions before adding new ones. Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson Message-Id: <20180104012913.30763-14-laurent@vivier.eu> --- target/m68k/translate.c | 111 ++++++++++++++++++++++++--------------------= ---- 1 file changed, 55 insertions(+), 56 deletions(-) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index b8ed85c237..1f867a4f7a 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -2131,6 +2131,61 @@ DISAS_INSN(bitop_im) } } =20 +static TCGv gen_get_ccr(DisasContext *s) +{ + TCGv dest; + + update_cc_op(s); + dest =3D tcg_temp_new(); + gen_helper_get_ccr(dest, cpu_env); + return dest; +} + +static TCGv gen_get_sr(DisasContext *s) +{ + TCGv ccr; + TCGv sr; + + ccr =3D gen_get_ccr(s); + sr =3D tcg_temp_new(); + tcg_gen_andi_i32(sr, QREG_SR, 0xffe0); + tcg_gen_or_i32(sr, sr, ccr); + return sr; +} + +static void gen_set_sr_im(DisasContext *s, uint16_t val, int ccr_only) +{ + if (ccr_only) { + tcg_gen_movi_i32(QREG_CC_C, val & CCF_C ? 1 : 0); + tcg_gen_movi_i32(QREG_CC_V, val & CCF_V ? -1 : 0); + tcg_gen_movi_i32(QREG_CC_Z, val & CCF_Z ? 0 : 1); + tcg_gen_movi_i32(QREG_CC_N, val & CCF_N ? -1 : 0); + tcg_gen_movi_i32(QREG_CC_X, val & CCF_X ? 1 : 0); + } else { + gen_helper_set_sr(cpu_env, tcg_const_i32(val)); + } + set_cc_op(s, CC_OP_FLAGS); +} + +static void gen_set_sr(CPUM68KState *env, DisasContext *s, uint16_t insn, + int ccr_only) +{ + if ((insn & 0x38) =3D=3D 0) { + if (ccr_only) { + gen_helper_set_ccr(cpu_env, DREG(insn, 0)); + } else { + gen_helper_set_sr(cpu_env, DREG(insn, 0)); + } + set_cc_op(s, CC_OP_FLAGS); + } else if ((insn & 0x3f) =3D=3D 0x3c) { + uint16_t val; + val =3D read_im16(env, s); + gen_set_sr_im(s, val, ccr_only); + } else { + disas_undef(env, s, insn); + } +} + DISAS_INSN(arith_im) { int op; @@ -2474,16 +2529,6 @@ DISAS_INSN(clr) tcg_temp_free(zero); } =20 -static TCGv gen_get_ccr(DisasContext *s) -{ - TCGv dest; - - update_cc_op(s); - dest =3D tcg_temp_new(); - gen_helper_get_ccr(dest, cpu_env); - return dest; -} - DISAS_INSN(move_from_ccr) { TCGv ccr; @@ -2510,40 +2555,6 @@ DISAS_INSN(neg) tcg_temp_free(dest); } =20 -static void gen_set_sr_im(DisasContext *s, uint16_t val, int ccr_only) -{ - if (ccr_only) { - tcg_gen_movi_i32(QREG_CC_C, val & CCF_C ? 1 : 0); - tcg_gen_movi_i32(QREG_CC_V, val & CCF_V ? -1 : 0); - tcg_gen_movi_i32(QREG_CC_Z, val & CCF_Z ? 0 : 1); - tcg_gen_movi_i32(QREG_CC_N, val & CCF_N ? -1 : 0); - tcg_gen_movi_i32(QREG_CC_X, val & CCF_X ? 1 : 0); - } else { - gen_helper_set_sr(cpu_env, tcg_const_i32(val)); - } - set_cc_op(s, CC_OP_FLAGS); -} - -static void gen_set_sr(CPUM68KState *env, DisasContext *s, uint16_t insn, - int ccr_only) -{ - if ((insn & 0x38) =3D=3D 0) { - if (ccr_only) { - gen_helper_set_ccr(cpu_env, DREG(insn, 0)); - } else { - gen_helper_set_sr(cpu_env, DREG(insn, 0)); - } - set_cc_op(s, CC_OP_FLAGS); - } else if ((insn & 0x3f) =3D=3D 0x3c) { - uint16_t val; - val =3D read_im16(env, s); - gen_set_sr_im(s, val, ccr_only); - } else { - disas_undef(env, s, insn); - } -} - - DISAS_INSN(move_to_ccr) { gen_set_sr(env, s, insn, 1); @@ -4359,18 +4370,6 @@ DISAS_INSN(move16_mem) } } =20 -static TCGv gen_get_sr(DisasContext *s) -{ - TCGv ccr; - TCGv sr; - - ccr =3D gen_get_ccr(s); - sr =3D tcg_temp_new(); - tcg_gen_andi_i32(sr, QREG_SR, 0xffe0); - tcg_gen_or_i32(sr, sr, ccr); - return sr; -} - DISAS_INSN(strldsr) { uint16_t ext; --=20 2.14.3