]> granicus.if.org Git - strace/blob - or1k_atomic.c
Update copyright headers
[strace] / or1k_atomic.c
1 /*
2  * Copyright (c) 2013 Christian Svensson <blue@cmd.nu>
3  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
4  * Copyright (c) 2014-2018 The strace developers.
5  * All rights reserved.
6  *
7  * SPDX-License-Identifier: LGPL-2.1-or-later
8  */
9
10 #include "defs.h"
11
12 #ifdef OR1K
13
14 #define OR1K_ATOMIC_SWAP        1
15 #define OR1K_ATOMIC_CMPXCHG     2
16 #define OR1K_ATOMIC_XCHG        3
17 #define OR1K_ATOMIC_ADD         4
18 #define OR1K_ATOMIC_DECPOS      5
19 #define OR1K_ATOMIC_AND         6
20 #define OR1K_ATOMIC_OR          7
21 #define OR1K_ATOMIC_UMAX        8
22 #define OR1K_ATOMIC_UMIN        9
23
24 #include "xlat/atomic_ops.h"
25
26 SYS_FUNC(or1k_atomic)
27 {
28         printxval64(atomic_ops, tcp->u_arg[0], "???");
29         switch (tcp->u_arg[0]) {
30         case OR1K_ATOMIC_SWAP:
31                 tprintf(", 0x%lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]);
32                 break;
33         case OR1K_ATOMIC_CMPXCHG:
34                 tprintf(", 0x%lx, %#lx, %#lx", tcp->u_arg[1], tcp->u_arg[2],
35                         tcp->u_arg[3]);
36                 break;
37
38         case OR1K_ATOMIC_XCHG:
39         case OR1K_ATOMIC_ADD:
40         case OR1K_ATOMIC_AND:
41         case OR1K_ATOMIC_OR:
42         case OR1K_ATOMIC_UMAX:
43         case OR1K_ATOMIC_UMIN:
44                 tprintf(", 0x%lx, %#lx", tcp->u_arg[1], tcp->u_arg[2]);
45                 break;
46
47         case OR1K_ATOMIC_DECPOS:
48                 tprintf(", 0x%lx", tcp->u_arg[1]);
49                 break;
50
51         default:
52                 break;
53         }
54
55         return RVAL_DECODED | RVAL_HEX;
56 }
57
58 #endif /* OR1K */