aboutsummaryrefslogtreecommitdiff
path: root/hw/apic.c
diff options
context:
space:
mode:
authoraurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162>2008-10-12 20:16:03 +0000
committeraurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162>2008-10-12 20:16:03 +0000
commitbb7e729397dc6e6f3147235feb8cda3b229355b0 (patch)
tree18604385474b11f2fd0c8220fdd4b6d9003ed70c /hw/apic.c
parenta013cc65933eb4ba51f58883cae5e362fd56ab46 (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/apic.c')
-rw-r--r--hw/apic.c38
1 files changed, 3 insertions, 35 deletions
diff --git a/hw/apic.c b/hw/apic.c
index 762852e90f..a2915f8121 100644
--- a/hw/apic.c
+++ b/hw/apic.c
@@ -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)