summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2006-05-29 06:12:01 +0000
committeralc <alc@FreeBSD.org>2006-05-29 06:12:01 +0000
commit4676c61f8331ab74da5ca938d02d45c6771ddcd1 (patch)
treeb9ae61c28960e114f841c7a849a8555b433e1d6f /sys/sparc64
parent5835e6264a910596584bd65b52ab19ccdb0046eb (diff)
downloadFreeBSD-src-4676c61f8331ab74da5ca938d02d45c6771ddcd1.zip
FreeBSD-src-4676c61f8331ab74da5ca938d02d45c6771ddcd1.tar.gz
MFalpha/amd64/arm/ia64
Retire pmap_track_modified(). We no longer need it because we do not create managed mappings within the clean submap. To prevent regressions, add assertions blocking the creation of managed mappings within the clean submap.
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/include/pmap.h9
-rw-r--r--sys/sparc64/sparc64/pmap.c21
2 files changed, 7 insertions, 23 deletions
diff --git a/sys/sparc64/include/pmap.h b/sys/sparc64/include/pmap.h
index 67ec85a..e4a158e 100644
--- a/sys/sparc64/include/pmap.h
+++ b/sys/sparc64/include/pmap.h
@@ -107,15 +107,6 @@ extern vm_offset_t virtual_end;
extern vm_paddr_t msgbuf_phys;
-static __inline int
-pmap_track_modified(pmap_t pm, vm_offset_t va)
-{
- if (pm == kernel_pmap)
- return ((va < kmi.clean_sva) || (va >= kmi.clean_eva));
- else
- return (1);
-}
-
#ifdef PMAP_STATS
SYSCTL_DECL(_debug_pmap_stats);
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c
index 163bbee..4bf35b2 100644
--- a/sys/sparc64/sparc64/pmap.c
+++ b/sys/sparc64/sparc64/pmap.c
@@ -1116,7 +1116,7 @@ pmap_remove_tte(struct pmap *pm, struct pmap *pm2, struct tte *tp,
if ((data & TD_WIRED) != 0)
pm->pm_stats.wired_count--;
if ((data & TD_PV) != 0) {
- if ((data & TD_W) != 0 && pmap_track_modified(pm, va))
+ if ((data & TD_W) != 0)
vm_page_dirty(m);
if ((data & TD_REF) != 0)
vm_page_flag_set(m, PG_REFERENCED);
@@ -1183,8 +1183,7 @@ pmap_remove_all(vm_page_t m)
pm->pm_stats.wired_count--;
if ((tp->tte_data & TD_REF) != 0)
vm_page_flag_set(m, PG_REFERENCED);
- if ((tp->tte_data & TD_W) != 0 &&
- pmap_track_modified(pm, va))
+ if ((tp->tte_data & TD_W) != 0)
vm_page_dirty(m);
tp->tte_data &= ~TD_V;
tlb_page_demap(pm, va);
@@ -1209,7 +1208,7 @@ pmap_protect_tte(struct pmap *pm, struct pmap *pm2, struct tte *tp,
m = PHYS_TO_VM_PAGE(TD_PA(data));
if ((data & TD_REF) != 0)
vm_page_flag_set(m, PG_REFERENCED);
- if ((data & TD_W) != 0 && pmap_track_modified(pm, va))
+ if ((data & TD_W) != 0)
vm_page_dirty(m);
}
return (1);
@@ -1325,8 +1324,7 @@ pmap_enter(pmap_t pm, vm_offset_t va, vm_page_t m, vm_prot_t prot,
if (wired) {
tp->tte_data |= TD_W;
}
- } else if ((data & TD_W) != 0 &&
- pmap_track_modified(pm, va)) {
+ } else if ((data & TD_W) != 0) {
vm_page_dirty(m);
}
@@ -1769,9 +1767,7 @@ pmap_ts_referenced(vm_page_t m)
tpn = TAILQ_NEXT(tp, tte_link);
TAILQ_REMOVE(&m->md.tte_list, tp, tte_link);
TAILQ_INSERT_TAIL(&m->md.tte_list, tp, tte_link);
- if ((tp->tte_data & TD_PV) == 0 ||
- !pmap_track_modified(TTE_GET_PMAP(tp),
- TTE_GET_VA(tp)))
+ if ((tp->tte_data & TD_PV) == 0)
continue;
data = atomic_clear_long(&tp->tte_data, TD_REF);
if ((data & TD_REF) != 0 && ++count > 4)
@@ -1790,8 +1786,7 @@ pmap_is_modified(vm_page_t m)
if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0)
return (FALSE);
TAILQ_FOREACH(tp, &m->md.tte_list, tte_link) {
- if ((tp->tte_data & TD_PV) == 0 ||
- !pmap_track_modified(TTE_GET_PMAP(tp), TTE_GET_VA(tp)))
+ if ((tp->tte_data & TD_PV) == 0)
continue;
if ((tp->tte_data & TD_W) != 0)
return (TRUE);
@@ -1863,9 +1858,7 @@ pmap_clear_write(vm_page_t m)
continue;
data = atomic_clear_long(&tp->tte_data, TD_SW | TD_W);
if ((data & TD_W) != 0) {
- if (pmap_track_modified(TTE_GET_PMAP(tp),
- TTE_GET_VA(tp)))
- vm_page_dirty(m);
+ vm_page_dirty(m);
tlb_page_demap(TTE_GET_PMAP(tp), TTE_GET_VA(tp));
}
}
OpenPOWER on IntegriCloud