summaryrefslogtreecommitdiff
path: root/linux/microblaze
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2016-11-15 17:38:21 +0000
committerDmitry V. Levin <ldv@altlinux.org>2016-11-16 02:33:13 +0000
commitf1d0729f17023de3228cc2e1d7204a4c6bb91648 (patch)
tree76b151896147d913925bfb376f2a5f5cb656509d /linux/microblaze
parent05a3b0b518e3094509daccd642e069a1d18f4768 (diff)
downloadstrace-f1d0729f17023de3228cc2e1d7204a4c6bb91648.tar.gz
Implement arch specific methods of changing syscall number and error code
This introduces arch_set_error and arch_set_scno functions for each supported architecture, needed to implement syscall fault injection. * linux/aarch64/set_error.c: New file. * linux/aarch64/set_scno.c: Likewise. * linux/alpha/set_error.c: Likewise. * linux/alpha/set_scno.c: Likewise. * linux/arc/set_error.c: Likewise. * linux/arc/set_scno.c: Likewise. * linux/arm/set_error.c: Likewise. * linux/arm/set_scno.c: Likewise. * linux/avr32/set_error.c: Likewise. * linux/avr32/set_scno.c: Likewise. * linux/bfin/set_error.c: Likewise. * linux/bfin/set_scno.c: Likewise. * linux/crisv10/set_error.c: Likewise. * linux/crisv10/set_scno.c: Likewise. * linux/crisv32/set_error.c: Likewise. * linux/crisv32/set_scno.c: Likewise. * linux/hppa/set_error.c: Likewise. * linux/hppa/set_scno.c: Likewise. * linux/i386/set_error.c: Likewise. * linux/i386/set_scno.c: Likewise. * linux/ia64/set_error.c: Likewise. * linux/ia64/set_scno.c: Likewise. * linux/m68k/set_error.c: Likewise. * linux/m68k/set_scno.c: Likewise. * linux/metag/set_error.c: Likewise. * linux/metag/set_scno.c: Likewise. * linux/microblaze/set_error.c: Likewise. * linux/microblaze/set_scno.c: Likewise. * linux/mips/set_error.c: Likewise. * linux/mips/set_scno.c: Likewise. * linux/nios2/set_error.c: Likewise. * linux/nios2/set_scno.c: Likewise. * linux/or1k/set_error.c: Likewise. * linux/or1k/set_scno.c: Likewise. * linux/powerpc/set_error.c: Likewise. * linux/powerpc/set_scno.c: Likewise. * linux/powerpc64/set_error.c: Likewise. * linux/powerpc64/set_scno.c: Likewise. * linux/riscv/set_error.c: Likewise. * linux/riscv/set_scno.c: Likewise. * linux/s390/set_error.c: Likewise. * linux/s390/set_scno.c: Likewise. * linux/s390x/set_error.c: Likewise. * linux/s390x/set_scno.c: Likewise. * linux/sh/set_error.c: Likewise. * linux/sh/set_scno.c: Likewise. * linux/sh64/set_error.c: Likewise. * linux/sh64/set_scno.c: Likewise. * linux/sparc/set_error.c: Likewise. * linux/sparc/set_scno.c: Likewise. * linux/sparc64/set_error.c: Likewise. * linux/sparc64/set_scno.c: Likewise. * linux/tile/set_error.c: Likewise. * linux/tile/set_scno.c: Likewise. * linux/x32/set_error.c: Likewise. * linux/x32/set_scno.c: Likewise. * linux/x86_64/set_error.c: Likewise. * linux/x86_64/set_scno.c: Likewise. * linux/xtensa/set_error.c: Likewise. * linux/xtensa/set_scno.c: Likewise. * Makefile.am (EXTRA_DIST): Add them.
Diffstat (limited to 'linux/microblaze')
-rw-r--r--linux/microblaze/set_error.c6
-rw-r--r--linux/microblaze/set_scno.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/linux/microblaze/set_error.c b/linux/microblaze/set_error.c
new file mode 100644
index 000000000..98c5419ec
--- /dev/null
+++ b/linux/microblaze/set_error.c
@@ -0,0 +1,6 @@
+static int
+arch_set_error(struct tcb *tcp)
+{
+ microblaze_r3 = -tcp->u_error;
+ return upoke(tcp->pid, 3 * 4, microblaze_r3);
+}
diff --git a/linux/microblaze/set_scno.c b/linux/microblaze/set_scno.c
new file mode 100644
index 000000000..0f7ce9ec7
--- /dev/null
+++ b/linux/microblaze/set_scno.c
@@ -0,0 +1,5 @@
+static int
+arch_set_scno(struct tcb *tcp, long scno)
+{
+ return upoke(tcp->pid, 0, scno);
+}