From: Dmitry V. Levin Date: Wed, 3 Dec 2014 20:00:42 +0000 (+0000) Subject: or1k: move or1k_atomic parser to a separate file X-Git-Tag: v4.10~348 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f6eb0d6b27ccf218fbda16ceec797818ac2319fc;p=strace or1k: move or1k_atomic parser to a separate file * or1k_atomic.c: New file. * Makefile.am (strace_SOURCES): Add it. * system.c [OR1K]: Move to or1k_atomic.c. --- diff --git a/Makefile.am b/Makefile.am index f046e0c5..38193f2d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -37,6 +37,7 @@ strace_SOURCES = \ mem.c \ mtd.c \ net.c \ + or1k_atomic.c \ pathtrace.c \ process.c \ ptp.c \ diff --git a/or1k_atomic.c b/or1k_atomic.c new file mode 100644 index 00000000..1b60272c --- /dev/null +++ b/or1k_atomic.c @@ -0,0 +1,51 @@ +#include "defs.h" + +#ifdef OR1K + +#define OR1K_ATOMIC_SWAP 1 +#define OR1K_ATOMIC_CMPXCHG 2 +#define OR1K_ATOMIC_XCHG 3 +#define OR1K_ATOMIC_ADD 4 +#define OR1K_ATOMIC_DECPOS 5 +#define OR1K_ATOMIC_AND 6 +#define OR1K_ATOMIC_OR 7 +#define OR1K_ATOMIC_UMAX 8 +#define OR1K_ATOMIC_UMIN 9 + +#include "xlat/atomic_ops.h" + +int sys_or1k_atomic(struct tcb *tcp) +{ + if (entering(tcp)) { + printxval(atomic_ops, tcp->u_arg[0], "???"); + switch(tcp->u_arg[0]) { + case OR1K_ATOMIC_SWAP: + tprintf(", 0x%lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]); + break; + case OR1K_ATOMIC_CMPXCHG: + tprintf(", 0x%lx, %#lx, %#lx", tcp->u_arg[1], tcp->u_arg[2], + tcp->u_arg[3]); + break; + + case OR1K_ATOMIC_XCHG: + case OR1K_ATOMIC_ADD: + case OR1K_ATOMIC_AND: + case OR1K_ATOMIC_OR: + case OR1K_ATOMIC_UMAX: + case OR1K_ATOMIC_UMIN: + tprintf(", 0x%lx, %#lx", tcp->u_arg[1], tcp->u_arg[2]); + break; + + case OR1K_ATOMIC_DECPOS: + tprintf(", 0x%lx", tcp->u_arg[1]); + break; + + default: + break; + } + } + + return RVAL_HEX; +} + +#endif /* OR1K */ diff --git a/system.c b/system.c index 86cb0243..2bd1dac1 100644 --- a/system.c +++ b/system.c @@ -610,52 +610,3 @@ int sys_sysmips(struct tcb *tcp) } #endif /* MIPS */ - -#ifdef OR1K -#define OR1K_ATOMIC_SWAP 1 -#define OR1K_ATOMIC_CMPXCHG 2 -#define OR1K_ATOMIC_XCHG 3 -#define OR1K_ATOMIC_ADD 4 -#define OR1K_ATOMIC_DECPOS 5 -#define OR1K_ATOMIC_AND 6 -#define OR1K_ATOMIC_OR 7 -#define OR1K_ATOMIC_UMAX 8 -#define OR1K_ATOMIC_UMIN 9 - -#include "xlat/atomic_ops.h" - -int sys_or1k_atomic(struct tcb *tcp) -{ - if (entering(tcp)) { - printxval(atomic_ops, tcp->u_arg[0], "???"); - switch(tcp->u_arg[0]) { - case OR1K_ATOMIC_SWAP: - tprintf(", 0x%lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]); - break; - case OR1K_ATOMIC_CMPXCHG: - tprintf(", 0x%lx, %#lx, %#lx", tcp->u_arg[1], tcp->u_arg[2], - tcp->u_arg[3]); - break; - - case OR1K_ATOMIC_XCHG: - case OR1K_ATOMIC_ADD: - case OR1K_ATOMIC_AND: - case OR1K_ATOMIC_OR: - case OR1K_ATOMIC_UMAX: - case OR1K_ATOMIC_UMIN: - tprintf(", 0x%lx, %#lx", tcp->u_arg[1], tcp->u_arg[2]); - break; - - case OR1K_ATOMIC_DECPOS: - tprintf(", 0x%lx", tcp->u_arg[1]); - break; - - default: - break; - } - } - - return RVAL_HEX; -} - -#endif /* OR1K */