#ifndef _ARCH_I386_LOCAL_H
#define _ARCH_I386_LOCAL_H
-#include <linux/percpu.h>
-#include <asm/system.h>
-#include <asm/atomic.h>
-
-typedef struct
-{
- atomic_long_t a;
-} local_t;
-
-#define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
-
-#define local_read(l) atomic_long_read(&(l)->a)
-#define local_set(l,i) atomic_long_set(&(l)->a, (i))
-
-static __inline__ void local_inc(local_t *l)
+static inline void local_inc(local_t *l)
{
__asm__ __volatile__(
"incl %0"
:"+m" (l->a.counter));
}
-static __inline__ void local_dec(local_t *l)
+static inline void local_dec(local_t *l)
{
__asm__ __volatile__(
"decl %0"
:"+m" (l->a.counter));
}
-static __inline__ void local_add(long i, local_t *l)
+static inline void local_add(long i, local_t *l)
{
__asm__ __volatile__(
"addl %1,%0"
:"ir" (i));
}
-static __inline__ void local_sub(long i, local_t *l)
+static inline void local_sub(long i, local_t *l)
{
__asm__ __volatile__(
"subl %1,%0"
* true if the result is zero, or false for all
* other cases.
*/
-static __inline__ int local_sub_and_test(long i, local_t *l)
+static inline int local_sub_and_test(long i, local_t *l)
{
unsigned char c;
* returns true if the result is 0, or false for all other
* cases.
*/
-static __inline__ int local_dec_and_test(local_t *l)
+static inline int local_dec_and_test(local_t *l)
{
unsigned char c;
* and returns true if the result is zero, or false for all
* other cases.
*/
-static __inline__ int local_inc_and_test(local_t *l)
+static inline int local_inc_and_test(local_t *l)
{
unsigned char c;
* if the result is negative, or false when
* result is greater than or equal to zero.
*/
-static __inline__ int local_add_negative(long i, local_t *l)
+static inline int local_add_negative(long i, local_t *l)
{
unsigned char c;
*
* Atomically adds @i to @l and returns @i + @l
*/
-static __inline__ long local_add_return(long i, local_t *l)
+static inline long local_add_return(long i, local_t *l)
{
long __i;
#ifdef CONFIG_M386
#endif
}
-static __inline__ long local_sub_return(long i, local_t *l)
+static inline long local_sub_return(long i, local_t *l)
{
return local_add_return(-i,l);
}
#ifndef _ARCH_X8664_LOCAL_H
#define _ARCH_X8664_LOCAL_H
-#include <linux/percpu.h>
-#include <asm/atomic.h>
-
-typedef struct
-{
- atomic_long_t a;
-} local_t;
-
-#define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
-
-#define local_read(l) atomic_long_read(&(l)->a)
-#define local_set(l,i) atomic_long_set(&(l)->a, (i))
-
static inline void local_inc(local_t *l)
{
__asm__ __volatile__(
* true if the result is zero, or false for all
* other cases.
*/
-static __inline__ int local_sub_and_test(long i, local_t *l)
+static inline int local_sub_and_test(long i, local_t *l)
{
unsigned char c;
* returns true if the result is 0, or false for all other
* cases.
*/
-static __inline__ int local_dec_and_test(local_t *l)
+static inline int local_dec_and_test(local_t *l)
{
unsigned char c;
* and returns true if the result is zero, or false for all
* other cases.
*/
-static __inline__ int local_inc_and_test(local_t *l)
+static inline int local_inc_and_test(local_t *l)
{
unsigned char c;
* if the result is negative, or false when
* result is greater than or equal to zero.
*/
-static __inline__ int local_add_negative(long i, local_t *l)
+static inline int local_add_negative(long i, local_t *l)
{
unsigned char c;
*
* Atomically adds @i to @l and returns @i + @l
*/
-static __inline__ long local_add_return(long i, local_t *l)
+static inline long local_add_return(long i, local_t *l)
{
long __i = i;
__asm__ __volatile__(
return i + __i;
}
-static __inline__ long local_sub_return(long i, local_t *l)
+static inline long local_sub_return(long i, local_t *l)
{
return local_add_return(-i,l);
}