| .. | .. |
|---|
| 7 | 7 | #include <asm/alternative.h> /* Provides LOCK_PREFIX */ |
|---|
| 8 | 8 | |
|---|
| 9 | 9 | /* |
|---|
| 10 | | - * Non-existant functions to indicate usage errors at link time |
|---|
| 10 | + * Non-existent functions to indicate usage errors at link time |
|---|
| 11 | 11 | * (or compile-time if the compiler implements __compiletime_error(). |
|---|
| 12 | 12 | */ |
|---|
| 13 | 13 | extern void __xchg_wrong_size(void) |
|---|
| .. | .. |
|---|
| 242 | 242 | BUILD_BUG_ON(sizeof(*(p2)) != sizeof(long)); \ |
|---|
| 243 | 243 | VM_BUG_ON((unsigned long)(p1) % (2 * sizeof(long))); \ |
|---|
| 244 | 244 | VM_BUG_ON((unsigned long)((p1) + 1) != (unsigned long)(p2)); \ |
|---|
| 245 | | - asm volatile(pfx "cmpxchg%c4b %2; sete %0" \ |
|---|
| 246 | | - : "=a" (__ret), "+d" (__old2), \ |
|---|
| 247 | | - "+m" (*(p1)), "+m" (*(p2)) \ |
|---|
| 248 | | - : "i" (2 * sizeof(long)), "a" (__old1), \ |
|---|
| 245 | + asm volatile(pfx "cmpxchg%c5b %1" \ |
|---|
| 246 | + CC_SET(e) \ |
|---|
| 247 | + : CC_OUT(e) (__ret), \ |
|---|
| 248 | + "+m" (*(p1)), "+m" (*(p2)), \ |
|---|
| 249 | + "+a" (__old1), "+d" (__old2) \ |
|---|
| 250 | + : "i" (2 * sizeof(long)), \ |
|---|
| 249 | 251 | "b" (__new1), "c" (__new2)); \ |
|---|
| 250 | 252 | __ret; \ |
|---|
| 251 | 253 | }) |
|---|