blob: db7283f2d3aff55406ce3e5ed4ce4ed1f5b38e1e [file] [log] [blame]
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +00001#include "defs.h"
2
3#ifdef HAVE_ASM_CACHECTL_H
4# include <asm/cachectl.h>
5#endif
6
7#ifdef M68K
8# include "xlat/cacheflush_scope.h"
9
10static const struct xlat cacheflush_flags[] = {
11#ifdef FLUSH_CACHE_BOTH
12 XLAT(FLUSH_CACHE_BOTH),
13#endif
14#ifdef FLUSH_CACHE_DATA
15 XLAT(FLUSH_CACHE_DATA),
16#endif
17#ifdef FLUSH_CACHE_INSN
18 XLAT(FLUSH_CACHE_INSN),
19#endif
20 XLAT_END
21};
22
Dmitry V. Levina0bd3742015-04-07 01:36:50 +000023SYS_FUNC(cacheflush)
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000024{
25 if (entering(tcp)) {
26 /* addr */
Dmitry V. Levinbb16ee12015-07-20 17:57:37 +000027 printaddr(tcp->u_arg[0]);
28 tprints(", ");
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000029 /* scope */
30 printxval(cacheflush_scope, tcp->u_arg[1], "FLUSH_SCOPE_???");
31 tprints(", ");
32 /* flags */
33 printflags(cacheflush_flags, tcp->u_arg[2], "FLUSH_CACHE_???");
34 /* len */
35 tprintf(", %lu", tcp->u_arg[3]);
36 }
37 return 0;
38}
39#endif /* M68K */
40
41#ifdef BFIN
42static const struct xlat cacheflush_flags[] = {
43 XLAT(ICACHE),
44 XLAT(DCACHE),
45 XLAT(BCACHE),
46 XLAT_END
47};
48
Dmitry V. Levina0bd3742015-04-07 01:36:50 +000049SYS_FUNC(cacheflush)
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000050{
51 if (entering(tcp)) {
52 /* start addr */
Dmitry V. Levinbb16ee12015-07-20 17:57:37 +000053 printaddr(tcp->u_arg[0]);
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000054 /* length */
Dmitry V. Levinbb16ee12015-07-20 17:57:37 +000055 tprintf(", %ld, ", tcp->u_arg[1]);
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000056 /* flags */
57 printxval(cacheflush_flags, tcp->u_arg[1], "?CACHE");
58 }
59 return 0;
60}
61#endif /* BFIN */
62
63#ifdef SH
64static const struct xlat cacheflush_flags[] = {
65#ifdef CACHEFLUSH_D_INVAL
66 XLAT(CACHEFLUSH_D_INVAL),
67#endif
68#ifdef CACHEFLUSH_D_WB
69 XLAT(CACHEFLUSH_D_WB),
70#endif
71#ifdef CACHEFLUSH_D_PURGE
72 XLAT(CACHEFLUSH_D_PURGE),
73#endif
74#ifdef CACHEFLUSH_I
75 XLAT(CACHEFLUSH_I),
76#endif
77 XLAT_END
78};
79
Dmitry V. Levina0bd3742015-04-07 01:36:50 +000080SYS_FUNC(cacheflush)
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000081{
82 if (entering(tcp)) {
83 /* addr */
Dmitry V. Levinbb16ee12015-07-20 17:57:37 +000084 printaddr(tcp->u_arg[0]);
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000085 /* len */
Dmitry V. Levinbb16ee12015-07-20 17:57:37 +000086 tprintf(", %lu, ", tcp->u_arg[1]);
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000087 /* flags */
88 printflags(cacheflush_flags, tcp->u_arg[2], "CACHEFLUSH_???");
89 }
90 return 0;
91}
92#endif /* SH */
Ezequiel Garciabd8dd772015-04-18 17:33:27 -030093
94#ifdef NIOS2
95SYS_FUNC(cacheflush)
96{
97 if (entering(tcp)) {
Dmitry V. Levinbb16ee12015-07-20 17:57:37 +000098 /* addr */
99 printaddr(tcp->u_arg[0]);
100 /* len */
101 tprintf(", %lu, ", tcp->u_arg[3]);
Ezequiel Garciabd8dd772015-04-18 17:33:27 -0300102 /* scope and flags (cache type) are currently ignored */
103 }
104 return 0;
105}
106#endif /* NIOS2 */