OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-generic/] [bitops.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
#ifndef _ASM_GENERIC_BITOPS_H_
2
#define _ASM_GENERIC_BITOPS_H_
3
 
4
/*
5
 * For the benefit of those who are trying to port Linux to another
6
 * architecture, here are some C-language equivalents.  You should
7
 * recode these in the native assembly language, if at all possible.
8
 * To guarantee atomicity, these routines call cli() and sti() to
9
 * disable interrupts while they operate.  (You have to provide inline
10
 * routines to cli() and sti().)
11
 *
12
 * Also note, these routines assume that you have 32 bit longs.
13
 * You will have to change this if you are trying to port Linux to the
14
 * Alpha architecture or to a Cray.  :-)
15
 *
16
 * C language equivalents written by Theodore Ts'o, 9/26/92
17
 */
18
 
19
extern __inline__ int set_bit(int nr,long * addr)
20
{
21
        int     mask, retval;
22
 
23
        addr += nr >> 5;
24
        mask = 1 << (nr & 0x1f);
25
        cli();
26
        retval = (mask & *addr) != 0;
27
        *addr |= mask;
28
        sti();
29
        return retval;
30
}
31
 
32
extern __inline__ int clear_bit(int nr, long * addr)
33
{
34
        int     mask, retval;
35
 
36
        addr += nr >> 5;
37
        mask = 1 << (nr & 0x1f);
38
        cli();
39
        retval = (mask & *addr) != 0;
40
        *addr &= ~mask;
41
        sti();
42
        return retval;
43
}
44
 
45
extern __inline__ int test_bit(int nr, long * addr)
46
{
47
        int     mask;
48
 
49
        addr += nr >> 5;
50
        mask = 1 << (nr & 0x1f);
51
        return ((mask & *addr) != 0);
52
}
53
 
54
#ifdef __KERNEL__
55
 
56
/*
57
 * ffs: find first bit set. This is defined the same way as
58
 * the libc and compiler builtin ffs routines, therefore
59
 * differs in spirit from the above ffz (man ffs).
60
 */
61
 
62
#define ffs(x) generic_ffs(x)
63
 
64
/*
65
 * hweightN: returns the hamming weight (i.e. the number
66
 * of bits set) of a N-bit word
67
 */
68
 
69
#define hweight32(x) generic_hweight32(x)
70
#define hweight16(x) generic_hweight16(x)
71
#define hweight8(x) generic_hweight8(x)
72
 
73
#endif /* __KERNEL__ */
74
 
75
#endif /* _ASM_GENERIC_BITOPS_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.