summaryrefslogtreecommitdiffstats
path: root/arch/microblaze
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2009-05-26 16:30:28 +0200
committerMichal Simek <monstr@monstr.eu>2009-05-26 16:45:22 +0200
commit8b28626a6b1522b39f75d0bf80d5dec23c931f5a (patch)
tree98c5b10e413980a8e87c27e563dcdfa574ab8cb5 /arch/microblaze
parent17f3324c3eb271882b9e6b8fc3b1698290121801 (diff)
microblaze_mmu_v2: Update signal returning address
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze')
-rw-r--r--arch/microblaze/kernel/signal.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/microblaze/kernel/signal.c b/arch/microblaze/kernel/signal.c
index 3cdcbfe4129..4c0e6521b11 100644
--- a/arch/microblaze/kernel/signal.c
+++ b/arch/microblaze/kernel/signal.c
@@ -388,7 +388,15 @@ handle_restart(struct pt_regs *regs, struct k_sigaction *ka, int has_handler)
case -ERESTARTNOINTR:
do_restart:
/* offset of 4 bytes to re-execute trap (brki) instruction */
+#ifndef CONFIG_MMU
regs->pc -= 4;
+#else
+ /* offset of 8 bytes required = 4 for rtbd
+ offset, plus 4 for size of
+ "brki r14,8"
+ instruction. */
+ regs->pc -= 8;
+#endif
break;
}
}