mips: move sysmips parser to a separate file

* sysmips.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* system.c: Fix typo in the check for <linux/utsname.h>.
Move inclusions of <linux/utsname.h> and <asm/sysmips.h> to sysmips.c.
[MIPS]: Likewise.
diff --git a/sysmips.c b/sysmips.c
new file mode 100644
index 0000000..521b081
--- /dev/null
+++ b/sysmips.c
@@ -0,0 +1,42 @@
+#include "defs.h"
+
+#ifdef MIPS
+
+#ifdef HAVE_LINUX_UTSNAME_H
+# include <linux/utsname.h>
+#endif
+#ifdef HAVE_ASM_SYSMIPS_H
+# include <asm/sysmips.h>
+#endif
+
+#ifndef __NEW_UTS_LEN
+# define __NEW_UTS_LEN 64
+#endif
+
+#include "xlat/sysmips_operations.h"
+
+int sys_sysmips(struct tcb *tcp)
+{
+	if (entering(tcp)) {
+		printxval(sysmips_operations, tcp->u_arg[0], "???");
+		if (!verbose(tcp)) {
+			tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]);
+		} else if (tcp->u_arg[0] == SETNAME) {
+			char nodename[__NEW_UTS_LEN + 1];
+			if (umovestr(tcp, tcp->u_arg[1], (__NEW_UTS_LEN + 1), nodename) < 0)
+				tprintf(", %#lx", tcp->u_arg[1]);
+			else
+				tprintf(", \"%.*s\"", (int)(__NEW_UTS_LEN + 1), nodename);
+		} else if (tcp->u_arg[0] == MIPS_ATOMIC_SET) {
+			tprintf(", %#lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]);
+		} else if (tcp->u_arg[0] == MIPS_FIXADE) {
+			tprintf(", 0x%lx", tcp->u_arg[1]);
+		} else {
+			tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]);
+		}
+	}
+
+	return 0;
+}
+
+#endif /* MIPS */