(root)/
strace-6.5/
src/
linux/
sparc64/
get_syscall_args.c
       1  /*
       2   * Copyright (c) 2015-2021 The strace developers.
       3   * All rights reserved.
       4   *
       5   * SPDX-License-Identifier: LGPL-2.1-or-later
       6   */
       7  
       8  /* Return -1 on error or 1 on success (never 0!). */
       9  static int
      10  arch_get_syscall_args(struct tcb *tcp)
      11  {
      12  	if (tcp->currpers == 1) {
      13  		/*
      14  		 * Zero-extend from 32 bits.
      15  		 * Use truncate_klong_to_current_wordsize(tcp->u_arg[N])
      16  		 * in syscall handlers
      17  		 * if you need to use *sign-extended* parameter.
      18  		 */
      19  		tcp->u_arg[0] = (uint32_t) sparc_regs.u_regs[U_REG_O0 + 0];
      20  		tcp->u_arg[1] = (uint32_t) sparc_regs.u_regs[U_REG_O0 + 1];
      21  		tcp->u_arg[2] = (uint32_t) sparc_regs.u_regs[U_REG_O0 + 2];
      22  		tcp->u_arg[3] = (uint32_t) sparc_regs.u_regs[U_REG_O0 + 3];
      23  		tcp->u_arg[4] = (uint32_t) sparc_regs.u_regs[U_REG_O0 + 4];
      24  		tcp->u_arg[5] = (uint32_t) sparc_regs.u_regs[U_REG_O0 + 5];
      25  	} else {
      26  		tcp->u_arg[0] = sparc_regs.u_regs[U_REG_O0 + 0];
      27  		tcp->u_arg[1] = sparc_regs.u_regs[U_REG_O0 + 1];
      28  		tcp->u_arg[2] = sparc_regs.u_regs[U_REG_O0 + 2];
      29  		tcp->u_arg[3] = sparc_regs.u_regs[U_REG_O0 + 3];
      30  		tcp->u_arg[4] = sparc_regs.u_regs[U_REG_O0 + 4];
      31  		tcp->u_arg[5] = sparc_regs.u_regs[U_REG_O0 + 5];
      32  	}
      33  
      34  	return 1;
      35  }