Hi __flush_cache_all is enough for the uses that flush_cache_l1/l2 had. Later, Juan. build/arch/mips/sgi-ip27/ip27-init.c | 6 +---- build/arch/mips64/kernel/mips64_ksyms.c | 5 ---- build/arch/mips64/kernel/syscall.c | 2 - build/arch/mips64/mm/c-andes.c | 38 ++++++++++++++------------------ build/arch/mips64/mm/c-mips64.c | 3 -- build/arch/mips64/mm/c-r4k.c | 15 ------------ build/arch/mips64/mm/c-sb1.c | 1 build/arch/mips64/mm/init.c | 2 - build/arch/mips64/mm/loadmmu.c | 5 ---- build/include/asm-mips64/pgtable.h | 10 -------- 10 files changed, 23 insertions(+), 64 deletions(-) diff -puN build/include/asm-mips64/pgtable.h~remove_flush_cache_l12 build/include/asm-mips64/pgtable.h --- 24/build/include/asm-mips64/pgtable.h~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/include/asm-mips64/pgtable.h 2003-03-13 04:35:38.000000000 +0100 @@ -41,11 +41,6 @@ extern void (*_flush_icache_page)(struct extern void (*_flush_cache_sigtramp)(unsigned long addr); extern void (*_flush_icache_all)(void); -/* These suck ... */ -extern void (*_flush_cache_l2)(void); -extern void (*_flush_cache_l1)(void); - - #define flush_page_to_ram(page) do { } while(0) #define flush_cache_all() _flush_cache_all() @@ -65,7 +60,7 @@ extern void (*_flush_cache_l1)(void); #define flush_cache_range(mm,start,end) do { } while(0) #define flush_cache_page(vma,page) do { } while(0) #define flush_dcache_page(page) do { } while(0) -#define flush_icache_range(start, end) _flush_cache_l1() +#define flush_icache_range(start, end) _flush_icache_range(start, end) #define flush_icache_user_range(vma, page, addr, len) \ flush_icache_page((vma), (page)) #define flush_icache_page(vma, page) _flush_icache_page(vma, page) @@ -90,9 +85,6 @@ extern void (*_flush_cache_l1)(void); #define flush_icache_all() do { } while(0) #endif -#define flush_cache_l2() _flush_cache_l2() -#define flush_cache_l1() _flush_cache_l1() - /* * This flag is used to indicate that the page pointed to by a pte * is dirty and requires cleaning before returning it to the user. diff -puN build/arch/mips64/mm/c-andes.c~remove_flush_cache_l12 build/arch/mips64/mm/c-andes.c --- 24/build/arch/mips64/mm/c-andes.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips64/mm/c-andes.c 2003-03-13 04:45:26.000000000 +0100 @@ -29,28 +29,20 @@ static void andes_flush_cache_l1(void) blast_dcache32(); blast_icache64(); } -/* - * This is only used during initialization time. vmalloc() also calls - * this, but that will be changed pretty soon. - */ -static void andes_flush_cache_l2_64(void) -{ - blast_scache64(); -} - -static void andes_flush_cache_l2_128(void) +static void andes_flush_cache_all(void) { - blast_scache128(); } -static void andes_flush_cache_all(void) +static void andes___flush_cache_all64(void) { + blast_dcache32(); blast_icache64(); + blast_scache64(); } -static void andes___flush_cache_all(void) +static void andes___flush_cache_all128(void) { - andes_flush_cache_l1(); - flush_cache_l2(); + blast_dcache32(); blast_icache64(); + blast_scache128(); } /* @@ -81,7 +73,13 @@ static void andes_flush_icache_page128(s pfn = (unsigned long)phys_to_virt(page_to_phys(page)); blast_scache128_page(pfn); - } +} + +static void andes_flush_icache_range(unsigned long start, + unsigned long end) +{ + blast_icache64(); +} static void andes_flush_cache_sigtramp(unsigned long addr) { @@ -108,17 +106,15 @@ void __init ld_mmu_andes(void) _copy_page = andes_copy_page; _flush_cache_all = andes_flush_cache_all; - ___flush_cache_all = andes___flush_cache_all; - _flush_cache_l1 = andes_flush_cache_l1; _flush_cache_sigtramp = andes_flush_cache_sigtramp; if (sc_lsize() == 64) { - _flush_cache_l2 = andes_flush_cache_l2_64; + ___flush_cache_all = andes___flush_cache_all64; _flush_icache_page = andes_flush_icache_page64; } else { - _flush_cache_l2 = andes_flush_cache_l2_128; + ___flush_cache_all = andes___flush_cache_all128; _flush_icache_page = andes_flush_icache_page128; } - flush_cache_l1(); + __flush_cache_all(); } diff -puN build/arch/mips64/mm/c-mips64.c~remove_flush_cache_l12 build/arch/mips64/mm/c-mips64.c --- 24/build/arch/mips64/mm/c-mips64.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips64/mm/c-mips64.c 2003-03-13 04:35:38.000000000 +0100 @@ -713,8 +713,7 @@ void __init ld_mmu_mips64(void) _flush_cache_sigtramp = mips64_flush_cache_sigtramp; _flush_icache_range = mips64_flush_icache_range; /* Ouch */ _flush_icache_all = mips64_flush_icache_all; - _flush_cache_l1 = _flush_cache_all; - _flush_cache_l2 = _flush_cache_all; + _flush_cache_all = _flush_cache_all; __flush_cache_all(); } diff -puN build/arch/mips64/mm/loadmmu.c~remove_flush_cache_l12 build/arch/mips64/mm/loadmmu.c --- 24/build/arch/mips64/mm/loadmmu.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips64/mm/loadmmu.c 2003-03-13 04:35:38.000000000 +0100 @@ -36,11 +36,6 @@ void (*_flush_icache_range)(unsigned lon void (*_flush_icache_page)(struct vm_area_struct *vma, struct page *page); void (*_flush_icache_all)(void); -/* MIPS specific cache operations */ -void (*_flush_cache_l2)(void); -void (*_flush_cache_l1)(void); - - /* DMA cache operations. */ void (*_dma_cache_wback_inv)(unsigned long start, unsigned long size); void (*_dma_cache_wback)(unsigned long start, unsigned long size); diff -puN build/arch/mips64/mm/init.c~remove_flush_cache_l12 build/arch/mips64/mm/init.c --- 24/build/arch/mips64/mm/init.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips64/mm/init.c 2003-03-13 04:41:44.000000000 +0100 @@ -114,7 +114,7 @@ int do_check_pgt_cache(int low, int high asmlinkage int sys_cacheflush(void *addr, int bytes, int cache) { /* XXX Just get it working for now... */ - flush_cache_l1(); + __flush_cache_all(); return 0; } diff -puN build/arch/mips64/kernel/mips64_ksyms.c~remove_flush_cache_l12 build/arch/mips64/kernel/mips64_ksyms.c --- 24/build/arch/mips64/kernel/mips64_ksyms.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips64/kernel/mips64_ksyms.c 2003-03-13 04:35:38.000000000 +0100 @@ -79,11 +79,6 @@ EXPORT_SYMBOL_NOVERS(__strnlen_user_asm) /* Networking helper routines. */ EXPORT_SYMBOL(csum_partial_copy); -/* - * Functions to control caches. - */ -EXPORT_SYMBOL(_flush_cache_l1); - #ifdef CONFIG_NONCOHERENT_IO EXPORT_SYMBOL(_dma_cache_wback_inv); EXPORT_SYMBOL(_dma_cache_inv); diff -puN build/arch/mips64/kernel/syscall.c~remove_flush_cache_l12 build/arch/mips64/kernel/syscall.c --- 24/build/arch/mips64/kernel/syscall.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips64/kernel/syscall.c 2003-03-13 04:42:29.000000000 +0100 @@ -221,7 +221,7 @@ asmlinkage int sys_sysmips(int cmd, long return 0; case FLUSH_CACHE: - flush_cache_l2(); + __flush_cache_all(); return 0; case MIPS_RDNVRAM: diff -puN build/arch/mips64/mm/c-r4k.c~remove_flush_cache_l12 build/arch/mips64/mm/c-r4k.c --- 24/build/arch/mips64/mm/c-r4k.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips64/mm/c-r4k.c 2003-03-13 04:35:38.000000000 +0100 @@ -1079,10 +1079,6 @@ static void r4600v20k_flush_cache_sigtra #endif } -static void r4k_flush_cache_l2(void) -{ -} - void __update_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) { @@ -1225,7 +1221,6 @@ static void __init setup_noscache_funcs( _clear_page = r4k_clear_page_d16; _copy_page = r4k_copy_page_d16; _flush_cache_all = r4k_flush_cache_all_d16i16; - _flush_cache_l1 = r4k_flush_cache_all_d16i16; _flush_cache_mm = r4k_flush_cache_mm_d16i16; _flush_cache_range = r4k_flush_cache_range_d16i16; _flush_cache_page = r4k_flush_cache_page_d16i16; @@ -1243,7 +1238,6 @@ static void __init setup_noscache_funcs( _copy_page = r4k_copy_page_d32; } _flush_cache_all = r4k_flush_cache_all_d32i32; - _flush_cache_l1 = r4k_flush_cache_all_d32i32; _flush_cache_mm = r4k_flush_cache_mm_d32i32; _flush_cache_range = r4k_flush_cache_range_d32i32; _flush_cache_page = r4k_flush_cache_page_d32i32; @@ -1265,7 +1259,6 @@ static void __init setup_scache_funcs(vo switch (dc_lsize) { case 16: _flush_cache_all = r4k_flush_cache_all_s16d16i16; - _flush_cache_l1 = r4k_flush_cache_all_s16d16i16; _flush_cache_mm = r4k_flush_cache_mm_s16d16i16; _flush_cache_range = r4k_flush_cache_range_s16d16i16; _flush_cache_page = r4k_flush_cache_page_s16d16i16; @@ -1280,14 +1273,12 @@ static void __init setup_scache_funcs(vo switch (dc_lsize) { case 16: _flush_cache_all = r4k_flush_cache_all_s32d16i16; - _flush_cache_l1 = r4k_flush_cache_all_s32d16i16; _flush_cache_mm = r4k_flush_cache_mm_s32d16i16; _flush_cache_range = r4k_flush_cache_range_s32d16i16; _flush_cache_page = r4k_flush_cache_page_s32d16i16; break; case 32: _flush_cache_all = r4k_flush_cache_all_s32d32i32; - _flush_cache_l1 = r4k_flush_cache_all_s32d32i32; _flush_cache_mm = r4k_flush_cache_mm_s32d32i32; _flush_cache_range = r4k_flush_cache_range_s32d32i32; _flush_cache_page = r4k_flush_cache_page_s32d32i32; @@ -1300,14 +1291,12 @@ static void __init setup_scache_funcs(vo switch (dc_lsize) { case 16: _flush_cache_all = r4k_flush_cache_all_s64d16i16; - _flush_cache_l1 = r4k_flush_cache_all_s64d16i16; _flush_cache_mm = r4k_flush_cache_mm_s64d16i16; _flush_cache_range = r4k_flush_cache_range_s64d16i16; _flush_cache_page = r4k_flush_cache_page_s64d16i16; break; case 32: _flush_cache_all = r4k_flush_cache_all_s64d32i32; - _flush_cache_l1 = r4k_flush_cache_all_s64d32i32; _flush_cache_mm = r4k_flush_cache_mm_s64d32i32; _flush_cache_range = r4k_flush_cache_range_s64d32i32; _flush_cache_page = r4k_flush_cache_page_s64d32i32; @@ -1320,14 +1309,12 @@ static void __init setup_scache_funcs(vo switch (dc_lsize) { case 16: _flush_cache_all = r4k_flush_cache_all_s128d16i16; - _flush_cache_l1 = r4k_flush_cache_all_s128d16i16; _flush_cache_mm = r4k_flush_cache_mm_s128d16i16; _flush_cache_range = r4k_flush_cache_range_s128d16i16; _flush_cache_page = r4k_flush_cache_page_s128d16i16; break; case 32: _flush_cache_all = r4k_flush_cache_all_s128d32i32; - _flush_cache_l1 = r4k_flush_cache_all_s128d32i32; _flush_cache_mm = r4k_flush_cache_mm_s128d32i32; _flush_cache_range = r4k_flush_cache_range_s128d32i32; _flush_cache_page = r4k_flush_cache_page_s128d32i32; @@ -1408,7 +1395,5 @@ void __init ld_mmu_r4xx0(void) _flush_dcache_page = r4k_flush_dcache_page; _flush_icache_range = r4k_flush_icache_range; /* Ouch */ - _flush_cache_l2 = r4k_flush_cache_l2; - __flush_cache_all(); } diff -puN build/arch/mips/sgi-ip27/ip27-init.c~remove_flush_cache_l12 build/arch/mips/sgi-ip27/ip27-init.c --- 24/build/arch/mips/sgi-ip27/ip27-init.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips/sgi-ip27/ip27-init.c 2003-03-13 04:43:47.000000000 +0100 @@ -332,8 +332,7 @@ void per_hub_init(cnodeid_t cnode) memcpy((void *)(KSEG0 + 0x100), (void *) KSEG0, 0x80); memcpy((void *)(KSEG0 + 0x180), &except_vec3_generic, 0x100); - flush_cache_l1(); - flush_cache_l2(); + __flush_cache_all(); } #endif } @@ -432,8 +431,7 @@ void __init start_secondary(void) init_mfhi_war(); #endif local_flush_tlb_all(); - flush_cache_l1(); - flush_cache_l2(); + __flush_cache_all(); local_irq_enable(); #if 0 diff -puN build/arch/mips64/mm/c-sb1.c~remove_flush_cache_l12 build/arch/mips64/mm/c-sb1.c --- 24/build/arch/mips64/mm/c-sb1.c~remove_flush_cache_l12 2003-03-13 04:35:38.000000000 +0100 +++ 24-quintela/build/arch/mips64/mm/c-sb1.c 2003-03-13 04:35:38.000000000 +0100 @@ -522,7 +522,6 @@ void ld_mmu_sb1(void) /* Full flushes */ ___flush_cache_all = sb1___flush_cache_all; - _flush_cache_l1 = sb1___flush_cache_all; change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT); /* _ -- In theory, practice and theory are the same, but in practice they are different -- Larry McVoy