summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2001-12-30 09:22:08 +0000
committermarcel <marcel@FreeBSD.org>2001-12-30 09:22:08 +0000
commitd26775baa4767b9c6e61e82077d505327b9255d5 (patch)
tree51d9d90aee8008513a1de8377b5872e201ea8e40
parente6e6869999a095ebc057972cba172cb9aaf24ad6 (diff)
downloadFreeBSD-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.S46
-rw-r--r--sys/ia64/ia64/exception.s46
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
OpenPOWER on IntegriCloud