diff options
author | Stefan Hajnoczi <stefanha@redhat.com> | 2015-03-23 15:29:27 +0000 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2015-04-28 15:36:08 +0200 |
commit | bd2a88840e2496e29442f333c8fdd6491e831a35 (patch) | |
tree | 95ced0dfbbd8ac39d8e73b55a414398dccb106ad /hw/i2c | |
parent | 786a4ea82ec9c87e3a895cf41081029b285a5fe5 (diff) | |
download | hqemu-bd2a88840e2496e29442f333c8fdd6491e831a35.zip hqemu-bd2a88840e2496e29442f333c8fdd6491e831a35.tar.gz |
Convert ffs() != 0 callers to ctz32()
There are a number of ffs(3) callers that do roughly:
bit = ffs(val);
if (bit) {
do_something(bit - 1);
}
This pattern can be converted to ctz32() like this:
zeroes = ctz32(val);
if (zeroes != 32) {
do_something(zeroes);
}
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 1427124571-28598-6-git-send-email-stefanha@redhat.com
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'hw/i2c')
-rw-r--r-- | hw/i2c/omap_i2c.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c index d63278d..b6f544a 100644 --- a/hw/i2c/omap_i2c.c +++ b/hw/i2c/omap_i2c.c @@ -171,9 +171,13 @@ static uint32_t omap_i2c_read(void *opaque, hwaddr addr) case 0x0c: /* I2C_IV */ if (s->revision >= OMAP2_INTR_REV) break; - ret = ffs(s->stat & s->mask); - if (ret) - s->stat ^= 1 << (ret - 1); + ret = ctz32(s->stat & s->mask); + if (ret != 32) { + s->stat ^= 1 << ret; + ret++; + } else { + ret = 0; + } omap_i2c_interrupts_update(s); return ret; |