summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-04-06 05:55:36 +0000
committermarcel <marcel@FreeBSD.org>2003-04-06 05:55:36 +0000
commit5dd3e0b439fa1474635a52914ce33d08a2244aa0 (patch)
tree8ec41f00ce36d0a8dca148fe4ad40ec0569250f7 /sys/ia64
parenta3ab268ea4a2d89378e4f5bd090431a7347366b3 (diff)
downloadFreeBSD-src-5dd3e0b439fa1474635a52914ce33d08a2244aa0.zip
FreeBSD-src-5dd3e0b439fa1474635a52914ce33d08a2244aa0.tar.gz
Also set the access bit in the PTE when we get a data dirty bit fault.
This avoids an immediate access bit fault when we serviced the dirty bit fault in case the access bit is unset. This typically happens for newly allocated memory that's being zeroed and thus very common.
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/exception.S4
-rw-r--r--sys/ia64/ia64/exception.s4
2 files changed, 4 insertions, 4 deletions
diff --git a/sys/ia64/ia64/exception.S b/sys/ia64/ia64/exception.S
index 6e40b15..1e5b17c 100644
--- a/sys/ia64/ia64/exception.S
+++ b/sys/ia64/ia64/exception.S
@@ -336,9 +336,9 @@ IVT_ENTRY(Dirty_Bit, 0x2000)
(p1) br.cond.sptk.few 2f // if not, read next in chain
;;
ld8 r21=[r20] // read pte
- mov r22=PTE_D
+ mov r22=PTE_D|PTE_A
;;
- or r21=r22,r21 // set dirty bit
+ or r21=r22,r21 // set dirty & access bit
;;
st8 [r20]=r21 // store back
;;
diff --git a/sys/ia64/ia64/exception.s b/sys/ia64/ia64/exception.s
index 6e40b15..1e5b17c 100644
--- a/sys/ia64/ia64/exception.s
+++ b/sys/ia64/ia64/exception.s
@@ -336,9 +336,9 @@ IVT_ENTRY(Dirty_Bit, 0x2000)
(p1) br.cond.sptk.few 2f // if not, read next in chain
;;
ld8 r21=[r20] // read pte
- mov r22=PTE_D
+ mov r22=PTE_D|PTE_A
;;
- or r21=r22,r21 // set dirty bit
+ or r21=r22,r21 // set dirty & access bit
;;
st8 [r20]=r21 // store back
;;
OpenPOWER on IntegriCloud