[PATCH] i386: Use loaddebug macro consistently
authorRoland McGrath <roland@redhat.com>
Sat, 16 Apr 2005 22:24:46 +0000 (15:24 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 16 Apr 2005 22:24:46 +0000 (15:24 -0700)
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 <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/i386/kernel/process.c
arch/i386/kernel/signal.c
include/asm-i386/processor.h
include/asm-i386/suspend.h

index 36145efc61b5e7aeb6da9360942152b08f449c0d..b2203e21acb3844c597f770c8cef894f805a38b6 100644 (file)
@@ -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.
index ef3602e1c05222449c2d20eefa91e82023e3d4e1..ea46d028af0872f5df65188503fcd9f71f3004e1 100644 (file)
@@ -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(&current->thread, 7);
                }
 
                /* Whee!  Actually deliver the signal.  */
index be258b0e5a5fb65e64da508e7a84fbc5eaa6cd45..7149784ed40bbde077e6ff0dbc68fc8cabead1b6 100644 (file)
@@ -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;
index dfc1114c1b6f86f5d4b596cc9fef14336fbe332b..08be1e5009d4d773dbb77078674450ceb117f6ba 100644 (file)
@@ -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;