From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53635) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZPfAP-0003SY-DJ for qemu-devel@nongnu.org; Wed, 12 Aug 2015 19:10:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZPfAK-0006gB-83 for qemu-devel@nongnu.org; Wed, 12 Aug 2015 19:10:41 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:49846) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZPfAJ-0006fR-N3 for qemu-devel@nongnu.org; Wed, 12 Aug 2015 19:10:36 -0400 References: <1439151229-27747-1-git-send-email-laurent@vivier.eu> <1439151229-27747-21-git-send-email-laurent@vivier.eu> <55CB7CDA.9090000@twiddle.net> <55CBCBF8.3010100@vivier.eu> <55CBD20D.1040406@twiddle.net> From: Laurent Vivier Message-ID: <55CBD25F.6090604@vivier.eu> Date: Thu, 13 Aug 2015 01:10:23 +0200 MIME-Version: 1.0 In-Reply-To: <55CBD20D.1040406@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, Andreas Schwab , gerg@uclinux.org Le 13/08/2015 01:09, Richard Henderson a écrit : > On 08/12/2015 03:43 PM, Laurent Vivier wrote: >> >> >> 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... > > Hmm, perhaps you're right. On the other hand, maybe we should rename > the function and_exg, and also properly check for M68000 before > accepting exg? I agree. Thank you for all your comments. Laurent