All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Blue Swirl <blauwirbel@gmail.com>, qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH 07/11] cris: avoid write only variables
Date: Thu, 7 Oct 2010 13:07:13 +0200	[thread overview]
Message-ID: <20101007110713.GE16104@laped.lan> (raw)
In-Reply-To: <m3pqvmpb7e.fsf@blackfin.pond.sub.org>

On Thu, Oct 07, 2010 at 12:08:05PM +0200, Markus Armbruster wrote:
> Blue Swirl <blauwirbel@gmail.com> writes:
> 
> > Compiling with GCC 4.6.0 20100925 produced warnings:
> > /src/qemu/target-cris/op_helper.c: In function 'helper_movl_sreg_reg':
> > /src/qemu/target-cris/op_helper.c:145:8: error: variable 'tlb_v' set
> > but not used [-Werror=unused-but-set-variable]
> > In file included from /src/qemu/target-cris/translate.c:3154:0:
> > /src/qemu/target-cris/translate_v10.c: In function 'dec10_prep_move_m':
> > /src/qemu/target-cris/translate_v10.c:111:22: error: variable 'rd' set
> > but not used [-Werror=unused-but-set-variable]
> >
> > Fix by making the variable declarations and their uses also conditional
> > to debug definition, delete rd.
> >
> > Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
> > ---
> >  target-cris/op_helper.c     |    6 ++++++
> >  target-cris/translate_v10.c |    5 ++---
> >  2 files changed, 8 insertions(+), 3 deletions(-)
> >
> > diff --git a/target-cris/op_helper.c b/target-cris/op_helper.c
> > index a60da94..28c79b1 100644
> > --- a/target-cris/op_helper.c
> > +++ b/target-cris/op_helper.c
> > @@ -142,7 +142,9 @@ void helper_movl_sreg_reg (uint32_t sreg, uint32_t reg)
> >  			uint32_t idx;
> >  			uint32_t lo, hi;
> >  			uint32_t vaddr;
> > +#ifdef CRIS_OP_HELPER_DEBUG
> >  			int tlb_v;
> > +#endif
> >
> >  			idx = set = env->sregs[SFR_RW_MM_TLB_SEL];
> >  			set >>= 4;
> > @@ -157,13 +159,17 @@ void helper_movl_sreg_reg (uint32_t sreg, uint32_t reg)
> >  			vaddr = EXTRACT_FIELD(env->tlbsets[srs-1][set][idx].hi,
> >  					      13, 31);
> >  			vaddr <<= TARGET_PAGE_BITS;
> > +#ifdef CRIS_OP_HELPER_DEBUG
> >  			tlb_v = EXTRACT_FIELD(env->tlbsets[srs-1][set][idx].lo,
> >  					    3, 3);
> > +#endif
> >  			env->tlbsets[srs - 1][set][idx].lo = lo;
> >  			env->tlbsets[srs - 1][set][idx].hi = hi;
> >
> > +#ifdef CRIS_OP_HELPER_DEBUG
> >  			D_LOG("tlb flush vaddr=%x v=%d pc=%x\n",
> >  				  vaddr, tlb_v, env->pc);
> > +#endif
> >  			tlb_flush_page(env, vaddr);
> >  		}
> >  	}
> 
> Could we eliminate the bothersome variable instead?
> 
> diff --git a/target-cris/op_helper.c b/target-cris/op_helper.c
> index a60da94..94e3e27 100644
> --- a/target-cris/op_helper.c
> +++ b/target-cris/op_helper.c
> @@ -142,7 +142,6 @@ void helper_movl_sreg_reg (uint32_t sreg, uint32_t reg)
>  			uint32_t idx;
>  			uint32_t lo, hi;
>  			uint32_t vaddr;
> -			int tlb_v;
>  
>  			idx = set = env->sregs[SFR_RW_MM_TLB_SEL];
>  			set >>= 4;
> @@ -157,13 +156,14 @@ void helper_movl_sreg_reg (uint32_t sreg, uint32_t reg)
>  			vaddr = EXTRACT_FIELD(env->tlbsets[srs-1][set][idx].hi,
>  					      13, 31);
>  			vaddr <<= TARGET_PAGE_BITS;
> -			tlb_v = EXTRACT_FIELD(env->tlbsets[srs-1][set][idx].lo,
> +			D_LOG("tlb flush vaddr=%x v=%d pc=%x\n", 
> +                              vaddr,
> +                              EXTRACT_FIELD(env->tlbsets[srs-1][set][idx].lo,
>  					    3, 3);
> +                              env->pc);
>  			env->tlbsets[srs - 1][set][idx].lo = lo;
>  			env->tlbsets[srs - 1][set][idx].hi = hi;
>  
> -			D_LOG("tlb flush vaddr=%x v=%d pc=%x\n", 
> -				  vaddr, tlb_v, env->pc);
>  			tlb_flush_page(env, vaddr);
>  		}
>  	}

Hi,

Sorry for the late answer.

Markus, I agree that removing tlb_v would have been better than ifdefs,
but i think that the intent I originally had in mind was that there should
not be a need to flush the entry from the QEMU TLB if the old guest
entry was not valid. 


The following patch works on my side:

diff --git a/target-cris/op_helper.c b/target-cris/op_helper.c
index a60da94..be9eb06 100644
--- a/target-cris/op_helper.c
+++ b/target-cris/op_helper.c
@@ -164,7 +164,9 @@ void helper_movl_sreg_reg (uint32_t sreg, uint32_t reg)
 
 			D_LOG("tlb flush vaddr=%x v=%d pc=%x\n", 
 				  vaddr, tlb_v, env->pc);
-			tlb_flush_page(env, vaddr);
+			if (tlb_v) {
+				tlb_flush_page(env, vaddr);
+			}
 		}
 	}
 #endif


The target-cris/translate_v10.c hunk looks good.

Blue, can you incorporate the tlb_v change in your patch set?
Or if you prefer, I can commit that part on my side.

Cheers

  reply	other threads:[~2010-10-07 11:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-06 21:33 [Qemu-devel] [PATCH 07/11] cris: avoid write only variables Blue Swirl
2010-10-07 10:08 ` Markus Armbruster
2010-10-07 11:07   ` Edgar E. Iglesias [this message]
2010-10-07 17:57     ` Blue Swirl
2010-10-07 19:44       ` Edgar E. Iglesias

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101007110713.GE16104@laped.lan \
    --to=edgar.iglesias@gmail.com \
    --cc=armbru@redhat.com \
    --cc=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.