From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:46902) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qtn2V-0005TC-3v for qemu-devel@nongnu.org; Wed, 17 Aug 2011 16:48:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qtn2T-0006fl-B6 for qemu-devel@nongnu.org; Wed, 17 Aug 2011 16:48:39 -0400 Received: from mail-yx0-f173.google.com ([209.85.213.173]:36963) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qtn2T-0006fW-2D for qemu-devel@nongnu.org; Wed, 17 Aug 2011 16:48:37 -0400 Received: by mail-yx0-f173.google.com with SMTP id 3so1226800yxt.4 for ; Wed, 17 Aug 2011 13:48:36 -0700 (PDT) From: Bryce Lanham Date: Wed, 17 Aug 2011 15:46:18 -0500 Message-Id: <1313614076-28878-14-git-send-email-blanham@gmail.com> In-Reply-To: <1313614076-28878-1-git-send-email-blanham@gmail.com> References: <1313614076-28878-1-git-send-email-blanham@gmail.com> Subject: [Qemu-devel] [PATCH 013/111] m68k: add Scc instruction with memory operand. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Andreas Schwab , Laurent Vivier From: 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 ea92fd6..8cf49d8 100644 --- a/target-m68k/translate.c +++ b/target-m68k/translate.c @@ -903,6 +903,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); @@ -2972,6 +2989,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.7.2.3