画面描画の高速化

フレームバッファでキャッシュを有効にしただけなんだけどさ。他の箇所でキャッシュが効きにくくなるしイマイチかなぁ。

Index: pxa2x0_lcd.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/xscale/pxa2x0_lcd.c,v
retrieving revision 1.27
diff -u -r1.27 pxa2x0_lcd.c
--- pxa2x0_lcd.c	29 Jan 2009 12:28:15 -0000	1.27
+++ pxa2x0_lcd.c	6 Mar 2009 09:49:56 -0000
@@ -307,6 +307,11 @@
 	/* Clear stickey status bits */
 	bus_space_write_4(iot, ioh, LCDC_LCSR, status);
 
+	if (sc->active) {
+		cpu_dcache_wb_range((vaddr_t)sc->active->buf_va,
+		    sc->active->buf_size);
+	}
+
 	return 1;
 }
 
@@ -362,7 +367,7 @@
 
 	/* Enable LCDC */
 	tmp = bus_space_read_4(iot, ioh, LCDC_LCCR0);
-	/*tmp &= ~LCCR0_SFM;*/
+	tmp &= ~LCCR0_SFM;
 	bus_space_write_4(iot, ioh, LCDC_LCCR0, tmp | LCCR0_ENB);
 
 	restore_interrupts(save);
@@ -531,7 +536,7 @@
 	}
 
 	error = bus_dmamem_map(dma_tag, scr->segs, scr->nsegs, size,
-	    (void **)&scr->buf_va, busdma_flag | BUS_DMA_COHERENT);
+	    (void **)&scr->buf_va, busdma_flag /*| BUS_DMA_COHERENT*/);
 	if (error)
 		goto bad;
 
@@ -576,7 +581,7 @@
 
 	}
 
-#if 0
+#if 1
 	desc[0].ldcmd |= LDCMD_SOFINT;
 	desc[1].ldcmd |= LDCMD_SOFINT;
 #endif
@@ -892,7 +897,7 @@
 		return -1;
 
 	return bus_dmamem_mmap(sc->dma_tag, scr->segs, scr->nsegs,
-	    offset, prot, BUS_DMA_WAITOK|BUS_DMA_COHERENT);
+	    offset, prot, BUS_DMA_WAITOK/*|BUS_DMA_COHERENT*/);
 }