From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MAP0U-0006UI-2C for qemu-devel@nongnu.org; Sat, 30 May 2009 09:53:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MAP0P-0006Mp-4j for qemu-devel@nongnu.org; Sat, 30 May 2009 09:53:53 -0400 Received: from [199.232.76.173] (port=57982 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MAP0O-0006Me-Rd for qemu-devel@nongnu.org; Sat, 30 May 2009 09:53:48 -0400 Received: from mail-out.m-online.net ([212.18.0.10]:33261) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MAP0O-0004Fd-8f for qemu-devel@nongnu.org; Sat, 30 May 2009 09:53:48 -0400 From: Andreas Schwab 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> <1243636921-23054-7-git-send-email-laurent@vivier.eu> <1243636921-23054-8-git-send-email-laurent@vivier.eu> <1243636921-23054-9-git-send-email-laurent@vivier.eu> <1243636921-23054-10-git-send-email-laurent@vivier.eu> <1243636921-23054-11-git-send-email-laurent@vivier.eu> <1243636921-23054-12-git-send-email-laurent@vivier.eu> <1243636921-23054-13-git-send-email-laurent@vivier.eu> <1243636921-23054-14-git-send-email-laurent@vivier.eu> <1243636921-23054-15-git-send-email-laurent@vivier.eu> <1243636921-23054-16-git-send-email-laurent@vivier.eu> <1243636921-23054-17-git-send-email-laurent@vivier.eu> <1243636921-23054-18-git-send-email-laurent@vivier.eu> Date: Sat, 30 May 2009 15:53:43 +0200 In-Reply-To: <1243636921-23054-18-git-send-email-laurent@vivier.eu> (Laurent Vivier's message of "Sat, 30 May 2009 00:42:01 +0200") Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: [Qemu-devel] Re: [PATCH 17/17] m68k: add cas List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laurent Vivier Cc: qemu-devel@nongnu.org Laurent Vivier writes: > + cmp = DREG(ext, 0); > + update = DREG(ext, 6); > + tmp = gen_load(s, opsize, addr, 0); > + dest = tcg_temp_local_new(); > + tcg_gen_mov_i32(dest, tmp); > + > + res = tcg_temp_new(); > + tcg_gen_sub_i32(res, dest, cmp); > + gen_logic_cc(s, res); > + > + l1 = gen_new_label(); > + l2 = gen_new_label(); > + > + gen_jmpcc(s, 6 /* !Z */, l1); > + gen_store(s, opsize, addr, update); This has a bug: addr is used around a jump. Andreas. --- >>From b87bc72daf28f519017c79615b962c47a1e0492d Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 30 May 2009 15:32:20 +0200 Subject: [PATCH] m68k: fix use of temporary around jump Signed-off-by: Andreas Schwab --- target-m68k/translate.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/target-m68k/translate.c b/target-m68k/translate.c index 4372975..9d68b02 100644 --- a/target-m68k/translate.c +++ b/target-m68k/translate.c @@ -1382,6 +1382,7 @@ DISAS_INSN(cas) TCGv tmp; TCGv cmp; TCGv update; + TCGv taddr; TCGv addr; TCGv res; uint16_t ext; @@ -1408,17 +1409,19 @@ DISAS_INSN(cas) ext = lduw_code(s->pc); s->pc += 2; - addr = gen_lea(s, insn, opsize); - if (IS_NULL_QREG(addr)) { + taddr = gen_lea(s, insn, opsize); + if (IS_NULL_QREG(taddr)) { gen_addr_fault(s); return; } cmp = DREG(ext, 0); update = DREG(ext, 6); - tmp = gen_load(s, opsize, addr, 0); + tmp = gen_load(s, opsize, taddr, 0); dest = tcg_temp_local_new(); tcg_gen_mov_i32(dest, tmp); + addr = tcg_temp_local_new (); + tcg_gen_mov_i32(addr, taddr); res = tcg_temp_new(); tcg_gen_sub_i32(res, dest, cmp); @@ -1434,6 +1437,7 @@ DISAS_INSN(cas) tcg_gen_mov_i32(cmp, dest); gen_set_label(l2); tcg_temp_free(dest); + tcg_temp_free(addr); } DISAS_INSN(byterev) -- 1.6.3.1 -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."