Move cacheflush parser to a separate file

* cacheflush.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* system.c: Move inclusion of <asm/cachectl.h> to cacheflush.c.
[M68K, BFIN, SH]: Move to cacheflush.c.
diff --git a/Makefile.am b/Makefile.am
index 5abaeea..d6968c0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,6 +20,7 @@
 	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 0000000..bfbf583
--- /dev/null
+++ b/cacheflush.c
@@ -0,0 +1,94 @@
+#include "defs.h"
+
+#ifdef HAVE_ASM_CACHECTL_H
+# include <asm/cachectl.h>
+#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 ae72c66..7cbc342 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 <asm/cachectl.h>
-#endif
 #include <linux/personality.h>
 
 #include "xlat/mount_flags.h"
@@ -187,94 +184,3 @@
 
 	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 */