| --- a/js/src/jslock.cpp 2012-04-06 16:24:51.000000000 -0500 |
| +++ b/js/src/jslock.cpp 2012-06-21 20:57:00.877937542 -0500 |
| @@ -150,17 +150,22 @@ |
| |
| static JS_ALWAYS_INLINE int |
| NativeCompareAndSwap(volatile jsword *w, jsword ov, jsword nv) |
| { |
| unsigned int res; |
| |
| __asm__ __volatile__ ( |
| "lock\n" |
| +/* GCC's x32 abi support */ |
| +#if defined(__LP64__) |
| "cmpxchgq %2, (%1)\n" |
| +#else |
| + "cmpxchg %2, (%1)\n" |
| +#endif |
| "sete %%al\n" |
| "movzbl %%al, %%eax\n" |
| : "=a" (res) |
| : "r" (w), "r" (nv), "a" (ov) |
| : "cc", "memory"); |
| return (int)res; |
| } |
| |