From: Roland McGrath Date: Sat, 16 Apr 2005 22:24:46 +0000 (-0700) Subject: [PATCH] i386: Use loaddebug macro consistently X-Git-Tag: v2.6.12-rc3~181 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecd02dddd1d5bfc2141cbd0e205a53fb9d849c9e;p=linux-2.6 [PATCH] i386: Use loaddebug macro consistently This moves the macro loaddebug from asm-i386/suspend.h to asm-i386/processor.h, which is the place that makes sense for it to be defined, removes the extra copy of the same macro in arch/i386/kernel/process.c, and makes arch/i386/kernel/signal.c use the macro in place of its expansion. This is a purely cosmetic cleanup for the normal i386 kernel. However, it is handy for Xen to be able to just redefine the loaddebug macro once instead of also changing the signal.c code. Signed-off-by: Roland McGrath Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 36145efc61..b2203e21ac 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c @@ -558,13 +558,6 @@ handle_io_bitmap(struct thread_struct *next, struct tss_struct *tss) */ tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET_LAZY; } -/* - * This special macro can be used to load a debugging register - */ -#define loaddebug(thread,register) \ - __asm__("movl %0,%%db" #register \ - : /* no output */ \ - :"r" (thread->debugreg[register])) /* * switch_to(x,yn) should switch tasks from x to y. diff --git a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c index ef3602e1c0..ea46d028af 100644 --- a/arch/i386/kernel/signal.c +++ b/arch/i386/kernel/signal.c @@ -618,7 +618,7 @@ int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset) * inside the kernel. */ if (unlikely(current->thread.debugreg[7])) { - __asm__("movl %0,%%db7" : : "r" (current->thread.debugreg[7])); + loaddebug(¤t->thread, 7); } /* Whee! Actually deliver the signal. */ diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h index be258b0e5a..7149784ed4 100644 --- a/include/asm-i386/processor.h +++ b/include/asm-i386/processor.h @@ -499,6 +499,14 @@ static inline void load_esp0(struct tss_struct *tss, struct thread_struct *threa regs->esp = new_esp; \ } while (0) +/* + * This special macro can be used to load a debugging register + */ +#define loaddebug(thread,register) \ + __asm__("movl %0,%%db" #register \ + : /* no output */ \ + :"r" ((thread)->debugreg[register])) + /* Forward declaration, a strange C thing */ struct task_struct; struct mm_struct; diff --git a/include/asm-i386/suspend.h b/include/asm-i386/suspend.h index dfc1114c1b..08be1e5009 100644 --- a/include/asm-i386/suspend.h +++ b/include/asm-i386/suspend.h @@ -36,11 +36,6 @@ struct saved_context { unsigned long return_address; } __attribute__((packed)); -#define loaddebug(thread,register) \ - __asm__("movl %0,%%db" #register \ - : /* no output */ \ - :"r" ((thread)->debugreg[register])) - #ifdef CONFIG_ACPI_SLEEP extern unsigned long saved_eip; extern unsigned long saved_esp;