-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
alpha: fix build failures from system.h dismemberment
commit ec22120 "Disintegrate asm/system.h for Alpha" combined with commit b4816af "Move the asm-generic/system.h xchg() implementation to asm-generic/cmpxchg.h" introduced the concept of asm/cmpxchg.h but the alpha arch never got one. Fork the cmpxchg content out of the asm/atomic.h file to create one. Some minor whitespace fixups were done on the block of code that created the new file. Cc: Richard Henderson <rth@twiddle.net> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: Matt Turner <mattst88@gmail.com> Cc: David Howells <dhowells@redhat.com> Acked-by: Matt Turner <mattst88@gmail.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
- Loading branch information
Paul Gortmaker
committed
Apr 13, 2012
1 parent
0034102
commit 5ba840f
Showing
3 changed files
with
74 additions
and
69 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
#ifndef _ALPHA_CMPXCHG_H | ||
#define _ALPHA_CMPXCHG_H | ||
|
||
/* | ||
* Atomic exchange routines. | ||
*/ | ||
|
||
#define __ASM__MB | ||
#define ____xchg(type, args...) __xchg ## type ## _local(args) | ||
#define ____cmpxchg(type, args...) __cmpxchg ## type ## _local(args) | ||
#include <asm/xchg.h> | ||
|
||
#define xchg_local(ptr, x) \ | ||
({ \ | ||
__typeof__(*(ptr)) _x_ = (x); \ | ||
(__typeof__(*(ptr))) __xchg_local((ptr), (unsigned long)_x_, \ | ||
sizeof(*(ptr))); \ | ||
}) | ||
|
||
#define cmpxchg_local(ptr, o, n) \ | ||
({ \ | ||
__typeof__(*(ptr)) _o_ = (o); \ | ||
__typeof__(*(ptr)) _n_ = (n); \ | ||
(__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_, \ | ||
(unsigned long)_n_, \ | ||
sizeof(*(ptr))); \ | ||
}) | ||
|
||
#define cmpxchg64_local(ptr, o, n) \ | ||
({ \ | ||
BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
cmpxchg_local((ptr), (o), (n)); \ | ||
}) | ||
|
||
#ifdef CONFIG_SMP | ||
#undef __ASM__MB | ||
#define __ASM__MB "\tmb\n" | ||
#endif | ||
#undef ____xchg | ||
#undef ____cmpxchg | ||
#define ____xchg(type, args...) __xchg ##type(args) | ||
#define ____cmpxchg(type, args...) __cmpxchg ##type(args) | ||
#include <asm/xchg.h> | ||
|
||
#define xchg(ptr, x) \ | ||
({ \ | ||
__typeof__(*(ptr)) _x_ = (x); \ | ||
(__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, \ | ||
sizeof(*(ptr))); \ | ||
}) | ||
|
||
#define cmpxchg(ptr, o, n) \ | ||
({ \ | ||
__typeof__(*(ptr)) _o_ = (o); \ | ||
__typeof__(*(ptr)) _n_ = (n); \ | ||
(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
(unsigned long)_n_, sizeof(*(ptr)));\ | ||
}) | ||
|
||
#define cmpxchg64(ptr, o, n) \ | ||
({ \ | ||
BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
cmpxchg((ptr), (o), (n)); \ | ||
}) | ||
|
||
#undef __ASM__MB | ||
#undef ____cmpxchg | ||
|
||
#define __HAVE_ARCH_CMPXCHG 1 | ||
|
||
#endif /* _ALPHA_CMPXCHG_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters