git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6
[pandora-kernel.git]
/
include
/
asm-i386
/
atomic.h
diff --git
a/include/asm-i386/atomic.h
b/include/asm-i386/atomic.h
index
22d80ec
..
c57441b
100644
(file)
--- a/
include/asm-i386/atomic.h
+++ b/
include/asm-i386/atomic.h
@@
-1,7
+1,6
@@
#ifndef __ARCH_I386_ATOMIC__
#define __ARCH_I386_ATOMIC__
#ifndef __ARCH_I386_ATOMIC__
#define __ARCH_I386_ATOMIC__
-#include <linux/config.h>
#include <linux/compiler.h>
#include <asm/processor.h>
#include <linux/compiler.h>
#include <asm/processor.h>
@@
-15,7
+14,7
@@
* on us. We need to use _exactly_ the address the user gave us,
* not some alias that contains the same information.
*/
* on us. We need to use _exactly_ the address the user gave us,
* not some alias that contains the same information.
*/
-typedef struct {
volatile
int counter; } atomic_t;
+typedef struct { int counter; } atomic_t;
#define ATOMIC_INIT(i) { (i) }
#define ATOMIC_INIT(i) { (i) }
@@
-47,8
+46,8
@@
static __inline__ void atomic_add(int i, atomic_t *v)
{
__asm__ __volatile__(
LOCK_PREFIX "addl %1,%0"
{
__asm__ __volatile__(
LOCK_PREFIX "addl %1,%0"
- :"
=
m" (v->counter)
- :"ir" (i)
, "m" (v->counter)
);
+ :"
+
m" (v->counter)
+ :"ir" (i));
}
/**
}
/**
@@
-62,8
+61,8
@@
static __inline__ void atomic_sub(int i, atomic_t *v)
{
__asm__ __volatile__(
LOCK_PREFIX "subl %1,%0"
{
__asm__ __volatile__(
LOCK_PREFIX "subl %1,%0"
- :"
=
m" (v->counter)
- :"ir" (i)
, "m" (v->counter)
);
+ :"
+
m" (v->counter)
+ :"ir" (i));
}
/**
}
/**
@@
-81,8
+80,8
@@
static __inline__ int atomic_sub_and_test(int i, atomic_t *v)
__asm__ __volatile__(
LOCK_PREFIX "subl %2,%0; sete %1"
__asm__ __volatile__(
LOCK_PREFIX "subl %2,%0; sete %1"
- :"
=
m" (v->counter), "=qm" (c)
- :"ir" (i)
, "m" (v->counter)
: "memory");
+ :"
+
m" (v->counter), "=qm" (c)
+ :"ir" (i) : "memory");
return c;
}
return c;
}
@@
-96,8
+95,7
@@
static __inline__ void atomic_inc(atomic_t *v)
{
__asm__ __volatile__(
LOCK_PREFIX "incl %0"
{
__asm__ __volatile__(
LOCK_PREFIX "incl %0"
- :"=m" (v->counter)
- :"m" (v->counter));
+ :"+m" (v->counter));
}
/**
}
/**
@@
-110,8
+108,7
@@
static __inline__ void atomic_dec(atomic_t *v)
{
__asm__ __volatile__(
LOCK_PREFIX "decl %0"
{
__asm__ __volatile__(
LOCK_PREFIX "decl %0"
- :"=m" (v->counter)
- :"m" (v->counter));
+ :"+m" (v->counter));
}
/**
}
/**
@@
-128,8
+125,8
@@
static __inline__ int atomic_dec_and_test(atomic_t *v)
__asm__ __volatile__(
LOCK_PREFIX "decl %0; sete %1"
__asm__ __volatile__(
LOCK_PREFIX "decl %0; sete %1"
- :"
=
m" (v->counter), "=qm" (c)
- :
"m" (v->counter)
: "memory");
+ :"
+
m" (v->counter), "=qm" (c)
+ : : "memory");
return c != 0;
}
return c != 0;
}
@@
-147,8
+144,8
@@
static __inline__ int atomic_inc_and_test(atomic_t *v)
__asm__ __volatile__(
LOCK_PREFIX "incl %0; sete %1"
__asm__ __volatile__(
LOCK_PREFIX "incl %0; sete %1"
- :"
=
m" (v->counter), "=qm" (c)
- :
"m" (v->counter)
: "memory");
+ :"
+
m" (v->counter), "=qm" (c)
+ : : "memory");
return c != 0;
}
return c != 0;
}
@@
-167,8
+164,8
@@
static __inline__ int atomic_add_negative(int i, atomic_t *v)
__asm__ __volatile__(
LOCK_PREFIX "addl %2,%0; sets %1"
__asm__ __volatile__(
LOCK_PREFIX "addl %2,%0; sets %1"
- :"
=
m" (v->counter), "=qm" (c)
- :"ir" (i)
, "m" (v->counter)
: "memory");
+ :"
+
m" (v->counter), "=qm" (c)
+ :"ir" (i) : "memory");
return c;
}
return c;
}
@@
-183,23
+180,24
@@
static __inline__ int atomic_add_return(int i, atomic_t *v)
{
int __i;
#ifdef CONFIG_M386
{
int __i;
#ifdef CONFIG_M386
+ unsigned long flags;
if(unlikely(boot_cpu_data.x86==3))
goto no_xadd;
#endif
/* Modern 486+ processor */
__i = i;
__asm__ __volatile__(
if(unlikely(boot_cpu_data.x86==3))
goto no_xadd;
#endif
/* Modern 486+ processor */
__i = i;
__asm__ __volatile__(
- LOCK_PREFIX "xaddl %0, %1
;
"
- :"
=r"(i
)
- :
"m"(v->counter), "0"(i)
);
+ LOCK_PREFIX "xaddl %0, %1"
+ :"
+r" (i), "+m" (v->counter
)
+ :
: "memory"
);
return i + __i;
#ifdef CONFIG_M386
no_xadd: /* Legacy 386 processor */
return i + __i;
#ifdef CONFIG_M386
no_xadd: /* Legacy 386 processor */
- local_irq_
disable(
);
+ local_irq_
save(flags
);
__i = atomic_read(v);
atomic_set(v, i + __i);
__i = atomic_read(v);
atomic_set(v, i + __i);
- local_irq_
enable(
);
+ local_irq_
restore(flags
);
return i + __i;
#endif
}
return i + __i;
#endif
}