public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Vincent Hanquez <vincent.hanquez@cl.cam.ac.uk>
To: linux-kernel@vger.kernel.org
Cc: ian.pratt@cl.cam.ac.uk, akpm@osdl.org, ak@suse.de
Subject: [PATCH 5/6][XEN][x86_64] Add macro for debugreg
Date: Tue, 26 Apr 2005 13:31:49 +0200	[thread overview]
Message-ID: <20050426113149.GE26614@snarc.org> (raw)

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.

	Signed-off-by: Vincent Hanquez <vincent.hanquez@cl.cam.ac.uk>

diff -Naur linux-2.6.12-rc3.1/arch/x86_64/kernel/signal.c linux-2.6.12-rc3.2/arch/x86_64/kernel/signal.c
--- linux-2.6.12-rc3.1/arch/x86_64/kernel/signal.c	2005-04-25 14:19:05.000000000 +0100
+++ linux-2.6.12-rc3.2/arch/x86_64/kernel/signal.c	2005-04-25 14:59:09.950079957 +0100
@@ -433,7 +433,7 @@
 		 * inside the kernel.
 		 */
 		if (current->thread.debugreg7)
-			asm volatile("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);
diff -Naur linux-2.6.12-rc3.1/arch/x86_64/kernel/traps.c linux-2.6.12-rc3.2/arch/x86_64/kernel/traps.c
--- linux-2.6.12-rc3.1/arch/x86_64/kernel/traps.c	2005-04-25 12:01:25.000000000 +0100
+++ linux-2.6.12-rc3.2/arch/x86_64/kernel/traps.c	2005-04-25 14:58:17.006385409 +0100
@@ -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:
-	asm volatile("movq %0,%%db7"::"r"(0UL));
+	cpu_set_debugreg(0UL, 7);
 	return;
 
 clear_TF_reenable:
diff -Naur linux-2.6.12-rc3.1/include/asm-x86_64/processor.h linux-2.6.12-rc3.2/include/asm-x86_64/processor.h
--- linux-2.6.12-rc3.1/include/asm-x86_64/processor.h	2005-04-25 15:37:51.000000000 +0100
+++ linux-2.6.12-rc3.2/include/asm-x86_64/processor.h	2005-04-25 15:38:13.750221554 +0100
@@ -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;
 

             reply	other threads:[~2005-04-26 11:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-26 11:31 Vincent Hanquez [this message]
2005-04-26 13:17 ` [PATCH 5/6][XEN][x86_64] Add macro for debugreg Andi Kleen
2005-04-26 15:26   ` Vincent Hanquez
2005-04-27 13:04     ` Andi Kleen
2005-04-27 18:42       ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050426113149.GE26614@snarc.org \
    --to=vincent.hanquez@cl.cam.ac.uk \
    --cc=ak@suse.de \
    --cc=akpm@osdl.org \
    --cc=ian.pratt@cl.cam.ac.uk \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox