Cores can do atomic reads and writes from/to shared memory. CAS is not working on shared (or any other memory). I.e. you can execute "lock cmpxchg" but the operation will not be atomic. Also the order of reads and writes is not guaranteed if the operations are issued by different cores.