Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
m68k
platform
coldfire
cache.c
Go to the documentation of this file.
1
/***************************************************************************/
2
3
/*
4
* cache.c -- general ColdFire Cache maintenance code
5
*
6
* Copyright (C) 2010, Greg Ungerer (
[email protected]
)
7
*/
8
9
/***************************************************************************/
10
11
#include <linux/kernel.h>
12
#include <
asm/coldfire.h
>
13
#include <
asm/mcfsim.h
>
14
15
/***************************************************************************/
16
#ifdef CACHE_PUSH
17
/***************************************************************************/
18
19
/*
20
* Use cpushl to push all dirty cache lines back to memory.
21
* Older versions of GAS don't seem to know how to generate the
22
* ColdFire cpushl instruction... Oh well, bit stuff it for now.
23
*/
24
25
void
mcf_cache_push
(
void
)
26
{
27
__asm__
__volatile__ (
28
"clrl %%d0\n\t"
29
"1:\n\t"
30
"movel %%d0,%%a0\n\t"
31
"2:\n\t"
32
".word 0xf468\n\t"
33
"addl %0,%%a0\n\t"
34
"cmpl %1,%%a0\n\t"
35
"blt 2b\n\t"
36
"addql #1,%%d0\n\t"
37
"cmpil %2,%%d0\n\t"
38
"bne 1b\n\t"
39
:
/* No output */
40
:
"i"
(
CACHE_LINE_SIZE
),
41
"i"
(DCACHE_SIZE /
CACHE_WAYS
),
42
"i"
(
CACHE_WAYS
)
43
:
"d0"
,
"a0"
);
44
}
45
46
/***************************************************************************/
47
#endif
/* CACHE_PUSH */
48
/***************************************************************************/
Generated on Thu Jan 10 2013 13:03:55 for Linux Kernel by
1.8.2