11965aae3SH. Peter Anvin #ifndef _ASM_X86_CMPXCHG_64_H 21965aae3SH. Peter Anvin #define _ASM_X86_CMPXCHG_64_H 3bb898558SAl Viro 400a41546SJeremy Fitzhardinge static inline void set_64bit(volatile u64 *ptr, u64 val) 500a41546SJeremy Fitzhardinge { 600a41546SJeremy Fitzhardinge *ptr = val; 700a41546SJeremy Fitzhardinge } 800a41546SJeremy Fitzhardinge 9bb898558SAl Viro #define cmpxchg64(ptr, o, n) \ 10bb898558SAl Viro ({ \ 11bb898558SAl Viro BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ 12bb898558SAl Viro cmpxchg((ptr), (o), (n)); \ 13bb898558SAl Viro }) 14f3834b9eSPeter Zijlstra 15bb898558SAl Viro #define cmpxchg64_local(ptr, o, n) \ 16bb898558SAl Viro ({ \ 17bb898558SAl Viro BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ 18bb898558SAl Viro cmpxchg_local((ptr), (o), (n)); \ 19bb898558SAl Viro }) 20bb898558SAl Viro 21*362f924bSBorislav Petkov #define system_has_cmpxchg_double() boot_cpu_has(X86_FEATURE_CX16) 223824abd1SChristoph Lameter 231965aae3SH. Peter Anvin #endif /* _ASM_X86_CMPXCHG_64_H */ 24