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 + -
显示快捷键?