diff options
-rw-r--r-- | 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 c600cc15cbcb..9702c2213e1e 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, | |||
145 | (unsigned long)(new), \ | 145 | (unsigned long)(new), \ |
146 | sizeof(*(ptr)))) | 146 | sizeof(*(ptr)))) |
147 | 147 | ||
148 | #include <asm-generic/cmpxchg-local.h> | ||
149 | |||
150 | static inline unsigned long __cmpxchg_local(volatile void *ptr, | ||
151 | unsigned long old, | ||
152 | unsigned long new, int size) | ||
153 | { | ||
154 | switch (size) { | ||
155 | case 4: | ||
156 | return __cmpxchg_u32(ptr, old, new); | ||
157 | default: | ||
158 | return __cmpxchg_local_generic(ptr, old, new, size); | ||
159 | } | ||
160 | |||
161 | return old; | ||
162 | } | ||
163 | |||
164 | #define cmpxchg_local(ptr, old, new) \ | ||
165 | ((typeof(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(old), \ | ||
166 | (unsigned long)(new), \ | ||
167 | sizeof(*(ptr)))) | ||
168 | |||
169 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
170 | |||
148 | struct pt_regs; | 171 | struct pt_regs; |
149 | void NORET_TYPE die(const char *str, struct pt_regs *regs, long err); | 172 | void NORET_TYPE die(const char *str, struct pt_regs *regs, long err); |
150 | void _exception(long signr, struct pt_regs *regs, int code, | 173 | void _exception(long signr, struct pt_regs *regs, int code, |