diff options
Diffstat (limited to 'sysmips.c')
-rw-r--r-- | sysmips.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/sysmips.c b/sysmips.c new file mode 100644 index 000000000..521b08165 --- /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 */ |