aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r--arch/sh/kernel/signal_32.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c
index 46170a9a7221..eee29257a8ae 100644
--- a/arch/sh/kernel/signal_32.c
+++ b/arch/sh/kernel/signal_32.c
@@ -398,10 +398,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
398 pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n", 398 pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n",
399 current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); 399 current->comm, task_pid_nr(current), frame, regs->pc, regs->pr);
400 400
401 flush_cache_sigtramp(regs->pr); 401 flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode));
402
403 if ((-regs->pr & (L1_CACHE_BYTES-1)) < sizeof(frame->retcode))
404 flush_cache_sigtramp(regs->pr + L1_CACHE_BYTES);
405 402
406 return 0; 403 return 0;
407 404
@@ -486,10 +483,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
486 pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n", 483 pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n",
487 current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); 484 current->comm, task_pid_nr(current), frame, regs->pc, regs->pr);
488 485
489 flush_cache_sigtramp(regs->pr); 486 flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode));
490
491 if ((-regs->pr & (L1_CACHE_BYTES-1)) < sizeof(frame->retcode))
492 flush_cache_sigtramp(regs->pr + L1_CACHE_BYTES);
493 487
494 return 0; 488 return 0;
495 489