N_LOCK
if (old.val & N_LOCK) {
new.val |= N_LOCK;
if (!(old.val & N_LOCK))
u32 val = __atomic_sub_fetch(&lock->val, N_LOCK, __ATOMIC_RELEASE);