From patchwork Fri Oct 28 08:48:19 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 688304 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3t4yZ94mwRz9t0Z for ; Fri, 28 Oct 2016 20:07:13 +1100 (AEDT) Received: from localhost ([::1]:47623 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c037z-0003ic-S4 for incoming@patchwork.ozlabs.org; Fri, 28 Oct 2016 05:07:07 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c02qS-0005gz-4h for qemu-devel@nongnu.org; Fri, 28 Oct 2016 04:49:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c02qO-00036k-3S for qemu-devel@nongnu.org; Fri, 28 Oct 2016 04:49:00 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:50326) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c02qN-00035j-QH for qemu-devel@nongnu.org; Fri, 28 Oct 2016 04:48:56 -0400 Received: from Quad.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue002) with ESMTPSA (Nemesis) id 0Mh236-1cDIN735YO-00M2Rx; Fri, 28 Oct 2016 10:48:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Fri, 28 Oct 2016 10:48:19 +0200 Message-Id: <1477644512-21716-6-git-send-email-laurent@vivier.eu> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1477644512-21716-1-git-send-email-laurent@vivier.eu> References: <1477644512-21716-1-git-send-email-laurent@vivier.eu> X-Provags-ID: V03:K0:Zfrn9ZEVb25OF19M7Yp2ZodeQnUS+XxZ6c+cVl8bTpTpxIsNcCH bhMDinJBhiEoU7WEXSwXvLPls86zVWIGPu0q4yovND0sEE1i4O66N720R7EQQr5h72/zewb GW7k88sSu3lIwx/ft0aqMIRF5qq5TvET5xcFpSAecSEfLXXdxcrEEucdVZi+ETh6y2Hgf/V ckc0hLInJLx3eugn/rZAQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:5/Y8wVbH7+Y=:dEaOEjwhEz5j/5bvm5yOyo CoaoF/mmTnkpN/aXvWXFsc+wi93cGk5Z1SrcyAM5Sx5FoLmjf5CqEdLoFh/Bwyot0IxgnZegD BQ7QCLfnQxsJd8c5a1W67lyyzKTADj2/VAJGUQ/85Yc38Llgd3pDtNvRFQeGVScFXOzK+gUvb wGgQZLA4YdRS086DM3vjs0KRyV9nkmAsFF6q98OAR/RyoE3aKaFTsyWXpYM4MrQ3IRwW9+qUW kNlwlsR1rfw9jT5mnHQ6O87OE1dz2A61XZVW0kY3V8XJnZK6S1cswN9hjCjN0/9dDJv/gCeFP rmaHJuEIxm/SvNGKs0oaTUyQ0LTmDVHqGfQLs9CE62SEUBZkPOb6omJQEKblLsb0TcqJPhX0v Q592ylx73DY0jwOQPpp74ZGC7BtF8njXTJIWMTj7xrqPoEdjQvNBSIUwRnweA/X8v8PMX7aid tcGTaPKyn/IlDXA77bRRL377CmfasVG8NNxSVIQ1SpqdDUthR2OMsOlBoVSHZwBdLBpAkZeyV XeL9ORLGt6HGK+uqi/KuZelM1nzVxT7JGUhYU655SUTmEwAS8xn0rbbpZrKM601wnfS3ybF7h FD2spnXvW8fz7yG8F1ZXIZhw+KTCDRBygm8MboVezpaV2tZsu2rAIKM55lU9UdJnr8TO7itSc u+v89vnDmaUFQyUjtPCCF+BKYzNgmwVq/nKUBpzrykS/KF2WdVU+CM4f7nu0ubd5/ZUw= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.135 Subject: [Qemu-devel] [PULL 05/18] target-m68k: add dbcc 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 , gerg@uclinux.org, schwab@linux-m68k.org, agraf@suse.de, Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson --- target-m68k/translate.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/target-m68k/translate.c b/target-m68k/translate.c index e595673..1836a22 100644 --- a/target-m68k/translate.c +++ b/target-m68k/translate.c @@ -1105,6 +1105,30 @@ DISAS_INSN(scc) tcg_temp_free(tmp); } +DISAS_INSN(dbcc) +{ + TCGLabel *l1; + TCGv reg; + TCGv tmp; + int16_t offset; + uint32_t base; + + reg = DREG(insn, 0); + base = s->pc; + offset = (int16_t)read_im16(env, s); + l1 = gen_new_label(); + gen_jmpcc(s, (insn >> 8) & 0xf, l1); + + tmp = tcg_temp_new(); + tcg_gen_ext16s_i32(tmp, reg); + tcg_gen_addi_i32(tmp, tmp, -1); + gen_partset_reg(OS_WORD, reg, tmp); + tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, -1, l1); + gen_jmp_tb(s, 1, base + offset); + gen_set_label(l1); + gen_jmp_tb(s, 0, s->pc); +} + DISAS_INSN(undef_mac) { gen_exception(s, s->pc - 2, EXCP_LINEA); @@ -3137,6 +3161,7 @@ void register_m68k_insns (CPUM68KState *env) INSN(addsubq, 5080, f0c0, M68000); INSN(scc, 50c0, f0f8, CF_ISA_A); /* Scc.B Dx */ INSN(scc, 50c0, f0c0, M68000); /* Scc.B */ + INSN(dbcc, 50c8, f0f8, M68000); INSN(addsubq, 5080, f1c0, CF_ISA_A); INSN(tpf, 51f8, fff8, CF_ISA_A);