diff options
Diffstat (limited to 'arch/parisc/kernel/signal.c')
-rw-r--r-- | arch/parisc/kernel/signal.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index e58925ac64d1..f6aaca27ac4e 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
@@ -232,6 +232,7 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs, | |||
232 | struct rt_sigframe __user *frame; | 232 | struct rt_sigframe __user *frame; |
233 | unsigned long rp, usp; | 233 | unsigned long rp, usp; |
234 | unsigned long haddr, sigframe_size; | 234 | unsigned long haddr, sigframe_size; |
235 | unsigned long start, end; | ||
235 | int err = 0; | 236 | int err = 0; |
236 | #ifdef CONFIG_64BIT | 237 | #ifdef CONFIG_64BIT |
237 | struct compat_rt_sigframe __user * compat_frame; | 238 | struct compat_rt_sigframe __user * compat_frame; |
@@ -299,10 +300,10 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs, | |||
299 | } | 300 | } |
300 | #endif | 301 | #endif |
301 | 302 | ||
302 | flush_user_dcache_range((unsigned long) &frame->tramp[0], | 303 | start = (unsigned long) &frame->tramp[0]; |
303 | (unsigned long) &frame->tramp[TRAMP_SIZE]); | 304 | end = (unsigned long) &frame->tramp[TRAMP_SIZE]; |
304 | flush_user_icache_range((unsigned long) &frame->tramp[0], | 305 | flush_user_dcache_range_asm(start, end); |
305 | (unsigned long) &frame->tramp[TRAMP_SIZE]); | 306 | flush_user_icache_range_asm(start, end); |
306 | 307 | ||
307 | /* TRAMP Words 0-4, Length 5 = SIGRESTARTBLOCK_TRAMP | 308 | /* TRAMP Words 0-4, Length 5 = SIGRESTARTBLOCK_TRAMP |
308 | * TRAMP Words 5-9, Length 4 = SIGRETURN_TRAMP | 309 | * TRAMP Words 5-9, Length 4 = SIGRETURN_TRAMP |
@@ -548,8 +549,8 @@ insert_restart_trampoline(struct pt_regs *regs) | |||
548 | WARN_ON(err); | 549 | WARN_ON(err); |
549 | 550 | ||
550 | /* flush data/instruction cache for new insns */ | 551 | /* flush data/instruction cache for new insns */ |
551 | flush_user_dcache_range(start, end); | 552 | flush_user_dcache_range_asm(start, end); |
552 | flush_user_icache_range(start, end); | 553 | flush_user_icache_range_asm(start, end); |
553 | 554 | ||
554 | regs->gr[31] = regs->gr[30] + 8; | 555 | regs->gr[31] = regs->gr[30] + 8; |
555 | return; | 556 | return; |