splock.s

来自「优龙2410linux2.6.8内核源代码」· S 代码 · 共 36 行

S
36
字号
/* splock.S: Spinlock primitives too large to inline. * * Copyright (C) 2004 David S. Miller (davem@redhat.com) */	.text	.align	64	.globl		_raw_spin_lock_raw_spin_lock:		/* %o0 = lock_ptr */1:	ldstub		[%o0], %g7	brnz,pn		%g7, 2f	 membar		#StoreLoad | #StoreStore	retl	 nop2:	ldub		[%o0], %g7	brnz,pt		%g7, 2b	 membar		#LoadLoad	ba,a,pt		%xcc, 1b	.globl	_raw_spin_lock_flags_raw_spin_lock_flags:	/* %o0 = lock_ptr, %o1 = irq_flags */1:	ldstub		[%o0], %g7	brnz,pn		%g7, 2f	 membar		#StoreLoad | #StoreStore	retl	 nop2:	rdpr		%pil, %g2		! Save PIL	wrpr		%o1, %pil		! Set previous PIL3:	ldub		[%o0], %g7		! Spin on lock set	brnz,pt		%g7, 3b	 membar		#LoadLoad	ba,pt		%xcc, 1b		! Retry lock acquire	 wrpr		%g2, %pil		! Restore PIL

⌨️ 快捷键说明

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