Module Name:    src
Committed By:   matt
Date:           Sat Feb 22 19:03:06 UTC 2014

Modified Files:
        src/sys/arch/acorn32/acorn32: rpc_machdep.c
        src/sys/arch/acorn32/podulebus: esc.c sfas.c
        src/sys/arch/arm/xscale: pxa2x0_lcd.c

Log Message:
Deal with non-4KB page sizes


To generate a diff of this commit:
cvs rdiff -u -r1.87 -r1.88 src/sys/arch/acorn32/acorn32/rpc_machdep.c
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/acorn32/podulebus/esc.c
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/acorn32/podulebus/sfas.c
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/arm/xscale/pxa2x0_lcd.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/acorn32/acorn32/rpc_machdep.c
diff -u src/sys/arch/acorn32/acorn32/rpc_machdep.c:1.87 src/sys/arch/acorn32/acorn32/rpc_machdep.c:1.88
--- src/sys/arch/acorn32/acorn32/rpc_machdep.c:1.87	Sun Aug 18 21:42:16 2013
+++ src/sys/arch/acorn32/acorn32/rpc_machdep.c	Sat Feb 22 19:03:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_machdep.c,v 1.87 2013/08/18 21:42:16 matt Exp $	*/
+/*	$NetBSD: rpc_machdep.c,v 1.88 2014/02/22 19:03:06 matt Exp $	*/
 
 /*
  * Copyright (c) 2000-2002 Reinoud Zandijk.
@@ -55,7 +55,7 @@
 
 #include <sys/param.h>
 
-__KERNEL_RCSID(0, "$NetBSD: rpc_machdep.c,v 1.87 2013/08/18 21:42:16 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rpc_machdep.c,v 1.88 2014/02/22 19:03:06 matt Exp $");
 
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -1096,14 +1096,14 @@ rpc_sa110_cc_setup(void)
 {
 	int loop;
 	paddr_t kaddr;
-	pt_entry_t *pte;
 
 	(void) pmap_extract(pmap_kernel(), KERNEL_TEXT_BASE, &kaddr);
+	const pt_entry_t npte = L2_S_PROTO | kaddr |
+	    L2_S_PROT(PTE_KERNEL, VM_PROT_READ) | pte_l2_s_cache_mode;
 	for (loop = 0; loop < CPU_SA110_CACHE_CLEAN_SIZE; loop += PAGE_SIZE) {
-		pte = vtopte(sa110_cc_base + loop);
-		*pte = L2_S_PROTO | kaddr |
-		    L2_S_PROT(PTE_KERNEL, VM_PROT_READ) | pte_l2_s_cache_mode;
-		PTE_SYNC(pte);
+		pt_entry_t * const ptep = vtopte(sa110_cc_base + loop);
+		l2pte_set(ptep, npte, 0);
+		PTE_SYNC(ptep);
 	}
 	sa1_cache_clean_addr = sa110_cc_base;
 	sa1_cache_clean_size = CPU_SA110_CACHE_CLEAN_SIZE / 2;

Index: src/sys/arch/acorn32/podulebus/esc.c
diff -u src/sys/arch/acorn32/podulebus/esc.c:1.26 src/sys/arch/acorn32/podulebus/esc.c:1.27
--- src/sys/arch/acorn32/podulebus/esc.c:1.26	Tue Jan 21 19:50:40 2014
+++ src/sys/arch/acorn32/podulebus/esc.c	Sat Feb 22 19:03:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: esc.c,v 1.26 2014/01/21 19:50:40 christos Exp $	*/
+/*	$NetBSD: esc.c,v 1.27 2014/02/22 19:03:06 matt Exp $	*/
 
 /*
  * Copyright (c) 1990 The Regents of the University of California.
@@ -86,7 +86,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: esc.c,v 1.26 2014/01/21 19:50:40 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: esc.c,v 1.27 2014/02/22 19:03:06 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -185,7 +185,6 @@ esc_init_nexus(struct esc_softc *dev, st
 void
 escinitialize(struct esc_softc *dev)
 {
-	u_int		*pte;
 	int		 i;
 
 	dev->sc_led_status = 0;
@@ -249,9 +248,11 @@ escinitialize(struct esc_softc *dev)
  * Setup pages to noncachable, that way we don't have to flush the cache
  * every time we need "bumped" transfer.
  */
-	pte = vtopte((vaddr_t) dev->sc_bump_va);
-	*pte &= ~L2_C;
-	PTE_SYNC(pte);
+	pt_entry_t * const ptep = vtopte((vaddr_t) dev->sc_bump_va);
+	const pt_entry_t opte = *ptep;
+	const pt_entry_t npte = opte & ~L2_C;
+	l2pte_set(ptep, npte, opte);
+	PTE_SYNC(ptep);
 	cpu_tlb_flushD();
 	cpu_dcache_wbinv_range((vm_offset_t)dev->sc_bump_va, PAGE_SIZE);
 

