From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KJ6Eh-00023u-Bt for qemu-devel@nongnu.org; Wed, 16 Jul 2008 08:35:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KJ6Eg-00023G-KM for qemu-devel@nongnu.org; Wed, 16 Jul 2008 08:35:58 -0400 Received: from [199.232.76.173] (port=45081 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KJ6Eg-000234-Gp for qemu-devel@nongnu.org; Wed, 16 Jul 2008 08:35:58 -0400 Received: from fmmailgate01.web.de ([217.72.192.221]:45599) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KJ6Eh-0002yq-1u for qemu-devel@nongnu.org; Wed, 16 Jul 2008 08:35:59 -0400 Received: from smtp07.web.de (fmsmtp07.dlan.cinetic.de [172.20.5.215]) by fmmailgate01.web.de (Postfix) with ESMTP id 2FFD3E82B633 for ; Wed, 16 Jul 2008 14:35:57 +0200 (CEST) Received: from [88.65.249.33] (helo=[139.25.109.167]) by smtp07.web.de with asmtp (TLSv1:AES256-SHA:256) (WEB.DE 4.109 #226) id 1KJ6Ef-00057m-00 for qemu-devel@nongnu.org; Wed, 16 Jul 2008 14:35:57 +0200 Message-ID: <487DEB2D.5040302@web.de> Date: Wed, 16 Jul 2008 14:35:57 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <761ea48b0807160530k59412f39p6ae0c90c2756fb58@mail.gmail.com> In-Reply-To: <761ea48b0807160530k59412f39p6ae0c90c2756fb58@mail.gmail.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Sender: jan.kiszka@web.de Subject: [Qemu-devel] Re: [4875] Remove unintended dereference, kills a warning (Jan Kiszka). Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Laurent Desnogues wrote: > On Wed, Jul 16, 2008 at 2:04 PM, Andreas Schwab wrote: >> Andrzej Zaborowski writes: >> >>> void OPPROTO op_tasb_rN(void) >>> { >>> - cond_t(*(int8_t *) env->gregs[PARAM1] == 0); >>> - *(int8_t *) env->gregs[PARAM1] |= 0x80; >>> + cond_t((env->gregs[PARAM1] && 0xff) == 0); >>> + *(int8_t *) &env->gregs[PARAM1] |= 0x80; >> That does not make any sense at all. The TAS insn operates on memory, >> not on a register (atomic operations only make sense on memory anyway). > > SH4 documentation says this: > > TAS.B @Rn > If (Rn) = 0, 1 → T, else 0 → T > 1 → MSB of (Rn) > > So indeed it looks like Jan and Andrzej patch is wrong. At least the audience is finally listening. ;) Is this one better? Index: qemu/target-sh4/op.c =================================================================== --- qemu.orig/target-sh4/op.c +++ qemu/target-sh4/op.c @@ -594,8 +594,9 @@ void OPPROTO op_shlr16_Rn(void) void OPPROTO op_tasb_rN(void) { - cond_t(*(int8_t *) env->gregs[PARAM1] == 0); - *(int8_t *) env->gregs[PARAM1] |= 0x80; + uint8_t val = ldub(env->gregs[PARAM1]); + cond_t(val == 0); + stb(env->gregs[PARAM1], val | 0x80); RETURN(); }