/* * Copyright (c) 2015-2021 The strace developers. * All rights reserved. * * SPDX-License-Identifier: LGPL-2.1-or-later */ #include "negated_errno.h" static void arch_get_error(struct tcb *tcp, const bool check_errno) { if (PPC_TRAP_IS_SCV(ppc_regs.trap)) { if (check_errno && is_negated_errno(ppc_regs.gpr[3])) { tcp->u_rval = -1; tcp->u_error = -ppc_regs.gpr[3]; } else { tcp->u_rval = ppc_regs.gpr[3]; } } else { if (ppc_regs.ccr & 0x10000000) { tcp->u_rval = -1; tcp->u_error = ppc_regs.gpr[3]; } else { tcp->u_rval = ppc_regs.gpr[3]; } } }