Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 45456
b: refs/heads/master
c: 2442076
h: refs/heads/master
v: v3
  • Loading branch information
Andi Kleen authored and Andi Kleen committed Jan 11, 2007
1 parent 4abdf60 commit 55018e8
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 343cde51b3b856470eea24a89f00166b8e2d7272
refs/heads/master: 24420760c3701ff422b344e047a20ca09b76fc64
34 changes: 20 additions & 14 deletions trunk/include/asm-x86_64/bitops.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@

#include <asm/alternative.h>

#define ADDR (*(volatile long *) addr)
#if __GNUC__ < 4 || __GNUC_MINOR__ < 1
/* Technically wrong, but this avoids compilation errors on some gcc
versions. */
#define ADDR "=m" (*(volatile long *) addr)
#else
#define ADDR "+m" (*(volatile long *) addr)
#endif

/**
* set_bit - Atomically set a bit in memory
Expand All @@ -23,7 +29,7 @@ static __inline__ void set_bit(int nr, volatile void * addr)
{
__asm__ __volatile__( LOCK_PREFIX
"btsl %1,%0"
:"+m" (ADDR)
:ADDR
:"dIr" (nr) : "memory");
}

Expand All @@ -40,7 +46,7 @@ static __inline__ void __set_bit(int nr, volatile void * addr)
{
__asm__ volatile(
"btsl %1,%0"
:"+m" (ADDR)
:ADDR
:"dIr" (nr) : "memory");
}

Expand All @@ -58,15 +64,15 @@ static __inline__ void clear_bit(int nr, volatile void * addr)
{
__asm__ __volatile__( LOCK_PREFIX
"btrl %1,%0"
:"+m" (ADDR)
:ADDR
:"dIr" (nr));
}

static __inline__ void __clear_bit(int nr, volatile void * addr)
{
__asm__ __volatile__(
"btrl %1,%0"
:"+m" (ADDR)
:ADDR
:"dIr" (nr));
}

Expand All @@ -86,7 +92,7 @@ static __inline__ void __change_bit(int nr, volatile void * addr)
{
__asm__ __volatile__(
"btcl %1,%0"
:"+m" (ADDR)
:ADDR
:"dIr" (nr));
}

Expand All @@ -103,7 +109,7 @@ static __inline__ void change_bit(int nr, volatile void * addr)
{
__asm__ __volatile__( LOCK_PREFIX
"btcl %1,%0"
:"+m" (ADDR)
:ADDR
:"dIr" (nr));
}

Expand All @@ -121,7 +127,7 @@ static __inline__ int test_and_set_bit(int nr, volatile void * addr)

__asm__ __volatile__( LOCK_PREFIX
"btsl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"=r" (oldbit),ADDR
:"dIr" (nr) : "memory");
return oldbit;
}
Expand All @@ -141,7 +147,7 @@ static __inline__ int __test_and_set_bit(int nr, volatile void * addr)

__asm__(
"btsl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"=r" (oldbit),ADDR
:"dIr" (nr));
return oldbit;
}
Expand All @@ -160,7 +166,7 @@ static __inline__ int test_and_clear_bit(int nr, volatile void * addr)

__asm__ __volatile__( LOCK_PREFIX
"btrl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"=r" (oldbit),ADDR
:"dIr" (nr) : "memory");
return oldbit;
}
Expand All @@ -180,7 +186,7 @@ static __inline__ int __test_and_clear_bit(int nr, volatile void * addr)

__asm__(
"btrl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"=r" (oldbit),ADDR
:"dIr" (nr));
return oldbit;
}
Expand All @@ -192,7 +198,7 @@ static __inline__ int __test_and_change_bit(int nr, volatile void * addr)

__asm__ __volatile__(
"btcl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"=r" (oldbit),ADDR
:"dIr" (nr) : "memory");
return oldbit;
}
Expand All @@ -211,7 +217,7 @@ static __inline__ int test_and_change_bit(int nr, volatile void * addr)

__asm__ __volatile__( LOCK_PREFIX
"btcl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"+m" (ADDR)
:"=r" (oldbit),ADDR
:"dIr" (nr) : "memory");
return oldbit;
}
Expand All @@ -237,7 +243,7 @@ static __inline__ int variable_test_bit(int nr, volatile const void * addr)
__asm__ __volatile__(
"btl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit)
:"m" (ADDR),"dIr" (nr));
:"m" (*(volatile long *)addr),"dIr" (nr));
return oldbit;
}

Expand Down

0 comments on commit 55018e8

Please sign in to comment.