Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
4ffd8b38
Commit
4ffd8b38
authored
Nov 30, 2006
by
Ralf Baechle
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[MIPS] Remove userspace proofing from <asm/bitops.h>.
Signed-off-by:
Ralf Baechle
<
ralf@linux-mips.org
>
parent
e303e088
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
42 deletions
+21
-42
include/asm-mips/bitops.h
include/asm-mips/bitops.h
+21
-42
No files found.
include/asm-mips/bitops.h
View file @
4ffd8b38
...
...
@@ -10,10 +10,13 @@
#define _ASM_BITOPS_H
#include <linux/compiler.h>
#include <linux/irqflags.h>
#include <linux/types.h>
#include <asm/bug.h>
#include <asm/byteorder.h>
/* sigh ... */
#include <asm/cpu-features.h>
#include <asm/sgidefs.h>
#include <asm/war.h>
#if (_MIPS_SZLONG == 32)
#define SZLONG_LOG 5
...
...
@@ -29,32 +32,12 @@
#define cpu_to_lelongp(x) cpu_to_le64p((__u64 *) (x))
#endif
#ifdef __KERNEL__
#include <linux/irqflags.h>
#include <asm/sgidefs.h>
#include <asm/war.h>
/*
* clear_bit() doesn't provide any barrier for the compiler.
*/
#define smp_mb__before_clear_bit() smp_mb()
#define smp_mb__after_clear_bit() smp_mb()
/*
* Only disable interrupt for kernel mode stuff to keep usermode stuff
* that dares to use kernel include files alive.
*/
#define __bi_flags unsigned long flags
#define __bi_local_irq_save(x) local_irq_save(x)
#define __bi_local_irq_restore(x) local_irq_restore(x)
#else
#define __bi_flags
#define __bi_local_irq_save(x)
#define __bi_local_irq_restore(x)
#endif
/* __KERNEL__ */
/*
* set_bit - Atomically set a bit in memory
* @nr: the bit to set
...
...
@@ -93,13 +76,13 @@ static inline void set_bit(unsigned long nr, volatile unsigned long *addr)
}
else
{
volatile
unsigned
long
*
a
=
addr
;
unsigned
long
mask
;
__bi_
flags
;
unsigned
long
flags
;
a
+=
nr
>>
SZLONG_LOG
;
mask
=
1UL
<<
(
nr
&
SZLONG_MASK
);
__bi_
local_irq_save
(
flags
);
local_irq_save
(
flags
);
*
a
|=
mask
;
__bi_
local_irq_restore
(
flags
);
local_irq_restore
(
flags
);
}
}
...
...
@@ -141,13 +124,13 @@ static inline void clear_bit(unsigned long nr, volatile unsigned long *addr)
}
else
{
volatile
unsigned
long
*
a
=
addr
;
unsigned
long
mask
;
__bi_
flags
;
unsigned
long
flags
;
a
+=
nr
>>
SZLONG_LOG
;
mask
=
1UL
<<
(
nr
&
SZLONG_MASK
);
__bi_
local_irq_save
(
flags
);
local_irq_save
(
flags
);
*
a
&=
~
mask
;
__bi_
local_irq_restore
(
flags
);
local_irq_restore
(
flags
);
}
}
...
...
@@ -191,13 +174,13 @@ static inline void change_bit(unsigned long nr, volatile unsigned long *addr)
}
else
{
volatile
unsigned
long
*
a
=
addr
;
unsigned
long
mask
;
__bi_
flags
;
unsigned
long
flags
;
a
+=
nr
>>
SZLONG_LOG
;
mask
=
1UL
<<
(
nr
&
SZLONG_MASK
);
__bi_
local_irq_save
(
flags
);
local_irq_save
(
flags
);
*
a
^=
mask
;
__bi_
local_irq_restore
(
flags
);
local_irq_restore
(
flags
);
}
}
...
...
@@ -258,14 +241,14 @@ static inline int test_and_set_bit(unsigned long nr,
volatile
unsigned
long
*
a
=
addr
;
unsigned
long
mask
;
int
retval
;
__bi_
flags
;
unsigned
long
flags
;
a
+=
nr
>>
SZLONG_LOG
;
mask
=
1UL
<<
(
nr
&
SZLONG_MASK
);
__bi_
local_irq_save
(
flags
);
local_irq_save
(
flags
);
retval
=
(
mask
&
*
a
)
!=
0
;
*
a
|=
mask
;
__bi_
local_irq_restore
(
flags
);
local_irq_restore
(
flags
);
return
retval
;
}
...
...
@@ -330,14 +313,14 @@ static inline int test_and_clear_bit(unsigned long nr,
volatile
unsigned
long
*
a
=
addr
;
unsigned
long
mask
;
int
retval
;
__bi_
flags
;
unsigned
long
flags
;
a
+=
nr
>>
SZLONG_LOG
;
mask
=
1UL
<<
(
nr
&
SZLONG_MASK
);
__bi_
local_irq_save
(
flags
);
local_irq_save
(
flags
);
retval
=
(
mask
&
*
a
)
!=
0
;
*
a
&=
~
mask
;
__bi_
local_irq_restore
(
flags
);
local_irq_restore
(
flags
);
return
retval
;
}
...
...
@@ -399,23 +382,19 @@ static inline int test_and_change_bit(unsigned long nr,
}
else
{
volatile
unsigned
long
*
a
=
addr
;
unsigned
long
mask
,
retval
;
__bi_
flags
;
unsigned
long
flags
;
a
+=
nr
>>
SZLONG_LOG
;
mask
=
1UL
<<
(
nr
&
SZLONG_MASK
);
__bi_
local_irq_save
(
flags
);
local_irq_save
(
flags
);
retval
=
(
mask
&
*
a
)
!=
0
;
*
a
^=
mask
;
__bi_
local_irq_restore
(
flags
);
local_irq_restore
(
flags
);
return
retval
;
}
}
#undef __bi_flags
#undef __bi_local_irq_save
#undef __bi_local_irq_restore
#include <asm-generic/bitops/non-atomic.h>
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment