1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun #include <stdint.h> 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun volatile uint64_t x; 5*4882a593Smuzhiyun main(int argc,char * argv[])6*4882a593Smuzhiyunint main(int argc, char *argv[]) 7*4882a593Smuzhiyun { 8*4882a593Smuzhiyun uint64_t old, new = argc; 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun (void)argv; 11*4882a593Smuzhiyun do { 12*4882a593Smuzhiyun old = __sync_val_compare_and_swap(&x, 0, 0); 13*4882a593Smuzhiyun } while (!__sync_bool_compare_and_swap(&x, old, new)); 14*4882a593Smuzhiyun return old == new; 15*4882a593Smuzhiyun } 16