Hi all,
_flush_cache_all() and ___flush_cache_all() were uninitialized
(i.e. NULL). Someone probably assumed (incorrectly) that this
was ok, since flush_cache_all() doesn't use _flush_cache_all()
(or so they thought...).
End result: anything that called flush_cache_all() (a macro)
tried to call a function at 0x0, and died. This includes vmalloc().
I'm not sure what the best solution is, but this makes things work:
--- arch/mips64/mm/c-andes.c 9 Feb 2003 22:03:23 -0000 1.1.2.2
+++ arch/mips64/mm/c-andes.c 13 Feb 2003 05:50:54 -0000
@@ -48,6 +48,12 @@
}
}
+static void andes_flush_cache_all(void)
+{
+ andes_flush_cache_l1();
+ andes_flush_cache_l2();
+}
+
void andes_flush_icache_page(unsigned long page)
{
if (scache_lsz64)
@@ -80,6 +86,7 @@
_clear_page = andes_clear_page;
_copy_page = andes_copy_page;
+ _flush_cache_all = ___flush_cache_all = andes_flush_cache_all;
_flush_cache_l1 = andes_flush_cache_l1;
_flush_cache_l2 = andes_flush_cache_l2;
_flush_cache_sigtramp = andes_flush_cache_sigtramp;
Cheers,
Andrew
|