summaryrefslogtreecommitdiff
path: root/src/linux/bfin/get_syscall_args.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/linux/bfin/get_syscall_args.c')
-rw-r--r--src/linux/bfin/get_syscall_args.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/linux/bfin/get_syscall_args.c b/src/linux/bfin/get_syscall_args.c
new file mode 100644
index 000000000..c0eb7a5b4
--- /dev/null
+++ b/src/linux/bfin/get_syscall_args.c
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2015-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+arch_get_syscall_args(struct tcb *tcp)
+{
+ static const int argreg[MAX_ARGS] = {
+ PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5
+ };
+ unsigned int i;
+
+ for (i = 0; i < n_args(tcp); ++i)
+ if (upeek(tcp, argreg[i], &tcp->u_arg[i]) < 0)
+ return -1;
+ return 1;
+}