| #ifndef HAVE_GETREGS_OLD |
| # define arch_set_error i386_set_error |
| # define arch_set_success i386_set_success |
| # include "i386/set_error.c" |
| # undef arch_set_success |
| # undef arch_set_error |
| #endif /* !HAVE_GETREGS_OLD */ |
| |
| static int |
| arch_set_error(struct tcb *tcp) |
| { |
| #ifdef HAVE_GETREGS_OLD |
| kernel_ulong_t rval = -(kernel_long_t) tcp->u_error; |
| |
| if (x86_io.iov_len == sizeof(i386_regs)) |
| i386_regs.eax = rval; |
| else |
| x86_64_regs.rax = rval; |
| |
| return upoke(tcp, 8 * RAX, rval); |
| #else |
| if (x86_io.iov_len == sizeof(i386_regs)) |
| return i386_set_error(tcp); |
| |
| x86_64_regs.rax = -(kernel_long_t) tcp->u_error; |
| return set_regs(tcp->pid); |
| #endif |
| } |
| |
| static int |
| arch_set_success(struct tcb *tcp) |
| { |
| #ifdef HAVE_GETREGS_OLD |
| kernel_ulong_t rval = (kernel_ulong_t) tcp->u_rval; |
| |
| if (x86_io.iov_len == sizeof(i386_regs)) |
| i386_regs.eax = rval; |
| else |
| x86_64_regs.rax = rval; |
| |
| return upoke(tcp, 8 * RAX, rval); |
| #else |
| if (x86_io.iov_len == sizeof(i386_regs)) |
| return i386_set_success(tcp); |
| |
| x86_64_regs.rax = (kernel_ulong_t) tcp->u_rval; |
| return set_regs(tcp->pid); |
| #endif |
| } |