Module Name:    src
Committed By:   matt
Date:           Wed Feb 27 16:55:39 UTC 2013

Modified Files:
        src/sys/arch/arm/arm32: arm32_kvminit.c

Log Message:
Add a zero flag to valloc_pages so that we can *not* zero the msgbuf so it
will be preserved across boots.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/arm32/arm32_kvminit.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/arm32/arm32_kvminit.c
diff -u src/sys/arch/arm/arm32/arm32_kvminit.c:1.16 src/sys/arch/arm/arm32/arm32_kvminit.c:1.17
--- src/sys/arch/arm/arm32/arm32_kvminit.c:1.16	Mon Dec 31 01:23:31 2012
+++ src/sys/arch/arm/arm32/arm32_kvminit.c	Wed Feb 27 16:55:39 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: arm32_kvminit.c,v 1.16 2012/12/31 01:23:31 matt Exp $	*/
+/*	$NetBSD: arm32_kvminit.c,v 1.17 2013/02/27 16:55:39 matt Exp $	*/
 
 /*
  * Copyright (c) 2002, 2003, 2005  Genetec Corporation.  All rights reserved.
@@ -122,7 +122,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: arm32_kvminit.c,v 1.16 2012/12/31 01:23:31 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: arm32_kvminit.c,v 1.17 2013/02/27 16:55:39 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -295,7 +295,7 @@ add_pages(struct bootmem_info *bmi, pv_a
 
 static void
 valloc_pages(struct bootmem_info *bmi, pv_addr_t *pv, size_t npages,
-	int prot, int cache)
+	int prot, int cache, bool zero_p)
 {
 	size_t nbytes = npages * PAGE_SIZE;
 	pv_addr_t *free_pv = bmi->bmi_freeblocks;
@@ -311,7 +311,7 @@ valloc_pages(struct bootmem_info *bmi, p
 	    && free_pv->pv_size >= L1_TABLE_SIZE) {
 		l1pt_found = true;
 		valloc_pages(bmi, &kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE,
-		    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
+		    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE, true);
 		add_pages(bmi, &kernel_l1pt);
 	}
 
@@ -454,7 +454,7 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 	printf(" vector");
 #endif
 	valloc_pages(bmi, &bmi->bmi_vector_l2pt, L2_TABLE_SIZE / PAGE_SIZE,
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE, true);
 	add_pages(bmi, &bmi->bmi_vector_l2pt);
 
 	/*
@@ -465,7 +465,7 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 #endif
 	for (size_t idx = 0; idx < KERNEL_L2PT_KERNEL_NUM; ++idx) {
 		valloc_pages(bmi, &kernel_l2pt[idx], L2_TABLE_SIZE / PAGE_SIZE,
-		    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
+		    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE, true);
 		add_pages(bmi, &kernel_l2pt[idx]);
 	}
 
@@ -477,7 +477,7 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 #endif
 	for (size_t idx = 0; idx < KERNEL_L2PT_VMDATA_NUM; ++idx) {
 		valloc_pages(bmi, &vmdata_l2pt[idx], L2_TABLE_SIZE / PAGE_SIZE,
-		    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
+		    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE, true);
 		add_pages(bmi, &vmdata_l2pt[idx]);
 	}
 
@@ -489,7 +489,7 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 		printf(" io");
 #endif
 		valloc_pages(bmi, &bmi->bmi_io_l2pt, L2_TABLE_SIZE / PAGE_SIZE,
-		    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
+		    VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE, true);
 		add_pages(bmi, &bmi->bmi_io_l2pt);
 	}
 
@@ -499,28 +499,28 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 
 	/* Allocate stacks for all modes and CPUs */
 	valloc_pages(bmi, &abtstack, ABT_STACK_SIZE * cpu_num,
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE, true);
 	add_pages(bmi, &abtstack);
 	valloc_pages(bmi, &fiqstack, FIQ_STACK_SIZE * cpu_num,
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE, true);
 	add_pages(bmi, &fiqstack);
 	valloc_pages(bmi, &irqstack, IRQ_STACK_SIZE * cpu_num,
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE, true);
 	add_pages(bmi, &irqstack);
 	valloc_pages(bmi, &undstack, UND_STACK_SIZE * cpu_num,
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE, true);
 	add_pages(bmi, &undstack);
 	valloc_pages(bmi, &idlestack, UPAGES * cpu_num,		/* SVC32 */
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE, true);
 	add_pages(bmi, &idlestack);
 	valloc_pages(bmi, &kernelstack, UPAGES,			/* SVC32 */
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE, true);
 	add_pages(bmi, &kernelstack);
 
 	/* Allocate the message buffer from the end of memory. */
 	const size_t msgbuf_pgs = round_page(MSGBUFSIZE) / PAGE_SIZE;
 	valloc_pages(bmi, &msgbuf, msgbuf_pgs,
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE, false);
 	add_pages(bmi, &msgbuf);
 	msgbufphys = msgbuf.pv_pa;
 
@@ -529,7 +529,8 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 	 * This page will just contain the system vectors and can be
 	 * shared by all processes.
 	 */
-	valloc_pages(bmi, &systempage, 1, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	valloc_pages(bmi, &systempage, 1, VM_PROT_READ|VM_PROT_WRITE,
+	    PTE_CACHE, true);
 	systempage.pv_va = vectors;
 
 	/*
@@ -541,7 +542,7 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 	if (xscale_use_minidata)
 #endif          
 		valloc_pages(bmi, extrapv, nextrapages,
-		    VM_PROT_READ|VM_PROT_WRITE, 0);
+		    VM_PROT_READ|VM_PROT_WRITE, 0, false);
 #endif
 
 	/*
@@ -883,7 +884,11 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b
 
 	cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
 	cpu_idcache_wbinv_all();
+#ifdef ARM_MMU_EXTENDED
+	cpu_setttb(l1pt_pa, KERNEL_PID);
+#else
 	cpu_setttb(l1pt_pa, true);
+#endif
 	cpu_tlb_flushID();
 	cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
 

Reply via email to