[POWERPC] Always apply DABR changes on context switches

This patch removes the #ifdef CONFIG_PPC64 around setting the DABR.

The actual setting of the SPR inside of the set_dabr() function is dependent
on CONFIG_PPC64 || CONFIG_6xx but you can always provide a ppc_md hook to
override that.  We should improve support for different HW breakpoints
facilities but this is a first step.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Benjamin Herrenschmidt 2007-06-04 15:15:48 +10:00 committed by Paul Mackerras
parent 6d110da8c3
commit 791cc501d4
1 changed files with 7 additions and 7 deletions

View File

@ -219,22 +219,26 @@ void discard_lazy_cpu_state(void)
} }
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
#ifdef CONFIG_PPC_MERGE /* XXX for now */
int set_dabr(unsigned long dabr) int set_dabr(unsigned long dabr)
{ {
#ifdef CONFIG_PPC_MERGE /* XXX for now */
if (ppc_md.set_dabr) if (ppc_md.set_dabr)
return ppc_md.set_dabr(dabr); return ppc_md.set_dabr(dabr);
#endif
/* XXX should we have a CPU_FTR_HAS_DABR ? */
#if defined(CONFIG_PPC64) || defined(CONFIG_6xx)
mtspr(SPRN_DABR, dabr); mtspr(SPRN_DABR, dabr);
#endif
return 0; return 0;
} }
#endif
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
DEFINE_PER_CPU(struct cpu_usage, cpu_usage_array); DEFINE_PER_CPU(struct cpu_usage, cpu_usage_array);
static DEFINE_PER_CPU(unsigned long, current_dabr);
#endif #endif
static DEFINE_PER_CPU(unsigned long, current_dabr);
struct task_struct *__switch_to(struct task_struct *prev, struct task_struct *__switch_to(struct task_struct *prev,
struct task_struct *new) struct task_struct *new)
{ {
@ -299,12 +303,10 @@ struct task_struct *__switch_to(struct task_struct *prev,
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
#ifdef CONFIG_PPC64 /* for now */
if (unlikely(__get_cpu_var(current_dabr) != new->thread.dabr)) { if (unlikely(__get_cpu_var(current_dabr) != new->thread.dabr)) {
set_dabr(new->thread.dabr); set_dabr(new->thread.dabr);
__get_cpu_var(current_dabr) = new->thread.dabr; __get_cpu_var(current_dabr) = new->thread.dabr;
} }
#endif /* CONFIG_PPC64 */
new_thread = &new->thread; new_thread = &new->thread;
old_thread = &current->thread; old_thread = &current->thread;
@ -473,12 +475,10 @@ void flush_thread(void)
discard_lazy_cpu_state(); discard_lazy_cpu_state();
#ifdef CONFIG_PPC64 /* for now */
if (current->thread.dabr) { if (current->thread.dabr) {
current->thread.dabr = 0; current->thread.dabr = 0;
set_dabr(0); set_dabr(0);
} }
#endif
} }
void void