Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
cacheflush_64.h File Reference
#include <asm/page.h>
#include <linux/mm.h>

Go to the source code of this file.

Macros

#define flushw_all()   __asm__ __volatile__("flushw")
 
#define flushw_user()   __flushw_user()
 
#define flush_user_windows   flushw_user
 
#define flush_register_windows   flushw_all
 
#define flush_cache_mm(__mm)   do { if ((__mm) == current->mm) flushw_user(); } while(0)
 
#define flush_cache_dup_mm(mm)   flush_cache_mm(mm)
 
#define flush_cache_range(vma, start, end)   flush_cache_mm((vma)->vm_mm)
 
#define flush_cache_page(vma, page, pfn)   flush_cache_mm((vma)->vm_mm)
 
#define smp_flush_dcache_page_impl(page, cpu)   flush_dcache_page_impl(page)
 
#define flush_dcache_page_all(mm, page)   flush_dcache_page_impl(page)
 
#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE   1
 
#define flush_icache_page(vma, pg)   do { } while(0)
 
#define flush_icache_user_range(vma, pg, adr, len)   do { } while (0)
 
#define copy_to_user_page(vma, page, vaddr, dst, src, len)
 
#define copy_from_user_page(vma, page, vaddr, dst, src, len)
 
#define flush_dcache_mmap_lock(mapping)   do { } while (0)
 
#define flush_dcache_mmap_unlock(mapping)   do { } while (0)
 
#define flush_cache_vmap(start, end)   do { } while (0)
 
#define flush_cache_vunmap(start, end)   do { } while (0)
 

Functions

void __flushw_user (void)
 
void flush_icache_range (unsigned long start, unsigned long end)
 
void __flush_icache_page (unsigned long)
 
void __flush_dcache_page (void *addr, int flush_icache)
 
void flush_dcache_page_impl (struct page *page)
 
void __flush_dcache_range (unsigned long start, unsigned long end)
 
void flush_dcache_page (struct page *page)
 
void flush_ptrace_access (struct vm_area_struct *, struct page *, unsigned long uaddr, void *kaddr, unsigned long len, int write)
 

Macro Definition Documentation

#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE   1

Definition at line 47 of file cacheflush_64.h.

#define copy_from_user_page (   vma,
  page,
  vaddr,
  dst,
  src,
  len 
)
Value:
do { \
flush_cache_page(vma, vaddr, page_to_pfn(page)); \
memcpy(dst, src, len); \
flush_ptrace_access(vma, page, vaddr, dst, len, 1); \
} while (0)

Definition at line 64 of file cacheflush_64.h.

#define copy_to_user_page (   vma,
  page,
  vaddr,
  dst,
  src,
  len 
)
Value:
do { \
flush_cache_page(vma, vaddr, page_to_pfn(page)); \
memcpy(dst, src, len); \
flush_ptrace_access(vma, page, vaddr, src, len, 0); \
} while (0)

Definition at line 57 of file cacheflush_64.h.

#define flush_cache_dup_mm (   mm)    flush_cache_mm(mm)

Definition at line 22 of file cacheflush_64.h.

#define flush_cache_mm (   __mm)    do { if ((__mm) == current->mm) flushw_user(); } while(0)

Definition at line 20 of file cacheflush_64.h.

#define flush_cache_page (   vma,
  page,
  pfn 
)    flush_cache_mm((vma)->vm_mm)

Definition at line 25 of file cacheflush_64.h.

#define flush_cache_range (   vma,
  start,
  end 
)    flush_cache_mm((vma)->vm_mm)

Definition at line 23 of file cacheflush_64.h.

#define flush_cache_vmap (   start,
  end 
)    do { } while (0)

Definition at line 74 of file cacheflush_64.h.

#define flush_cache_vunmap (   start,
  end 
)    do { } while (0)

Definition at line 75 of file cacheflush_64.h.

#define flush_dcache_mmap_lock (   mapping)    do { } while (0)

Definition at line 71 of file cacheflush_64.h.

#define flush_dcache_mmap_unlock (   mapping)    do { } while (0)

Definition at line 72 of file cacheflush_64.h.

#define flush_dcache_page_all (   mm,
  page 
)    flush_dcache_page_impl(page)

Definition at line 43 of file cacheflush_64.h.

#define flush_icache_page (   vma,
  pg 
)    do { } while(0)

Definition at line 50 of file cacheflush_64.h.

#define flush_icache_user_range (   vma,
  pg,
  adr,
  len 
)    do { } while (0)

Definition at line 51 of file cacheflush_64.h.

#define flush_register_windows   flushw_all

Definition at line 17 of file cacheflush_64.h.

#define flush_user_windows   flushw_user

Definition at line 16 of file cacheflush_64.h.

#define flushw_all (   void)    __asm__ __volatile__("flushw")

Definition at line 11 of file cacheflush_64.h.

#define flushw_user ( )    __flushw_user()

Definition at line 14 of file cacheflush_64.h.

#define smp_flush_dcache_page_impl (   page,
  cpu 
)    flush_dcache_page_impl(page)

Definition at line 42 of file cacheflush_64.h.

Function Documentation

void __flush_dcache_page ( void addr,
int  flush_icache 
)
void __flush_dcache_range ( unsigned long  start,
unsigned long  end 
)

Definition at line 632 of file init_64.c.

void __flush_icache_page ( unsigned  long)
void __flushw_user ( void  )
void flush_dcache_page ( struct page page)

Definition at line 273 of file flush.c.

void flush_dcache_page_impl ( struct page page)
inline

Definition at line 197 of file init_64.c.

void flush_icache_range ( unsigned long  start,
unsigned long  end 
)

flush_icache_range - Globally flush dcache and invalidate icache for region : The starting virtual address of the region. : The ending virtual address of the region.

This is used by the kernel to globally flush some code it has just written from the dcache back to RAM and then to globally invalidate the icache over that region so that that code can be run on all CPUs in the system.

Definition at line 106 of file cache.c.

void flush_ptrace_access ( struct vm_area_struct ,
struct page ,
unsigned long  uaddr,
void kaddr,
unsigned long  len,
int  write 
)

Definition at line 67 of file ptrace_64.c.