diff options
author | Dave Kleikamp <shaggy@linux.vnet.ibm.com> | 2010-03-05 05:43:24 -0500 |
---|---|---|
committer | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2010-05-05 10:39:13 -0400 |
commit | 221c185d4e11b4061409da5d592779ced484614c (patch) | |
tree | be1cd256f8f1dee8439409e32ddde6b924e05425 /arch/powerpc | |
parent | fc5e709731429bc2db27897630e7c0089f297680 (diff) |
powerpc/476: Add isync after loading mmu and debug spr's
476 requires an isync after loading MMU and debug related SPR's. Some of
these are in performance-critical paths and may need to be optimized, but
initially, we're playing it safe.
Signed-off-by: Torez Smith <lnxtorez@linux.vnet.ibm.com>
Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/kernel/kprobes.c | 3 | ||||
-rw-r--r-- | arch/powerpc/kernel/process.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index b36f074524ad..c533525ca56a 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -114,6 +114,9 @@ static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) | |||
114 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS | 114 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS |
115 | regs->msr &= ~MSR_CE; | 115 | regs->msr &= ~MSR_CE; |
116 | mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM); | 116 | mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM); |
117 | #ifdef CONFIG_PPC_47x | ||
118 | isync(); | ||
119 | #endif | ||
117 | #endif | 120 | #endif |
118 | 121 | ||
119 | /* | 122 | /* |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index e4d71ced97ef..9d255b4f0a0e 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -371,6 +371,9 @@ int set_dabr(unsigned long dabr) | |||
371 | /* XXX should we have a CPU_FTR_HAS_DABR ? */ | 371 | /* XXX should we have a CPU_FTR_HAS_DABR ? */ |
372 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS | 372 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS |
373 | mtspr(SPRN_DAC1, dabr); | 373 | mtspr(SPRN_DAC1, dabr); |
374 | #ifdef CONFIG_PPC_47x | ||
375 | isync(); | ||
376 | #endif | ||
374 | #elif defined(CONFIG_PPC_BOOK3S) | 377 | #elif defined(CONFIG_PPC_BOOK3S) |
375 | mtspr(SPRN_DABR, dabr); | 378 | mtspr(SPRN_DABR, dabr); |
376 | #endif | 379 | #endif |