Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/m68k/include/asm/cacheflush_no.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef _M68KNOMMU_CACHEFLUSH_H
3
#define _M68KNOMMU_CACHEFLUSH_H
4
5
/*
6
* (C) Copyright 2000-2010, Greg Ungerer <[email protected]>
7
*/
8
#include <linux/mm.h>
9
#include <asm/mcfsim.h>
10
11
#define flush_cache_all() __flush_cache_all()
12
#define flush_dcache_range(start, len) __flush_dcache_all()
13
#define flush_icache_range(start, len) __flush_icache_all()
14
15
void mcf_cache_push(void);
16
17
static inline void __clear_cache_all(void)
18
{
19
#ifdef CACHE_INVALIDATE
20
__asm__ __volatile__ (
21
"movec %0, %%CACR\n\t"
22
"nop\n\t"
23
: : "r" (CACHE_INVALIDATE) );
24
#endif
25
}
26
27
static inline void __flush_cache_all(void)
28
{
29
#ifdef CACHE_PUSH
30
mcf_cache_push();
31
#endif
32
__clear_cache_all();
33
}
34
35
/*
36
* Some ColdFire parts implement separate instruction and data caches,
37
* on those we should just flush the appropriate cache. If we don't need
38
* to do any specific flushing then this will be optimized away.
39
*/
40
static inline void __flush_icache_all(void)
41
{
42
#ifdef CACHE_INVALIDATEI
43
__asm__ __volatile__ (
44
"movec %0, %%CACR\n\t"
45
"nop\n\t"
46
: : "r" (CACHE_INVALIDATEI) );
47
#endif
48
}
49
50
static inline void __flush_dcache_all(void)
51
{
52
#ifdef CACHE_PUSH
53
mcf_cache_push();
54
#endif
55
#ifdef CACHE_INVALIDATED
56
__asm__ __volatile__ (
57
"movec %0, %%CACR\n\t"
58
"nop\n\t"
59
: : "r" (CACHE_INVALIDATED) );
60
#else
61
/* Flush the write buffer */
62
__asm__ __volatile__ ( "nop" );
63
#endif
64
}
65
66
/*
67
* Push cache entries at supplied address. We want to write back any dirty
68
* data and then invalidate the cache lines associated with this address.
69
*/
70
static inline void cache_push(unsigned long paddr, int len)
71
{
72
__flush_cache_all();
73
}
74
75
/*
76
* Clear cache entries at supplied address (that is don't write back any
77
* dirty data).
78
*/
79
static inline void cache_clear(unsigned long paddr, int len)
80
{
81
__clear_cache_all();
82
}
83
84
#include <asm-generic/cacheflush.h>
85
86
#endif /* _M68KNOMMU_CACHEFLUSH_H */
87
88