1 /* Slow paths of read/write spinlocks. */
3 #include <linux/linkage.h>
4 #include <asm/alternative-asm.h>
6 #include <asm/rwlock.h>
9 # define __lock_ptr eax
11 # define __lock_ptr rdi
14 ENTRY(__write_lock_failed)
18 addl $RW_LOCK_BIAS, (%__lock_ptr)
20 cmpl $RW_LOCK_BIAS, (%__lock_ptr)
23 subl $RW_LOCK_BIAS, (%__lock_ptr)
28 END(__write_lock_failed)
30 ENTRY(__read_lock_failed)
36 cmpl $1, (%__lock_ptr)
44 END(__read_lock_failed)