| 497 | } |
| 498 | |
| 499 | static __inline int |
| 500 | atomic_fcmpset_64_i586(volatile uint64_t *dst, uint64_t *expect, uint64_t src) |
| 501 | { |
| 502 | u_char res; |
| 503 | |
| 504 | __asm __volatile( |
| 505 | " " MPLOCKED " " |
| 506 | " cmpxchg8b %1 ; " |
| 507 | " sete %0" |
| 508 | : "=q" (res), /* 0 */ |
| 509 | "+m" (*dst), /* 1 */ |
| 510 | "+A" (*expect) /* 2 */ |
| 511 | : "b" ((uint32_t)src), /* 3 */ |
| 512 | "c" ((uint32_t)(src >> 32)) /* 4 */ |
| 513 | : "memory", "cc"); |
| 514 | return (res); |
| 515 | } |
| 516 | |
| 517 | static __inline uint64_t |
| 518 | atomic_load_acq_64_i586(volatile uint64_t *p) |