diff options
author | marcel <marcel@FreeBSD.org> | 2001-12-30 09:22:08 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2001-12-30 09:22:08 +0000 |
commit | d26775baa4767b9c6e61e82077d505327b9255d5 (patch) | |
tree | 51d9d90aee8008513a1de8377b5872e201ea8e40 | |
parent | e6e6869999a095ebc057972cba172cb9aaf24ad6 (diff) | |
download | FreeBSD-src-d26775baa4767b9c6e61e82077d505327b9255d5.zip FreeBSD-src-d26775baa4767b9c6e61e82077d505327b9255d5.tar.gz |
Add missing predicate in interruption_Data_TLB. Without this
predicate we never used the VHPT entry we found.
While here, normalize the compares.
-rw-r--r-- | sys/ia64/ia64/exception.S | 46 | ||||
-rw-r--r-- | sys/ia64/ia64/exception.s | 46 |
2 files changed, 46 insertions, 46 deletions
diff --git a/sys/ia64/ia64/exception.S b/sys/ia64/ia64/exception.S index c8a86b8..25505dd 100644 --- a/sys/ia64/ia64/exception.S +++ b/sys/ia64/ia64/exception.S @@ -92,8 +92,8 @@ interruption_Instruction_TLB: ;; ld8 r21=[r21] // check VHPT tag ;; - cmp.eq p1,p2=r21,r19 -(p2) br.dpnt.few 1f + cmp.ne p1,p0=r21,r19 +(p1) br.dpnt.few 1f ;; ld8 r21=[r18] // read pte ;; @@ -106,15 +106,15 @@ interruption_Instruction_TLB: ;; srlz.d // serialize ;; -2: cmp.eq p1,p2=r0,r20 // done? +2: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 3f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 3f // if not, read next in chain ;; ld8 r21=[r20],8 // read pte ;; @@ -142,7 +142,7 @@ interruption_Instruction_TLB: ;; itc.i r21 // and place in TLB rfi - + 3: add r20=24,r20 // next in chain ;; ld8 r20=[r20] // read chain @@ -168,8 +168,8 @@ interruption_Data_TLB: ;; ld8 r21=[r21] // check VHPT tag ;; - cmp.eq p1,p2=r21,r19 - br.dpnt.few 1f + cmp.ne p1,p0=r21,r19 +(p1) br.dpnt.few 1f ;; ld8 r21=[r18] // read pte ;; @@ -182,15 +182,15 @@ interruption_Data_TLB: ;; srlz.d // serialize ;; -2: cmp.eq p1,p2=r0,r20 // done? +2: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 3f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 3f // if not, read next in chain ;; ld8 r21=[r20],8 // read pte ;; @@ -312,15 +312,15 @@ interruption_Dirty_Bit: ;; srlz.d // serialize ;; -1: cmp.eq p1,p2=r0,r20 // done? +1: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 2f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 2f // if not, read next in chain ;; ld8 r21=[r20] // read pte mov r22=PTE_D @@ -381,15 +381,15 @@ interruption_Instruction_Access_Bit: ;; srlz.d // serialize ;; -1: cmp.eq p1,p2=r0,r20 // done? +1: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 2f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 2f // if not, read next in chain ;; ld8 r21=[r20] // read pte mov r22=PTE_A @@ -450,15 +450,15 @@ interruption_Data_Access_Bit: ;; srlz.d // serialize ;; -1: cmp.eq p1,p2=r0,r20 // done? +1: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 2f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 2f // if not, read next in chain ;; ld8 r21=[r20] // read pte mov r22=PTE_A @@ -505,12 +505,12 @@ interruption_Break: mov r16=pr // save pr for a moment mov r17=cr.iim;; // read break value mov r18=0x100000;; // syscall number - cmp.eq p6,p7=r18,r17;; // check for syscall -(p7) br.dpnt.few 9f + cmp.ne p6,p0=r18,r17;; // check for syscall +(p6) br.dpnt.few 9f mov r17=cr.ipsr;; // check for user mode extr.u r17=r17,32,2;; - cmp.eq p6,p7=r0,r17 + cmp.eq p6,p0=r0,r17 (p6) br.dpnt.few 9f // trap if kernel mode // Note: p6 and p7 are temporaries so we don't need to restore diff --git a/sys/ia64/ia64/exception.s b/sys/ia64/ia64/exception.s index c8a86b8..25505dd 100644 --- a/sys/ia64/ia64/exception.s +++ b/sys/ia64/ia64/exception.s @@ -92,8 +92,8 @@ interruption_Instruction_TLB: ;; ld8 r21=[r21] // check VHPT tag ;; - cmp.eq p1,p2=r21,r19 -(p2) br.dpnt.few 1f + cmp.ne p1,p0=r21,r19 +(p1) br.dpnt.few 1f ;; ld8 r21=[r18] // read pte ;; @@ -106,15 +106,15 @@ interruption_Instruction_TLB: ;; srlz.d // serialize ;; -2: cmp.eq p1,p2=r0,r20 // done? +2: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 3f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 3f // if not, read next in chain ;; ld8 r21=[r20],8 // read pte ;; @@ -142,7 +142,7 @@ interruption_Instruction_TLB: ;; itc.i r21 // and place in TLB rfi - + 3: add r20=24,r20 // next in chain ;; ld8 r20=[r20] // read chain @@ -168,8 +168,8 @@ interruption_Data_TLB: ;; ld8 r21=[r21] // check VHPT tag ;; - cmp.eq p1,p2=r21,r19 - br.dpnt.few 1f + cmp.ne p1,p0=r21,r19 +(p1) br.dpnt.few 1f ;; ld8 r21=[r18] // read pte ;; @@ -182,15 +182,15 @@ interruption_Data_TLB: ;; srlz.d // serialize ;; -2: cmp.eq p1,p2=r0,r20 // done? +2: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 3f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 3f // if not, read next in chain ;; ld8 r21=[r20],8 // read pte ;; @@ -312,15 +312,15 @@ interruption_Dirty_Bit: ;; srlz.d // serialize ;; -1: cmp.eq p1,p2=r0,r20 // done? +1: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 2f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 2f // if not, read next in chain ;; ld8 r21=[r20] // read pte mov r22=PTE_D @@ -381,15 +381,15 @@ interruption_Instruction_Access_Bit: ;; srlz.d // serialize ;; -1: cmp.eq p1,p2=r0,r20 // done? +1: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 2f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 2f // if not, read next in chain ;; ld8 r21=[r20] // read pte mov r22=PTE_A @@ -450,15 +450,15 @@ interruption_Data_Access_Bit: ;; srlz.d // serialize ;; -1: cmp.eq p1,p2=r0,r20 // done? +1: cmp.eq p1,p0=r0,r20 // done? (p1) br.cond.spnt.few 9f // bail if done ;; add r21=16,r20 // tag location ;; ld8 r21=[r21] // read tag ;; - cmp.eq p1,p2=r21,r19 // compare tags -(p2) br.cond.sptk.few 2f // if not, read next in chain + cmp.ne p1,p0=r21,r19 // compare tags +(p1) br.cond.sptk.few 2f // if not, read next in chain ;; ld8 r21=[r20] // read pte mov r22=PTE_A @@ -505,12 +505,12 @@ interruption_Break: mov r16=pr // save pr for a moment mov r17=cr.iim;; // read break value mov r18=0x100000;; // syscall number - cmp.eq p6,p7=r18,r17;; // check for syscall -(p7) br.dpnt.few 9f + cmp.ne p6,p0=r18,r17;; // check for syscall +(p6) br.dpnt.few 9f mov r17=cr.ipsr;; // check for user mode extr.u r17=r17,32,2;; - cmp.eq p6,p7=r0,r17 + cmp.eq p6,p0=r0,r17 (p6) br.dpnt.few 9f // trap if kernel mode // Note: p6 and p7 are temporaries so we don't need to restore |