diff options
author | Andrew Morton <akpm@linux-foundation.org> | 2008-04-16 19:40:17 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-05-12 15:27:53 -0400 |
commit | 970e725098a6da5a9c1f8128102c812e31a0444c (patch) | |
tree | 37fc8929e1af07e674f9ad6c2ade9364a0a21d0f /arch/x86/kernel/process_32.c | |
parent | 93fa7636dfdc059b25df148f230c0991096afdef (diff) |
x86, ptrace: PEBS support, warning fix
arch/x86/kernel/process_32.c:566: warning: unused variable 'ds_next'
arch/x86/kernel/process_32.c:566: warning: unused variable 'ds_prev'
Cc: Markus Metzger <markus.t.metzger@intel.com>
Cc: Andi Kleen <ak@suse.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
Cc: Roland McGrath <roland@redhat.com>
Cc: Michael Kerrisk <mtk.manpages@googlemail.com>
Cc: <juan.villacis@intel.com>
Cc: stephane eranian <eranian@googlemail.com>
Cc: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/process_32.c')
-rw-r--r-- | arch/x86/kernel/process_32.c | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 5cec8a75a4e8..496ea3110aa2 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
@@ -484,20 +484,13 @@ int set_tsc_mode(unsigned int val) | |||
484 | return 0; | 484 | return 0; |
485 | } | 485 | } |
486 | 486 | ||
487 | static noinline void | 487 | #ifdef CONFIG_X86_DS |
488 | __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p, | 488 | static int update_debugctl(struct thread_struct *prev, |
489 | struct tss_struct *tss) | 489 | struct thread_struct *next, unsigned long debugctl) |
490 | { | 490 | { |
491 | struct thread_struct *prev, *next; | 491 | unsigned long ds_prev = 0; |
492 | unsigned long debugctl; | 492 | unsigned long ds_next = 0; |
493 | unsigned long ds_prev = 0, ds_next = 0; | ||
494 | 493 | ||
495 | prev = &prev_p->thread; | ||
496 | next = &next_p->thread; | ||
497 | |||
498 | debugctl = prev->debugctlmsr; | ||
499 | |||
500 | #ifdef CONFIG_X86_DS | ||
501 | if (prev->ds_ctx) | 494 | if (prev->ds_ctx) |
502 | ds_prev = (unsigned long)prev->ds_ctx->ds; | 495 | ds_prev = (unsigned long)prev->ds_ctx->ds; |
503 | if (next->ds_ctx) | 496 | if (next->ds_ctx) |
@@ -510,8 +503,28 @@ __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p, | |||
510 | update_debugctlmsr(0); | 503 | update_debugctlmsr(0); |
511 | wrmsr(MSR_IA32_DS_AREA, ds_next, 0); | 504 | wrmsr(MSR_IA32_DS_AREA, ds_next, 0); |
512 | } | 505 | } |
506 | return debugctl; | ||
507 | } | ||
508 | #else | ||
509 | static int update_debugctl(struct thread_struct *prev, | ||
510 | struct thread_struct *next, unsigned long debugctl) | ||
511 | { | ||
512 | return debugctl; | ||
513 | } | ||
513 | #endif /* CONFIG_X86_DS */ | 514 | #endif /* CONFIG_X86_DS */ |
514 | 515 | ||
516 | static noinline void | ||
517 | __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p, | ||
518 | struct tss_struct *tss) | ||
519 | { | ||
520 | struct thread_struct *prev, *next; | ||
521 | unsigned long debugctl; | ||
522 | |||
523 | prev = &prev_p->thread; | ||
524 | next = &next_p->thread; | ||
525 | |||
526 | debugctl = update_debugctl(prev, next, prev->debugctlmsr); | ||
527 | |||
515 | if (next->debugctlmsr != debugctl) | 528 | if (next->debugctlmsr != debugctl) |
516 | update_debugctlmsr(next->debugctlmsr); | 529 | update_debugctlmsr(next->debugctlmsr); |
517 | 530 | ||