From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46281) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZPejx-0002Rc-MS for qemu-devel@nongnu.org; Wed, 12 Aug 2015 18:43:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZPejt-0001we-M2 for qemu-devel@nongnu.org; Wed, 12 Aug 2015 18:43:21 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:57165) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZPejt-0001wK-CN for qemu-devel@nongnu.org; Wed, 12 Aug 2015 18:43:17 -0400 References: <1439151229-27747-1-git-send-email-laurent@vivier.eu> <1439151229-27747-21-git-send-email-laurent@vivier.eu> <55CB7CDA.9090000@twiddle.net> From: Laurent Vivier Message-ID: <55CBCBF8.3010100@vivier.eu> Date: Thu, 13 Aug 2015 00:43:04 +0200 MIME-Version: 1.0 In-Reply-To: <55CB7CDA.9090000@twiddle.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH for-2.5 20/30] m68k: add exg List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Richard Henderson , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com, Andreas Schwab , gerg@uclinux.org Le 12/08/2015 19:05, Richard Henderson a écrit : > On 08/09/2015 01:13 PM, Laurent Vivier wrote: >> Signed-off-by: Laurent Vivier >> --- >> target-m68k/translate.c | 34 +++++++++++++++++++++++++++++++++- >> 1 file changed, 33 insertions(+), 1 deletion(-) >> >> diff --git a/target-m68k/translate.c b/target-m68k/translate.c >> index adf4521..b7d15e9 100644 >> --- a/target-m68k/translate.c >> +++ b/target-m68k/translate.c >> @@ -2035,10 +2035,42 @@ DISAS_INSN(and) >> TCGv dest; >> TCGv addr; >> int opsize; >> + int exg_mode; >> >> + dest = tcg_temp_new(); >> + >> + /* exg */ >> + >> + exg_mode = insn & 0x1f8; > > Likewise, surely we can decode EXG separately from AND, and avoid doing so for > coldfire. I agree for CMPM, not for EXG. Let's have a look to instructions encoding :) AND 1100dddooommmrrr ddd data register number ooo opmode, invalid: 011, 111 mmmrrr ea mode, if ooo = { 000, 001, 010} invalid: 001000 .. 001111 if ooo = { 100, 101, 110} invalid; 000000 .. 001111 EXG 1100xxx1oooooyyy xxx register ooooo valid: 01000, 01001, 10001 yyy register So, EXG is an AND with ooo 101, 110 mmm 000, 001 which are invalid combinations for AND. IMHO, EXG looks like a wart on the AND and should be decoded like that... I don't know how to add this easily in the table... except by adding 3 entries to decode 1 instruction. Is it acceptable ? Laurent