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
x86
boot
bitops.h
Go to the documentation of this file.
1
/* -*- linux-c -*- ------------------------------------------------------- *
2
*
3
* Copyright (C) 1991, 1992 Linus Torvalds
4
* Copyright 2007 rPath, Inc. - All Rights Reserved
5
*
6
* This file is part of the Linux kernel, and is made available under
7
* the terms of the GNU General Public License version 2.
8
*
9
* ----------------------------------------------------------------------- */
10
11
/*
12
* Very simple bitops for the boot code.
13
*/
14
15
#ifndef BOOT_BITOPS_H
16
#define BOOT_BITOPS_H
17
#define _LINUX_BITOPS_H
/* Inhibit inclusion of <linux/bitops.h> */
18
19
static
inline
int
constant_test_bit(
int
nr
,
const
void
*
addr
)
20
{
21
const
u32
*
p
= (
const
u32
*)addr;
22
return
((1
UL
<< (nr & 31)) & (p[nr >> 5])) != 0;
23
}
24
static
inline
int
variable_test_bit(
int
nr
,
const
void
*
addr
)
25
{
26
u8
v
;
27
const
u32
*
p
= (
const
u32
*)addr;
28
29
asm
(
"btl %2,%1; setc %0"
:
"=qm"
(
v
) :
"m"
(*p),
"Ir"
(
nr
));
30
return
v
;
31
}
32
33
#define test_bit(nr,addr) \
34
(__builtin_constant_p(nr) ? \
35
constant_test_bit((nr),(addr)) : \
36
variable_test_bit((nr),(addr)))
37
38
static
inline
void
set_bit
(
int
nr,
void
*addr)
39
{
40
asm
(
"btsl %1,%0"
:
"+m"
(*(
u32
*)addr) :
"Ir"
(
nr
));
41
}
42
43
#endif
/* BOOT_BITOPS_H */
Generated on Thu Jan 10 2013 12:49:12 for Linux Kernel by
1.8.2