/*
 * Copyright (c) 2016-2021 The strace developers.
 * All rights reserved.
 *
 * SPDX-License-Identifier: LGPL-2.1-or-later
 */

static int
arch_set_error(struct tcb *tcp)
{
	if (PPC_TRAP_IS_SCV(ppc_regs.trap)) {
		ppc_regs.gpr[3] = -tcp->u_error;
	} else {
		ppc_regs.gpr[3] = tcp->u_error;
		ppc_regs.ccr |= 0x10000000;
	}
	return set_regs(tcp->pid);
}

static int
arch_set_success(struct tcb *tcp)
{
	ppc_regs.gpr[3] = tcp->u_rval;
	if (!PPC_TRAP_IS_SCV(ppc_regs.trap))
		ppc_regs.ccr &= ~0x10000000;
	return set_regs(tcp->pid);
}