Adrian Hunter | f6d3136 | 2014-07-14 13:02:53 +0300 | [diff] [blame] | 1 | #include <stdint.h> |
2 | |||||
3 | volatile uint64_t x; | ||||
4 | |||||
5 | int main(int argc, char *argv[]) | ||||
6 | { | ||||
7 | uint64_t old, new = argc; | ||||
8 | |||||
9 | argv = argv; | ||||
10 | do { | ||||
11 | old = __sync_val_compare_and_swap(&x, 0, 0); | ||||
12 | } while (!__sync_bool_compare_and_swap(&x, old, new)); | ||||
13 | return old == new; | ||||
14 | } |