12 #include <linux/module.h>
14 #include <asm/cacheflush.h>
28 static void flush_icache_page_range(
unsigned long start,
unsigned long end)
86 unsigned long start_page, end_page;
89 flags = smp_lock_cache();
91 if (end > 0x80000000UL) {
93 if (end > 0xa0000000UL) {
102 start_page = (start >= 0x80000000
UL) ? start : 0x80000000UL;
105 if (start_page == start)
111 end_page = (end - 1) & PAGE_MASK;
113 if (start_page == end_page) {
115 flush_icache_page_range(start, end);
116 }
else if (start_page + 1 == end_page) {
118 flush_icache_page_range(start, end_page);
119 flush_icache_page_range(end_page, end);
127 smp_unlock_cache(flags);