Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/csky/include/asm/bitops.h
26493 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
3
#ifndef __ASM_CSKY_BITOPS_H
4
#define __ASM_CSKY_BITOPS_H
5
6
#include <linux/compiler.h>
7
#include <asm/barrier.h>
8
9
/*
10
* asm-generic/bitops/ffs.h
11
*/
12
static inline int ffs(int x)
13
{
14
if (!x)
15
return 0;
16
17
asm volatile (
18
"brev %0\n"
19
"ff1 %0\n"
20
"addi %0, 1\n"
21
: "=&r"(x)
22
: "0"(x));
23
return x;
24
}
25
26
/*
27
* asm-generic/bitops/__ffs.h
28
*/
29
static __always_inline unsigned long __ffs(unsigned long x)
30
{
31
asm volatile (
32
"brev %0\n"
33
"ff1 %0\n"
34
: "=&r"(x)
35
: "0"(x));
36
return x;
37
}
38
39
/*
40
* asm-generic/bitops/fls.h
41
*/
42
static __always_inline int fls(unsigned int x)
43
{
44
asm volatile(
45
"ff1 %0\n"
46
: "=&r"(x)
47
: "0"(x));
48
49
return (32 - x);
50
}
51
52
/*
53
* asm-generic/bitops/__fls.h
54
*/
55
static __always_inline unsigned long __fls(unsigned long x)
56
{
57
return fls(x) - 1;
58
}
59
60
#include <asm-generic/bitops/ffz.h>
61
#include <asm-generic/bitops/fls64.h>
62
63
#ifndef _LINUX_BITOPS_H
64
#error only <linux/bitops.h> can be included directly
65
#endif
66
67
#include <asm-generic/bitops/sched.h>
68
#include <asm-generic/bitops/hweight.h>
69
#include <asm-generic/bitops/lock.h>
70
#include <asm-generic/bitops/atomic.h>
71
72
/*
73
* bug fix, why only could use atomic!!!!
74
*/
75
#include <asm-generic/bitops/non-atomic.h>
76
77
#include <asm-generic/bitops/le.h>
78
#include <asm-generic/bitops/ext2-atomic.h>
79
#endif /* __ASM_CSKY_BITOPS_H */
80
81