mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-25 02:48:21 +00:00
26b7a78c55
This converts the lazy dcache handling to the model described in Documentation/cachetlb.txt and drops the ptep_get_and_clear() hacks used for the aliasing dcaches on SH-4 and SH7705 in 32kB mode. As a bonus, this slightly cuts down on the cache flushing frequency. With that and the PTEA handling out of the way, the update_mmu_cache() implementations can be consolidated, and we no longer have to worry about which configuration the cache is in for the SH7705 case. And finally, explicitly disable the lazy writeback on SMP (SH-4A). Signed-off-by: Paul Mundt <lethal@linux-sh.org>
38 lines
1.2 KiB
C
38 lines
1.2 KiB
C
#ifndef __ASM_SH_CACHEFLUSH_H
|
|
#define __ASM_SH_CACHEFLUSH_H
|
|
#ifdef __KERNEL__
|
|
|
|
#include <linux/mm.h>
|
|
#include <asm/cpu/cacheflush.h>
|
|
|
|
/* Flush (write-back only) a region (smaller than a page) */
|
|
extern void __flush_wback_region(void *start, int size);
|
|
/* Flush (write-back & invalidate) a region (smaller than a page) */
|
|
extern void __flush_purge_region(void *start, int size);
|
|
/* Flush (invalidate only) a region (smaller than a page) */
|
|
extern void __flush_invalidate_region(void *start, int size);
|
|
|
|
#define flush_cache_vmap(start, end) flush_cache_all()
|
|
#define flush_cache_vunmap(start, end) flush_cache_all()
|
|
|
|
#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
|
|
do { \
|
|
flush_cache_page(vma, vaddr, page_to_pfn(page));\
|
|
memcpy(dst, src, len); \
|
|
flush_icache_user_range(vma, page, vaddr, len); \
|
|
} while (0)
|
|
|
|
#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
|
|
do { \
|
|
flush_cache_page(vma, vaddr, page_to_pfn(page));\
|
|
memcpy(dst, src, len); \
|
|
} while (0)
|
|
|
|
#define HAVE_ARCH_UNMAPPED_AREA
|
|
|
|
/* Page flag for lazy dcache write-back for the aliasing UP caches */
|
|
#define PG_dcache_dirty PG_arch_1
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* __ASM_SH_CACHEFLUSH_H */
|