From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60999) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwueP-0007cG-Ok for qemu-devel@nongnu.org; Fri, 05 Dec 2014 10:18:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XwueL-00042B-8h for qemu-devel@nongnu.org; Fri, 05 Dec 2014 10:18:33 -0500 Received: from mailapp01.imgtec.com ([195.59.15.196]:27529) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwueL-000420-33 for qemu-devel@nongnu.org; Fri, 05 Dec 2014 10:18:29 -0500 Message-ID: <5481CCC3.1060602@imgtec.com> Date: Fri, 5 Dec 2014 15:18:27 +0000 From: Leon Alrae MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] target-mips: Also apply the CP0.Status mask to MTTC0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Maciej W. Rozycki" , qemu-devel@nongnu.org Cc: Aurelien Jarno On 20/11/2014 11:15, Maciej W. Rozycki wrote: > Make CP0.Status writes made with the MTTC0 instruction respect this > register's mask just like all the other places. Also preserve the > current values of masked out bits. > > Signed-off-by: Maciej W. Rozycki > --- > Hi, > > This should be obvious. Also quite obviously, we are missing a lot of > stuff in this area so as it is added this is something to watch out for, > e.g. CP0.ConfigX writes will have to respect the respective masks too. > But that's another matter. For the time being, please apply. > > Maciej > > qemu-mips-mttc-status.diff > Index: qemu-git-trunk/target-mips/op_helper.c > =================================================================== > --- qemu-git-trunk.orig/target-mips/op_helper.c 2014-11-12 07:41:26.597542010 +0000 > +++ qemu-git-trunk/target-mips/op_helper.c 2014-11-12 07:43:02.107518555 +0000 > @@ -1413,9 +1413,10 @@ void helper_mtc0_status(CPUMIPSState *en > void helper_mttc0_status(CPUMIPSState *env, target_ulong arg1) > { > int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); > + uint32_t mask = env->CP0_Status_rw_bitmask & ~0xf1000018; > CPUMIPSState *other = mips_cpu_map_tc(env, &other_tc); > > - other->CP0_Status = arg1 & ~0xf1000018; > + other->CP0_Status = (other->CP0_Status & ~mask) | (arg1 & mask); > sync_c0_status(env, other, other_tc); > } > > Reviewed-by: Leon Alrae