From: Vincent Hanquez Make use of the 2 new macro set_debugreg and get_debugreg. Signed-off-by: Vincent Hanquez Cc: Ian Pratt Signed-off-by: Andrew Morton --- arch/i386/kernel/cpu/common.c | 2 +- arch/i386/kernel/process.c | 12 ++++++------ arch/i386/kernel/signal.c | 2 +- arch/i386/kernel/traps.c | 6 ++---- arch/i386/power/cpu.c | 14 +++++++------- 5 files changed, 17 insertions(+), 19 deletions(-) diff -puN arch/i386/kernel/cpu/common.c~xen-x86-use-new-macro-for-debugreg arch/i386/kernel/cpu/common.c --- 25/arch/i386/kernel/cpu/common.c~xen-x86-use-new-macro-for-debugreg 2005-05-11 21:14:54.000000000 -0700 +++ 25-akpm/arch/i386/kernel/cpu/common.c 2005-05-11 21:14:54.000000000 -0700 @@ -631,7 +631,7 @@ void __init cpu_init (void) /* Clear all 6 debug registers: */ -#define CD(register) __asm__("movl %0,%%db" #register ::"r"(0) ); +#define CD(register) set_debugreg(0, register) CD(0); CD(1); CD(2); CD(3); /* no db4 and db5 */; CD(6); CD(7); diff -puN arch/i386/kernel/process.c~xen-x86-use-new-macro-for-debugreg arch/i386/kernel/process.c --- 25/arch/i386/kernel/process.c~xen-x86-use-new-macro-for-debugreg 2005-05-11 21:14:54.000000000 -0700 +++ 25-akpm/arch/i386/kernel/process.c 2005-05-11 21:14:54.000000000 -0700 @@ -627,13 +627,13 @@ struct task_struct fastcall * __switch_t * Now maybe reload the debug registers */ if (unlikely(next->debugreg[7])) { - loaddebug(next, 0); - loaddebug(next, 1); - loaddebug(next, 2); - loaddebug(next, 3); + set_debugreg(current->thread.debugreg[0], 0); + set_debugreg(current->thread.debugreg[1], 1); + set_debugreg(current->thread.debugreg[2], 2); + set_debugreg(current->thread.debugreg[3], 3); /* no 4 and 5 */ - loaddebug(next, 6); - loaddebug(next, 7); + set_debugreg(current->thread.debugreg[6], 6); + set_debugreg(current->thread.debugreg[7], 7); } if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr)) diff -puN arch/i386/kernel/signal.c~xen-x86-use-new-macro-for-debugreg arch/i386/kernel/signal.c --- 25/arch/i386/kernel/signal.c~xen-x86-use-new-macro-for-debugreg 2005-05-11 21:14:54.000000000 -0700 +++ 25-akpm/arch/i386/kernel/signal.c 2005-05-11 21:14:54.000000000 -0700 @@ -624,7 +624,7 @@ int fastcall do_signal(struct pt_regs *r * inside the kernel. */ if (unlikely(current->thread.debugreg[7])) { - loaddebug(¤t->thread, 7); + set_debugreg(current->thread.debugreg[7], 7); } /* Whee! Actually deliver the signal. */ diff -puN arch/i386/kernel/traps.c~xen-x86-use-new-macro-for-debugreg arch/i386/kernel/traps.c --- 25/arch/i386/kernel/traps.c~xen-x86-use-new-macro-for-debugreg 2005-05-11 21:14:54.000000000 -0700 +++ 25-akpm/arch/i386/kernel/traps.c 2005-05-11 21:14:54.000000000 -0700 @@ -682,7 +682,7 @@ fastcall void do_debug(struct pt_regs * unsigned int condition; struct task_struct *tsk = current; - __asm__ __volatile__("movl %%db6,%0" : "=r" (condition)); + get_debugreg(condition, 6); if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code, SIGTRAP) == NOTIFY_STOP) @@ -724,9 +724,7 @@ fastcall void do_debug(struct pt_regs * * the signal is delivered. */ clear_dr7: - __asm__("movl %0,%%db7" - : /* no output */ - : "r" (0)); + set_debugreg(0, 7); return; debug_vm86: diff -puN arch/i386/power/cpu.c~xen-x86-use-new-macro-for-debugreg arch/i386/power/cpu.c --- 25/arch/i386/power/cpu.c~xen-x86-use-new-macro-for-debugreg 2005-05-11 21:14:54.000000000 -0700 +++ 25-akpm/arch/i386/power/cpu.c 2005-05-11 21:14:54.000000000 -0700 @@ -94,13 +94,13 @@ static void fix_processor_context(void) * Now maybe reload the debug registers */ if (current->thread.debugreg[7]){ - loaddebug(¤t->thread, 0); - loaddebug(¤t->thread, 1); - loaddebug(¤t->thread, 2); - loaddebug(¤t->thread, 3); - /* no 4 and 5 */ - loaddebug(¤t->thread, 6); - loaddebug(¤t->thread, 7); + set_debugreg(current->thread.debugreg[0], 0); + set_debugreg(current->thread.debugreg[1], 1); + set_debugreg(current->thread.debugreg[2], 2); + set_debugreg(current->thread.debugreg[3], 3); + /* no 4 and 5 */ + set_debugreg(current->thread.debugreg[6], 6); + set_debugreg(current->thread.debugreg[7], 7); } } _