PERFORCE change 130313 for review
Kip Macy
kmacy at FreeBSD.org
Wed Dec 5 21:06:46 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=130313
Change 130313 by kmacy at entropy_kmacy_xen31 on 2007/12/06 05:06:21
remaining fixes to make pmap.c and locore.s compile
Affected files ...
.. //depot/projects/xen31/sys/i386/include/pmap.h#5 edit
.. //depot/projects/xen31/sys/i386/xen/locore.s#2 edit
.. //depot/projects/xen31/sys/i386/xen/pmap.c#3 edit
Differences ...
==== //depot/projects/xen31/sys/i386/include/pmap.h#5 (text+ko) ====
@@ -249,6 +249,7 @@
}
#define pte_store(ptep, pte) pte_load_store((ptep), (pt_entry_t)pte)
+#define pte_clear(ptep) pte_load_store((ptep), (pt_entry_t)0ULL)
#else
/*
==== //depot/projects/xen31/sys/i386/xen/locore.s#2 (text+ko) ====
@@ -83,16 +83,6 @@
.set PTD,PTmap + (PTDPTDI * PAGE_SIZE)
.set PTDpde,PTD + (PTDPTDI * PDESIZE)
-#ifdef SMP
-/*
- * Define layout of per-cpu address space.
- * This is "constructed" in locore.s on the BSP and in mp_machdep.c
- * for each AP. DO NOT REORDER THESE WITHOUT UPDATING THE REST!
- */
- .globl SMP_prvspace
- .set SMP_prvspace,(MPPTDI << PDRSHIFT)
-#endif /* SMP */
-
/*
* Compiled KERNBASE location and the kernel load address
*/
==== //depot/projects/xen31/sys/i386/xen/pmap.c#3 (text+ko) ====
@@ -1394,13 +1394,16 @@
/*
* allocate the page directory page(s)
*/
- for (i = 0; i < NPGPTD;) {
+ for (i = 0; i < npgptd;) {
m = vm_page_alloc(NULL, color++,
VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ | VM_ALLOC_WIRED |
VM_ALLOC_ZERO);
if (m == NULL)
VM_WAIT;
else {
+#ifdef XEN
+ pmap_zero_page(m); /* is this really needed? */
+#endif
ptdpg[i++] = m;
}
}
@@ -1416,7 +1419,7 @@
LIST_INSERT_HEAD(&allpmaps, pmap, pm_list);
mtx_unlock_spin(&allpmaps_lock);
/* Wire in kernel global address entries. */
- /* XXX copies current process, does not fill in MPPTDI */
+ /* XXX copies current process */
bcopy(kernel_pmap->pm_pdir + KPTDI, pmap->pm_pdir + KPTDI,
nkpt * sizeof(pd_entry_t));
/* XXX need to copy global address entries to page directory's L1 shadow */
@@ -1429,10 +1432,6 @@
xen_pt_pin(ma);
}
-#ifdef SMP
- pmap->pm_pdir[MPPTDI] = kernel_pmap->pm_pdir[MPPTDI];
-#endif
-
/* pin and install L1 shadow */
for (i = 0; i < NPGPTD; i++) {
ma = xpmap_ptom(VM_PAGE_TO_PHYS(ptdpg[i]));
@@ -1692,9 +1691,6 @@
bzero(pmap->pm_pdir + PTDPTDI, (nkpt + NPGPTD) *
sizeof(*pmap->pm_pdir));
-#ifdef SMP
- PD_CLEAR_VA(pmap, &pmap->pm_pdir[MPPTDI], FALSE);
-#endif
pmap_qremove((vm_offset_t)pmap->pm_pdir, NPGPTD);
@@ -3778,7 +3774,7 @@
opte = PT_GET(pte);
npte = opte & ~(PG_PTE_PAT | PG_NC_PCD | PG_NC_PWT);
npte |= pmap_cache_bits(mode, 0);
- PD_SET(tmpva, npte, FALSE);
+ PT_SET_VA(tmpva, npte, FALSE);
#endif
tmpva += PAGE_SIZE;
size -= PAGE_SIZE;
More information about the p4-projects
mailing list