Revision bad5b1ec
b/host-utils.h | ||
---|---|---|
51 | 51 |
|
52 | 52 |
static always_inline int clz32(uint32_t val) |
53 | 53 |
{ |
54 |
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
|
54 |
#if QEMU_GNUC_PREREQ(3, 4)
|
|
55 | 55 |
if (val) |
56 | 56 |
return __builtin_clz(val); |
57 | 57 |
else |
... | ... | |
93 | 93 |
|
94 | 94 |
static always_inline int clz64(uint64_t val) |
95 | 95 |
{ |
96 |
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
|
96 |
#if QEMU_GNUC_PREREQ(3, 4)
|
|
97 | 97 |
if (val) |
98 | 98 |
return __builtin_clzll(val); |
99 | 99 |
else |
... | ... | |
118 | 118 |
|
119 | 119 |
static always_inline int ctz32 (uint32_t val) |
120 | 120 |
{ |
121 |
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
|
121 |
#if QEMU_GNUC_PREREQ(3, 4)
|
|
122 | 122 |
if (val) |
123 | 123 |
return __builtin_ctz(val); |
124 | 124 |
else |
... | ... | |
162 | 162 |
|
163 | 163 |
static always_inline int ctz64 (uint64_t val) |
164 | 164 |
{ |
165 |
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
|
165 |
#if QEMU_GNUC_PREREQ(3, 4)
|
|
166 | 166 |
if (val) |
167 | 167 |
return __builtin_ctz(val); |
168 | 168 |
else |
... | ... | |
206 | 206 |
|
207 | 207 |
static always_inline int ctpop32 (uint32_t val) |
208 | 208 |
{ |
209 |
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
|
209 |
#if QEMU_GNUC_PREREQ(3, 4)
|
|
210 | 210 |
return __builtin_popcount(val); |
211 | 211 |
#else |
212 | 212 |
val = (val & 0x55555555) + ((val >> 1) & 0x55555555); |
... | ... | |
221 | 221 |
|
222 | 222 |
static always_inline int ctpop64 (uint64_t val) |
223 | 223 |
{ |
224 |
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
|
224 |
#if QEMU_GNUC_PREREQ(3, 4)
|
|
225 | 225 |
return __builtin_popcountll(val); |
226 | 226 |
#else |
227 | 227 |
val = (val & 0x5555555555555555ULL) + ((val >> 1) & 0x5555555555555555ULL); |
b/hw/apic.c | ||
---|---|---|
20 | 20 |
#include "hw.h" |
21 | 21 |
#include "pc.h" |
22 | 22 |
#include "qemu-timer.h" |
23 |
#include "osdep.h" |
|
23 | 24 |
|
24 | 25 |
//#define DEBUG_APIC |
25 | 26 |
//#define DEBUG_IOAPIC |
... | ... | |
107 | 108 |
/* Find first bit starting from msb */ |
108 | 109 |
static int fls_bit(uint32_t value) |
109 | 110 |
{ |
110 |
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
|
111 |
#if QEMU_GNUC_PREREQ(3, 4)
|
|
111 | 112 |
return 31 - __builtin_clz(value); |
112 | 113 |
#else |
113 | 114 |
unsigned int ret = 0; |
... | ... | |
127 | 128 |
/* Find first bit starting from lsb */ |
128 | 129 |
static int ffs_bit(uint32_t value) |
129 | 130 |
{ |
130 |
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
|
|
131 |
#if QEMU_GNUC_PREREQ(3, 4)
|
|
131 | 132 |
return __builtin_ffs(value) - 1; |
132 | 133 |
#else |
133 | 134 |
unsigned int ret = 0; |
b/osdep.h | ||
---|---|---|
62 | 62 |
|
63 | 63 |
#define qemu_printf printf |
64 | 64 |
|
65 |
#if defined (__GNUC__) && defined (__GNUC_MINOR_) |
|
66 |
# define QEMU_GNUC_PREREQ(maj, min) \ |
|
67 |
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) |
|
68 |
#else |
|
69 |
# define QEMU_GNUC_PREREQ(maj, min) 0 |
|
70 |
#endif |
|
71 |
|
|
65 | 72 |
void *qemu_memalign(size_t alignment, size_t size); |
66 | 73 |
void *qemu_vmalloc(size_t size); |
67 | 74 |
void qemu_vfree(void *ptr); |
Also available in: Unified diff