blob: 521b08165a126d91e12d9c4de086b8be8f6474a6 [file] [log] [blame]
Dmitry V. Levin600e33c2014-12-03 20:08:44 +00001#include "defs.h"
2
3#ifdef MIPS
4
5#ifdef HAVE_LINUX_UTSNAME_H
6# include <linux/utsname.h>
7#endif
8#ifdef HAVE_ASM_SYSMIPS_H
9# include <asm/sysmips.h>
10#endif
11
12#ifndef __NEW_UTS_LEN
13# define __NEW_UTS_LEN 64
14#endif
15
16#include "xlat/sysmips_operations.h"
17
18int sys_sysmips(struct tcb *tcp)
19{
20 if (entering(tcp)) {
21 printxval(sysmips_operations, tcp->u_arg[0], "???");
22 if (!verbose(tcp)) {
23 tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]);
24 } else if (tcp->u_arg[0] == SETNAME) {
25 char nodename[__NEW_UTS_LEN + 1];
26 if (umovestr(tcp, tcp->u_arg[1], (__NEW_UTS_LEN + 1), nodename) < 0)
27 tprintf(", %#lx", tcp->u_arg[1]);
28 else
29 tprintf(", \"%.*s\"", (int)(__NEW_UTS_LEN + 1), nodename);
30 } else if (tcp->u_arg[0] == MIPS_ATOMIC_SET) {
31 tprintf(", %#lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]);
32 } else if (tcp->u_arg[0] == MIPS_FIXADE) {
33 tprintf(", 0x%lx", tcp->u_arg[1]);
34 } else {
35 tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]);
36 }
37 }
38
39 return 0;
40}
41
42#endif /* MIPS */