summaryrefslogtreecommitdiff
path: root/src/arch/i386/include/bitops.h
blob: 9206465c770079525d5663d3833026853b0ccee0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef I386_BITOPS_H
#define I386_BITOPS_H

/**
 * log2 - Find the truncated log base 2 of x
 */

static inline unsigned long log2(unsigned long x)
{
	unsigned long r = 0;
	__asm__(
		"bsrl %1, %0\n\t"
		"jnz 1f\n\t"
		"movl $-1, %0\n\t"
		"1:\n\t"
		: "=r" (r) : "r" (x));
	return r;

}
#endif /* I386_BITOPS_H */