The patch totally removes the dma_cache functions and the function pointers
when the kernel is
compiled for HW coherency. Previously it didn't compile at all since the
function pointers are non-
existant in this case.
The same problem exists in all the other c-*.c files in arch/mips/mm, so maybe
there is something
which I don't understand?
/Hartvig
Index: c-mips32.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/c-mips32.c,v
retrieving revision 1.3.2.17
diff -u -r1.3.2.17 c-mips32.c
--- c-mips32.c 31 Mar 2003 23:29:06 -0000 1.3.2.17
+++ c-mips32.c 1 Apr 2003 12:17:14 -0000
@@ -293,6 +293,9 @@
/*
* Writeback and invalidate the primary cache dcache before DMA.
*/
+
+#ifdef CONFIG_NONCOHERENT_IO
+
static void
mips32_dma_cache_wback_inv_pc(unsigned long addr, unsigned long size)
{
@@ -379,9 +382,12 @@
static void
mips32_dma_cache_wback(unsigned long addr, unsigned long size)
{
- panic("mips32_dma_cache called - should not happen.");
+ panic("mips32_dma_cache_wback called - should not happen.");
}
+#endif
+
+
/*
* While we're protected against bad userland addresses we don't care
* very much about what happens in that case. Usually a segmentation
@@ -596,9 +602,11 @@
_flush_icache_page = mips32_flush_icache_page;
+#ifdef CONFIG_NONCOHERENT_IO
_dma_cache_wback_inv = mips32_dma_cache_wback_inv_pc;
_dma_cache_wback = mips32_dma_cache_wback;
_dma_cache_inv = mips32_dma_cache_inv_pc;
+#endif
}
static void __init setup_scache_funcs(void)
@@ -613,9 +621,11 @@
_flush_icache_page = mips32_flush_icache_page_s;
+#ifdef CONFIG_NONCOHERENT_IO
_dma_cache_wback_inv = mips32_dma_cache_wback_inv_sc;
_dma_cache_wback = mips32_dma_cache_wback;
_dma_cache_inv = mips32_dma_cache_inv_sc;
+#endif
}
typedef int (*probe_func_t)(unsigned long);
|