x86: Fix and improve percpu_cmpxchg{8,16}b_double()