1 #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
10 static 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
SYS_FUNC(cacheflush)23 SYS_FUNC(cacheflush)
24 {
25 if (entering(tcp)) {
26 /* addr */
27 tprintf("%#lx, ", tcp->u_arg[0]);
28 /* scope */
29 printxval(cacheflush_scope, tcp->u_arg[1], "FLUSH_SCOPE_???");
30 tprints(", ");
31 /* flags */
32 printflags(cacheflush_flags, tcp->u_arg[2], "FLUSH_CACHE_???");
33 /* len */
34 tprintf(", %lu", tcp->u_arg[3]);
35 }
36 return 0;
37 }
38 #endif /* M68K */
39
40 #ifdef BFIN
41 static const struct xlat cacheflush_flags[] = {
42 XLAT(ICACHE),
43 XLAT(DCACHE),
44 XLAT(BCACHE),
45 XLAT_END
46 };
47
SYS_FUNC(cacheflush)48 SYS_FUNC(cacheflush)
49 {
50 if (entering(tcp)) {
51 /* start addr */
52 tprintf("%#lx, ", tcp->u_arg[0]);
53 /* length */
54 tprintf("%ld, ", tcp->u_arg[1]);
55 /* flags */
56 printxval(cacheflush_flags, tcp->u_arg[1], "?CACHE");
57 }
58 return 0;
59 }
60 #endif /* BFIN */
61
62 #ifdef SH
63 static const struct xlat cacheflush_flags[] = {
64 #ifdef CACHEFLUSH_D_INVAL
65 XLAT(CACHEFLUSH_D_INVAL),
66 #endif
67 #ifdef CACHEFLUSH_D_WB
68 XLAT(CACHEFLUSH_D_WB),
69 #endif
70 #ifdef CACHEFLUSH_D_PURGE
71 XLAT(CACHEFLUSH_D_PURGE),
72 #endif
73 #ifdef CACHEFLUSH_I
74 XLAT(CACHEFLUSH_I),
75 #endif
76 XLAT_END
77 };
78
SYS_FUNC(cacheflush)79 SYS_FUNC(cacheflush)
80 {
81 if (entering(tcp)) {
82 /* addr */
83 tprintf("%#lx, ", tcp->u_arg[0]);
84 /* len */
85 tprintf("%lu, ", tcp->u_arg[1]);
86 /* flags */
87 printflags(cacheflush_flags, tcp->u_arg[2], "CACHEFLUSH_???");
88 }
89 return 0;
90 }
91 #endif /* SH */
92