/* Return codes: 1 - ok, 0 - ignore, other - error. */ static int arch_get_scno(struct tcb *tcp) { /* Retrieve the syscall trap instruction. */ unsigned long trap; errno = 0; trap = ptrace(PTRACE_PEEKTEXT, tcp->pid, (void *) sparc_regs.tpc, 0); if (errno == 0) { trap >>= 32; switch (trap) { case 0x91d02010: /* Linux/SPARC syscall trap. */ update_personality(tcp, 1); break; case 0x91d0206d: /* Linux/SPARC64 syscall trap. */ update_personality(tcp, 0); break; } } tcp->scno = sparc_regs.u_regs[U_REG_G1]; return 1; }