aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/ivt.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/ivt.S')
-rw-r--r--arch/ia64/kernel/ivt.S16
1 files changed, 9 insertions, 7 deletions
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S
index 301f2e9d262e..dcd906fe5749 100644
--- a/arch/ia64/kernel/ivt.S
+++ b/arch/ia64/kernel/ivt.S
@@ -561,11 +561,12 @@ ENTRY(dirty_bit)
561 ;; // avoid RAW on r18 561 ;; // avoid RAW on r18
562 mov ar.ccv=r18 // set compare value for cmpxchg 562 mov ar.ccv=r18 // set compare value for cmpxchg
563 or r25=_PAGE_D|_PAGE_A,r18 // set the dirty and accessed bits 563 or r25=_PAGE_D|_PAGE_A,r18 // set the dirty and accessed bits
564 tbit.z p7,p6 = r18,_PAGE_P_BIT // Check present bit
564 ;; 565 ;;
565 cmpxchg8.acq r26=[r17],r25,ar.ccv 566(p6) cmpxchg8.acq r26=[r17],r25,ar.ccv // Only update if page is present
566 mov r24=PAGE_SHIFT<<2 567 mov r24=PAGE_SHIFT<<2
567 ;; 568 ;;
568 cmp.eq p6,p7=r26,r18 569(p6) cmp.eq p6,p7=r26,r18 // Only compare if page is present
569 ;; 570 ;;
570(p6) itc.d r25 // install updated PTE 571(p6) itc.d r25 // install updated PTE
571 ;; 572 ;;
@@ -626,11 +627,12 @@ ENTRY(iaccess_bit)
626 ;; 627 ;;
627 mov ar.ccv=r18 // set compare value for cmpxchg 628 mov ar.ccv=r18 // set compare value for cmpxchg
628 or r25=_PAGE_A,r18 // set the accessed bit 629 or r25=_PAGE_A,r18 // set the accessed bit
630 tbit.z p7,p6 = r18,_PAGE_P_BIT // Check present bit
629 ;; 631 ;;
630 cmpxchg8.acq r26=[r17],r25,ar.ccv 632(p6) cmpxchg8.acq r26=[r17],r25,ar.ccv // Only if page present
631 mov r24=PAGE_SHIFT<<2 633 mov r24=PAGE_SHIFT<<2
632 ;; 634 ;;
633 cmp.eq p6,p7=r26,r18 635(p6) cmp.eq p6,p7=r26,r18 // Only if page present
634 ;; 636 ;;
635(p6) itc.i r25 // install updated PTE 637(p6) itc.i r25 // install updated PTE
636 ;; 638 ;;
@@ -680,11 +682,12 @@ ENTRY(daccess_bit)
680 ;; // avoid RAW on r18 682 ;; // avoid RAW on r18
681 mov ar.ccv=r18 // set compare value for cmpxchg 683 mov ar.ccv=r18 // set compare value for cmpxchg
682 or r25=_PAGE_A,r18 // set the dirty bit 684 or r25=_PAGE_A,r18 // set the dirty bit
685 tbit.z p7,p6 = r18,_PAGE_P_BIT // Check present bit
683 ;; 686 ;;
684 cmpxchg8.acq r26=[r17],r25,ar.ccv 687(p6) cmpxchg8.acq r26=[r17],r25,ar.ccv // Only if page is present
685 mov r24=PAGE_SHIFT<<2 688 mov r24=PAGE_SHIFT<<2
686 ;; 689 ;;
687 cmp.eq p6,p7=r26,r18 690(p6) cmp.eq p6,p7=r26,r18 // Only if page is present
688 ;; 691 ;;
689(p6) itc.d r25 // install updated PTE 692(p6) itc.d r25 // install updated PTE
690 /* 693 /*
@@ -1362,7 +1365,6 @@ END(debug_vector)
1362// 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57) 1365// 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)
1363ENTRY(unaligned_access) 1366ENTRY(unaligned_access)
1364 DBG_FAULT(30) 1367 DBG_FAULT(30)
1365 mov r16=cr.ipsr
1366 mov r31=pr // prepare to save predicates 1368 mov r31=pr // prepare to save predicates
1367 ;; 1369 ;;
1368 br.sptk.many dispatch_unaligned_handler 1370 br.sptk.many dispatch_unaligned_handler