⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rwsem.s

📁 linux-2.6.15.6
💻 S
字号:
/* rwsem.S: RW semaphore assembler. * * Written by David S. Miller (davem@redhat.com), 2001. * Derived from asm-i386/rwsem.h */#include <asm/rwsem-const.h>	.section	.sched.text	.globl		__down_read__down_read:1:	lduw		[%o0], %g1	add		%g1, 1, %g7	cas		[%o0], %g1, %g7	cmp		%g1, %g7	bne,pn		%icc, 1b	 add		%g7, 1, %g7	cmp		%g7, 0	membar		#StoreLoad | #StoreStore	bl,pn		%icc, 3f	 nop2:	retl	 nop3:	save		%sp, -192, %sp	call		rwsem_down_read_failed	 mov		%i0, %o0	ret	 restore	.size		__down_read, .-__down_read	.globl		__down_read_trylock__down_read_trylock:1:	lduw		[%o0], %g1	add		%g1, 1, %g7	cmp		%g7, 0	bl,pn		%icc, 2f	 mov		0, %o1	cas		[%o0], %g1, %g7	cmp		%g1, %g7	bne,pn		%icc, 1b	 mov		1, %o1	membar		#StoreLoad | #StoreStore2:	retl	 mov		%o1, %o0	.size		__down_read_trylock, .-__down_read_trylock	.globl		__down_write__down_write:	sethi		%hi(RWSEM_ACTIVE_WRITE_BIAS), %g1	or		%g1, %lo(RWSEM_ACTIVE_WRITE_BIAS), %g11:	lduw		[%o0], %g3	add		%g3, %g1, %g7	cas		[%o0], %g3, %g7	cmp		%g3, %g7	bne,pn		%icc, 1b	 cmp		%g7, 0	membar		#StoreLoad | #StoreStore	bne,pn		%icc, 3f	 nop2:	retl	 nop3:	save		%sp, -192, %sp	call		rwsem_down_write_failed	 mov		%i0, %o0	ret	 restore	.size		__down_write, .-__down_write	.globl		__down_write_trylock__down_write_trylock:	sethi		%hi(RWSEM_ACTIVE_WRITE_BIAS), %g1	or		%g1, %lo(RWSEM_ACTIVE_WRITE_BIAS), %g11:	lduw		[%o0], %g3	cmp		%g3, 0	bne,pn		%icc, 2f	 mov		0, %o1	add		%g3, %g1, %g7	cas		[%o0], %g3, %g7	cmp		%g3, %g7	bne,pn		%icc, 1b	 mov		1, %o1	membar		#StoreLoad | #StoreStore2:	retl	 mov		%o1, %o0	.size		__down_write_trylock, .-__down_write_trylock	.globl		__up_read__up_read:1:	lduw		[%o0], %g1	sub		%g1, 1, %g7	cas		[%o0], %g1, %g7	cmp		%g1, %g7	bne,pn		%icc, 1b	 cmp		%g7, 0	membar		#StoreLoad | #StoreStore	bl,pn		%icc, 3f	 nop2:	retl	 nop3:	sethi		%hi(RWSEM_ACTIVE_MASK), %g1	sub		%g7, 1, %g7	or		%g1, %lo(RWSEM_ACTIVE_MASK), %g1	andcc		%g7, %g1, %g0	bne,pn		%icc, 2b	 nop	save		%sp, -192, %sp	call		rwsem_wake	 mov		%i0, %o0	ret	 restore	.size		__up_read, .-__up_read	.globl		__up_write__up_write:	sethi		%hi(RWSEM_ACTIVE_WRITE_BIAS), %g1	or		%g1, %lo(RWSEM_ACTIVE_WRITE_BIAS), %g11:	lduw		[%o0], %g3	sub		%g3, %g1, %g7	cas		[%o0], %g3, %g7	cmp		%g3, %g7	bne,pn		%icc, 1b	 sub		%g7, %g1, %g7	cmp		%g7, 0	membar		#StoreLoad | #StoreStore	bl,pn		%icc, 3f	 nop2:	retl	 nop3:	save		%sp, -192, %sp	call		rwsem_wake	 mov		%i0, %o0	ret	 restore	.size		__up_write, .-__up_write	.globl		__downgrade_write__downgrade_write:	sethi		%hi(RWSEM_WAITING_BIAS), %g1	or		%g1, %lo(RWSEM_WAITING_BIAS), %g11:	lduw		[%o0], %g3	sub		%g3, %g1, %g7	cas		[%o0], %g3, %g7	cmp		%g3, %g7	bne,pn		%icc, 1b	 sub		%g7, %g1, %g7	cmp		%g7, 0	membar		#StoreLoad | #StoreStore	bl,pn		%icc, 3f	 nop2:	retl	 nop3:	save		%sp, -192, %sp	call		rwsem_downgrade_wake	 mov		%i0, %o0	ret	 restore	.size		__downgrade_write, .-__downgrade_write

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -