[PATCH V2] sh: Add support for tracing sys_cacheflush system call

Carmelo AMOROSO carmelo.amoroso at st.com
Wed Dec 1 13:27:07 UTC 2010


Signed-off-by: Carmelo Amoroso <carmelo.amoroso at st.com>
Reviewed-by: Angelo Castello <angelo.castello at st.com>
---
 linux/sh/syscallent.h |    2 +-
 linux/syscall.h       |    2 +-
 system.c              |   33 +++++++++++++++++++++++++++++++++
 3 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h
index 2291131..f3b59db 100644
--- a/linux/sh/syscallent.h
+++ b/linux/sh/syscallent.h
@@ -153,7 +153,7 @@
 	{ 5,	TP,	sys_clone,		"clone"		}, /* 120 */
 	{ 2,	0,	sys_setdomainname,	"setdomainname"	}, /* 121 */
 	{ 1,	0,	sys_uname,		"uname"		}, /* 122 */
-	{ 3,	0,	printargs,		"cacheflush"	}, /* 123 */
+	{ 3,	0,	sys_cacheflush,		"cacheflush"	}, /* 123 */
 	{ 1,	0,	sys_adjtimex,		"adjtimex"	}, /* 124 */
 	{ 3,	0,	sys_mprotect,		"mprotect"	}, /* 125 */
 	{ 3,	TS,	sys_sigprocmask,	"sigprocmask"	}, /* 126 */
diff --git a/linux/syscall.h b/linux/syscall.h
index 679697f..e7348ff 100644
--- a/linux/syscall.h
+++ b/linux/syscall.h
@@ -322,7 +322,7 @@ int sys_sysmips();
 int sys_setpgrp(), sys_gethostname(), sys_getdtablesize(), sys_utimes();
 int sys_capget(), sys_capset();
 
-#ifdef M68K
+#if defined M68K || defined SH
 int sys_cacheflush();
 #endif
 
diff --git a/system.c b/system.c
index e16a6be..1491005 100644
--- a/system.c
+++ b/system.c
@@ -343,6 +343,39 @@ sys_cacheflush(struct tcb *tcp)
 
 #endif
 
+#ifdef SH
+static const struct xlat cacheflush_flags[] = {
+#ifdef CACHEFLUSH_D_INVAL
+	{ CACHEFLUSH_D_INVAL,	"CACHEFLUSH_D_INVAL" },
+#endif
+#ifdef CACHEFLUSH_D_WB
+	{ CACHEFLUSH_D_WB,		"CACHEFLUSH_D_WB" },
+#endif
+#ifdef CACHEFLUSH_D_PURGE
+	{ CACHEFLUSH_D_PURGE,	"CACHEFLUSH_D_PURGE" },
+#endif
+#ifdef CACHEFLUSH_I
+	{ CACHEFLUSH_I,			"CACHEFLUSH_I" },
+#endif
+	{ 0,            		NULL },
+};
+
+int
+sys_cacheflush(tcp)
+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 */
+
 #endif /* LINUX */
 
 #ifdef SUNOS4
-- 
1.5.5.6




More information about the Strace-devel mailing list