Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 163354
b: refs/heads/master
c: c0fe478
h: refs/heads/master
v: v3
  • Loading branch information
Paul Mundt committed Aug 4, 2009
1 parent 801cf2d commit b3e707a
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b5eb10ae901fa797c19accb684825f0e36ecbe0f
refs/heads/master: c0fe478dbb14fd32e71d1383dbe302b54ce94134
14 changes: 14 additions & 0 deletions trunk/arch/sh/include/asm/cacheflush.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#ifndef __ASM_SH_CACHEFLUSH_H
#define __ASM_SH_CACHEFLUSH_H

#include <linux/mm.h>

#ifdef __KERNEL__

#ifdef CONFIG_CACHE_OFF
Expand Down Expand Up @@ -43,6 +45,18 @@ extern void __flush_purge_region(void *start, int size);
extern void __flush_invalidate_region(void *start, int size);
#endif

#ifdef CONFIG_MMU
#define ARCH_HAS_FLUSH_ANON_PAGE
extern void __flush_anon_page(struct page *page, unsigned long);

static inline void flush_anon_page(struct vm_area_struct *vma,
struct page *page, unsigned long vmaddr)
{
if (boot_cpu_data.dcache.n_aliases && PageAnon(page))
__flush_anon_page(page, vmaddr);
}
#endif

#define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE
static inline void flush_kernel_dcache_page(struct page *page)
{
Expand Down
17 changes: 17 additions & 0 deletions trunk/arch/sh/mm/pg-mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,3 +157,20 @@ void __update_cache(struct vm_area_struct *vma,
}
}
}

void __flush_anon_page(struct page *page, unsigned long vmaddr)
{
unsigned long addr = (unsigned long) page_address(page);

if (pages_do_alias(addr, vmaddr)) {
if (boot_cpu_data.dcache.n_aliases && page_mapped(page) &&
!test_bit(PG_dcache_dirty, &page->flags)) {
void *kaddr;

kaddr = kmap_coherent(page, vmaddr);
__flush_wback_region((void *)kaddr, PAGE_SIZE);
kunmap_coherent();
} else
__flush_wback_region((void *)addr, PAGE_SIZE);
}
}

0 comments on commit b3e707a

Please sign in to comment.