svn commit: r193290 - in user/kmacy/releng_7_2_xen/sys/i386:
include xen
Kip Macy
kmacy at FreeBSD.org
Tue Jun 2 00:21:52 UTC 2009
Author: kmacy
Date: Tue Jun 2 00:21:47 2009
New Revision: 193290
URL: http://svn.freebsd.org/changeset/base/193290
Log:
fix pmap compile & link post integrate
Modified:
user/kmacy/releng_7_2_xen/sys/i386/include/pmap.h
user/kmacy/releng_7_2_xen/sys/i386/xen/mp_machdep.c
user/kmacy/releng_7_2_xen/sys/i386/xen/pmap.c
Modified: user/kmacy/releng_7_2_xen/sys/i386/include/pmap.h
==============================================================================
--- user/kmacy/releng_7_2_xen/sys/i386/include/pmap.h Tue Jun 2 00:21:30 2009 (r193289)
+++ user/kmacy/releng_7_2_xen/sys/i386/include/pmap.h Tue Jun 2 00:21:47 2009 (r193290)
@@ -185,9 +185,7 @@ extern pd_entry_t PTDpde[];
extern pdpt_entry_t *IdlePDPT;
#endif
extern pd_entry_t *IdlePTD; /* physical address of "Idle" state directory */
-#endif
-#ifdef _KERNEL
/*
* virtual address to page table entry and
* to physical address.
@@ -283,7 +281,10 @@ pmap_kextract(vm_offset_t va)
return pa;
}
-#ifdef PAE
+#define PT_UPDATES_FLUSH()
+#endif
+
+#if defined(PAE) && !defined(XEN)
#define pde_cmpset(pdep, old, new) \
atomic_cmpset_64((pdep), (old), (new))
Modified: user/kmacy/releng_7_2_xen/sys/i386/xen/mp_machdep.c
==============================================================================
--- user/kmacy/releng_7_2_xen/sys/i386/xen/mp_machdep.c Tue Jun 2 00:21:30 2009 (r193289)
+++ user/kmacy/releng_7_2_xen/sys/i386/xen/mp_machdep.c Tue Jun 2 00:21:47 2009 (r193290)
@@ -535,7 +535,7 @@ init_secondary(void)
invlpg(addr);
/* set up FPU state on the AP */
- npxinit(__INITIAL_NPXCW__);
+ npxinit();
#if 0
/* set up SSE registers */
Modified: user/kmacy/releng_7_2_xen/sys/i386/xen/pmap.c
==============================================================================
--- user/kmacy/releng_7_2_xen/sys/i386/xen/pmap.c Tue Jun 2 00:21:30 2009 (r193289)
+++ user/kmacy/releng_7_2_xen/sys/i386/xen/pmap.c Tue Jun 2 00:21:47 2009 (r193290)
@@ -2630,7 +2630,7 @@ retry:
* insert this page into the given map NOW.
*/
void
-pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m,
+pmap_enter(pmap_t pmap, vm_offset_t va, vm_prot_t access, vm_page_t m,
vm_prot_t prot, boolean_t wired)
{
vm_paddr_t pa;
@@ -2796,7 +2796,9 @@ validate:
* to update the pte.
*/
if ((origpte & ~(PG_M|PG_A)) != newpte) {
- if (origpte) {
+ if ((access & VM_PROT_WRITE) != 0)
+ newpte |= PG_M;
+ if (origpte & PG_V) {
invlva = FALSE;
origpte = *pte;
PT_SET_VA(pte, newpte | PG_A, FALSE);
@@ -3434,6 +3436,25 @@ pmap_page_exists_quick(pmap_t pmap, vm_p
}
/*
+ * Returns TRUE if the given page is mapped individually or as part of
+ * a 4mpage. Otherwise, returns FALSE.
+ */
+boolean_t
+pmap_page_is_mapped(vm_page_t m)
+{
+ struct md_page *pvh;
+
+ if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0)
+ return (FALSE);
+ mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ if (TAILQ_EMPTY(&m->md.pv_list)) {
+ pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
+ return (!TAILQ_EMPTY(&pvh->pv_list));
+ } else
+ return (TRUE);
+}
+
+/*
* Remove all pages from specified address space
* this aids process exit speeds. Also, this code
* is special cased for current process only, but
@@ -4041,6 +4062,30 @@ pmap_addr_hint(vm_object_t obj, vm_offse
return addr;
}
+/*
+ * Increase the starting virtual address of the given mapping if a
+ * different alignment might result in more superpage mappings.
+ */
+void
+pmap_align_superpage(vm_object_t object, vm_ooffset_t offset,
+ vm_offset_t *addr, vm_size_t size)
+{
+ vm_offset_t superpage_offset;
+
+ if (size < NBPDR)
+ return;
+ if (object != NULL && (object->flags & OBJ_COLORED) != 0)
+ offset += ptoa(object->pg_color);
+ superpage_offset = offset & PDRMASK;
+ if (size - ((NBPDR - superpage_offset) & PDRMASK) < NBPDR ||
+ (*addr & PDRMASK) == superpage_offset)
+ return;
+ if ((*addr & PDRMASK) < superpage_offset)
+ *addr = (*addr & ~PDRMASK) + superpage_offset;
+ else
+ *addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset;
+}
+
#if defined(PMAP_DEBUG)
pmap_pid_dump(int pid)
{
More information about the svn-src-user
mailing list