[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] exec: Fix non-power-of-2 sized accesses
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v2] exec: Fix non-power-of-2 sized accesses |
Date: |
Fri, 16 Aug 2013 14:04:06 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8 |
On 08/16/2013 01:46 PM, Richard Henderson wrote:
> On 08/16/2013 08:37 AM, Alex Williamson wrote:
>> On Fri, 2013-08-16 at 08:27 -0700, Richard Henderson wrote:
>>> On 08/16/2013 05:50 AM, Alex Williamson wrote:
>>>> + /* Size must be a power of 2 */
>>>> + if (l & (l - 1)) {
>>>> + while (l & (access_size_max - 1)) {
>>>> + access_size_max >>= 1;
>>>> + }
>>>> + }
>>>> +
>>>
>>> Why the loop at all? x & -x extracts the lsb of x.
>>
>> l = 5, we want 4, not 1. Thanks,
>
> It still doesn't require a loop.
>
> l = 1 << (31 - clz32(l));
or even pow2floor() declared in qemu-common.h and implemented in
cutils.c. No need to reinvent what we already have.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature