strace/sysmips.c
Dmitry V. Levin 600e33cd45 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.
2014-12-03 21:20:47 +00:00

43 lines
1.0 KiB
C

#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 */