Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sh: Fixup SHMLBA definition for SH7705.

We need this set to something sensible anywhere were we have
an aliasing dcache..

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

+40 -83
-16
include/asm-sh/cpu-sh2/shmparam.h
··· 1 - /* 2 - * include/asm-sh/cpu-sh2/shmparam.h 3 - * 4 - * Copyright (C) 2003 Paul Mundt 5 - * 6 - * This file is subject to the terms and conditions of the GNU General Public 7 - * License. See the file "COPYING" in the main directory of this archive 8 - * for more details. 9 - */ 10 - #ifndef __ASM_CPU_SH2_SHMPARAM_H 11 - #define __ASM_CPU_SH2_SHMPARAM_H 12 - 13 - #define SHMLBA PAGE_SIZE /* attach addr a multiple of this */ 14 - 15 - #endif /* __ASM_CPU_SH2_SHMPARAM_H */ 16 -
+23 -29
include/asm-sh/cpu-sh3/cacheflush.h
··· 35 35 /* 32KB cache, 4kb PAGE sizes need to check bit 12 */ 36 36 #define CACHE_ALIAS 0x00001000 37 37 38 - extern void flush_cache_all(void); 39 - extern void flush_cache_mm(struct mm_struct *mm); 40 - extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, 38 + #define PG_mapped PG_arch_1 39 + 40 + void flush_cache_all(void); 41 + void flush_cache_mm(struct mm_struct *mm); 42 + void flush_cache_range(struct vm_area_struct *vma, unsigned long start, 41 43 unsigned long end); 42 - extern void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); 43 - extern void flush_dcache_page(struct page *pg); 44 - extern void flush_icache_range(unsigned long start, unsigned long end); 45 - extern void flush_icache_page(struct vm_area_struct *vma, struct page *page); 44 + void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); 45 + void flush_dcache_page(struct page *pg); 46 + void flush_icache_range(unsigned long start, unsigned long end); 47 + void flush_icache_page(struct vm_area_struct *vma, struct page *page); 48 + #else 49 + #define flush_cache_all() do { } while (0) 50 + #define flush_cache_mm(mm) do { } while (0) 51 + #define flush_cache_range(vma, start, end) do { } while (0) 52 + #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) 53 + #define flush_dcache_page(page) do { } while (0) 54 + #define flush_icache_range(start, end) do { } while (0) 55 + #define flush_icache_page(vma,pg) do { } while (0) 56 + #endif 46 57 47 58 #define flush_dcache_mmap_lock(mapping) do { } while (0) 48 59 #define flush_dcache_mmap_unlock(mapping) do { } while (0) 49 60 50 61 /* SH3 has unified cache so no special action needed here */ 51 62 #define flush_cache_sigtramp(vaddr) do { } while (0) 52 - #define flush_page_to_ram(page) do { } while (0) 53 63 #define flush_icache_user_range(vma,pg,adr,len) do { } while (0) 54 64 55 65 #define p3_cache_init() do { } while (0) 56 66 57 - #define PG_mapped PG_arch_1 58 - 59 - /* We provide our own get_unmapped_area to avoid cache alias issue */ 67 + /* 68 + * We provide our own get_unmapped_area to avoid cache aliasing issues 69 + * on SH7705 with a 32KB cache, and to page align addresses in the 70 + * non-aliasing case. 71 + */ 60 72 #define HAVE_ARCH_UNMAPPED_AREA 61 - 62 - #else 63 - 64 - #define flush_cache_all() do { } while (0) 65 - #define flush_cache_mm(mm) do { } while (0) 66 - #define flush_cache_range(vma, start, end) do { } while (0) 67 - #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) 68 - #define flush_dcache_page(page) do { } while (0) 69 - #define flush_dcache_mmap_lock(mapping) do { } while (0) 70 - #define flush_dcache_mmap_unlock(mapping) do { } while (0) 71 - #define flush_icache_range(start, end) do { } while (0) 72 - #define flush_icache_page(vma,pg) do { } while (0) 73 - #define flush_icache_user_range(vma,pg,adr,len) do { } while (0) 74 - #define flush_cache_sigtramp(vaddr) do { } while (0) 75 - 76 - #define p3_cache_init() do { } while (0) 77 - 78 - #endif 79 73 80 74 #endif /* __ASM_CPU_SH3_CACHEFLUSH_H */ 81 75
-16
include/asm-sh/cpu-sh3/shmparam.h
··· 1 - /* 2 - * include/asm-sh/cpu-sh3/shmparam.h 3 - * 4 - * Copyright (C) 1999 Niibe Yutaka 5 - * 6 - * This file is subject to the terms and conditions of the GNU General Public 7 - * License. See the file "COPYING" in the main directory of this archive 8 - * for more details. 9 - */ 10 - #ifndef __ASM_CPU_SH3_SHMPARAM_H 11 - #define __ASM_CPU_SH3_SHMPARAM_H 12 - 13 - #define SHMLBA PAGE_SIZE /* attach addr a multiple of this */ 14 - 15 - #endif /* __ASM_CPU_SH3_SHMPARAM_H */ 16 -
-19
include/asm-sh/cpu-sh4/shmparam.h
··· 1 - /* 2 - * include/asm-sh/cpu-sh4/shmparam.h 3 - * 4 - * Copyright (C) 1999 Niibe Yutaka 5 - * 6 - * This file is subject to the terms and conditions of the GNU General Public 7 - * License. See the file "COPYING" in the main directory of this archive 8 - * for more details. 9 - */ 10 - #ifndef __ASM_CPU_SH4_SHMPARAM_H 11 - #define __ASM_CPU_SH4_SHMPARAM_H 12 - 13 - /* 14 - * SH-4 has D-cache alias issue 15 - */ 16 - #define SHMLBA (PAGE_SIZE*4) /* attach addr a multiple of this */ 17 - 18 - #endif /* __ASM_CPU_SH4_SHMPARAM_H */ 19 -
+17 -3
include/asm-sh/shmparam.h
··· 1 + /* 2 + * include/asm-sh/shmparam.h 3 + * 4 + * Copyright (C) 1999 Niibe Yutaka 5 + * Copyright (C) 2006 Paul Mundt 6 + * 7 + * This file is subject to the terms and conditions of the GNU General Public 8 + * License. See the file "COPYING" in the main directory of this archive 9 + * for more details. 10 + */ 1 11 #ifndef __ASM_SH_SHMPARAM_H 2 12 #define __ASM_SH_SHMPARAM_H 3 - #ifdef __KERNEL__ 4 13 5 - #include <asm/cpu/shmparam.h> 14 + /* 15 + * SH-4 and SH-3 7705 have an aliasing dcache. Bump this up to a sensible value 16 + * for everyone, and work out the specifics from the probed cache descriptor. 17 + */ 18 + #define SHMLBA 0x4000 /* attach addr a multiple of this */ 6 19 7 - #endif /* __KERNEL__ */ 20 + #define __ARCH_FORCE_SHMLBA 21 + 8 22 #endif /* __ASM_SH_SHMPARAM_H */