[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