From: Dmitry V. Levin Date: Wed, 3 Dec 2014 20:50:08 +0000 (+0000) Subject: Move cacheflush parser to a separate file X-Git-Tag: v4.10~343 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=95edb8bb71e19f8ac16ca6c76afce84946d45320;p=strace Move cacheflush parser to a separate file * cacheflush.c: New file. * Makefile.am (strace_SOURCES): Add it. * system.c: Move inclusion of to cacheflush.c. [M68K, BFIN, SH]: Move to cacheflush.c. --- diff --git a/Makefile.am b/Makefile.am index 5abaeea3..d6968c08 100644 --- a/Makefile.am +++ b/Makefile.am @@ -20,6 +20,7 @@ strace_SOURCES = \ aio.c \ bjm.c \ block.c \ + cacheflush.c \ capability.c \ count.c \ desc.c \ diff --git a/cacheflush.c b/cacheflush.c new file mode 100644 index 00000000..bfbf5838 --- /dev/null +++ b/cacheflush.c @@ -0,0 +1,94 @@ +#include "defs.h" + +#ifdef HAVE_ASM_CACHECTL_H +# include +#endif + +#ifdef M68K +# include "xlat/cacheflush_scope.h" + +static const struct xlat cacheflush_flags[] = { +#ifdef FLUSH_CACHE_BOTH + XLAT(FLUSH_CACHE_BOTH), +#endif +#ifdef FLUSH_CACHE_DATA + XLAT(FLUSH_CACHE_DATA), +#endif +#ifdef FLUSH_CACHE_INSN + XLAT(FLUSH_CACHE_INSN), +#endif + XLAT_END +}; + +int +sys_cacheflush(struct tcb *tcp) +{ + if (entering(tcp)) { + /* addr */ + tprintf("%#lx, ", tcp->u_arg[0]); + /* scope */ + printxval(cacheflush_scope, tcp->u_arg[1], "FLUSH_SCOPE_???"); + tprints(", "); + /* flags */ + printflags(cacheflush_flags, tcp->u_arg[2], "FLUSH_CACHE_???"); + /* len */ + tprintf(", %lu", tcp->u_arg[3]); + } + return 0; +} +#endif /* M68K */ + +#ifdef BFIN +static const struct xlat cacheflush_flags[] = { + XLAT(ICACHE), + XLAT(DCACHE), + XLAT(BCACHE), + XLAT_END +}; + +int +sys_cacheflush(struct tcb *tcp) +{ + if (entering(tcp)) { + /* start addr */ + tprintf("%#lx, ", tcp->u_arg[0]); + /* length */ + tprintf("%ld, ", tcp->u_arg[1]); + /* flags */ + printxval(cacheflush_flags, tcp->u_arg[1], "?CACHE"); + } + return 0; +} +#endif /* BFIN */ + +#ifdef SH +static const struct xlat cacheflush_flags[] = { +#ifdef CACHEFLUSH_D_INVAL + XLAT(CACHEFLUSH_D_INVAL), +#endif +#ifdef CACHEFLUSH_D_WB + XLAT(CACHEFLUSH_D_WB), +#endif +#ifdef CACHEFLUSH_D_PURGE + XLAT(CACHEFLUSH_D_PURGE), +#endif +#ifdef CACHEFLUSH_I + XLAT(CACHEFLUSH_I), +#endif + XLAT_END +}; + +int +sys_cacheflush(struct tcb *tcp) +{ + if (entering(tcp)) { + /* addr */ + tprintf("%#lx, ", tcp->u_arg[0]); + /* len */ + tprintf("%lu, ", tcp->u_arg[1]); + /* flags */ + printflags(cacheflush_flags, tcp->u_arg[2], "CACHEFLUSH_???"); + } + return 0; +} +#endif /* SH */ diff --git a/system.c b/system.c index ae72c661..7cbc3420 100644 --- a/system.c +++ b/system.c @@ -60,9 +60,6 @@ #define MS_MGC_VAL 0xc0ed0000 /* Magic flag number */ #define MS_MGC_MSK 0xffff0000 /* Magic flag mask */ -#ifdef HAVE_ASM_CACHECTL_H -# include -#endif #include #include "xlat/mount_flags.h" @@ -187,94 +184,3 @@ sys_syslog(struct tcb *tcp) return 0; } - -#ifdef M68K -#include "xlat/cacheflush_scope.h" - -static const struct xlat cacheflush_flags[] = { -#ifdef FLUSH_CACHE_BOTH - XLAT(FLUSH_CACHE_BOTH), -#endif -#ifdef FLUSH_CACHE_DATA - XLAT(FLUSH_CACHE_DATA), -#endif -#ifdef FLUSH_CACHE_INSN - XLAT(FLUSH_CACHE_INSN), -#endif - XLAT_END -}; - -int -sys_cacheflush(struct tcb *tcp) -{ - if (entering(tcp)) { - /* addr */ - tprintf("%#lx, ", tcp->u_arg[0]); - /* scope */ - printxval(cacheflush_scope, tcp->u_arg[1], "FLUSH_SCOPE_???"); - tprints(", "); - /* flags */ - printflags(cacheflush_flags, tcp->u_arg[2], "FLUSH_CACHE_???"); - /* len */ - tprintf(", %lu", tcp->u_arg[3]); - } - return 0; -} -#endif /* M68K */ - -#ifdef BFIN - -static const struct xlat cacheflush_flags[] = { - XLAT(ICACHE), - XLAT(DCACHE), - XLAT(BCACHE), - XLAT_END -}; - -int -sys_cacheflush(struct tcb *tcp) -{ - if (entering(tcp)) { - /* start addr */ - tprintf("%#lx, ", tcp->u_arg[0]); - /* length */ - tprintf("%ld, ", tcp->u_arg[1]); - /* flags */ - printxval(cacheflush_flags, tcp->u_arg[1], "?CACHE"); - } - return 0; -} - -#endif - -#ifdef SH -static const struct xlat cacheflush_flags[] = { -#ifdef CACHEFLUSH_D_INVAL - XLAT(CACHEFLUSH_D_INVAL), -#endif -#ifdef CACHEFLUSH_D_WB - XLAT(CACHEFLUSH_D_WB), -#endif -#ifdef CACHEFLUSH_D_PURGE - XLAT(CACHEFLUSH_D_PURGE), -#endif -#ifdef CACHEFLUSH_I - XLAT(CACHEFLUSH_I), -#endif - XLAT_END -}; - -int -sys_cacheflush(struct tcb *tcp) -{ - if (entering(tcp)) { - /* addr */ - tprintf("%#lx, ", tcp->u_arg[0]); - /* len */ - tprintf("%lu, ", tcp->u_arg[1]); - /* flags */ - printflags(cacheflush_flags, tcp->u_arg[2], "CACHEFLUSH_???"); - } - return 0; -} -#endif /* SH */