diff options
Diffstat (limited to 'arch/sh/include/asm')
| -rw-r--r-- | arch/sh/include/asm/cacheflush.h | 15 | ||||
| -rw-r--r-- | arch/sh/include/asm/page.h | 11 | ||||
| -rw-r--r-- | arch/sh/include/asm/pgtable.h | 3 |
3 files changed, 7 insertions, 22 deletions
diff --git a/arch/sh/include/asm/cacheflush.h b/arch/sh/include/asm/cacheflush.h index 4e360114269d..4c85d55847cc 100644 --- a/arch/sh/include/asm/cacheflush.h +++ b/arch/sh/include/asm/cacheflush.h | |||
| @@ -49,7 +49,6 @@ static inline void flush_kernel_dcache_page(struct page *page) | |||
| 49 | flush_dcache_page(page); | 49 | flush_dcache_page(page); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | #if (defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)) && !defined(CONFIG_CACHE_OFF) | ||
| 53 | extern void copy_to_user_page(struct vm_area_struct *vma, | 52 | extern void copy_to_user_page(struct vm_area_struct *vma, |
| 54 | struct page *page, unsigned long vaddr, void *dst, const void *src, | 53 | struct page *page, unsigned long vaddr, void *dst, const void *src, |
| 55 | unsigned long len); | 54 | unsigned long len); |
| @@ -57,20 +56,6 @@ extern void copy_to_user_page(struct vm_area_struct *vma, | |||
| 57 | extern void copy_from_user_page(struct vm_area_struct *vma, | 56 | extern void copy_from_user_page(struct vm_area_struct *vma, |
| 58 | struct page *page, unsigned long vaddr, void *dst, const void *src, | 57 | struct page *page, unsigned long vaddr, void *dst, const void *src, |
| 59 | unsigned long len); | 58 | unsigned long len); |
| 60 | #else | ||
| 61 | #define copy_to_user_page(vma, page, vaddr, dst, src, len) \ | ||
| 62 | do { \ | ||
| 63 | flush_cache_page(vma, vaddr, page_to_pfn(page));\ | ||
| 64 | memcpy(dst, src, len); \ | ||
| 65 | flush_icache_user_range(vma, page, vaddr, len); \ | ||
| 66 | } while (0) | ||
| 67 | |||
| 68 | #define copy_from_user_page(vma, page, vaddr, dst, src, len) \ | ||
| 69 | do { \ | ||
| 70 | flush_cache_page(vma, vaddr, page_to_pfn(page));\ | ||
| 71 | memcpy(dst, src, len); \ | ||
| 72 | } while (0) | ||
| 73 | #endif | ||
| 74 | 59 | ||
| 75 | #define flush_cache_vmap(start, end) flush_cache_all() | 60 | #define flush_cache_vmap(start, end) flush_cache_all() |
| 76 | #define flush_cache_vunmap(start, end) flush_cache_all() | 61 | #define flush_cache_vunmap(start, end) flush_cache_all() |
diff --git a/arch/sh/include/asm/page.h b/arch/sh/include/asm/page.h index 5208b7bfc24e..847eeabb9083 100644 --- a/arch/sh/include/asm/page.h +++ b/arch/sh/include/asm/page.h | |||
| @@ -63,22 +63,23 @@ extern void copy_page(void *to, void *from); | |||
| 63 | struct page; | 63 | struct page; |
| 64 | struct vm_area_struct; | 64 | struct vm_area_struct; |
| 65 | 65 | ||
| 66 | #if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \ | 66 | #if defined(CONFIG_CPU_SH5) |
| 67 | (defined(CONFIG_CPU_SH5) || defined(CONFIG_CPU_SH4) || \ | ||
| 68 | defined(CONFIG_SH7705_CACHE_32KB)) | ||
| 69 | extern void clear_user_page(void *to, unsigned long address, struct page *page); | 67 | extern void clear_user_page(void *to, unsigned long address, struct page *page); |
| 70 | extern void copy_user_page(void *to, void *from, unsigned long address, | 68 | extern void copy_user_page(void *to, void *from, unsigned long address, |
| 71 | struct page *page); | 69 | struct page *page); |
| 72 | #if defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB) | 70 | |
| 71 | #elif defined(CONFIG_MMU) | ||
| 73 | extern void copy_user_highpage(struct page *to, struct page *from, | 72 | extern void copy_user_highpage(struct page *to, struct page *from, |
| 74 | unsigned long vaddr, struct vm_area_struct *vma); | 73 | unsigned long vaddr, struct vm_area_struct *vma); |
| 75 | #define __HAVE_ARCH_COPY_USER_HIGHPAGE | 74 | #define __HAVE_ARCH_COPY_USER_HIGHPAGE |
| 76 | extern void clear_user_highpage(struct page *page, unsigned long vaddr); | 75 | extern void clear_user_highpage(struct page *page, unsigned long vaddr); |
| 77 | #define clear_user_highpage clear_user_highpage | 76 | #define clear_user_highpage clear_user_highpage |
| 78 | #endif | 77 | |
| 79 | #else | 78 | #else |
| 79 | |||
| 80 | #define clear_user_page(page, vaddr, pg) clear_page(page) | 80 | #define clear_user_page(page, vaddr, pg) clear_page(page) |
| 81 | #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) | 81 | #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) |
| 82 | |||
| 82 | #endif | 83 | #endif |
| 83 | 84 | ||
| 84 | /* | 85 | /* |
diff --git a/arch/sh/include/asm/pgtable.h b/arch/sh/include/asm/pgtable.h index bef3ab7fc09e..ba2333216c5b 100644 --- a/arch/sh/include/asm/pgtable.h +++ b/arch/sh/include/asm/pgtable.h | |||
| @@ -141,8 +141,7 @@ extern void paging_init(void); | |||
| 141 | extern void page_table_range_init(unsigned long start, unsigned long end, | 141 | extern void page_table_range_init(unsigned long start, unsigned long end, |
| 142 | pgd_t *pgd); | 142 | pgd_t *pgd); |
| 143 | 143 | ||
| 144 | #if !defined(CONFIG_CACHE_OFF) && (defined(CONFIG_CPU_SH4) || \ | 144 | #if defined(CONFIG_MMU) && !defined(CONFIG_CPU_SH5) |
| 145 | defined(CONFIG_SH7705_CACHE_32KB)) && defined(CONFIG_MMU) | ||
| 146 | extern void kmap_coherent_init(void); | 145 | extern void kmap_coherent_init(void); |
| 147 | #else | 146 | #else |
| 148 | #define kmap_coherent_init() do { } while (0) | 147 | #define kmap_coherent_init() do { } while (0) |
