diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-10-14 14:21:40 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-10-14 15:49:45 +0900 |
commit | 4d2947f7c69f812f09ff0e5cdc98dfa5317a4d81 (patch) | |
tree | d83a6c87ef83d8cc248809ee6e9a65fb25e92c45 /arch/sh | |
parent | a66c2edea56c291a6f6a52f07496ebb97c0880e8 (diff) | |
download | linux-4d2947f7c69f812f09ff0e5cdc98dfa5317a4d81.tar.gz linux-4d2947f7c69f812f09ff0e5cdc98dfa5317a4d81.tar.bz2 linux-4d2947f7c69f812f09ff0e5cdc98dfa5317a4d81.zip |
sh: Optimize the setup_rt_frame() I-cache flush.
This only needs to flush the return code via the legacy path, and just
invalidates uselessly otherwise. This makes the behaviour consistent for
all of the trampoline setup paths.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/kernel/signal_32.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index 55d1f814e343..3db37425210d 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c @@ -472,6 +472,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, err |= __put_user(OR_R0_R0, &frame->retcode[6]); err |= __put_user((__NR_rt_sigreturn), &frame->retcode[7]); regs->pr = (unsigned long) frame->retcode; + flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode)); } if (err) @@ -497,8 +498,6 @@ 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_icache_range(regs->pr, regs->pr + sizeof(frame->retcode)); - return 0; give_sigsegv: |