sh: Optimized flush_icache_range() implementation.
Add implementation of flush_icache_range() suitable for signal handler and kprobes. Remove flush_cache_sigtramp() and change signal.c to use flush_icache_range(). Signed-off-by: Chris Smith <chris.smith@st.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
@@ -398,10 +398,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
|
||||
pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n",
|
||||
current->comm, task_pid_nr(current), frame, regs->pc, regs->pr);
|
||||
|
||||
flush_cache_sigtramp(regs->pr);
|
||||
|
||||
if ((-regs->pr & (L1_CACHE_BYTES-1)) < sizeof(frame->retcode))
|
||||
flush_cache_sigtramp(regs->pr + L1_CACHE_BYTES);
|
||||
flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode));
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -486,10 +483,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
|
||||
pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n",
|
||||
current->comm, task_pid_nr(current), frame, regs->pc, regs->pr);
|
||||
|
||||
flush_cache_sigtramp(regs->pr);
|
||||
|
||||
if ((-regs->pr & (L1_CACHE_BYTES-1)) < sizeof(frame->retcode))
|
||||
flush_cache_sigtramp(regs->pr + L1_CACHE_BYTES);
|
||||
flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode));
|
||||
|
||||
return 0;
|
||||
|
||||
|
Reference in New Issue
Block a user