From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51198) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V6FR4-0005zq-NV for qemu-devel@nongnu.org; Mon, 05 Aug 2013 03:42:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V6FQy-0000sY-Nx for qemu-devel@nongnu.org; Mon, 05 Aug 2013 03:42:34 -0400 Received: from multi.imgtec.com ([194.200.65.239]:18932) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V6FQy-0000hH-IU for qemu-devel@nongnu.org; Mon, 05 Aug 2013 03:42:28 -0400 Message-ID: <51FF5740.4090504@imgtec.com> Date: Mon, 5 Aug 2013 08:41:52 +0100 From: Leon Alrae MIME-Version: 1.0 References: <1375351347-16604-1-git-send-email-leon.alrae@imgtec.com> <20130803220132.GA20566@ohm.aurel32.net> In-Reply-To: <20130803220132.GA20566@ohm.aurel32.net> Content-Type: text/plain; charset="ISO-8859-15" Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH] target-mips: fix decoding of microMIPS POOL32Axf instructions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aurelien Jarno Cc: yongbok.kim@imgtec.com, cristian.cuna@imgtec.com, qemu-devel@nongnu.org On 03/08/13 23:01, Aurelien Jarno wrote: > On Thu, Aug 01, 2013 at 11:02:27AM +0100, Leon Alrae wrote: >> These are not DSP instructions, thus there is no "ac" field. >> >> For more details please refer to instruction encoding of >> MULT, MULTU, MADD, MADDU, MSUB, MSUBU, MFHI, MFLO, MTHI, MTLO in >> MIPS Architecture for Programmers Volume II-B: The microMIPS32 Instruction Set > > These instructions have both a non DSP version without the "ac" field, > and a DSP version with the "ac" field. The encoding of the "ac" field is > done in bits 14 and 15, so the current QEMU code is correct. > > Please refer to the MIPS32® Architecture Manual Volume IV-e: The > MIPS® DSP Application-Specific Extension to the microMIPS32® > Architecture (document MD00764). > Please note that the patch modifies non-DSP version of listed instructions, where "ac" field doesn't exist. In this case reading bits 14 and 15 and passing it as acc argument to gen_muldiv() or gen_HILO() is not correct. If those bits are not 0 (and for most of the listed instructions this is true) then check_dsp() is called which will cause an exception if DSP is not supported / disabled.