From 9fac9065b54ee3e68764454dff501d50264fc699 Mon Sep 17 00:00:00 2001 From: Marcel Moolenaar Date: Sun, 6 Apr 2003 05:55:36 +0000 Subject: [PATCH] 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. --- sys/ia64/ia64/exception.S | 4 ++-- 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 6e40b15fc4b9..1e5b17c26bac 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 6e40b15fc4b9..1e5b17c26bac 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 ;;