164672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levin/* Return -1 on error or 1 on success (never 0!). */ 264672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levinstatic int 364672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levinget_syscall_args(struct tcb *tcp) 464672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levin{ 5d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#if defined LINUX_MIPSN64 || defined LINUX_MIPSN32 6d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[0] = mips_REG_A0; 7d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[1] = mips_REG_A1; 8d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[2] = mips_REG_A2; 9d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[3] = mips_REG_A3; 10d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[4] = mips_REG_A4; 11d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[5] = mips_REG_A5; 12d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin#elif defined LINUX_MIPSO32 13d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[0] = mips_REG_A0; 14d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[1] = mips_REG_A1; 15d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[2] = mips_REG_A2; 16d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin tcp->u_arg[3] = mips_REG_A3; 17d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin if (tcp->s_ent->nargs > 4) { 1864672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levin if (umoven(tcp, mips_REG_SP + 4 * 4, 1964672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levin (tcp->s_ent->nargs - 4) * sizeof(tcp->u_arg[0]), 2064672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levin &tcp->u_arg[4]) < 0) 2164672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levin return -1; 22d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin } 23d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin#else 24d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin# error unsupported mips abi 25d70d1c4aa6b9b2f4713d79f442dbf66a3f702c9bDmitry V. Levin#endif 2664672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levin return 1; 2764672a6526f041b3c35bf1d801a8f3f5457eca51Dmitry V. Levin} 28