diff options
author | aurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-10-12 20:16:03 +0000 |
---|---|---|
committer | aurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-10-12 20:16:03 +0000 |
commit | bb7e729397dc6e6f3147235feb8cda3b229355b0 (patch) | |
tree | 18604385474b11f2fd0c8220fdd4b6d9003ed70c /hw | |
parent | a013cc65933eb4ba51f58883cae5e362fd56ab46 (diff) |
hw/apic.c: use functions from host-utils.h
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5469 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw')
-rw-r--r-- | hw/apic.c | 38 |
1 files changed, 3 insertions, 35 deletions
@@ -20,7 +20,7 @@ #include "hw.h" #include "pc.h" #include "qemu-timer.h" -#include "osdep.h" +#include "host-utils.h" //#define DEBUG_APIC //#define DEBUG_IOAPIC @@ -108,45 +108,13 @@ static void apic_update_irq(APICState *s); /* Find first bit starting from msb */ static int fls_bit(uint32_t value) { -#if QEMU_GNUC_PREREQ(3, 4) - return 31 - __builtin_clz(value); -#else - unsigned int ret = 0; - - if (value > 0xffff) - value >>= 16, ret = 16; - if (value > 0xff) - value >>= 8, ret += 8; - if (value > 0xf) - value >>= 4, ret += 4; - if (value > 0x3) - value >>= 2, ret += 2; - return ret + (value >> 1); -#endif + return 31 - clz32(value); } /* Find first bit starting from lsb */ static int ffs_bit(uint32_t value) { -#if QEMU_GNUC_PREREQ(3, 4) - return __builtin_ffs(value) - 1; -#else - unsigned int ret = 0; - - if (!value) - return 0; - if (!(value & 0xffff)) - value >>= 16, ret = 16; - if (!(value & 0xff)) - value >>= 8, ret += 8; - if (!(value & 0xf)) - value >>= 4, ret += 4; - if (!(value & 0x3)) - value >>= 2, ret += 2; - if (!(value & 0x1)) - ret++; - return ret; -#endif + return ctz32(value); } static inline void set_bit(uint32_t *tab, int index) |