diff options
author | Keir Fraser <keir@xensource.com> | 2007-11-01 16:16:25 +0000 |
---|---|---|
committer | Keir Fraser <keir@xensource.com> | 2007-11-01 16:16:25 +0000 |
commit | 33b615a1ae0f0847b6057ed283c4bd84858a9d8f (patch) | |
tree | b59aa331af67ca1ecd16a827f3294ef18aab780c /xen/arch/x86/acpi/suspend.c | |
parent | 0636fd0cad5de32dfc2b1fff5e1010e5af2a82c1 (diff) | |
download | xen-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.c | 17 |
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. */ |