diff options
author | Grant Grundler <grundler@parisc-linux.org> | 2005-10-21 22:55:51 -0400 |
---|---|---|
committer | Kyle McMartin <kyle@parisc-linux.org> | 2005-10-21 22:55:51 -0400 |
commit | 9b3b331d0322b60de1bde20528bf974f62804ffa (patch) | |
tree | 6c9f07131f4985f8b48ccd198a88d6405fc43869 /arch/parisc/kernel/signal.c | |
parent | 37318a3cb1028933417533084ddbf9d84be06878 (diff) |
[PARISC] Properly specify index field to I/D cache flush ops
replace use of "0" with "%r0" since PA 1.1 I/D flush ops only take a
general register and not an immediate value for the index field.
This just forces the code to always be PA 1.1 "clean".
From: Joel Soete <soete.joel@tiscali.be>
Signed-off-by: Grant Grundler <grundler@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'arch/parisc/kernel/signal.c')
-rw-r--r-- | arch/parisc/kernel/signal.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index befdfe700616..82c24e62ab63 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
@@ -625,11 +625,14 @@ do_signal(sigset_t *oldset, struct pt_regs *regs, int in_syscall) | |||
625 | put_user(0xe0008200, &usp[3]); | 625 | put_user(0xe0008200, &usp[3]); |
626 | put_user(0x34140000, &usp[4]); | 626 | put_user(0x34140000, &usp[4]); |
627 | 627 | ||
628 | /* Stack is 64-byte aligned, and we only | 628 | /* Stack is 64-byte aligned, and we only need |
629 | * need to flush 1 cache line */ | 629 | * to flush 1 cache line. |
630 | asm("fdc 0(%%sr3, %0)\n" | 630 | * Flushing one cacheline is cheap. |
631 | * "sync" on bigger (> 4 way) boxes is not. | ||
632 | */ | ||
633 | asm("fdc %%r0(%%sr3, %0)\n" | ||
631 | "sync\n" | 634 | "sync\n" |
632 | "fic 0(%%sr3, %0)\n" | 635 | "fic %%r0(%%sr3, %0)\n" |
633 | "sync\n" | 636 | "sync\n" |
634 | : : "r"(regs->gr[30])); | 637 | : : "r"(regs->gr[30])); |
635 | 638 | ||