On 03/17/2015 07:58 AM, Paolo Bonzini wrote:
> On 17/03/2015 12:56, Stefan Hajnoczi wrote:
>> + for (f = ctz32(level) + 1, i = f - 1, level >>= f - 1;
>> + f != 33;
>> + i += f, level >>= f) {
>> p = s->bank[j].priority[i];
>> if (p <= p_intr) {
>> p_intr = p;
>> sir_intr = 32 * j + i;
>> }
>> - f = ffs(level >> 1);
>> + f = ctz32(level >> 1) + 1;
>> }
>
> Since it's 2.4, we might as well make the code nicer:
>
> while (level != 0) {
> i = ctz32(level);
> p = s->bank[j].priority[i];
> if (p <= p_intr) {
> p_intr = p;
> sir_intr = 32 * j + i;
> }
> level &= level - 1;
> }
Agreed.
r~