37#define __L4UTIL_BITOPS_HAVE_ARCH_SET_BIT
43 "lock; btsq %1,%0 \n\t"
54#define __L4UTIL_BITOPS_HAVE_ARCH_CLEAR_BIT
60 "lock; btrq %1,%0 \n\t"
71#define __L4UTIL_BITOPS_HAVE_ARCH_COMPLEMENT_BIT
73l4util_complement_bit(
int b,
volatile l4_umword_t * dest)
77 "lock; btcq %1,%0 \n\t"
88#define __L4UTIL_BITOPS_HAVE_ARCH_TEST_BIT
90l4util_test_bit(
int b,
const volatile l4_umword_t * dest)
110#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_TEST_AND_SET
118 "lock; btsq %2,%1 \n\t"
132#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_TEST_AND_RESET
140 "lock; btrq %2,%1 \n\t"
154#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_TEST_AND_COMPLEMENT
162 "lock; btcq %2,%1 \n\t"
176#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_SCAN_REVERSE
198#define __L4UTIL_BITOPS_HAVE_ARCH_BIT_SCAN_FORWARD
219#define __L4UTIL_BITOPS_HAVE_ARCH_FIND_FIRST_SET_BIT
221l4util_find_first_set_bit(
const void * dest,
l4_size_t size)
229 "lea -8(%%rdi),%%rdi \n\t"
230 "bsf (%%rdi),%%rax \n"
232 "sub %%rbx,%%rdi \n\t"
234 "add %%rdi,%%rax \n\t"
236 "=a" (res),
"=c" (dummy0),
"=D" (dummy1)
238 "a" (0),
"b" (dest),
"c" ((size + 63) >> 6),
"D" (dest)
245#define __L4UTIL_BITOPS_HAVE_ARCH_FIND_FIRST_ZERO_BIT
247l4util_find_first_zero_bit(
const void * dest,
l4_size_t size)
258 "xor -8(%%rdi),%%rax \n\t"
262 "sub %%rsi,%%rdi \n\t"
264 "add %%rdi,%%rdx \n\t"
266 "=a" (dummy0),
"=c" (dummy1),
"=d" (res),
"=D" (dummy2)
268 "a" (~0UL),
"c" ((size + 63) >> 6),
"d" (0),
"D" (dest),
"S" (dest)
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 __END_DECLS
End section with C types and functions.
#define L4_UNLIKELY(x)
Expression is unlikely to execute.
#define L4_INLINE
L4 Inline function attribute.
#define __BEGIN_DECLS
Start section with C types and functions.