diff options
Diffstat (limited to 'arch/x86/include/asm/segment.h')
-rw-r--r-- | arch/x86/include/asm/segment.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h index b20f9d623f9c..8f09012b92e7 100644 --- a/arch/x86/include/asm/segment.h +++ b/arch/x86/include/asm/segment.h | |||
@@ -236,11 +236,23 @@ | |||
236 | */ | 236 | */ |
237 | #define EARLY_IDT_HANDLER_SIZE 9 | 237 | #define EARLY_IDT_HANDLER_SIZE 9 |
238 | 238 | ||
239 | /* | ||
240 | * xen_early_idt_handler_array is for Xen pv guests: for each entry in | ||
241 | * early_idt_handler_array it contains a prequel in the form of | ||
242 | * pop %rcx; pop %r11; jmp early_idt_handler_array[i]; summing up to | ||
243 | * max 8 bytes. | ||
244 | */ | ||
245 | #define XEN_EARLY_IDT_HANDLER_SIZE 8 | ||
246 | |||
239 | #ifndef __ASSEMBLY__ | 247 | #ifndef __ASSEMBLY__ |
240 | 248 | ||
241 | extern const char early_idt_handler_array[NUM_EXCEPTION_VECTORS][EARLY_IDT_HANDLER_SIZE]; | 249 | extern const char early_idt_handler_array[NUM_EXCEPTION_VECTORS][EARLY_IDT_HANDLER_SIZE]; |
242 | extern void early_ignore_irq(void); | 250 | extern void early_ignore_irq(void); |
243 | 251 | ||
252 | #if defined(CONFIG_X86_64) && defined(CONFIG_XEN_PV) | ||
253 | extern const char xen_early_idt_handler_array[NUM_EXCEPTION_VECTORS][XEN_EARLY_IDT_HANDLER_SIZE]; | ||
254 | #endif | ||
255 | |||
244 | /* | 256 | /* |
245 | * Load a segment. Fall back on loading the zero segment if something goes | 257 | * Load a segment. Fall back on loading the zero segment if something goes |
246 | * wrong. This variant assumes that loading zero fully clears the segment. | 258 | * wrong. This variant assumes that loading zero fully clears the segment. |