]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/ia64/kernel/ivt.S
Pull mca-cleanup into release branch
[linux-2.6-omap-h63xx.git] / arch / ia64 / kernel / ivt.S
index 9f80569a32b0acf6f96bed4d4c5161d08ace26ea..dcd906fe574949f032ff449fe2f46d8527bdba1d 100644 (file)
@@ -561,11 +561,12 @@ ENTRY(dirty_bit)
        ;;                                      // avoid RAW on r18
        mov ar.ccv=r18                          // set compare value for cmpxchg
        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
        ;;
-       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
        ;;
@@ -626,11 +627,12 @@ ENTRY(iaccess_bit)
        ;;
        mov ar.ccv=r18                          // set compare value for cmpxchg
        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
        ;;
-       cmp.eq p6,p7=r26,r18
+(p6)   cmp.eq p6,p7=r26,r18                    // Only if page present
        ;;
 (p6)   itc.i r25                               // install updated PTE
        ;;
@@ -680,11 +682,12 @@ ENTRY(daccess_bit)
        ;;                                      // avoid RAW on r18
        mov ar.ccv=r18                          // set compare value for cmpxchg
        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
        ;;
-       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
        /*