diff options
author | marcel <marcel@FreeBSD.org> | 2003-04-06 05:55:36 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2003-04-06 05:55:36 +0000 |
commit | 5dd3e0b439fa1474635a52914ce33d08a2244aa0 (patch) | |
tree | 8ec41f00ce36d0a8dca148fe4ad40ec0569250f7 | |
parent | a3ab268ea4a2d89378e4f5bd090431a7347366b3 (diff) | |
download | FreeBSD-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.
-rw-r--r-- | sys/ia64/ia64/exception.S | 4 | ||||
-rw-r--r-- | sys/ia64/ia64/exception.s | 4 |
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 ;; |