39#define __L4UTIL_BITOPS_HAVE_ARCH_SET_BIT
45 "lock; btsq %1,%0 \n\t"
56#define __L4UTIL_BITOPS_HAVE_ARCH_CLEAR_BIT
62 "lock; btrq %1,%0 \n\t"
73#define __L4UTIL_BITOPS_HAVE_ARCH_COMPLEMENT_BIT
75l4util_complement_bit(
int b,
volatile l4_umword_t * dest)
79 "lock; btcq %1,%0 \n\t"
90#define __L4UTIL_BITOPS_HAVE_ARCH_TEST_BIT
92l4util_test_bit(
int b,
const volatile l4_umword_t * dest)
112#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_TEST_AND_SET
120 "lock; btsq %2,%1 \n\t"
134#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_TEST_AND_RESET
142 "lock; btrq %2,%1 \n\t"
156#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_TEST_AND_COMPLEMENT
164 "lock; btcq %2,%1 \n\t"
178#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_SCAN_REVERSE
200#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_SCAN_FORWARD
221#define __L4UTIL_BITOPS_HAVE_ARCH_FIND_FIRST_SET_BIT
223l4util_find_first_set_bit(
const void * dest,
l4_size_t size)
231 "lea -8(%%rdi),%%rdi \n\t"
232 "bsf (%%rdi),%%rax \n"
234 "sub %%rbx,%%rdi \n\t"
236 "add %%rdi,%%rax \n\t"
238 "=a" (res),
"=c" (dummy0),
"=D" (dummy1)
240 "a" (0),
"b" (dest),
"c" ((size + 63) >> 6),
"D" (dest)
247#define __L4UTIL_BITOPS_HAVE_ARCH_FIND_FIRST_ZERO_BIT
249l4util_find_first_zero_bit(
const void * dest,
l4_size_t size)
260 "xor -8(%%rdi),%%rax \n\t"
264 "sub %%rsi,%%rdi \n\t"
266 "add %%rdi,%%rdx \n\t"
268 "=a" (dummy0),
"=c" (dummy1),
"=d" (res),
"=D" (dummy2)
270 "a" (~0UL),
"c" ((size + 63) >> 6),
"d" (0),
"D" (dest),
"S" (dest)
L4 compiler related defines.
unsigned int l4_size_t
Unsigned size type.
unsigned long l4_umword_t
Unsigned machine word.
signed long l4_mword_t
Signed machine word.
signed char l4_int8_t
Signed 8bit value.
#define L4_UNLIKELY(x)
Expression is unlikely to execute.
#define L4_INLINE
L4 Inline function attribute.
#define L4_BEGIN_DECLS
Start section with C types and functions.
#define L4_END_DECLS
End section with C types and functions.