From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MAAmF-0002Ut-Ve for qemu-devel@nongnu.org; Fri, 29 May 2009 18:42:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MAAmB-0002SB-8n for qemu-devel@nongnu.org; Fri, 29 May 2009 18:42:15 -0400 Received: from [199.232.76.173] (port=44627 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MAAmB-0002S8-1F for qemu-devel@nongnu.org; Fri, 29 May 2009 18:42:11 -0400 Received: from smtp3-g21.free.fr ([212.27.42.3]:58708) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MAAmA-0007Ki-0X for qemu-devel@nongnu.org; Fri, 29 May 2009 18:42:10 -0400 From: Laurent Vivier Date: Sat, 30 May 2009 00:41:50 +0200 Message-Id: <1243636921-23054-7-git-send-email-laurent@vivier.eu> In-Reply-To: <1243636921-23054-6-git-send-email-laurent@vivier.eu> References: <1243636921-23054-1-git-send-email-laurent@vivier.eu> <1243636921-23054-2-git-send-email-laurent@vivier.eu> <1243636921-23054-3-git-send-email-laurent@vivier.eu> <1243636921-23054-4-git-send-email-laurent@vivier.eu> <1243636921-23054-5-git-send-email-laurent@vivier.eu> <1243636921-23054-6-git-send-email-laurent@vivier.eu> Subject: [Qemu-devel] [PATCH 06/17] m68k: add Scc instruction with memory operand. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Andreas Schwab , Laurent Vivier This patch defines Scc instruction for M68000 feature accessing destination operand using an effective address (existing Scc instruction manages only data registers). Signed-off-by: Andreas Schwab Signed-off-by: Laurent Vivier --- target-m68k/translate.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/target-m68k/translate.c b/target-m68k/translate.c index cd46651..d08e1c8 100644 --- a/target-m68k/translate.c +++ b/target-m68k/translate.c @@ -906,6 +906,23 @@ static void gen_jmp_tb(DisasContext *s, int n, uint32_t dest) s->is_jmp = DISAS_TB_JUMP; } +DISAS_INSN(scc_mem) +{ + int l1; + int cond; + TCGv dest; + + l1 = gen_new_label(); + cond = (insn >> 8) & 0xf; + dest = tcg_temp_local_new(); + tcg_gen_movi_i32(dest, 0); + gen_jmpcc(s, cond ^ 1, l1); + tcg_gen_movi_i32(dest, 0xff); + gen_set_label(l1); + DEST_EA(insn, OS_BYTE, dest, NULL); + tcg_temp_free(dest); +} + DISAS_INSN(undef_mac) { gen_exception(s, s->pc - 2, EXCP_LINEA); @@ -2975,6 +2992,7 @@ void register_m68k_insns (CPUM68KState *env) INSN(addsubq, 5000, f080, M68000); INSN(addsubq, 5080, f0c0, M68000); INSN(scc, 50c0, f0f8, CF_ISA_A); + INSN(scc_mem, 50c0, f0c0, M68000); INSN(scc, 50c0, f0f8, M68000); INSN(tpf, 51f8, fff8, CF_ISA_A); -- 1.5.6.5