Remove old pmap support for platforms which have fully switched over.
This commit is contained in:
parent
803e64c800
commit
1dff12252d
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: cats_machdep.c,v 1.42 2003/05/02 23:22:34 thorpej Exp $ */
|
||||
/* $NetBSD: cats_machdep.c,v 1.43 2003/05/03 03:29:06 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997,1998 Mark Brinicombe.
|
||||
|
@ -346,9 +346,6 @@ initarm(bootargs)
|
|||
u_int l1pagetable;
|
||||
struct exec *kernexec = (struct exec *)KERNEL_TEXT_BASE;
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Heads up ... Setup the CPU / MMU / TLB functions
|
||||
|
@ -488,15 +485,8 @@ initarm(bootargs)
|
|||
&& kernel_l1pt.pv_pa == 0) {
|
||||
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
|
||||
} else {
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
valloc_pages(kernel_pt_table[loop1],
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#else
|
||||
alloc_pages(kernel_pt_table[loop1].pv_pa,
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
kernel_pt_table[loop1].pv_va =
|
||||
kernel_pt_table[loop1].pv_pa;
|
||||
#endif
|
||||
++loop1;
|
||||
}
|
||||
}
|
||||
|
@ -514,11 +504,6 @@ initarm(bootargs)
|
|||
*/
|
||||
alloc_pages(systempage.pv_pa, 1);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables*/
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -566,10 +551,6 @@ initarm(bootargs)
|
|||
pmap_curmaxkvaddr =
|
||||
KERNEL_VM_BASE + (KERNEL_PT_VMDATA_NUM * 0x00400000);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
#ifdef VERBOSE_INIT_ARM
|
||||
printf("Mapping kernel\n");
|
||||
#endif
|
||||
|
@ -628,10 +609,6 @@ initarm(bootargs)
|
|||
pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa,
|
||||
UPAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#else
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
|
||||
|
@ -640,40 +617,6 @@ initarm(bootargs)
|
|||
kernel_pt_table[loop].pv_pa, L2_TABLE_SIZE,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
for (loop = 0; loop < KERNEL_PT_KERNEL_NUM; loop++)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (0x00000000 >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
pmap_map_entry(l1pagetable, vector_page, systempage.pv_pa,
|
||||
|
@ -714,12 +657,9 @@ initarm(bootargs)
|
|||
*/
|
||||
/* fcomcndetach(); */
|
||||
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
#endif
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
|
||||
/*
|
||||
* Moved from cpu_startup() as data_abort_handler() references
|
||||
|
@ -727,7 +667,6 @@ initarm(bootargs)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#endif
|
||||
/*
|
||||
* XXX this should only be done in main() but it useful to
|
||||
* have output earlier ...
|
||||
|
@ -861,11 +800,8 @@ initarm(bootargs)
|
|||
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
printf("pmap ");
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#endif
|
||||
|
||||
/* Setup the IRQ system */
|
||||
printf("irq ");
|
||||
footbridge_intr_init();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: vmparam.h,v 1.18 2003/04/28 01:34:29 thorpej Exp $ */
|
||||
/* $NetBSD: vmparam.h,v 1.19 2003/05/03 03:29:07 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
|
@ -52,9 +52,6 @@
|
|||
|
||||
/* Various constants used by the MD code*/
|
||||
#define KERNEL_TEXT_BASE (KERNEL_BASE + 0x00000000)
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
#define APTE_BASE (KERNEL_BASE + 0x00c00000)
|
||||
#endif
|
||||
#define KERNEL_VM_BASE (KERNEL_BASE + 0x01000000)
|
||||
/*
|
||||
* The Kernel VM Size varies depending on the machine depending on how
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: brh_machdep.c,v 1.7 2003/05/02 23:22:34 thorpej Exp $ */
|
||||
/* $NetBSD: brh_machdep.c,v 1.8 2003/05/03 03:29:07 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
|
||||
|
@ -388,9 +388,6 @@ initarm(void *arg)
|
|||
int loop1;
|
||||
u_int l1pagetable;
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
paddr_t memstart;
|
||||
psize_t memsize;
|
||||
|
||||
|
@ -517,15 +514,8 @@ initarm(void *arg)
|
|||
&& kernel_l1pt.pv_pa == 0) {
|
||||
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
|
||||
} else {
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
valloc_pages(kernel_pt_table[loop1],
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#else
|
||||
alloc_pages(kernel_pt_table[loop1].pv_pa,
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
kernel_pt_table[loop1].pv_va =
|
||||
kernel_pt_table[loop1].pv_pa;
|
||||
#endif
|
||||
++loop1;
|
||||
}
|
||||
}
|
||||
|
@ -541,11 +531,6 @@ initarm(void *arg)
|
|||
*/
|
||||
alloc_pages(systempage.pv_pa, 1);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables. */
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -598,9 +583,6 @@ initarm(void *arg)
|
|||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
|
||||
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
|
@ -644,10 +626,6 @@ initarm(void *arg)
|
|||
pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa,
|
||||
UPAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#else
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
|
||||
|
@ -656,44 +634,11 @@ initarm(void *arg)
|
|||
kernel_pt_table[loop].pv_pa, L2_TABLE_SIZE,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Map the Mini-Data cache clean area. */
|
||||
xscale_setup_minidata(l1pagetable, minidataclean.pv_va,
|
||||
minidataclean.pv_pa);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
for (loop = 0; loop < KERNEL_PT_KERNEL_NUM; loop++) {
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
}
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
kernel_ptpt.pv_pa, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
trunc_page(PTE_BASE + (ARM_VECTORS_HIGH >> (PGSHIFT-2))),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
pmap_map_entry(l1pagetable, ARM_VECTORS_HIGH, systempage.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
@ -736,12 +681,9 @@ initarm(void *arg)
|
|||
#ifdef VERBOSE_INIT_ARM
|
||||
printf("switching to new L1 page table @%#lx...", kernel_l1pt.pv_pa);
|
||||
#endif
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
#endif
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
|
||||
|
||||
/*
|
||||
|
@ -750,7 +692,6 @@ initarm(void *arg)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#endif
|
||||
|
||||
#ifdef VERBOSE_INIT_ARM
|
||||
printf("done!\n");
|
||||
|
@ -854,11 +795,7 @@ initarm(void *arg)
|
|||
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
printf("pmap ");
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* Setup the IRQ system */
|
||||
printf("irq ");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: vmparam.h,v 1.16 2003/04/29 14:04:01 scw Exp $ */
|
||||
/* $NetBSD: vmparam.h,v 1.17 2003/05/03 03:29:08 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
|
@ -53,9 +53,6 @@
|
|||
#ifndef ARM32_NEW_VM_LAYOUT
|
||||
/* Various constants used by the MD code*/
|
||||
#define KERNEL_TEXT_BASE (KERNEL_BASE + 0x00200000)
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
#define APTE_BASE (KERNEL_BASE + 0x00c00000)
|
||||
#endif
|
||||
#define KERNEL_VM_BASE (KERNEL_BASE + 0x01000000)
|
||||
#endif
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: integrator_machdep.c,v 1.33 2003/05/03 00:39:22 thorpej Exp $ */
|
||||
/* $NetBSD: integrator_machdep.c,v 1.34 2003/05/03 03:29:08 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001,2002 ARM Ltd
|
||||
|
@ -389,9 +389,7 @@ initarm(void *arg)
|
|||
extern int etext asm ("_etext");
|
||||
extern int end asm ("_end");
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
paddr_t memstart;
|
||||
psize_t memsize;
|
||||
#if NPLCOM > 0 && defined(PLCONSOLE)
|
||||
|
@ -540,15 +538,8 @@ initarm(void *arg)
|
|||
&& kernel_l1pt.pv_pa == 0) {
|
||||
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
|
||||
} else {
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
valloc_pages(kernel_pt_table[loop1],
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#else
|
||||
alloc_pages(kernel_pt_table[loop1].pv_pa,
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
kernel_pt_table[loop1].pv_va =
|
||||
kernel_pt_table[loop1].pv_pa;
|
||||
#endif
|
||||
++loop1;
|
||||
}
|
||||
}
|
||||
|
@ -564,11 +555,6 @@ initarm(void *arg)
|
|||
*/
|
||||
alloc_pages(systempage.pv_pa, 1);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables. */
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -613,9 +599,6 @@ initarm(void *arg)
|
|||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
|
||||
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
|
@ -658,10 +641,6 @@ initarm(void *arg)
|
|||
pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa,
|
||||
UPAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#else
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
|
||||
|
@ -670,39 +649,6 @@ initarm(void *arg)
|
|||
kernel_pt_table[loop].pv_va, L2_TABLE_SIZE,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
for (loop = 0; loop < KERNEL_PT_KERNEL_NUM; loop++) {
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
}
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
kernel_ptpt.pv_pa, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (0x00000000 >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
#if 1
|
||||
|
@ -758,12 +704,9 @@ initarm(void *arg)
|
|||
physical_freestart, free_pages, free_pages);
|
||||
printf("switching to new L1 page table @%#lx...", kernel_l1pt.pv_pa);
|
||||
#endif
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
#endif
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
|
||||
|
||||
/*
|
||||
|
@ -772,7 +715,6 @@ initarm(void *arg)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#endif
|
||||
|
||||
#ifdef VERBOSE_INIT_ARM
|
||||
printf("done!\n");
|
||||
|
@ -842,11 +784,7 @@ initarm(void *arg)
|
|||
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
printf("pmap ");
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* Setup the IRQ system */
|
||||
printf("irq ");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: iq80310_machdep.c,v 1.51 2003/05/02 23:22:34 thorpej Exp $ */
|
||||
/* $NetBSD: iq80310_machdep.c,v 1.52 2003/05/03 03:29:09 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
|
||||
|
@ -336,9 +336,6 @@ initarm(void *arg)
|
|||
int loop1;
|
||||
u_int l1pagetable;
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
paddr_t memstart;
|
||||
psize_t memsize;
|
||||
|
||||
|
@ -488,15 +485,8 @@ initarm(void *arg)
|
|||
&& kernel_l1pt.pv_pa == 0) {
|
||||
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
|
||||
} else {
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
valloc_pages(kernel_pt_table[loop1],
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#else
|
||||
alloc_pages(kernel_pt_table[loop1].pv_pa,
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
kernel_pt_table[loop1].pv_va =
|
||||
kernel_pt_table[loop1].pv_pa;
|
||||
#endif
|
||||
++loop1;
|
||||
}
|
||||
}
|
||||
|
@ -512,11 +502,6 @@ initarm(void *arg)
|
|||
*/
|
||||
alloc_pages(systempage.pv_pa, 1);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables. */
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -571,9 +556,6 @@ initarm(void *arg)
|
|||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
|
||||
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
|
@ -617,10 +599,6 @@ initarm(void *arg)
|
|||
pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa,
|
||||
UPAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#else
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
|
||||
|
@ -629,44 +607,11 @@ initarm(void *arg)
|
|||
kernel_pt_table[loop].pv_pa, L2_TABLE_SIZE,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Map the Mini-Data cache clean area. */
|
||||
xscale_setup_minidata(l1pagetable, minidataclean.pv_va,
|
||||
minidataclean.pv_pa);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
for (loop = 0; loop < KERNEL_PT_KERNEL_NUM; loop++) {
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
}
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
kernel_ptpt.pv_pa, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
trunc_page(PTE_BASE + (ARM_VECTORS_HIGH >> (PGSHIFT-2))),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
pmap_map_entry(l1pagetable, ARM_VECTORS_HIGH, systempage.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
@ -760,12 +705,9 @@ initarm(void *arg)
|
|||
physical_freestart, free_pages, free_pages);
|
||||
printf("switching to new L1 page table @%#lx...", kernel_l1pt.pv_pa);
|
||||
#endif
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
#endif
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
|
||||
|
||||
/*
|
||||
|
@ -774,7 +716,6 @@ initarm(void *arg)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#endif
|
||||
|
||||
#ifdef VERBOSE_INIT_ARM
|
||||
printf("done!\n");
|
||||
|
@ -830,11 +771,7 @@ initarm(void *arg)
|
|||
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
printf("pmap ");
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* Setup the IRQ system */
|
||||
printf("irq ");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: iq80321_machdep.c,v 1.20 2003/05/02 23:22:35 thorpej Exp $ */
|
||||
/* $NetBSD: iq80321_machdep.c,v 1.21 2003/05/03 03:29:09 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
|
||||
|
@ -380,9 +380,6 @@ initarm(void *arg)
|
|||
int loop1;
|
||||
u_int l1pagetable;
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
paddr_t memstart;
|
||||
psize_t memsize;
|
||||
|
||||
|
@ -508,15 +505,8 @@ initarm(void *arg)
|
|||
&& kernel_l1pt.pv_pa == 0) {
|
||||
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
|
||||
} else {
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
valloc_pages(kernel_pt_table[loop1],
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#else
|
||||
alloc_pages(kernel_pt_table[loop1].pv_pa,
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
kernel_pt_table[loop1].pv_va =
|
||||
kernel_pt_table[loop1].pv_pa;
|
||||
#endif
|
||||
++loop1;
|
||||
}
|
||||
}
|
||||
|
@ -532,11 +522,6 @@ initarm(void *arg)
|
|||
*/
|
||||
alloc_pages(systempage.pv_pa, 1);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables. */
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -591,9 +576,6 @@ initarm(void *arg)
|
|||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
|
||||
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
|
@ -637,10 +619,6 @@ initarm(void *arg)
|
|||
pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa,
|
||||
UPAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#else
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
|
||||
|
@ -649,44 +627,11 @@ initarm(void *arg)
|
|||
kernel_pt_table[loop].pv_pa, L2_TABLE_SIZE,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Map the Mini-Data cache clean area. */
|
||||
xscale_setup_minidata(l1pagetable, minidataclean.pv_va,
|
||||
minidataclean.pv_pa);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
for (loop = 0; loop < KERNEL_PT_KERNEL_NUM; loop++) {
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
}
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
kernel_ptpt.pv_pa, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
trunc_page(PTE_BASE + (ARM_VECTORS_HIGH >> (PGSHIFT-2))),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
pmap_map_entry(l1pagetable, ARM_VECTORS_HIGH, systempage.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
@ -770,12 +715,9 @@ initarm(void *arg)
|
|||
physical_freestart, free_pages, free_pages);
|
||||
printf("switching to new L1 page table @%#lx...", kernel_l1pt.pv_pa);
|
||||
#endif
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
#endif
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
|
||||
|
||||
/*
|
||||
|
@ -784,7 +726,6 @@ initarm(void *arg)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#endif
|
||||
|
||||
#ifdef VERBOSE_INIT_ARM
|
||||
printf("done!\n");
|
||||
|
@ -840,11 +781,7 @@ initarm(void *arg)
|
|||
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
printf("pmap ");
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* Setup the IRQ system */
|
||||
printf("irq ");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ixm1200_machdep.c,v 1.17 2003/05/03 00:39:22 thorpej Exp $ */
|
||||
/* $NetBSD: ixm1200_machdep.c,v 1.18 2003/05/03 03:29:09 thorpej Exp $ */
|
||||
#undef DEBUG_BEFOREMMU
|
||||
/*
|
||||
* Copyright (c) 2002, 2003
|
||||
|
@ -67,7 +67,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: ixm1200_machdep.c,v 1.17 2003/05/03 00:39:22 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: ixm1200_machdep.c,v 1.18 2003/05/03 03:29:09 thorpej Exp $");
|
||||
|
||||
#include "opt_ddb.h"
|
||||
#include "opt_pmap_debug.h"
|
||||
|
@ -324,9 +324,6 @@ initarm(void *arg)
|
|||
vaddr_t l1pagetable;
|
||||
vaddr_t freemempos;
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
#if NKSYMS || defined(DDB) || defined(LKM)
|
||||
Elf_Shdr *sh;
|
||||
#endif
|
||||
|
@ -426,15 +423,8 @@ initarm(void *arg)
|
|||
&& kernel_l1pt.pv_pa == 0) {
|
||||
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
|
||||
} else {
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
valloc_pages(kernel_pt_table[loop1],
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#else
|
||||
alloc_pages(kernel_pt_table[loop1].pv_pa,
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
kernel_pt_table[loop1].pv_va =
|
||||
kernel_pt_table[loop1].pv_pa;
|
||||
#endif
|
||||
++loop1;
|
||||
}
|
||||
}
|
||||
|
@ -452,11 +442,6 @@ initarm(void *arg)
|
|||
*/
|
||||
alloc_pages(systempage.pv_pa, 1);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables. */
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -513,9 +498,6 @@ initarm(void *arg)
|
|||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
|
||||
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
|
@ -570,10 +552,6 @@ initarm(void *arg)
|
|||
pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa,
|
||||
UPAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#else
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
|
||||
|
@ -582,41 +560,6 @@ initarm(void *arg)
|
|||
kernel_pt_table[loop].pv_pa, L2_TABLE_SIZE,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (0x00000000 >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
for (loop = 0; loop < KERNEL_PT_KERNEL_NUM; loop++)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
kernel_ptpt.pv_pa, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
pmap_map_entry(l1pagetable, vector_page, systempage.pv_pa,
|
||||
|
@ -649,12 +592,9 @@ initarm(void *arg)
|
|||
*/
|
||||
|
||||
/* Switch tables */
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
#endif
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
|
||||
|
||||
/*
|
||||
|
@ -663,7 +603,6 @@ initarm(void *arg)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* We must now clean the cache again....
|
||||
|
@ -730,11 +669,7 @@ initarm(void *arg)
|
|||
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
printf("pmap ");
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* Setup the IRQ system */
|
||||
printf("irq ");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: smdk2800_machdep.c,v 1.4 2003/05/03 00:39:22 thorpej Exp $ */
|
||||
/* $NetBSD: smdk2800_machdep.c,v 1.5 2003/05/03 03:29:10 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2002 Fujitsu Component Limited
|
||||
|
@ -368,9 +368,6 @@ initarm(void *arg)
|
|||
extern int etext asm("_etext");
|
||||
extern int end asm("_end");
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
struct s3c2xx0_softc temp_softc; /* used to initialize IO regs */
|
||||
int progress_counter = 0;
|
||||
#ifdef MEMORY_DISK_DYNAMIC
|
||||
|
@ -534,15 +531,8 @@ initarm(void *arg)
|
|||
&& kernel_l1pt.pv_pa == 0) {
|
||||
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
|
||||
} else {
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
valloc_pages(kernel_pt_table[loop1],
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#else
|
||||
alloc_pages(kernel_pt_table[loop1].pv_pa,
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
kernel_pt_table[loop1].pv_va =
|
||||
kernel_pt_table[loop1].pv_pa;
|
||||
#endif
|
||||
++loop1;
|
||||
}
|
||||
}
|
||||
|
@ -558,11 +548,6 @@ initarm(void *arg)
|
|||
*/
|
||||
alloc_pages(systempage.pv_pa, 1);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables. */
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -609,9 +594,6 @@ initarm(void *arg)
|
|||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
|
||||
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
|
@ -657,10 +639,6 @@ initarm(void *arg)
|
|||
pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa,
|
||||
UPAGES * PAGE_SIZE, VM_PROT_READ | VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ | VM_PROT_WRITE, PTE_CACHE);
|
||||
#else
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ | VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
|
||||
|
@ -669,39 +647,6 @@ initarm(void *arg)
|
|||
kernel_pt_table[loop].pv_pa, L2_TABLE_SIZE,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ | VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
for (loop = 0; loop < KERNEL_PT_KERNEL_NUM; loop++) {
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT - 2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL + loop].pv_pa,
|
||||
VM_PROT_READ | VM_PROT_WRITE, PTE_CACHE);
|
||||
}
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT - 2)),
|
||||
kernel_ptpt.pv_pa, VM_PROT_READ | VM_PROT_WRITE, PTE_NOCACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (0x00000000 >> (PGSHIFT - 2)),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ | VM_PROT_WRITE, PTE_CACHE);
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; loop++)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT - 2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ | VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
#if 1
|
||||
|
@ -776,12 +721,9 @@ initarm(void *arg)
|
|||
printf("switching to new L1 page table @%#lx...", kernel_l1pt.pv_pa);
|
||||
#endif
|
||||
LEDSTEP();
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
#endif
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
|
||||
|
||||
/*
|
||||
|
@ -790,7 +732,6 @@ initarm(void *arg)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#endif
|
||||
|
||||
#ifdef VERBOSE_INIT_ARM
|
||||
printf("done!\n");
|
||||
|
@ -870,11 +811,7 @@ initarm(void *arg)
|
|||
LEDSTEP();
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
printf("pmap ");
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#endif
|
||||
|
||||
LEDSTEP();
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: hpc_machdep.c,v 1.63 2003/05/02 23:22:35 thorpej Exp $ */
|
||||
/* $NetBSD: hpc_machdep.c,v 1.64 2003/05/03 03:29:10 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994-1998 Mark Brinicombe.
|
||||
|
@ -297,9 +297,6 @@ initarm(argc, argv, bi)
|
|||
u_int l1pagetable;
|
||||
vaddr_t freemempos;
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
vsize_t pt_size;
|
||||
#if NKSYMS || defined(DDB) || defined(LKM)
|
||||
Elf_Shdr *sh;
|
||||
|
@ -462,11 +459,6 @@ initarm(argc, argv, bi)
|
|||
|
||||
pt_size = round_page(freemempos) - KERNEL_BASE;
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables*/
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -533,9 +525,6 @@ initarm(argc, argv, bi)
|
|||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop)
|
||||
pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
|
||||
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
|
@ -585,59 +574,16 @@ initarm(argc, argv, bi)
|
|||
UPAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
#else
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map page tables */
|
||||
pmap_map_chunk(l1pagetable, KERNEL_BASE, KERNEL_BASE, pt_size,
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
VM_PROT_READ | VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
#else
|
||||
VM_PROT_READ | VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
#endif
|
||||
|
||||
/* Map a page for entering idle mode */
|
||||
pmap_map_entry(l1pagetable, sa11x0_idle_mem, sa11x0_idle_mem,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (0x00000000 >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (KERNEL_BASE >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop) {
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
}
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
kernel_ptpt.pv_pa, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (SAIPIO_BASE >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_IO].pv_pa, VM_PROT_READ|VM_PROT_WRITE,
|
||||
PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
pmap_map_entry(l1pagetable, vector_page, systempage.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
@ -699,7 +645,6 @@ initarm(argc, argv, bi)
|
|||
undefined_init();
|
||||
|
||||
/* Set the page table address. */
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
|
@ -711,9 +656,6 @@ initarm(argc, argv, bi)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#else
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
#endif
|
||||
|
||||
#ifdef BOOT_DUMP
|
||||
dumppages((char *)0xc0000000, 16 * PAGE_SIZE);
|
||||
|
@ -747,12 +689,7 @@ initarm(argc, argv, bi)
|
|||
}
|
||||
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#endif
|
||||
|
||||
|
||||
if (cputype == CPU_ID_SA110)
|
||||
rpc_sa110_cc_setup();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: vmparam.h,v 1.20 2003/04/28 01:34:29 thorpej Exp $ */
|
||||
/* $NetBSD: vmparam.h,v 1.21 2003/05/03 03:29:11 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
|
@ -52,9 +52,6 @@
|
|||
|
||||
/* Various constants used by the MD code*/
|
||||
#define KERNEL_TEXT_BASE (KERNEL_BASE + 0x00040000)
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
#define APTE_BASE (KERNEL_BASE + 0x00800000)
|
||||
#endif
|
||||
#define KERNEL_VM_BASE (KERNEL_BASE + 0x00c00000)
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: vmparam.h,v 1.16 2003/04/28 01:34:31 thorpej Exp $ */
|
||||
/* $NetBSD: vmparam.h,v 1.17 2003/05/03 03:29:11 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
|
@ -52,9 +52,6 @@
|
|||
|
||||
/* Various constants used by the MD code*/
|
||||
#define KERNEL_TEXT_BASE (KERNEL_BASE + 0x0000c000)
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
#define APTE_BASE (KERNEL_BASE + 0x00c00000)
|
||||
#endif
|
||||
#define KERNEL_VM_BASE (KERNEL_BASE + 0x01000000)
|
||||
/*
|
||||
* The Kernel VM Size varies depending on the machine depending on how
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: netwinder_machdep.c,v 1.47 2003/05/02 23:22:35 thorpej Exp $ */
|
||||
/* $NetBSD: netwinder_machdep.c,v 1.48 2003/05/03 03:29:11 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997,1998 Mark Brinicombe.
|
||||
|
@ -366,9 +366,6 @@ initarm(void *arg)
|
|||
u_int l1pagetable;
|
||||
extern char _end[];
|
||||
pv_addr_t kernel_l1pt;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t kernel_ptpt;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Set up a diagnostic console so we can see what's going
|
||||
|
@ -491,15 +488,8 @@ initarm(void *arg)
|
|||
&& kernel_l1pt.pv_pa == 0) {
|
||||
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
|
||||
} else {
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
valloc_pages(kernel_pt_table[loop1],
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#else
|
||||
alloc_pages(kernel_pt_table[loop1].pv_pa,
|
||||
L2_TABLE_SIZE / PAGE_SIZE);
|
||||
kernel_pt_table[loop1].pv_va =
|
||||
kernel_pt_table[loop1].pv_pa;
|
||||
#endif
|
||||
++loop1;
|
||||
}
|
||||
}
|
||||
|
@ -515,11 +505,6 @@ initarm(void *arg)
|
|||
*/
|
||||
alloc_pages(systempage.pv_pa, 1);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Allocate a page for the page table to map kernel page tables*/
|
||||
valloc_pages(kernel_ptpt, L2_TABLE_SIZE / PAGE_SIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate stacks for all modes */
|
||||
valloc_pages(irqstack, IRQ_STACK_SIZE);
|
||||
valloc_pages(abtstack, ABT_STACK_SIZE);
|
||||
|
@ -563,9 +548,6 @@ initarm(void *arg)
|
|||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop)
|
||||
pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
|
||||
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(l1pagetable, PTE_BASE, &kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
|
@ -618,10 +600,6 @@ initarm(void *arg)
|
|||
pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa,
|
||||
UPAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#else
|
||||
pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa,
|
||||
L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
|
||||
|
@ -630,37 +608,6 @@ initarm(void *arg)
|
|||
kernel_pt_table[loop].pv_pa, L2_TABLE_SIZE,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/* Map the page table that maps the kernel pages */
|
||||
pmap_map_entry(l1pagetable, kernel_ptpt.pv_va, kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
|
||||
/*
|
||||
* Map entries in the page table used to map PTE's
|
||||
* Basically every kernel page table gets mapped here
|
||||
*/
|
||||
/* The -2 is slightly bogus, it should be -log2(sizeof(pt_entry_t)) */
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (KERNEL_BASE >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_KERNEL].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
kernel_ptpt.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + (0x00000000 >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_SYS].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop)
|
||||
pmap_map_entry(l1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE +
|
||||
(loop * 0x00400000)) >> (PGSHIFT-2)),
|
||||
kernel_pt_table[KERNEL_PT_VMDATA + loop].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* Map the vector page. */
|
||||
pmap_map_entry(l1pagetable, vector_page, systempage.pv_pa,
|
||||
|
@ -700,11 +647,8 @@ initarm(void *arg)
|
|||
printf("switching to new L1 page table @%#lx...", kernel_l1pt.pv_pa);
|
||||
#endif
|
||||
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
#endif
|
||||
setttb(kernel_l1pt.pv_pa);
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
|
||||
|
||||
/*
|
||||
|
@ -713,7 +657,6 @@ initarm(void *arg)
|
|||
*/
|
||||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
#endif
|
||||
|
||||
#ifdef VERBOSE_INIT_ARM
|
||||
printf("done!\n");
|
||||
|
@ -845,11 +788,7 @@ initarm(void *arg)
|
|||
|
||||
/* Boot strap pmap telling it where the kernel page table is */
|
||||
printf("pmap ");
|
||||
#ifdef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)kernel_l1pt.pv_va, kernel_ptpt);
|
||||
#endif
|
||||
|
||||
/* Setup the IRQ system */
|
||||
printf("irq ");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: vmparam.h,v 1.8 2003/04/28 01:34:32 thorpej Exp $ */
|
||||
/* $NetBSD: vmparam.h,v 1.9 2003/05/03 03:29:12 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 The Regents of the University of California.
|
||||
|
@ -52,9 +52,6 @@
|
|||
|
||||
/* Various constants used by the MD code */
|
||||
#define KERNEL_TEXT_BASE (KERNEL_BASE + 0x00000000)
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
#define APTE_BASE (KERNEL_BASE + 0x00c00000)
|
||||
#endif
|
||||
#define KERNEL_VM_BASE (KERNEL_BASE + 0x01000000)
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ofw.c,v 1.25 2003/05/02 23:22:36 thorpej Exp $ */
|
||||
/* $NetBSD: ofw.c,v 1.26 2003/05/03 03:29:12 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1997
|
||||
|
@ -209,11 +209,7 @@ static ofw_handle_t ofw_client_services_handle;
|
|||
|
||||
|
||||
static void ofw_callbackhandler __P((void *));
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
static void ofw_construct_proc0_addrspace __P((pv_addr_t *, pv_addr_t *));
|
||||
#else
|
||||
static void ofw_construct_proc0_addrspace __P((pv_addr_t *));
|
||||
#endif
|
||||
static void ofw_getphysmeminfo __P((void));
|
||||
static void ofw_getvirttranslations __P((void));
|
||||
static void *ofw_malloc(vm_size_t size);
|
||||
|
@ -759,17 +755,10 @@ void
|
|||
ofw_configmem(void)
|
||||
{
|
||||
pv_addr_t proc0_ttbbase;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t proc0_ptpt;
|
||||
#endif
|
||||
int i;
|
||||
|
||||
/* Set-up proc0 address space. */
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
ofw_construct_proc0_addrspace(&proc0_ttbbase, &proc0_ptpt);
|
||||
#else
|
||||
ofw_construct_proc0_addrspace(&proc0_ttbbase);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Get a dump of OFW's picture of physical memory.
|
||||
|
@ -790,9 +779,6 @@ ofw_configmem(void)
|
|||
OF_set_callback(ofw_callbackhandler);
|
||||
|
||||
/* Switch to the proc0 pagetables. */
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
setttb(proc0_ttbbase.pv_pa);
|
||||
#else
|
||||
cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
|
||||
setttb(proc0_ttbbase.pv_pa);
|
||||
cpu_tlb_flushID();
|
||||
|
@ -807,7 +793,6 @@ ofw_configmem(void)
|
|||
proc0paddr = (struct user *)kernelstack.pv_va;
|
||||
lwp0.l_addr = proc0paddr;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Aaaaaaaah, running in the proc0 address space! */
|
||||
/* I feel good... */
|
||||
|
@ -971,11 +956,7 @@ ofw_configmem(void)
|
|||
}
|
||||
|
||||
/* Initialize pmap module. */
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_bootstrap((pd_entry_t *)proc0_ttbbase.pv_va, proc0_ptpt);
|
||||
#else
|
||||
pmap_bootstrap((pd_entry_t *)proc0_ttbbase.pv_va);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -1298,23 +1279,9 @@ ofw_callbackhandler(v)
|
|||
}
|
||||
|
||||
static void
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
ofw_construct_proc0_addrspace(pv_addr_t *proc0_ttbbase, pv_addr_t *proc0_ptpt)
|
||||
#else
|
||||
ofw_construct_proc0_addrspace(pv_addr_t *proc0_ttbbase)
|
||||
#endif
|
||||
{
|
||||
int i, oft;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pv_addr_t proc0_pagedir;
|
||||
pv_addr_t proc0_pt_pte;
|
||||
pv_addr_t proc0_pt_sys;
|
||||
pv_addr_t proc0_pt_kernel[KERNEL_IMG_PTS];
|
||||
pv_addr_t proc0_pt_vmdata[KERNEL_VMDATA_PTS];
|
||||
pv_addr_t proc0_pt_ofw[KERNEL_OFW_PTS];
|
||||
pv_addr_t proc0_pt_io[KERNEL_IO_PTS];
|
||||
pv_addr_t msgbuf;
|
||||
#else
|
||||
static pv_addr_t proc0_pagedir;
|
||||
static pv_addr_t proc0_pt_sys;
|
||||
static pv_addr_t proc0_pt_kernel[KERNEL_IMG_PTS];
|
||||
|
@ -1322,7 +1289,6 @@ ofw_construct_proc0_addrspace(pv_addr_t *proc0_ttbbase)
|
|||
static pv_addr_t proc0_pt_ofw[KERNEL_OFW_PTS];
|
||||
static pv_addr_t proc0_pt_io[KERNEL_IO_PTS];
|
||||
static pv_addr_t msgbuf;
|
||||
#endif
|
||||
vm_offset_t L1pagetable;
|
||||
struct mem_translation *tp;
|
||||
|
||||
|
@ -1354,9 +1320,6 @@ ofw_construct_proc0_addrspace(pv_addr_t *proc0_ttbbase)
|
|||
/* Allocate/initialize space for the proc0, NetBSD-managed */
|
||||
/* page tables that we will be switching to soon. */
|
||||
ofw_claimpages(&virt_freeptr, &proc0_pagedir, L1_TABLE_SIZE);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
ofw_claimpages(&virt_freeptr, &proc0_pt_pte, L2_TABLE_SIZE);
|
||||
#endif
|
||||
ofw_claimpages(&virt_freeptr, &proc0_pt_sys, L2_TABLE_SIZE);
|
||||
for (i = 0; i < KERNEL_IMG_PTS; i++)
|
||||
ofw_claimpages(&virt_freeptr, &proc0_pt_kernel[i], L2_TABLE_SIZE);
|
||||
|
@ -1386,9 +1349,6 @@ ofw_construct_proc0_addrspace(pv_addr_t *proc0_ttbbase)
|
|||
for (i = 0; i < KERNEL_IMG_PTS; i++)
|
||||
pmap_link_l2pt(L1pagetable, KERNEL_BASE + i * 0x00400000,
|
||||
&proc0_pt_kernel[i]);
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
pmap_link_l2pt(L1pagetable, PTE_BASE, &proc0_pt_pte);
|
||||
#endif
|
||||
for (i = 0; i < KERNEL_VMDATA_PTS; i++)
|
||||
pmap_link_l2pt(L1pagetable, KERNEL_VM_BASE + i * 0x00400000,
|
||||
&proc0_pt_vmdata[i]);
|
||||
|
@ -1472,75 +1432,9 @@ ofw_construct_proc0_addrspace(pv_addr_t *proc0_ttbbase)
|
|||
* we don't want aliases to physical addresses that the kernel
|
||||
* has-mapped/will-map elsewhere.
|
||||
*/
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
ofw_discardmappings(proc0_pt_kernel[KERNEL_IMG_PTS - 1].pv_va,
|
||||
proc0_pt_sys.pv_va, L2_TABLE_SIZE);
|
||||
for (i = 0; i < KERNEL_IMG_PTS; i++)
|
||||
ofw_discardmappings(proc0_pt_kernel[KERNEL_IMG_PTS - 1].pv_va,
|
||||
proc0_pt_kernel[i].pv_va, L2_TABLE_SIZE);
|
||||
for (i = 0; i < KERNEL_VMDATA_PTS; i++)
|
||||
ofw_discardmappings(proc0_pt_kernel[KERNEL_IMG_PTS - 1].pv_va,
|
||||
proc0_pt_vmdata[i].pv_va, L2_TABLE_SIZE);
|
||||
for (i = 0; i < KERNEL_OFW_PTS; i++)
|
||||
ofw_discardmappings(proc0_pt_kernel[KERNEL_IMG_PTS - 1].pv_va,
|
||||
proc0_pt_ofw[i].pv_va, L2_TABLE_SIZE);
|
||||
for (i = 0; i < KERNEL_IO_PTS; i++)
|
||||
ofw_discardmappings(proc0_pt_kernel[KERNEL_IMG_PTS - 1].pv_va,
|
||||
proc0_pt_io[i].pv_va, L2_TABLE_SIZE);
|
||||
#endif
|
||||
ofw_discardmappings(proc0_pt_kernel[KERNEL_IMG_PTS - 1].pv_va,
|
||||
msgbuf.pv_va, MSGBUFSIZE);
|
||||
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
/*
|
||||
* We did not throw away the proc0_pt_pte and proc0_pagedir
|
||||
* mappings as well still want them. However we don't want them
|
||||
* cached ...
|
||||
* Really these should be uncached when allocated.
|
||||
*/
|
||||
pmap_map_entry(L1pagetable, proc0_pt_pte.pv_va,
|
||||
proc0_pt_pte.pv_pa, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
for (i = 0; i < (L1_TABLE_SIZE / PAGE_SIZE); ++i)
|
||||
pmap_map_entry(L1pagetable,
|
||||
proc0_pagedir.pv_va + PAGE_SIZE * i,
|
||||
proc0_pagedir.pv_pa + PAGE_SIZE * i,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
|
||||
/*
|
||||
* Construct the proc0 L2 pagetables that map page tables.
|
||||
*/
|
||||
|
||||
/* Map entries in the L2pagetable used to map L2PTs. */
|
||||
pmap_map_entry(L1pagetable,
|
||||
PTE_BASE + (0x00000000 >> (PGSHIFT-2)),
|
||||
proc0_pt_sys.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (i = 0; i < KERNEL_IMG_PTS; i++)
|
||||
pmap_map_entry(L1pagetable,
|
||||
PTE_BASE + ((KERNEL_BASE + i * 0x00400000) >> (PGSHIFT-2)),
|
||||
proc0_pt_kernel[i].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
pmap_map_entry(L1pagetable,
|
||||
PTE_BASE + (PTE_BASE >> (PGSHIFT-2)),
|
||||
proc0_pt_pte.pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
|
||||
for (i = 0; i < KERNEL_VMDATA_PTS; i++)
|
||||
pmap_map_entry(L1pagetable,
|
||||
PTE_BASE + ((KERNEL_VM_BASE + i * 0x00400000)
|
||||
>> (PGSHIFT-2)), proc0_pt_vmdata[i].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (i = 0; i < KERNEL_OFW_PTS; i++)
|
||||
pmap_map_entry(L1pagetable,
|
||||
PTE_BASE + ((OFW_VIRT_BASE + i * 0x00400000)
|
||||
>> (PGSHIFT-2)), proc0_pt_ofw[i].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
for (i = 0; i < KERNEL_IO_PTS; i++)
|
||||
pmap_map_entry(L1pagetable,
|
||||
PTE_BASE + ((IO_VIRT_BASE + i * 0x00400000)
|
||||
>> (PGSHIFT-2)), proc0_pt_io[i].pv_pa,
|
||||
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
|
||||
#endif
|
||||
|
||||
/* update the top of the kernel VM */
|
||||
pmap_curmaxkvaddr =
|
||||
KERNEL_VM_BASE + (KERNEL_VMDATA_PTS * 0x00400000);
|
||||
|
@ -1570,9 +1464,6 @@ ofw_construct_proc0_addrspace(pv_addr_t *proc0_ttbbase)
|
|||
|
||||
/* OUT parameters are the new ttbbase and the pt which maps pts. */
|
||||
*proc0_ttbbase = proc0_pagedir;
|
||||
#ifndef ARM32_PMAP_NEW
|
||||
*proc0_ptpt = proc0_pt_pte;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue