• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 if (!ia64_ia32mode) {
2 	unsigned long *rbs_end =
3 		(unsigned long *) ia64_regs.ar[PT_AUR_BSP];
4 	unsigned long sof = (ia64_regs.cfm >> 0) & 0x7f;
5 	unsigned long sol = (ia64_regs.cfm >> 7) & 0x7f;
6 	unsigned long *out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
7 	unsigned int i;
8 
9 	for (i = 0; i < tcp->s_ent->nargs; ++i) {
10 		if (umoven(tcp, (unsigned long) ia64_rse_skip_regs(out0, i),
11 			   sizeof(long), &tcp->u_arg[i]) < 0)
12 			return -1;
13 	}
14 } else {
15 	/* truncate away IVE sign-extension */
16 	tcp->u_arg[0] = 0xffffffff & ia64_regs.gr[11]; /* EBX */
17 	tcp->u_arg[1] = 0xffffffff & ia64_regs.gr[ 9]; /* ECX */
18 	tcp->u_arg[2] = 0xffffffff & ia64_regs.gr[10]; /* EDX */
19 	tcp->u_arg[3] = 0xffffffff & ia64_regs.gr[14]; /* ESI */
20 	tcp->u_arg[4] = 0xffffffff & ia64_regs.gr[15]; /* EDI */
21 	tcp->u_arg[5] = 0xffffffff & ia64_regs.gr[13]; /* EBP */
22 }
23