|
@@ -14,6 +14,7 @@
|
|
|
#include <asm/asm-offsets.h>
|
|
|
#include <asm/percpu.h>
|
|
|
#include <asm/processor-flags.h>
|
|
|
+#include <asm/frame.h>
|
|
|
|
|
|
#include "xen-asm.h"
|
|
|
|
|
@@ -23,6 +24,7 @@
|
|
|
* then enter the hypervisor to get them handled.
|
|
|
*/
|
|
|
ENTRY(xen_irq_enable_direct)
|
|
|
+ FRAME_BEGIN
|
|
|
/* Unmask events */
|
|
|
movb $0, PER_CPU_VAR(xen_vcpu_info) + XEN_vcpu_info_mask
|
|
|
|
|
@@ -39,6 +41,7 @@ ENTRY(xen_irq_enable_direct)
|
|
|
2: call check_events
|
|
|
1:
|
|
|
ENDPATCH(xen_irq_enable_direct)
|
|
|
+ FRAME_END
|
|
|
ret
|
|
|
ENDPROC(xen_irq_enable_direct)
|
|
|
RELOC(xen_irq_enable_direct, 2b+1)
|
|
@@ -82,6 +85,7 @@ ENDPATCH(xen_save_fl_direct)
|
|
|
* enters the hypervisor to get them delivered if so.
|
|
|
*/
|
|
|
ENTRY(xen_restore_fl_direct)
|
|
|
+ FRAME_BEGIN
|
|
|
#ifdef CONFIG_X86_64
|
|
|
testw $X86_EFLAGS_IF, %di
|
|
|
#else
|
|
@@ -100,6 +104,7 @@ ENTRY(xen_restore_fl_direct)
|
|
|
2: call check_events
|
|
|
1:
|
|
|
ENDPATCH(xen_restore_fl_direct)
|
|
|
+ FRAME_END
|
|
|
ret
|
|
|
ENDPROC(xen_restore_fl_direct)
|
|
|
RELOC(xen_restore_fl_direct, 2b+1)
|
|
@@ -109,7 +114,8 @@ ENDPATCH(xen_restore_fl_direct)
|
|
|
* Force an event check by making a hypercall, but preserve regs
|
|
|
* before making the call.
|
|
|
*/
|
|
|
-check_events:
|
|
|
+ENTRY(check_events)
|
|
|
+ FRAME_BEGIN
|
|
|
#ifdef CONFIG_X86_32
|
|
|
push %eax
|
|
|
push %ecx
|
|
@@ -139,4 +145,6 @@ check_events:
|
|
|
pop %rcx
|
|
|
pop %rax
|
|
|
#endif
|
|
|
+ FRAME_END
|
|
|
ret
|
|
|
+ENDPROC(check_events)
|