2005-04-26 10:38:13

by Vincent Hanquez

[permalink] [raw]
Subject: "[PATCH

Hi,

The following patch add 2 macros to set and get debugreg on x86.
This is useful for Xen because it will need only to redefine each macro
to a hypervisor call.

I can regenerate a patch keeping loaddebug if you folks seems that is
necessary or better.

Please apply, or comments.

Signed-off-by: Vincent Hanquez <[email protected]>

diff -Naur linux-2.6.12-rc3/include/asm-i386/processor.h linux-2.6.12-rc3.1/include/asm-i386/processor.h
--- linux-2.6.12-rc3/include/asm-i386/processor.h 2005-04-21 11:46:10.000000000 +0100
+++ linux-2.6.12-rc3.1/include/asm-i386/processor.h 2005-04-22 12:09:43.000000000 +0100
@@ -501,12 +501,16 @@
} while (0)

/*
- * This special macro can be used to load a debugging register
+ * These special macros can be used to get or set a debugging register
*/
-#define loaddebug(thread,register) \
- __asm__("movl %0,%%db" #register \
- : /* no output */ \
- :"r" ((thread)->debugreg[register]))
+#define cpu_get_debugreg(var, register) \
+ __asm__("movl %%db" #register ", %0" \
+ :"=r" (var))
+#define cpu_set_debugreg(value, register) \
+ __asm__("movl %0,%%db" #register \
+ : /* no output */ \
+ :"r" (value))
+

/* Forward declaration, a strange C thing */
struct task_struct;


2005-04-26 10:55:54

by Vincent Hanquez

[permalink] [raw]
Subject: [PATCH 1/6][XEN][x86] add macro for debugreg

Hi,

The following patch add 2 macros to set and get debugreg on x86.
This is useful for Xen because it will need only to redefine each macro
to a hypervisor call.

I can regenerate a patch keeping loaddebug if you folks seems that is
necessary or better.

ignore my previous mail, really sorry for the noise.

Please apply, or comments.

Signed-off-by: Vincent Hanquez <[email protected]>

diff -Naur linux-2.6.12-rc3/include/asm-i386/processor.h linux-2.6.12-rc3.1/include/asm-i386/processor.h
--- linux-2.6.12-rc3/include/asm-i386/processor.h 2005-04-21 11:46:10.000000000 +0100
+++ linux-2.6.12-rc3.1/include/asm-i386/processor.h 2005-04-22 12:09:43.000000000 +0100
@@ -501,12 +501,16 @@
} while (0)

/*
- * This special macro can be used to load a debugging register
+ * These special macros can be used to get or set a debugging register
*/
-#define loaddebug(thread,register) \
- __asm__("movl %0,%%db" #register \
- : /* no output */ \
- :"r" ((thread)->debugreg[register]))
+#define cpu_get_debugreg(var, register) \
+ __asm__("movl %%db" #register ", %0" \
+ :"=r" (var))
+#define cpu_set_debugreg(value, register) \
+ __asm__("movl %0,%%db" #register \
+ : /* no output */ \
+ :"r" (value))
+

/* Forward declaration, a strange C thing */
struct task_struct;