qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] translate-all: use bitmap helpers for PageDe


From: Emilio G. Cota
Subject: Re: [Qemu-devel] [PATCH v2] translate-all: use bitmap helpers for PageDesc's bitmap
Date: Wed, 22 Apr 2015 17:47:25 -0400
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Apr 22, 2015 at 22:30:23 +0200, Paolo Bonzini wrote:
> On 22/04/2015 18:53, Emilio G. Cota wrote:
> > @@ -1221,8 +1194,9 @@ void tb_invalidate_phys_page_fast(tb_page_addr_t 
> > start, int len)
> >          return;
> >      }
> >      if (p->code_bitmap) {
> > -        offset = start & ~TARGET_PAGE_MASK;
> > -        b = p->code_bitmap[offset >> 3] >> (offset & 7);
> > +        int nr = start & ~TARGET_PAGE_MASK;
> 
> This should be unsigned, otherwise the compiler might not make
> BIT_WORD(nr) a simple right shift (maybe it can see that nr > 0 thanks
> to the AND, but in principle x / 32 is not the same as x >> 5 if x is
> signed).

OK. Note that all bit{map,ops} helpers take a long as the bit position,
and then do BIT_WORD() on it--I was following that convention wrt sign.

> > +        int b = p->code_bitmap[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG - 1));
> 
> And this should be unsigned long.

Used an int because we only care about the least significant bits (len <= 8):

> >          if (b & ((1 << len) - 1)) {
> >              goto do_invalidate;
> >          }

But yes, an unsigned long here is more appropriate.

Thanks,

                Emilio



reply via email to

[Prev in Thread] Current Thread [Next in Thread]