Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5e86c11d3eb4662000f3ced7344352b2ca319d03 Commit: 5e86c11d3eb4662000f3ced7344352b2ca319d03 Parent: 176393d4232a89aaf8745b0726f4d212a20103f1 Author: Mathieu Desnoyers <[EMAIL PROTECTED]> AuthorDate: Thu Feb 7 00:16:12 2008 -0800 Committer: Linus Torvalds <[EMAIL PROTECTED]> CommitDate: Thu Feb 7 08:42:31 2008 -0800
Add cmpxchg_local to avr32 Use the new generic cmpxchg_local (disables interrupt) for 8, 16 and 64 bits cmpxchg_local. Use the __cmpxchg_u32 primitive for 32 bits cmpxchg_local. Note that cmpxchg only uses the __cmpxchg_u32 or __cmpxchg_u64 and will cause a linker error if called with 8 or 16 bits argument. Signed-off-by: Mathieu Desnoyers <[EMAIL PROTECTED]> Acked-by: Haavard Skinnemoen <[EMAIL PROTECTED]> Cc: Haavard Skinnemoen <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]> --- include/asm-avr32/system.h | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/include/asm-avr32/system.h b/include/asm-avr32/system.h index c600cc1..9702c22 100644 --- a/include/asm-avr32/system.h +++ b/include/asm-avr32/system.h @@ -145,6 +145,29 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, (unsigned long)(new), \ sizeof(*(ptr)))) +#include <asm-generic/cmpxchg-local.h> + +static inline unsigned long __cmpxchg_local(volatile void *ptr, + unsigned long old, + unsigned long new, int size) +{ + switch (size) { + case 4: + return __cmpxchg_u32(ptr, old, new); + default: + return __cmpxchg_local_generic(ptr, old, new, size); + } + + return old; +} + +#define cmpxchg_local(ptr, old, new) \ + ((typeof(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(old), \ + (unsigned long)(new), \ + sizeof(*(ptr)))) + +#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) + struct pt_regs; void NORET_TYPE die(const char *str, struct pt_regs *regs, long err); void _exception(long signr, struct pt_regs *regs, int code, - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html