aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/x86_64/entry.S
diff options
context:
space:
mode:
authorKeir Fraser <keir@xensource.com>2007-10-29 09:49:39 +0000
committerKeir Fraser <keir@xensource.com>2007-10-29 09:49:39 +0000
commit70ee40b004c7a05092c1085772201754941a8543 (patch)
tree364dc348082e11073f8825d4545ab29375101250 /xen/arch/x86/x86_64/entry.S
parent8ee4d89b7260fe7a4a5ba334146707715b4dca3c (diff)
downloadxen-70ee40b004c7a05092c1085772201754941a8543.tar.gz
xen-70ee40b004c7a05092c1085772201754941a8543.tar.bz2
xen-70ee40b004c7a05092c1085772201754941a8543.zip
x86: Clean up NMI delivery logic. Allow set_trap_table vector 2 to be
specified as not disabling event delivery, just like any other vector. Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/x86_64/entry.S')
-rw-r--r--xen/arch/x86/x86_64/entry.S10
1 files changed, 4 insertions, 6 deletions
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 34c9c2a923..d4b112bc2f 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -235,15 +235,13 @@ process_softirqs:
process_nmi:
testb $1,VCPU_nmi_masked(%rbx)
jnz test_guest_events
+ sti
movb $0,VCPU_nmi_pending(%rbx)
- movq VCPU_nmi_addr(%rbx),%rax
- test %rax,%rax
- jz test_guest_events
+ call set_guest_nmi_trapbounce
+ test %eax,%eax
+ jz test_all_events
movb $1,VCPU_nmi_masked(%rbx)
- sti
leaq VCPU_trap_bounce(%rbx),%rdx
- movq %rax,TRAPBOUNCE_eip(%rdx)
- movb $TBF_INTERRUPT,TRAPBOUNCE_flags(%rdx)
call create_bounce_frame
jmp test_all_events