[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Re: [PATCH] Correct use of ! and &
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] Re: [PATCH] Correct use of ! and & |
Date: |
Sat, 15 Jan 2011 13:59:28 +0100 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
On Fri, Jan 14, 2011 at 11:25:51PM +0100, Aurelien Jarno wrote:
> On Fri, Jan 14, 2011 at 10:05:11PM +0000, Blue Swirl wrote:
> > Combining bitwise AND and logical NOT is suspicious.
> >
> > Fixed by this Coccinelle script:
> > // From http://article.gmane.org/gmane.linux.kernel/646367
> > @@ expression E1,E2; @@
> > (
> > !E1 & !E2
> > |
> > - !E1 & E2
> > + !(E1 & E2)
> > )
> >
> > Signed-off-by: Blue Swirl <address@hidden>
> > ---
> > target-sh4/helper.c | 4 ++--
> > 1 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/target-sh4/helper.c b/target-sh4/helper.c
> > index 2343366..c6af959 100644
> > --- a/target-sh4/helper.c
> > +++ b/target-sh4/helper.c
> > @@ -380,7 +380,7 @@ static int get_mmu_address(CPUState * env,
> > target_ulong * physical,
> > MMU_DTLB_VIOLATION_READ;
> > } else if ((rw == 1) && !(matching->pr & 1)) {
> > n = MMU_DTLB_VIOLATION_WRITE;
> > - } else if ((rw == 1) & !matching->d) {
> > + } else if (!(matching->d & (rw == 1))) {
>
> Here, we really want to do a logical comparison, so && is probably
> better. Note however that matching->d is a single bit so the code is
> doing what it is supposed to do.
>
> > n = MMU_DTLB_INITIAL_WRITE;
> > } else {
> > *prot = PAGE_READ;
> > @@ -430,7 +430,7 @@ static int get_physical_address(CPUState * env,
> > target_ulong * physical,
> > }
> >
> > /* If MMU is disabled, return the corresponding physical page */
> > - if (!env->mmucr & MMUCR_AT) {
> > + if (!(env->mmucr & MMUCR_AT)) {
> > *physical = address & 0x1FFFFFFF;
> > *prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
> > return MMU_OK;
>
> This one is correct.
>
> Thanks for spotting these issues.
>
I have just committed a patch to fix them.
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net