Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba575833 authored by James Bottomley's avatar James Bottomley Committed by Kyle McMartin
Browse files

[PARISC] Add parisc implementation of flush_kernel_dcache_page()



We need to do a little renaming of our original syntax because
of the difference in arguments.

Signed-off-by: default avatarJames Bottomley <jejb@parisc-linux.org>
Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
parent ab43227c
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -89,7 +89,7 @@ update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
	if (pfn_valid(page_to_pfn(page)) && page_mapping(page) &&
	if (pfn_valid(page_to_pfn(page)) && page_mapping(page) &&
	    test_bit(PG_dcache_dirty, &page->flags)) {
	    test_bit(PG_dcache_dirty, &page->flags)) {


		flush_kernel_dcache_page(page_address(page));
		flush_kernel_dcache_page(page);
		clear_bit(PG_dcache_dirty, &page->flags);
		clear_bit(PG_dcache_dirty, &page->flags);
	}
	}
}
}
@@ -278,7 +278,7 @@ void flush_dcache_page(struct page *page)
		return;
		return;
	}
	}


	flush_kernel_dcache_page(page_address(page));
	flush_kernel_dcache_page(page);


	if (!mapping)
	if (!mapping)
		return;
		return;
@@ -317,7 +317,7 @@ EXPORT_SYMBOL(flush_dcache_page);


/* Defined in arch/parisc/kernel/pacache.S */
/* Defined in arch/parisc/kernel/pacache.S */
EXPORT_SYMBOL(flush_kernel_dcache_range_asm);
EXPORT_SYMBOL(flush_kernel_dcache_range_asm);
EXPORT_SYMBOL(flush_kernel_dcache_page);
EXPORT_SYMBOL(flush_kernel_dcache_page_asm);
EXPORT_SYMBOL(flush_data_cache_local);
EXPORT_SYMBOL(flush_data_cache_local);
EXPORT_SYMBOL(flush_kernel_icache_range_asm);
EXPORT_SYMBOL(flush_kernel_icache_range_asm);


+2 −2
Original line number Original line Diff line number Diff line
@@ -621,9 +621,9 @@ __clear_user_page_asm:


	.procend
	.procend


	.export flush_kernel_dcache_page
	.export flush_kernel_dcache_page_asm


flush_kernel_dcache_page:
flush_kernel_dcache_page_asm:
	.proc
	.proc
	.callinfo NO_CALLS
	.callinfo NO_CALLS
	.entry
	.entry
+1 −1
Original line number Original line Diff line number Diff line
@@ -48,7 +48,7 @@ extern void flush_user_icache_range_asm(unsigned long, unsigned long);
extern void flush_kernel_icache_range_asm(unsigned long, unsigned long);
extern void flush_kernel_icache_range_asm(unsigned long, unsigned long);
extern void flush_user_dcache_range_asm(unsigned long, unsigned long);
extern void flush_user_dcache_range_asm(unsigned long, unsigned long);
extern void flush_kernel_dcache_range_asm(unsigned long, unsigned long);
extern void flush_kernel_dcache_range_asm(unsigned long, unsigned long);
extern void flush_kernel_dcache_page(void *);
extern void flush_kernel_dcache_page_asm(void *);
extern void flush_kernel_icache_page(void *);
extern void flush_kernel_icache_page(void *);
extern void disable_sr_hashing(void);   /* turns off space register hashing */
extern void disable_sr_hashing(void);   /* turns off space register hashing */
extern void disable_sr_hashing_asm(int); /* low level support for above */
extern void disable_sr_hashing_asm(int); /* low level support for above */
+8 −1
Original line number Original line Diff line number Diff line
@@ -62,7 +62,7 @@ extern void flush_dcache_page(struct page *page);
#define flush_dcache_mmap_unlock(mapping) \
#define flush_dcache_mmap_unlock(mapping) \
	write_unlock_irq(&(mapping)->tree_lock)
	write_unlock_irq(&(mapping)->tree_lock)


#define flush_icache_page(vma,page)	do { flush_kernel_dcache_page(page_address(page)); flush_kernel_icache_page(page_address(page)); } while (0)
#define flush_icache_page(vma,page)	do { flush_kernel_dcache_page(page); flush_kernel_icache_page(page_address(page)); } while (0)


#define flush_icache_range(s,e)		do { flush_kernel_dcache_range_asm(s,e); flush_kernel_icache_range_asm(s,e); } while (0)
#define flush_icache_range(s,e)		do { flush_kernel_dcache_range_asm(s,e); flush_kernel_icache_range_asm(s,e); } while (0)


@@ -192,6 +192,13 @@ flush_anon_page(struct page *page, unsigned long vmaddr)
}
}
#define ARCH_HAS_FLUSH_ANON_PAGE
#define ARCH_HAS_FLUSH_ANON_PAGE


static inline void
flush_kernel_dcache_page(struct page *page)
{
	flush_kernel_dcache_page_asm(page_address(page));
}
#define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE

#ifdef CONFIG_DEBUG_RODATA
#ifdef CONFIG_DEBUG_RODATA
void mark_rodata_ro(void);
void mark_rodata_ro(void);
#endif
#endif
+1 −1
Original line number Original line Diff line number Diff line
@@ -26,7 +26,7 @@ static inline void
copy_user_page(void *vto, void *vfrom, unsigned long vaddr, struct page *pg)
copy_user_page(void *vto, void *vfrom, unsigned long vaddr, struct page *pg)
{
{
	copy_user_page_asm(vto, vfrom);
	copy_user_page_asm(vto, vfrom);
	flush_kernel_dcache_page(vto);
	flush_kernel_dcache_page_asm(vto);
	/* XXX: ppc flushes icache too, should we? */
	/* XXX: ppc flushes icache too, should we? */
}
}