syscall.c: split arch specific code into separate arch files

Split code that use arch-specific registers to separate arch files.

* syscall.c: Move definitions of variables containing fetched registers
to linux/*/arch_regs.c files.
[HAVE_GETRVAL2] (getrval2): Move arch-specific code
to linux/*/arch_getrval2.c, include "arch_getrval2.c".
(print_pc): Move arch-specific code to linux/*/print_pc.c files,
include "print_pc.c".
[X86_64] (x86_64_getregs_old): Rename to getregs_old, move to
linux/x86_64/getregs_old.c, include "getregs_old.c".
[POWERPC] (powerpc_getregs_old): Rename to getregs_old, move to
linux/powerpc/getregs_old.c, include "getregs_old.c".
(get_regs) [X86_64, POWERPC]: Update callers.
(get_scno): Move arch-specific code to linux/*/get_scno.c,
include "get_scno.c".
(get_syscall_args): Move arch-specific code
to linux/*/get_syscall_args.c, include "get_syscall_args.c".
(get_error): Move arch-specific code to linux/*/get_error.c,
include "get_error.c".
(get_syscall_result): Move arch-specific code
to linux/*/get_syscall_result.c, include "get_syscall_result.c".
* Makefile.am (EXTRA_DIST): Add new linux/*/*.c files.
diff --git a/linux/crisv10/arch_regs.c b/linux/crisv10/arch_regs.c
new file mode 100644
index 0000000..573f593
--- /dev/null
+++ b/linux/crisv10/arch_regs.c
@@ -0,0 +1 @@
+static long cris_r10;
diff --git a/linux/crisv10/get_error.c b/linux/crisv10/get_error.c
new file mode 100644
index 0000000..3f947ae
--- /dev/null
+++ b/linux/crisv10/get_error.c
@@ -0,0 +1,6 @@
+if (check_errno && is_negated_errno(cris_r10)) {
+	tcp->u_rval = -1;
+	tcp->u_error = -cris_r10;
+} else {
+	tcp->u_rval = cris_r10;
+}
diff --git a/linux/crisv10/get_scno.c b/linux/crisv10/get_scno.c
new file mode 100644
index 0000000..5bbbe8b
--- /dev/null
+++ b/linux/crisv10/get_scno.c
@@ -0,0 +1,2 @@
+if (upeek(tcp->pid, 4*PT_R9, &scno) < 0)
+	return -1;
diff --git a/linux/crisv10/get_syscall_args.c b/linux/crisv10/get_syscall_args.c
new file mode 100644
index 0000000..66b5ac7
--- /dev/null
+++ b/linux/crisv10/get_syscall_args.c
@@ -0,0 +1,9 @@
+static const int crisregs[MAX_ARGS] = {
+	4*PT_ORIG_R10, 4*PT_R11, 4*PT_R12,
+	4*PT_R13     , 4*PT_MOF, 4*PT_SRP
+};
+unsigned int i;
+
+for (i = 0; i < tcp->s_ent->nargs; ++i)
+	if (upeek(tcp->pid, crisregs[i], &tcp->u_arg[i]) < 0)
+		return -1;
diff --git a/linux/crisv10/get_syscall_result.c b/linux/crisv10/get_syscall_result.c
new file mode 100644
index 0000000..53b087a
--- /dev/null
+++ b/linux/crisv10/get_syscall_result.c
@@ -0,0 +1,2 @@
+if (upeek(tcp->pid, 4*PT_R10, &cris_r10) < 0)
+	return -1;
diff --git a/linux/crisv10/print_pc.c b/linux/crisv10/print_pc.c
new file mode 100644
index 0000000..cc76216
--- /dev/null
+++ b/linux/crisv10/print_pc.c
@@ -0,0 +1,6 @@
+long pc;
+if (upeek(tcp->pid, 4*PT_IRP, &pc) < 0) {
+	PRINTBADPC;
+	return;
+}
+tprintf(fmt, pc);