Add macro for debugreg
PATCH 5/6 Add macro for debugreg
Hi,
The following patch add 2 macros to set and get debugreg on x86_64. This is useful for Xen because it will need only to redefine each macro to a hypervisor call.
Please apply, or comments.
arch/x86_64/kernel/signal.c +1 -1
@@ -433,7 +433,7 @@* inside the kernel. */ if (current->thread.debugreg7) - asmvolatile ("movq %0,%%db7" : :"r" (current->thread.debugreg7)); +cpu_set_debugreg (current->thread.debugreg7,7 );/* Whee! Actually deliver the signal. */ handle_signal (signr, &info, &ka, oldset, regs);
arch/x86_64/kernel/traps.c +2 -2
@@ -667,7 +667,7 @@ }#endif - asm("movq %%db6,%0" :"=r" (condition)); +cpu_get_debugreg (condition,6 );if (notify_die (DIE_DEBUG ,"debug" , regs, condition, error_code,SIGTRAP ) ==NOTIFY_STOP )
@@ -719,7 +719,7 @@ info.si_addr = (void __user *)regs->rip;force_sig_info (SIGTRAP , &info, tsk); clear_dr7: - asmvolatile ("movq %0,%%db7" ::"r" (0UL )); +cpu_set_debugreg (0UL ,7 );return ; clear_TF_reenable:
include/asm-x86_64/processor.h +8 -0
@@ -280,6 +280,14 @@set_fs (USER_DS ); \ } while(0) +#define cpu_get_debugreg (var, register) \ + __asm__("movq %%db" #register ", %0" \ + :"=r" (var)) +#define cpu_set_debugreg(value, register) \ + __asm__("movq %0,%%db" #register \ + : /* no output */ \ + :"r" (value)) +struct task_struct ;struct mm_struct ;
Quoted 7 lines · Vincent Hanquez
Hi,
The following patch add 2 macros to set and get debugreg on
x86_64. This is useful for Xen because it will need only to redefine each macro to a hypervisor call.Please apply, or comments.
Thanks,
It looks good, except that the name of the macro is too long. I will queue it and fix the name up when I apply.
If you plan to add a lot more of these I would recommend to create a new header first, processor.h is already quite crowded.
-Andi
Quoted 2 lines · Andi Kleen
It looks good, except that the name of the macro is too long. I will queue it and fix the name up when I apply.
fine. let me know the new name, I'll regenerate a new set of patch for x86 too. It's probably better to have the same name between the 2 archs.
Quoted 2 lines
If you plan to add a lot more of these I would recommend to create a new header first,
processor.his already quite crowded.
Right. Although I think that's all (at least at the moment). I'll consider that anyway, if more shows up.
Thanks,
Signature · 1 line
Vincent Hanquez
Quoted 6 lines · Vincent Hanquez
Quoted 2 lines · Andi Kleen
It looks good, except that the name of the macro is too long. I will queue it and fix the name up when I apply.
fine. let me know the new name, I'll regenerate a new set of patch for x86 too. It's probably better to have the same name between the 2 archs.
Just dropping the cpu_ should be enough.
-Andi
Quoted 10 lines · Andi Kleen
Quoted 6 lines · Vincent Hanquez
Quoted 2 lines · Andi Kleen
It looks good, except that the name of the macro is too long. I will queue it and fix the name up when I apply.
fine. let me know the new name, I'll regenerate a new set of patch for x86 too. It's probably better to have the same name between the 2 archs.
Just dropping the
cpu_should be enough.
I've edited the six diffs to remove the cpu_.