mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-09-09 01:28:05 -04:00
Fixed MTP to work with TWRP
This commit is contained in:
commit
f6dfaef42e
50820 changed files with 20846062 additions and 0 deletions
71
arch/frv/mm/cache-page.c
Normal file
71
arch/frv/mm/cache-page.c
Normal file
|
@ -0,0 +1,71 @@
|
|||
/* cache-page.c: whole-page cache wrangling functions for MMU linux
|
||||
*
|
||||
* Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
#include <linux/sched.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/module.h>
|
||||
#include <asm/pgalloc.h>
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* DCF takes a virtual address and the page may not currently have one
|
||||
* - temporarily hijack a kmap_atomic() slot and attach the page to it
|
||||
*/
|
||||
void flush_dcache_page(struct page *page)
|
||||
{
|
||||
unsigned long dampr2;
|
||||
void *vaddr;
|
||||
|
||||
dampr2 = __get_DAMPR(2);
|
||||
|
||||
vaddr = kmap_atomic_primary(page);
|
||||
|
||||
frv_dcache_writeback((unsigned long) vaddr, (unsigned long) vaddr + PAGE_SIZE);
|
||||
|
||||
kunmap_atomic_primary(vaddr);
|
||||
|
||||
if (dampr2) {
|
||||
__set_DAMPR(2, dampr2);
|
||||
__set_IAMPR(2, dampr2);
|
||||
}
|
||||
|
||||
} /* end flush_dcache_page() */
|
||||
|
||||
EXPORT_SYMBOL(flush_dcache_page);
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* ICI takes a virtual address and the page may not currently have one
|
||||
* - so we temporarily attach the page to a bit of virtual space so that is can be flushed
|
||||
*/
|
||||
void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
|
||||
unsigned long start, unsigned long len)
|
||||
{
|
||||
unsigned long dampr2;
|
||||
void *vaddr;
|
||||
|
||||
dampr2 = __get_DAMPR(2);
|
||||
|
||||
vaddr = kmap_atomic_primary(page);
|
||||
|
||||
start = (start & ~PAGE_MASK) | (unsigned long) vaddr;
|
||||
frv_cache_wback_inv(start, start + len);
|
||||
|
||||
kunmap_atomic_primary(vaddr);
|
||||
|
||||
if (dampr2) {
|
||||
__set_DAMPR(2, dampr2);
|
||||
__set_IAMPR(2, dampr2);
|
||||
}
|
||||
|
||||
} /* end flush_icache_user_range() */
|
||||
|
||||
EXPORT_SYMBOL(flush_icache_user_range);
|
Loading…
Add table
Add a link
Reference in a new issue