138a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin/* 238a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 2001 Wichert Akkerman <wichert@deephackmode.org> 338a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org> 438a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * All rights reserved. 538a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 638a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * Redistribution and use in source and binary forms, with or without 738a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * modification, are permitted provided that the following conditions 838a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * are met: 938a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 1. Redistributions of source code must retain the above copyright 1038a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * notice, this list of conditions and the following disclaimer. 1138a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 2. Redistributions in binary form must reproduce the above copyright 1238a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * notice, this list of conditions and the following disclaimer in the 1338a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * documentation and/or other materials provided with the distribution. 1438a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 3. The name of the author may not be used to endorse or promote products 1538a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * derived from this software without specific prior written permission. 1638a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * 1738a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1838a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1938a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2038a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2138a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2238a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2338a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2438a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2538a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2638a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2738a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin */ 2838a34c9349267c99ce1ddbd0b6e985147415d355Dmitry V. Levin 29600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#include "defs.h" 30600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin 31600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#ifdef MIPS 32600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin 33600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#ifdef HAVE_LINUX_UTSNAME_H 34600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin# include <linux/utsname.h> 35600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#endif 36600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#ifdef HAVE_ASM_SYSMIPS_H 37600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin# include <asm/sysmips.h> 38600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#endif 39600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin 40600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#ifndef __NEW_UTS_LEN 41600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin# define __NEW_UTS_LEN 64 42600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#endif 43600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin 44600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#include "xlat/sysmips_operations.h" 45600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin 46a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(sysmips) 47600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin{ 48034f98e10dc850ef1b93f8cfa09aa6e4cb397543Dmitry V. Levin printxval(sysmips_operations, tcp->u_arg[0], "???"); 49040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin tprints(", "); 50040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin 51040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin switch (tcp->u_arg[0]) { 52040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin case SETNAME: { 53034f98e10dc850ef1b93f8cfa09aa6e4cb397543Dmitry V. Levin char nodename[__NEW_UTS_LEN + 1]; 54040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin 55040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin if (!verbose(tcp)) 56040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin break; 57034f98e10dc850ef1b93f8cfa09aa6e4cb397543Dmitry V. Levin if (umovestr(tcp, tcp->u_arg[1], (__NEW_UTS_LEN + 1), 58034f98e10dc850ef1b93f8cfa09aa6e4cb397543Dmitry V. Levin nodename) < 0) { 59040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin printaddr(tcp->u_arg[1]); 60600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin } else { 61034f98e10dc850ef1b93f8cfa09aa6e4cb397543Dmitry V. Levin print_quoted_string(nodename, __NEW_UTS_LEN + 1, 62034f98e10dc850ef1b93f8cfa09aa6e4cb397543Dmitry V. Levin QUOTE_0_TERMINATED); 63600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin } 64040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin return RVAL_DECODED; 65040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin } 66040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin case MIPS_ATOMIC_SET: 67040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin tprintf("%#lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]); 68040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin return RVAL_DECODED; 69040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin case MIPS_FIXADE: 70040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin tprintf("0x%lx", tcp->u_arg[1]); 71040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin return RVAL_DECODED; 72600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin } 73600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin 74040de5747718c1608d13f9f2ba99b5fabeb0e331Dmitry V. Levin tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]); 75034f98e10dc850ef1b93f8cfa09aa6e4cb397543Dmitry V. Levin return RVAL_DECODED; 76600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin} 77600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin 78600e33cd4521ad950472ed63290cbc034e515959Dmitry V. Levin#endif /* MIPS */ 79