2007-10-16 01:28:20 +04:00
# ifndef _ASM_X86_CACHEFLUSH_H
# define _ASM_X86_CACHEFLUSH_H
/* Keep includes the same across arches. */
# include <linux/mm.h>
/* Caches aren't brain-dead on the intel. */
# define flush_cache_all() do { } while (0)
# define flush_cache_mm(mm) do { } while (0)
# define flush_cache_dup_mm(mm) do { } while (0)
# define flush_cache_range(vma, start, end) do { } while (0)
# define flush_cache_page(vma, vmaddr, pfn) do { } while (0)
# define flush_dcache_page(page) do { } while (0)
# define flush_dcache_mmap_lock(mapping) do { } while (0)
# define flush_dcache_mmap_unlock(mapping) do { } while (0)
# define flush_icache_range(start, end) do { } while (0)
# define flush_icache_page(vma,pg) do { } while (0)
# define flush_icache_user_range(vma,pg,adr,len) do { } while (0)
# define flush_cache_vmap(start, end) do { } while (0)
# define flush_cache_vunmap(start, end) do { } while (0)
# define copy_to_user_page(vma, page, vaddr, dst, src, len) \
memcpy ( dst , src , len )
# define copy_from_user_page(vma, page, vaddr, dst, src, len) \
memcpy ( dst , src , len )
2008-01-30 15:34:06 +03:00
int __deprecated_for_modules change_page_attr ( struct page * page , int numpages ,
pgprot_t prot ) ;
x86: a new API for drivers/etc to control cache and other page attributes
Right now, if drivers or other code want to change, say, a cache attribute of a
page, the only API they have is change_page_attr(). c-p-a is a really bad API
for this, because it forces the caller to know *ALL* the attributes he wants
for the page, not just the 1 thing he wants to change. So code that wants to
set a page uncachable, needs to be aware of the NX status as well etc etc etc.
This patch introduces a set of new APIs for this, set_pages_<attr> and
set_memory_<attr>, that offer a logical change to the user, and leave all
attributes not implied by the requested logical change alone.
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-01-30 15:34:06 +03:00
int set_pages_uc ( struct page * page , int numpages ) ;
int set_pages_wb ( struct page * page , int numpages ) ;
int set_pages_x ( struct page * page , int numpages ) ;
int set_pages_nx ( struct page * page , int numpages ) ;
int set_pages_ro ( struct page * page , int numpages ) ;
int set_pages_rw ( struct page * page , int numpages ) ;
int set_memory_uc ( unsigned long addr , int numpages ) ;
int set_memory_wb ( unsigned long addr , int numpages ) ;
int set_memory_x ( unsigned long addr , int numpages ) ;
int set_memory_nx ( unsigned long addr , int numpages ) ;
int set_memory_ro ( unsigned long addr , int numpages ) ;
int set_memory_rw ( unsigned long addr , int numpages ) ;
2008-01-30 15:34:07 +03:00
int set_memory_np ( unsigned long addr , int numpages ) ;
x86: a new API for drivers/etc to control cache and other page attributes
Right now, if drivers or other code want to change, say, a cache attribute of a
page, the only API they have is change_page_attr(). c-p-a is a really bad API
for this, because it forces the caller to know *ALL* the attributes he wants
for the page, not just the 1 thing he wants to change. So code that wants to
set a page uncachable, needs to be aware of the NX status as well etc etc etc.
This patch introduces a set of new APIs for this, set_pages_<attr> and
set_memory_<attr>, that offer a logical change to the user, and leave all
attributes not implied by the requested logical change alone.
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-01-30 15:34:06 +03:00
2008-01-30 15:34:09 +03:00
void clflush_cache_range ( void * addr , unsigned int size ) ;
2007-10-16 01:28:20 +04:00
2008-02-10 01:24:09 +03:00
void cpa_init ( void ) ;
2007-10-16 01:28:20 +04:00
# ifdef CONFIG_DEBUG_RODATA
void mark_rodata_ro ( void ) ;
# endif
2008-01-30 15:34:08 +03:00
# ifdef CONFIG_DEBUG_RODATA_TEST
void rodata_test ( void ) ;
# else
static inline void rodata_test ( void )
{
}
# endif
2007-10-16 01:28:20 +04:00
2007-10-11 13:20:03 +04:00
# endif