aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/process.c
diff options
context:
space:
mode:
authorK.Prasad <prasad@linux.vnet.ibm.com>2009-06-01 14:13:10 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2009-06-02 16:46:57 -0400
commitb332828c39326b1dca617f387dd15d12e81cd5f0 (patch)
treeb8cff4bd7a5b42a723e26d69cce4f3030bf68e62 /arch/x86/kernel/process.c
parent43bd1236234cacbc18d1476a9b57e7a306efddf5 (diff)
hw-breakpoints: prepare the code for Hardware Breakpoint interfaces
The generic hardware breakpoint interface provides an abstraction of hardware breakpoints in front of specific arch implementations for both kernel and user side breakpoints. This includes execution breakpoints and read/write breakpoints, also known as "watchpoints". This patch introduces header files containing constants, structure definitions and declaration of functions used by the hardware breakpoint core and x86 specific code. It also introduces an array based storage for the debug-register values in 'struct thread_struct', while modifying all users of debugreg<n> member in the structure. [ Impact: add headers for new hardware breakpoint interface ] Original-patch-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: K.Prasad <prasad@linux.vnet.ibm.com> Reviewed-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'arch/x86/kernel/process.c')
-rw-r--r--arch/x86/kernel/process.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index fb5dfb891f0f..291527cb438a 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -106,10 +106,10 @@ void flush_thread(void)
106 106
107 clear_tsk_thread_flag(tsk, TIF_DEBUG); 107 clear_tsk_thread_flag(tsk, TIF_DEBUG);
108 108
109 tsk->thread.debugreg0 = 0; 109 tsk->thread.debugreg[0] = 0;
110 tsk->thread.debugreg1 = 0; 110 tsk->thread.debugreg[1] = 0;
111 tsk->thread.debugreg2 = 0; 111 tsk->thread.debugreg[2] = 0;
112 tsk->thread.debugreg3 = 0; 112 tsk->thread.debugreg[3] = 0;
113 tsk->thread.debugreg6 = 0; 113 tsk->thread.debugreg6 = 0;
114 tsk->thread.debugreg7 = 0; 114 tsk->thread.debugreg7 = 0;
115 memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array)); 115 memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
@@ -194,10 +194,10 @@ void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p,
194 update_debugctlmsr(next->debugctlmsr); 194 update_debugctlmsr(next->debugctlmsr);
195 195
196 if (test_tsk_thread_flag(next_p, TIF_DEBUG)) { 196 if (test_tsk_thread_flag(next_p, TIF_DEBUG)) {
197 set_debugreg(next->debugreg0, 0); 197 set_debugreg(next->debugreg[0], 0);
198 set_debugreg(next->debugreg1, 1); 198 set_debugreg(next->debugreg[1], 1);
199 set_debugreg(next->debugreg2, 2); 199 set_debugreg(next->debugreg[2], 2);
200 set_debugreg(next->debugreg3, 3); 200 set_debugreg(next->debugreg[3], 3);
201 /* no 4 and 5 */ 201 /* no 4 and 5 */
202 set_debugreg(next->debugreg6, 6); 202 set_debugreg(next->debugreg6, 6);
203 set_debugreg(next->debugreg7, 7); 203 set_debugreg(next->debugreg7, 7);