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