diff options
Diffstat (limited to 'arch/x86/xen/xen-asm.S')
-rw-r--r-- | arch/x86/xen/xen-asm.S | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S index 3e45aa000718..eff224df813f 100644 --- a/arch/x86/xen/xen-asm.S +++ b/arch/x86/xen/xen-asm.S | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/asm-offsets.h> | 14 | #include <asm/asm-offsets.h> |
15 | #include <asm/percpu.h> | 15 | #include <asm/percpu.h> |
16 | #include <asm/processor-flags.h> | 16 | #include <asm/processor-flags.h> |
17 | #include <asm/frame.h> | ||
17 | 18 | ||
18 | #include "xen-asm.h" | 19 | #include "xen-asm.h" |
19 | 20 | ||
@@ -23,6 +24,7 @@ | |||
23 | * then enter the hypervisor to get them handled. | 24 | * then enter the hypervisor to get them handled. |
24 | */ | 25 | */ |
25 | ENTRY(xen_irq_enable_direct) | 26 | ENTRY(xen_irq_enable_direct) |
27 | FRAME_BEGIN | ||
26 | /* Unmask events */ | 28 | /* Unmask events */ |
27 | movb $0, PER_CPU_VAR(xen_vcpu_info) + XEN_vcpu_info_mask | 29 | movb $0, PER_CPU_VAR(xen_vcpu_info) + XEN_vcpu_info_mask |
28 | 30 | ||
@@ -39,6 +41,7 @@ ENTRY(xen_irq_enable_direct) | |||
39 | 2: call check_events | 41 | 2: call check_events |
40 | 1: | 42 | 1: |
41 | ENDPATCH(xen_irq_enable_direct) | 43 | ENDPATCH(xen_irq_enable_direct) |
44 | FRAME_END | ||
42 | ret | 45 | ret |
43 | ENDPROC(xen_irq_enable_direct) | 46 | ENDPROC(xen_irq_enable_direct) |
44 | RELOC(xen_irq_enable_direct, 2b+1) | 47 | RELOC(xen_irq_enable_direct, 2b+1) |
@@ -82,6 +85,7 @@ ENDPATCH(xen_save_fl_direct) | |||
82 | * enters the hypervisor to get them delivered if so. | 85 | * enters the hypervisor to get them delivered if so. |
83 | */ | 86 | */ |
84 | ENTRY(xen_restore_fl_direct) | 87 | ENTRY(xen_restore_fl_direct) |
88 | FRAME_BEGIN | ||
85 | #ifdef CONFIG_X86_64 | 89 | #ifdef CONFIG_X86_64 |
86 | testw $X86_EFLAGS_IF, %di | 90 | testw $X86_EFLAGS_IF, %di |
87 | #else | 91 | #else |
@@ -100,6 +104,7 @@ ENTRY(xen_restore_fl_direct) | |||
100 | 2: call check_events | 104 | 2: call check_events |
101 | 1: | 105 | 1: |
102 | ENDPATCH(xen_restore_fl_direct) | 106 | ENDPATCH(xen_restore_fl_direct) |
107 | FRAME_END | ||
103 | ret | 108 | ret |
104 | ENDPROC(xen_restore_fl_direct) | 109 | ENDPROC(xen_restore_fl_direct) |
105 | RELOC(xen_restore_fl_direct, 2b+1) | 110 | RELOC(xen_restore_fl_direct, 2b+1) |
@@ -109,7 +114,8 @@ ENDPATCH(xen_restore_fl_direct) | |||
109 | * Force an event check by making a hypercall, but preserve regs | 114 | * Force an event check by making a hypercall, but preserve regs |
110 | * before making the call. | 115 | * before making the call. |
111 | */ | 116 | */ |
112 | check_events: | 117 | ENTRY(check_events) |
118 | FRAME_BEGIN | ||
113 | #ifdef CONFIG_X86_32 | 119 | #ifdef CONFIG_X86_32 |
114 | push %eax | 120 | push %eax |
115 | push %ecx | 121 | push %ecx |
@@ -139,4 +145,6 @@ check_events: | |||
139 | pop %rcx | 145 | pop %rcx |
140 | pop %rax | 146 | pop %rax |
141 | #endif | 147 | #endif |
148 | FRAME_END | ||
142 | ret | 149 | ret |
150 | ENDPROC(check_events) | ||