aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/acpi/suspend.c
diff options
context:
space:
mode:
authorKeir Fraser <keir@xensource.com>2007-11-01 16:16:25 +0000
committerKeir Fraser <keir@xensource.com>2007-11-01 16:16:25 +0000
commit33b615a1ae0f0847b6057ed283c4bd84858a9d8f (patch)
treeb59aa331af67ca1ecd16a827f3294ef18aab780c /xen/arch/x86/acpi/suspend.c
parent0636fd0cad5de32dfc2b1fff5e1010e5af2a82c1 (diff)
downloadxen-33b615a1ae0f0847b6057ed283c4bd84858a9d8f.tar.gz
xen-33b615a1ae0f0847b6057ed283c4bd84858a9d8f.tar.bz2
xen-33b615a1ae0f0847b6057ed283c4bd84858a9d8f.zip
x86: Fix various problems with debug-register handling.
Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/acpi/suspend.c')
-rw-r--r--xen/arch/x86/acpi/suspend.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/xen/arch/x86/acpi/suspend.c b/xen/arch/x86/acpi/suspend.c
index 3d44569a13..3068590f70 100644
--- a/xen/arch/x86/acpi/suspend.c
+++ b/xen/arch/x86/acpi/suspend.c
@@ -29,9 +29,6 @@ void save_rest_processor_state(void)
#endif
}
-#define loaddebug(_v,_reg) \
- __asm__ __volatile__ ("mov %0,%%db" #_reg : : "r" ((_v)->debugreg[_reg]))
-
void restore_rest_processor_state(void)
{
int cpu = smp_processor_id();
@@ -54,15 +51,15 @@ void restore_rest_processor_state(void)
#endif
/* Maybe load the debug registers. */
+ BUG_ON(is_hvm_vcpu(v));
if ( !is_idle_vcpu(v) && unlikely(v->arch.guest_context.debugreg[7]) )
{
- loaddebug(&v->arch.guest_context, 0);
- loaddebug(&v->arch.guest_context, 1);
- loaddebug(&v->arch.guest_context, 2);
- loaddebug(&v->arch.guest_context, 3);
- /* no 4 and 5 */
- loaddebug(&v->arch.guest_context, 6);
- loaddebug(&v->arch.guest_context, 7);
+ write_debugreg(0, v->arch.guest_context.debugreg[0]);
+ write_debugreg(1, v->arch.guest_context.debugreg[1]);
+ write_debugreg(2, v->arch.guest_context.debugreg[2]);
+ write_debugreg(3, v->arch.guest_context.debugreg[3]);
+ write_debugreg(6, v->arch.guest_context.debugreg[6]);
+ write_debugreg(7, v->arch.guest_context.debugreg[7]);
}
/* Reload FPU state on next FPU use. */