aboutsummaryrefslogtreecommitdiff
path: root/linux/powerpc/set_error.c
blob: 38ae32bb76d7362d85b6ea644deff739d7a5db4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
static int
arch_set_error(struct tcb *tcp)
{
	ppc_regs.gpr[3] = tcp->u_error;
#ifdef HAVE_GETREGS_OLD
	return upoke(tcp, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
#else
	return set_regs(tcp->pid);
#endif
}

static int
arch_set_success(struct tcb *tcp)
{
	ppc_regs.gpr[3] = tcp->u_rval;
	ppc_regs.ccr &= ~0x10000000;
#ifdef HAVE_GETREGS_OLD
	return upoke(tcp, sizeof(long) * PT_CCR, ppc_regs.ccr) ||
	       upoke(tcp, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
#else
	return set_regs(tcp->pid);
#endif
}