Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
cris
include
arch-v32
arch
bitops.h
Go to the documentation of this file.
1
#ifndef _ASM_CRIS_ARCH_BITOPS_H
2
#define _ASM_CRIS_ARCH_BITOPS_H
3
4
/*
5
* Helper functions for the core of the ff[sz] functions. They compute the
6
* number of leading zeroes of a bits-in-byte, byte-in-word and
7
* word-in-dword-swapped number. They differ in that the first function also
8
* inverts all bits in the input.
9
*/
10
11
static
inline
unsigned
long
12
cris_swapnwbrlz(
unsigned
long
w
)
13
{
14
unsigned
long
res
;
15
16
__asm__
__volatile__ (
"swapnwbr %0\n\t"
17
"lz %0,%0"
18
:
"=r"
(res) :
"0"
(w));
19
20
return
res
;
21
}
22
23
static
inline
unsigned
long
24
cris_swapwbrlz(
unsigned
long
w)
25
{
26
unsigned
long
res
;
27
28
__asm__
__volatile__ (
"swapwbr %0\n\t"
29
"lz %0,%0"
30
:
"=r"
(res) :
"0"
(w));
31
32
return
res
;
33
}
34
35
/*
36
* Find First Zero in word. Undefined if no zero exist, so the caller should
37
* check against ~0 first.
38
*/
39
static
inline
unsigned
long
40
ffz
(
unsigned
long
w)
41
{
42
return
cris_swapnwbrlz(w);
43
}
44
45
/*
46
* Find First Set bit in word. Undefined if no 1 exist, so the caller
47
* should check against 0 first.
48
*/
49
static
inline
unsigned
long
50
__ffs
(
unsigned
long
w)
51
{
52
return
cris_swapnwbrlz(~w);
53
}
54
55
/*
56
* Find First Bit that is set.
57
*/
58
static
inline
unsigned
long
59
kernel_ffs(
unsigned
long
w)
60
{
61
return
w ? cris_swapwbrlz (w) + 1 : 0;
62
}
63
64
#endif
/* _ASM_CRIS_ARCH_BITOPS_H */
Generated on Thu Jan 10 2013 12:49:10 for Linux Kernel by
1.8.2