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 race in the accessed/dirty bit handlers
This commit is contained in:
commit
35ab0e88c6
|
@ -561,11 +561,12 @@ ENTRY(dirty_bit)
|
||||||
;; // avoid RAW on r18
|
;; // avoid RAW on r18
|
||||||
mov ar.ccv=r18 // set compare value for cmpxchg
|
mov ar.ccv=r18 // set compare value for cmpxchg
|
||||||
or r25=_PAGE_D|_PAGE_A,r18 // set the dirty and accessed bits
|
or r25=_PAGE_D|_PAGE_A,r18 // set the dirty and accessed bits
|
||||||
|
tbit.z p7,p6 = r18,_PAGE_P_BIT // Check present bit
|
||||||
;;
|
;;
|
||||||
cmpxchg8.acq r26=[r17],r25,ar.ccv
|
(p6) cmpxchg8.acq r26=[r17],r25,ar.ccv // Only update if page is present
|
||||||
mov r24=PAGE_SHIFT<<2
|
mov r24=PAGE_SHIFT<<2
|
||||||
;;
|
;;
|
||||||
cmp.eq p6,p7=r26,r18
|
(p6) cmp.eq p6,p7=r26,r18 // Only compare if page is present
|
||||||
;;
|
;;
|
||||||
(p6) itc.d r25 // install updated PTE
|
(p6) itc.d r25 // install updated PTE
|
||||||
;;
|
;;
|
||||||
|
@ -626,11 +627,12 @@ ENTRY(iaccess_bit)
|
||||||
;;
|
;;
|
||||||
mov ar.ccv=r18 // set compare value for cmpxchg
|
mov ar.ccv=r18 // set compare value for cmpxchg
|
||||||
or r25=_PAGE_A,r18 // set the accessed bit
|
or r25=_PAGE_A,r18 // set the accessed bit
|
||||||
|
tbit.z p7,p6 = r18,_PAGE_P_BIT // Check present bit
|
||||||
;;
|
;;
|
||||||
cmpxchg8.acq r26=[r17],r25,ar.ccv
|
(p6) cmpxchg8.acq r26=[r17],r25,ar.ccv // Only if page present
|
||||||
mov r24=PAGE_SHIFT<<2
|
mov r24=PAGE_SHIFT<<2
|
||||||
;;
|
;;
|
||||||
cmp.eq p6,p7=r26,r18
|
(p6) cmp.eq p6,p7=r26,r18 // Only if page present
|
||||||
;;
|
;;
|
||||||
(p6) itc.i r25 // install updated PTE
|
(p6) itc.i r25 // install updated PTE
|
||||||
;;
|
;;
|
||||||
|
@ -680,11 +682,12 @@ ENTRY(daccess_bit)
|
||||||
;; // avoid RAW on r18
|
;; // avoid RAW on r18
|
||||||
mov ar.ccv=r18 // set compare value for cmpxchg
|
mov ar.ccv=r18 // set compare value for cmpxchg
|
||||||
or r25=_PAGE_A,r18 // set the dirty bit
|
or r25=_PAGE_A,r18 // set the dirty bit
|
||||||
|
tbit.z p7,p6 = r18,_PAGE_P_BIT // Check present bit
|
||||||
;;
|
;;
|
||||||
cmpxchg8.acq r26=[r17],r25,ar.ccv
|
(p6) cmpxchg8.acq r26=[r17],r25,ar.ccv // Only if page is present
|
||||||
mov r24=PAGE_SHIFT<<2
|
mov r24=PAGE_SHIFT<<2
|
||||||
;;
|
;;
|
||||||
cmp.eq p6,p7=r26,r18
|
(p6) cmp.eq p6,p7=r26,r18 // Only if page is present
|
||||||
;;
|
;;
|
||||||
(p6) itc.d r25 // install updated PTE
|
(p6) itc.d r25 // install updated PTE
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue