"[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]>
include/asm-i386/processor.h +9 -5
@@ -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 ;
PATCH 1/6 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]>
include/asm-i386/processor.h +9 -5
@@ -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 ;