1 /*
2 * Copyright (c) 2016-2021 The strace developers.
3 * All rights reserved.
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 */
7
8 static int
9 sparc_set_o0_psr(struct tcb *tcp, const unsigned long o0,
10 const unsigned long psr_set, const unsigned long psr_clear)
11 {
12 sparc_regs.u_regs[U_REG_O0] = o0;
13 sparc_regs.psr |= psr_set;
14 sparc_regs.psr &= ~psr_clear;
15 return set_regs(tcp->pid);
16 }
17
18 static int
19 arch_set_error(struct tcb *tcp)
20 {
21 return sparc_set_o0_psr(tcp, tcp->u_error, PSR_C, 0);
22 }
23
24 static int
25 arch_set_success(struct tcb *tcp)
26 {
27 return sparc_set_o0_psr(tcp, tcp->u_rval, 0, PSR_C);
28 }