svn commit: r295042 - in head/sys/arm: arm include
Svatopluk Kraus
skra at FreeBSD.org
Fri Jan 29 16:01:38 UTC 2016
Author: skra
Date: Fri Jan 29 16:01:37 2016
New Revision: 295042
URL: https://svnweb.freebsd.org/changeset/base/295042
Log:
Use kernel_pmap directly instead of pmap_kernel(). The kernel_pmap is
already used for __ARM_ARCH >= 6 and so even for __ARM_ARCH < 6 on some
common places.
Modified:
head/sys/arm/arm/db_interface.c
head/sys/arm/arm/machdep.c
head/sys/arm/arm/pmap.c
head/sys/arm/include/pmap-v6.h
head/sys/arm/include/pmap.h
Modified: head/sys/arm/arm/db_interface.c
==============================================================================
--- head/sys/arm/arm/db_interface.c Fri Jan 29 15:12:31 2016 (r295041)
+++ head/sys/arm/arm/db_interface.c Fri Jan 29 16:01:37 2016 (r295042)
@@ -170,7 +170,7 @@ db_validate_address(vm_offset_t addr)
addr >= VM_MIN_KERNEL_ADDRESS
#endif
)
- pmap = pmap_kernel();
+ pmap = kernel_pmap;
else
pmap = p->p_vmspace->vm_map.pmap;
Modified: head/sys/arm/arm/machdep.c
==============================================================================
--- head/sys/arm/arm/machdep.c Fri Jan 29 15:12:31 2016 (r295041)
+++ head/sys/arm/arm/machdep.c Fri Jan 29 16:01:37 2016 (r295042)
@@ -455,7 +455,7 @@ cpu_startup(void *dummy)
vm_pager_bufferinit();
pcb->pcb_regs.sf_sp = (u_int)thread0.td_kstack +
USPACE_SVC_STACK_TOP;
- pmap_set_pcb_pagedir(pmap_kernel(), pcb);
+ pmap_set_pcb_pagedir(kernel_pmap, pcb);
#if __ARM_ARCH < 6
vector_page_setprot(VM_PROT_READ);
pmap_postinit();
Modified: head/sys/arm/arm/pmap.c
==============================================================================
--- head/sys/arm/arm/pmap.c Fri Jan 29 15:12:31 2016 (r295041)
+++ head/sys/arm/arm/pmap.c Fri Jan 29 16:01:37 2016 (r295042)
@@ -394,7 +394,7 @@ int pmap_needs_pte_sync;
#define PMAP_SHPGPERPROC 200
#endif
-#define pmap_is_current(pm) ((pm) == pmap_kernel() || \
+#define pmap_is_current(pm) ((pm) == kernel_pmap || \
curproc->p_vmspace->vm_map.pmap == (pm))
static uma_zone_t pvzone = NULL;
uma_zone_t l2zone;
@@ -437,10 +437,10 @@ pmap_init_l1(struct l1_ttable *l1, pd_en
/*
* Copy the kernel's L1 entries to each new L1.
*/
- if (l1pt != pmap_kernel()->pm_l1->l1_kva)
- memcpy(l1pt, pmap_kernel()->pm_l1->l1_kva, L1_TABLE_SIZE);
+ if (l1pt != kernel_pmap->pm_l1->l1_kva)
+ memcpy(l1pt, kernel_pmap->pm_l1->l1_kva, L1_TABLE_SIZE);
- if ((l1->l1_physaddr = pmap_extract(pmap_kernel(), (vm_offset_t)l1pt)) == 0)
+ if ((l1->l1_physaddr = pmap_extract(kernel_pmap, (vm_offset_t)l1pt)) == 0)
panic("pmap_init_l1: can't get PA of L1 at %p", l1pt);
SLIST_INSERT_HEAD(&l1_list, l1, l1_link);
TAILQ_INSERT_TAIL(&l1_lru_list, l1, l1_lru);
@@ -932,7 +932,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2
* to a performance win over time as we don't need to continually
* alloc/free.
*/
- if (l2b->l2b_occupancy > 0 || pm == pmap_kernel())
+ if (l2b->l2b_occupancy > 0 || pm == kernel_pmap)
return;
/*
@@ -1002,7 +1002,7 @@ pmap_l2ptp_ctor(void *mem, int size, voi
* page tables, we simply fix up the cache-mode here if it's not
* correct.
*/
- l2b = pmap_get_l2_bucket(pmap_kernel(), va);
+ l2b = pmap_get_l2_bucket(kernel_pmap, va);
ptep = &l2b->l2b_kva[l2pte_index(va)];
pte = *ptep;
@@ -1077,9 +1077,9 @@ pmap_idcache_wbinv_range(pmap_t pm, vm_o
vm_size_t rest;
CTR4(KTR_PMAP, "pmap_dcache_wbinv_range: pmap %p is_kernel %d va 0x%08x"
- " len 0x%x ", pm, pm == pmap_kernel(), va, len);
+ " len 0x%x ", pm, pm == kernel_pmap, va, len);
- if (pmap_is_current(pm) || pm == pmap_kernel()) {
+ if (pmap_is_current(pm) || pm == kernel_pmap) {
rest = MIN(PAGE_SIZE - (va & PAGE_MASK), len);
while (len > 0) {
if (pmap_has_valid_mapping(pm, va)) {
@@ -1100,7 +1100,7 @@ pmap_dcache_wb_range(pmap_t pm, vm_offse
vm_size_t rest;
CTR4(KTR_PMAP, "pmap_dcache_wb_range: pmap %p is_kernel %d va 0x%08x "
- "len 0x%x ", pm, pm == pmap_kernel(), va, len);
+ "len 0x%x ", pm, pm == kernel_pmap, va, len);
CTR2(KTR_PMAP, " do_inv %d rd_only %d", do_inv, rd_only);
if (pmap_is_current(pm)) {
@@ -1230,13 +1230,13 @@ pmap_fix_cache(struct vm_page *pg, pmap_
TAILQ_FOREACH(pv, &pg->md.pv_list, pv_list) {
/* generate a count of the pv_entry uses */
if (pv->pv_flags & PVF_WRITE) {
- if (pv->pv_pmap == pmap_kernel())
+ if (pv->pv_pmap == kernel_pmap)
kwritable++;
else if (pv->pv_pmap == pm)
uwritable++;
writable++;
}
- if (pv->pv_pmap == pmap_kernel())
+ if (pv->pv_pmap == kernel_pmap)
kentries++;
else {
if (pv->pv_pmap == pm)
@@ -1248,19 +1248,19 @@ pmap_fix_cache(struct vm_page *pg, pmap_
* check if the user duplicate mapping has
* been removed.
*/
- if ((pm != pmap_kernel()) && (((uentries > 1) && uwritable) ||
+ if ((pm != kernel_pmap) && (((uentries > 1) && uwritable) ||
(uwritable > 1)))
pmwc = 1;
TAILQ_FOREACH(pv, &pg->md.pv_list, pv_list) {
/* check for user uncachable conditions - order is important */
- if (pm != pmap_kernel() &&
- (pv->pv_pmap == pm || pv->pv_pmap == pmap_kernel())) {
+ if (pm != kernel_pmap &&
+ (pv->pv_pmap == pm || pv->pv_pmap == kernel_pmap)) {
if ((uentries > 1 && uwritable) || uwritable > 1) {
/* user duplicate mapping */
- if (pv->pv_pmap != pmap_kernel())
+ if (pv->pv_pmap != kernel_pmap)
pv->pv_flags |= PVF_MWC;
if (!(pv->pv_flags & PVF_NC)) {
@@ -1279,7 +1279,7 @@ pmap_fix_cache(struct vm_page *pg, pmap_
if ((kwritable && (entries || kentries > 1)) ||
(kwritable > 1) ||
((kwritable != writable) && kentries &&
- (pv->pv_pmap == pmap_kernel() ||
+ (pv->pv_pmap == kernel_pmap ||
(pv->pv_flags & PVF_WRITE) ||
(pv->pv_flags & PVF_MWC)))) {
@@ -1291,7 +1291,7 @@ pmap_fix_cache(struct vm_page *pg, pmap_
}
/* kernel and user are cachable */
- if ((pm == pmap_kernel()) && !(pv->pv_flags & PVF_MWC) &&
+ if ((pm == kernel_pmap) && !(pv->pv_flags & PVF_MWC) &&
(pv->pv_flags & PVF_NC)) {
pv->pv_flags &= ~PVF_NC;
@@ -1300,8 +1300,8 @@ pmap_fix_cache(struct vm_page *pg, pmap_
continue;
}
/* user is no longer sharable and writable */
- if (pm != pmap_kernel() &&
- (pv->pv_pmap == pm || pv->pv_pmap == pmap_kernel()) &&
+ if (pm != kernel_pmap &&
+ (pv->pv_pmap == pm || pv->pv_pmap == kernel_pmap) &&
!pmwc && (pv->pv_flags & PVF_NC)) {
pv->pv_flags &= ~(PVF_NC | PVF_MWC);
@@ -1565,7 +1565,7 @@ vector_page_setprot(int prot)
struct l2_bucket *l2b;
pt_entry_t *ptep;
- l2b = pmap_get_l2_bucket(pmap_kernel(), vector_page);
+ l2b = pmap_get_l2_bucket(kernel_pmap, vector_page);
ptep = &l2b->l2b_kva[l2pte_index(vector_page)];
@@ -1603,7 +1603,7 @@ pmap_nuke_pv(struct vm_page *pg, pmap_t
pg->md.pvh_attrs &= ~PVF_REF;
else
vm_page_aflag_set(pg, PGA_REFERENCED);
- if ((pve->pv_flags & PVF_NC) && ((pm == pmap_kernel()) ||
+ if ((pve->pv_flags & PVF_NC) && ((pm == kernel_pmap) ||
(pve->pv_flags & PVF_WRITE) || !(pve->pv_flags & PVF_MWC)))
pmap_fix_cache(pg, pm, 0);
else if (pve->pv_flags & PVF_WRITE) {
@@ -1972,7 +1972,7 @@ pmap_postinit(void)
pl1pt = (pd_entry_t *)va;
while (va < eva) {
- l2b = pmap_get_l2_bucket(pmap_kernel(), va);
+ l2b = pmap_get_l2_bucket(kernel_pmap, va);
ptep = &l2b->l2b_kva[l2pte_index(va)];
pte = *ptep;
pte = (pte & ~L2_S_CACHE_MASK) | pte_l2_s_cache_mode_pt;
@@ -2122,7 +2122,7 @@ pmap_alloc_specials(vm_offset_t *availp,
struct l2_bucket *l2b;
if (ptep) {
- l2b = pmap_get_l2_bucket(pmap_kernel(), va);
+ l2b = pmap_get_l2_bucket(kernel_pmap, va);
if (l2b == NULL)
panic("pmap_alloc_specials: no l2b for 0x%x", va);
@@ -2381,7 +2381,7 @@ pmap_grow_map(vm_offset_t va, pt_entry_t
if (pap)
*pap = pa;
- l2b = pmap_get_l2_bucket(pmap_kernel(), va);
+ l2b = pmap_get_l2_bucket(kernel_pmap, va);
ptep = &l2b->l2b_kva[l2pte_index(va)];
*ptep = L2_S_PROTO | pa | cache_mode |
@@ -2494,7 +2494,7 @@ pmap_grow_l2_bucket(pmap_t pm, vm_offset
void
pmap_growkernel(vm_offset_t addr)
{
- pmap_t kpm = pmap_kernel();
+ pmap_t kpm = kernel_pmap;
if (addr <= pmap_curmaxkvaddr)
return; /* we are OK */
@@ -2654,9 +2654,9 @@ pmap_kenter_internal(vm_offset_t va, vm_
(uint32_t) va, (uint32_t) pa));
- l2b = pmap_get_l2_bucket(pmap_kernel(), va);
+ l2b = pmap_get_l2_bucket(kernel_pmap, va);
if (l2b == NULL)
- l2b = pmap_grow_l2_bucket(pmap_kernel(), va);
+ l2b = pmap_grow_l2_bucket(kernel_pmap, va);
KASSERT(l2b != NULL, ("No L2 Bucket"));
pte = &l2b->l2b_kva[l2pte_index(va)];
opte = *pte;
@@ -2690,11 +2690,11 @@ pmap_kenter_internal(vm_offset_t va, vm_
if (!TAILQ_EMPTY(&m->md.pv_list) || m->md.pv_kva != 0) {
if ((pve = pmap_get_pv_entry()) == NULL)
panic("pmap_kenter_internal: no pv entries");
- PMAP_LOCK(pmap_kernel());
- pmap_enter_pv(m, pve, pmap_kernel(), va,
+ PMAP_LOCK(kernel_pmap);
+ pmap_enter_pv(m, pve, kernel_pmap, va,
PVF_WRITE | PVF_UNMAN);
- pmap_fix_cache(m, pmap_kernel(), va);
- PMAP_UNLOCK(pmap_kernel());
+ pmap_fix_cache(m, kernel_pmap, va);
+ PMAP_UNLOCK(kernel_pmap);
} else {
m->md.pv_kva = va;
}
@@ -2758,7 +2758,7 @@ pmap_kenter_user(vm_offset_t va, vm_padd
* at the first use of the new address, or bad things will happen,
* as we use one of these addresses in the exception handlers.
*/
- pmap_fault_fixup(pmap_kernel(), va, VM_PROT_READ|VM_PROT_WRITE, 1);
+ pmap_fault_fixup(kernel_pmap, va, VM_PROT_READ|VM_PROT_WRITE, 1);
}
vm_paddr_t
@@ -2780,7 +2780,7 @@ pmap_kremove(vm_offset_t va)
vm_page_t m;
vm_offset_t pa;
- l2b = pmap_get_l2_bucket(pmap_kernel(), va);
+ l2b = pmap_get_l2_bucket(kernel_pmap, va);
if (!l2b)
return;
KASSERT(l2b != NULL, ("No L2 Bucket"));
@@ -2796,11 +2796,11 @@ pmap_kremove(vm_offset_t va)
* before the pvzone is initialized.
*/
rw_wlock(&pvh_global_lock);
- PMAP_LOCK(pmap_kernel());
+ PMAP_LOCK(kernel_pmap);
if (pvzone != NULL && (m = vm_phys_paddr_to_vm_page(pa)) &&
- (pve = pmap_remove_pv(m, pmap_kernel(), va)))
+ (pve = pmap_remove_pv(m, kernel_pmap, va)))
pmap_free_pv_entry(pve);
- PMAP_UNLOCK(pmap_kernel());
+ PMAP_UNLOCK(kernel_pmap);
rw_wunlock(&pvh_global_lock);
va = va & ~PAGE_MASK;
cpu_dcache_wbinv_range(va, PAGE_SIZE);
@@ -3027,7 +3027,7 @@ pmap_remove_all(vm_page_t m)
curpm = vmspace_pmap(curproc->p_vmspace);
while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) {
if (flush == FALSE && (pv->pv_pmap == curpm ||
- pv->pv_pmap == pmap_kernel()))
+ pv->pv_pmap == kernel_pmap))
flush = TRUE;
PMAP_LOCK(pv->pv_pmap);
@@ -3239,7 +3239,7 @@ pmap_enter_locked(pmap_t pmap, vm_offset
PDEBUG(1, printf("pmap_enter: pmap = %08x, va = %08x, m = %08x, prot = %x, "
"flags = %x\n", (uint32_t) pmap, va, (uint32_t) m, prot, flags));
- if (pmap == pmap_kernel()) {
+ if (pmap == kernel_pmap) {
l2b = pmap_get_l2_bucket(pmap, va);
if (l2b == NULL)
l2b = pmap_grow_l2_bucket(pmap, va);
@@ -3414,7 +3414,7 @@ do_l2b_alloc:
/*
* Make sure userland mappings get the right permissions
*/
- if (pmap != pmap_kernel() && va != vector_page) {
+ if (pmap != kernel_pmap && va != vector_page) {
npte |= L2_S_PROT_U;
}
@@ -3672,9 +3672,9 @@ retry:
l1pd = pmap->pm_l1->l1_kva[l1idx];
if (l1pte_section_p(l1pd)) {
/*
- * These should only happen for pmap_kernel()
+ * These should only happen for kernel_pmap
*/
- KASSERT(pmap == pmap_kernel(), ("huh"));
+ KASSERT(pmap == kernel_pmap, ("huh"));
/* XXX: what to do about the bits > 32 ? */
if (l1pd & L1_S_SUPERSEC)
pa = (l1pd & L1_SUP_FRAME) | (va & L1_SUP_OFFSET);
@@ -4034,7 +4034,7 @@ pmap_use_minicache(vm_offset_t va, vm_si
if (next_bucket > eva)
next_bucket = eva;
- l2b = pmap_get_l2_bucket(pmap_kernel(), va);
+ l2b = pmap_get_l2_bucket(kernel_pmap, va);
sptep = ptep = &l2b->l2b_kva[l2pte_index(va)];
@@ -4137,10 +4137,10 @@ pmap_clean_page(struct pv_entry *pv, boo
if (curthread)
pm = vmspace_pmap(curproc->p_vmspace);
else
- pm = pmap_kernel();
+ pm = kernel_pmap;
for (npv = pv; npv; npv = TAILQ_NEXT(npv, pv_list)) {
- if (npv->pv_pmap == pmap_kernel() || npv->pv_pmap == pm) {
+ if (npv->pv_pmap == kernel_pmap || npv->pv_pmap == pm) {
flags |= npv->pv_flags;
/*
* The page is mapped non-cacheable in
Modified: head/sys/arm/include/pmap-v6.h
==============================================================================
--- head/sys/arm/include/pmap-v6.h Fri Jan 29 15:12:31 2016 (r295041)
+++ head/sys/arm/include/pmap-v6.h Fri Jan 29 16:01:37 2016 (r295042)
@@ -271,15 +271,6 @@ void pmap_devmap_bootstrap(const struct
void pmap_pte_init_mmu_v6(void);
void vector_page_setprot(int);
-
-/*
- * sys/arm/arm/db_interface.c
- * sys/arm/arm/machdep.c
- * sys/arm/arm/minidump_machdep.c
- * sys/arm/arm/pmap.c
- */
-#define pmap_kernel() kernel_pmap
-
/*
* sys/arm/arm/bus_space_generic.c (just comment)
* sys/arm/arm/devmap.c
Modified: head/sys/arm/include/pmap.h
==============================================================================
--- head/sys/arm/include/pmap.h Fri Jan 29 15:12:31 2016 (r295041)
+++ head/sys/arm/include/pmap.h Fri Jan 29 16:01:37 2016 (r295042)
@@ -176,7 +176,6 @@ typedef struct pmap *pmap_t;
#ifdef _KERNEL
extern struct pmap kernel_pmap_store;
#define kernel_pmap (&kernel_pmap_store)
-#define pmap_kernel() kernel_pmap
#define PMAP_ASSERT_LOCKED(pmap) \
mtx_assert(&(pmap)->pm_mtx, MA_OWNED)
@@ -247,7 +246,7 @@ vtopte(vm_offset_t va)
pd_entry_t *pdep;
pt_entry_t *ptep;
- if (pmap_get_pde_pte(pmap_kernel(), va, &pdep, &ptep) == FALSE)
+ if (pmap_get_pde_pte(kernel_pmap, va, &pdep, &ptep) == FALSE)
return (NULL);
return (ptep);
}
More information about the svn-src-all
mailing list