|
|
| File: [Development] / linux-2.6-xfs / arch / x86 / lib / rwlock_64.S (download)
Revision 1.1, Mon Dec 3 16:26:37 2007 UTC (9 years, 10 months ago) by lachlan.longdrop.melbourne.sgi.com
Merge up to 2.6.24-rc3 Merge of 2.6.x-xfs-melb:linux:30183b by kenmcd. |
/* Slow paths of read/write spinlocks. */ #include <linux/linkage.h> #include <asm/rwlock.h> #include <asm/alternative-asm.h> #include <asm/dwarf2.h> /* rdi: pointer to rwlock_t */ ENTRY(__write_lock_failed) CFI_STARTPROC LOCK_PREFIX addl $RW_LOCK_BIAS,(%rdi) 1: rep nop cmpl $RW_LOCK_BIAS,(%rdi) jne 1b LOCK_PREFIX subl $RW_LOCK_BIAS,(%rdi) jnz __write_lock_failed ret CFI_ENDPROC END(__write_lock_failed) /* rdi: pointer to rwlock_t */ ENTRY(__read_lock_failed) CFI_STARTPROC LOCK_PREFIX incl (%rdi) 1: rep nop cmpl $1,(%rdi) js 1b LOCK_PREFIX decl (%rdi) js __read_lock_failed ret CFI_ENDPROC END(__read_lock_failed)