diff options
Diffstat (limited to 'arch/x86/include/asm/irqflags.h')
| -rw-r--r-- | arch/x86/include/asm/irqflags.h | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h index c5ce9845c999..87761396e8cc 100644 --- a/arch/x86/include/asm/irqflags.h +++ b/arch/x86/include/asm/irqflags.h @@ -114,8 +114,6 @@ static __always_inline unsigned long arch_local_irq_save(void)  #define SAVE_FLAGS		pushfq; popq %rax  #endif -#define INTERRUPT_RETURN	jmp native_iret -  #endif  #endif /* __ASSEMBLY__ */ @@ -143,8 +141,13 @@ static __always_inline void arch_local_irq_restore(unsigned long flags)  #ifdef CONFIG_X86_64  #ifdef CONFIG_XEN_PV  #define SWAPGS	ALTERNATIVE "swapgs", "", X86_FEATURE_XENPV +#define INTERRUPT_RETURN						\ +	ANNOTATE_RETPOLINE_SAFE;					\ +	ALTERNATIVE_TERNARY("jmp *paravirt_iret(%rip);",		\ +		X86_FEATURE_XENPV, "jmp xen_iret;", "jmp native_iret;")  #else  #define SWAPGS	swapgs +#define INTERRUPT_RETURN	jmp native_iret  #endif  #endif  #endif /* !__ASSEMBLY__ */ |