Index: src/sys/arch/acorn32/podulebus/sfas.c
diff -u src/sys/arch/acorn32/podulebus/sfas.c:1.23 src/sys/arch/acorn32/podulebus/sfas.c:1.24
--- src/sys/arch/acorn32/podulebus/sfas.c:1.23	Tue Jan 21 19:50:40 2014
+++ src/sys/arch/acorn32/podulebus/sfas.c	Sat Feb 22 19:03:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sfas.c,v 1.23 2014/01/21 19:50:40 christos Exp $	*/
+/*	$NetBSD: sfas.c,v 1.24 2014/02/22 19:03:06 matt Exp $	*/
 
 /*
  * Copyright (c) 1990 The Regents of the University of California.
@@ -82,7 +82,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sfas.c,v 1.23 2014/01/21 19:50:40 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sfas.c,v 1.24 2014/02/22 19:03:06 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -178,7 +178,6 @@ sfas_init_nexus(struct sfas_softc *dev, 
 void
 sfasinitialize(struct sfas_softc *dev)
 {
-	u_int		*pte;
 	int		 i;
 
 	dev->sc_led_status = 0;
@@ -245,9 +244,11 @@ sfasinitialize(struct sfas_softc *dev)
  * Setup pages to noncachable, that way we don't have to flush the cache
  * every time we need "bumped" transfer.
  */
-	pte = vtopte((vaddr_t) dev->sc_bump_va);
-	*pte &= ~(L2_C | L2_B);
-	PTE_SYNC(pte);
+	pt_entry_t * const ptep = vtopte((vaddr_t) dev->sc_bump_va);
+	const pt_entry_t opte = *ptep;
+	const pt_entry_t npte = opte & ~(L2_C | L2_B);
+	l2pte_set(ptep, npte, opte);
+	PTE_SYNC(ptep);
 	cpu_tlb_flushD();
 	cpu_dcache_wbinv_range((vm_offset_t)dev->sc_bump_va, PAGE_SIZE);
 

Index: src/sys/arch/arm/xscale/pxa2x0_lcd.c
diff -u src/sys/arch/arm/xscale/pxa2x0_lcd.c:1.34 src/sys/arch/arm/xscale/pxa2x0_lcd.c:1.35
--- src/sys/arch/arm/xscale/pxa2x0_lcd.c:1.34	Tue Jan 28 12:22:32 2014
+++ src/sys/arch/arm/xscale/pxa2x0_lcd.c	Sat Feb 22 19:03:06 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: pxa2x0_lcd.c,v 1.34 2014/01/28 12:22:32 martin Exp $ */
+/* $NetBSD: pxa2x0_lcd.c,v 1.35 2014/02/22 19:03:06 matt Exp $ */
 
 /*
  * Copyright (c) 2002  Genetec Corporation.  All rights reserved.
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pxa2x0_lcd.c,v 1.34 2014/01/28 12:22:32 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pxa2x0_lcd.c,v 1.35 2014/02/22 19:03:06 matt Exp $");
 
 #include "opt_pxa2x0_lcd.h"
 
@@ -550,7 +550,6 @@ pxa2x0_lcd_new_screen(struct pxa2x0_lcd_
 
 	/* XXX: should we have BUS_DMA_WRITETHROUGH in MI bus_dma(9) API? */
 	if (pxa2x0_lcd_writethrough) {
-		pt_entry_t *ptep;
 		vaddr_t va, eva;
 
 		va = (vaddr_t)scr->buf_va;
@@ -559,13 +558,15 @@ pxa2x0_lcd_new_screen(struct pxa2x0_lcd_
 			/* taken from arm/arm32/bus_dma.c:_bus_dmamem_map() */
 			cpu_dcache_wbinv_range(va, PAGE_SIZE);
 			cpu_drain_writebuf();
-			ptep = vtopte(va);
-			*ptep &= ~L2_S_CACHE_MASK;
-			*ptep |= L2_C;
+			pt_entry_t * const ptep = vtopte(va);
+			const pt_entry_t opte = *ptep;
+			const pt_entry_t npte = (opte & ~L2_S_CACHE_MASK)
+			    | L2_C;
+			l2pte_set(ptep, npte, opte);
 			PTE_SYNC(ptep);
-			tlb_flush();
 			va += PAGE_SIZE;
 		}
+		tlb_flush();
 	}
 
 	memset(scr->buf_va, 0, scr->buf_size);

Reply via email to