File: io.h

package info (click to toggle)
kernel-source-sparc-2.2.1 2.2.1
  • links: PTS
  • area: main
  • in suites: slink
  • size: 62,800 kB
  • ctags: 188,320
  • sloc: ansic: 1,114,164; asm: 49,922; makefile: 8,272; sh: 1,831; perl: 1,584; tcl: 409; lisp: 218; cpp: 186; awk: 133; sed: 72
file content (38 lines) | stat: -rw-r--r-- 1,357 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
 * linux/include/asm-arm/proc-armv/io.h
 */

/*
 * The caches on some architectures aren't dma-coherent and have need to
 * handle this in software.  There are two types of operations that
 * can be applied to dma buffers.
 *
 *  - dma_cache_wback_inv(start, size) makes caches and RAM coherent by
 *    writing the content of the caches back to memory, if necessary.
 *    The function also invalidates the affected part of the caches as
 *    necessary before DMA transfers from outside to memory.
 *  - dma_cache_inv(start, size) invalidates the affected parts of the
 *    caches.  Dirty lines of the caches may be written back or simply
 *    be discarded.  This operation is necessary before dma operations
 *    to the memory.
 *  - dma_cache_wback(start, size) writes back any dirty lines but does
 *    not invalidate the cache.  This can be used before DMA reads from
 *    memory,
 */

#include <asm/proc-fns.h>

extern inline void dma_cache_inv(unsigned long start, unsigned long size)
{
	processor.u.armv3v4._cache_purge_area(start, start + size);
}

extern inline void dma_cache_wback(unsigned long start, unsigned long size)
{
	processor.u.armv3v4._cache_wback_area(start, start + size);
}

extern inline void dma_cache_wback_inv(unsigned long start, unsigned long size)
{
	processor.u.armv3v4._flush_cache_area(start, start + size, 0);
}