提交 ab22c17c 编写于 作者: L Linus Torvalds

Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
  [IA64] fix siglock

Quoth Tony:

 "I committed the fix for this last week prior to your -rc4 announcement
  reminding us to give proper "Reported-by:" credit.  This one should have
  had:
Reported-by: NTony Ernst <tee@sgi.com>

  and also
Much-useful-investigation-and-tracing-by: NHedi Berriche <hedi@sgi.com>
  Much-useful-investigation-and-tracing-by: Petr Tesarik <ptesarik@novell.com>"
...@@ -424,14 +424,26 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set ...@@ -424,14 +424,26 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set
andcm r14=r14,r17 // filter out SIGKILL & SIGSTOP andcm r14=r14,r17 // filter out SIGKILL & SIGSTOP
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
mov r17=1 // __ticket_spin_trylock(r31)
;; ld4 r17=[r31]
cmpxchg4.acq r18=[r31],r17,ar.ccv // try to acquire the lock
mov r8=EINVAL // default to EINVAL mov r8=EINVAL // default to EINVAL
;; ;;
extr r9=r17,17,15
;;
xor r18=r17,r9
adds r19=1,r17
;;
extr.u r18=r18,0,15
;;
cmp.eq p0,p7=0,r18
(p7) br.cond.spnt.many .lock_contention
mov.m ar.ccv=r17
;;
cmpxchg4.acq r9=[r31],r19,ar.ccv
;;
cmp4.eq p0,p7=r9,r17
(p7) br.cond.spnt.many .lock_contention
ld8 r3=[r2] // re-read current->blocked now that we hold the lock ld8 r3=[r2] // re-read current->blocked now that we hold the lock
cmp4.ne p6,p0=r18,r0
(p6) br.cond.spnt.many .lock_contention
;; ;;
#else #else
ld8 r3=[r2] // re-read current->blocked now that we hold the lock ld8 r3=[r2] // re-read current->blocked now that we hold the lock
...@@ -490,7 +502,17 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set ...@@ -490,7 +502,17 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set
(p6) br.cond.spnt.few 1b // yes -> retry (p6) br.cond.spnt.few 1b // yes -> retry
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
st4.rel [r31]=r0 // release the lock // __ticket_spin_unlock(r31)
adds r31=2,r31
;;
ld2.bias r2=[r31]
mov r3=65534
;;
adds r2=2,r2
;;
and r3=r3,r2
;;
st2.rel [r31]=r3
#endif #endif
SSM_PSR_I(p0, p9, r31) SSM_PSR_I(p0, p9, r31)
;; ;;
...@@ -512,7 +534,17 @@ EX(.fail_efault, (p15) st8 [r34]=r3) ...@@ -512,7 +534,17 @@ EX(.fail_efault, (p15) st8 [r34]=r3)
.sig_pending: .sig_pending:
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
st4.rel [r31]=r0 // release the lock // __ticket_spin_unlock(r31)
adds r31=2,r31
;;
ld2.bias r2=[r31]
mov r3=65534
;;
adds r2=2,r2
;;
and r3=r3,r2
;;
st2.rel [r31]=r3
#endif #endif
SSM_PSR_I(p0, p9, r17) SSM_PSR_I(p0, p9, r17)
;; ;;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册