aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/i386/kernel/entry.S2
-rw-r--r--include/asm-i386/paravirt.h18
2 files changed, 11 insertions, 9 deletions
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index e901952dff37..e07473c0d3e7 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -338,7 +338,7 @@ sysenter_past_esp:
338 jae syscall_badsys 338 jae syscall_badsys
339 call *sys_call_table(,%eax,4) 339 call *sys_call_table(,%eax,4)
340 movl %eax,PT_EAX(%esp) 340 movl %eax,PT_EAX(%esp)
341 DISABLE_INTERRUPTS(CLBR_ECX|CLBR_EDX) 341 DISABLE_INTERRUPTS(CLBR_ANY)
342 TRACE_IRQS_OFF 342 TRACE_IRQS_OFF
343 movl TI_flags(%ebp), %ecx 343 movl TI_flags(%ebp), %ecx
344 testw $_TIF_ALLWORK_MASK, %cx 344 testw $_TIF_ALLWORK_MASK, %cx
diff --git a/include/asm-i386/paravirt.h b/include/asm-i386/paravirt.h
index 1dbc01f4ed4d..87fd4317bee9 100644
--- a/include/asm-i386/paravirt.h
+++ b/include/asm-i386/paravirt.h
@@ -535,7 +535,7 @@ static inline unsigned long __raw_local_save_flags(void)
535 "popl %%edx; popl %%ecx") 535 "popl %%edx; popl %%ecx")
536 : "=a"(f) 536 : "=a"(f)
537 : paravirt_type(save_fl), 537 : paravirt_type(save_fl),
538 paravirt_clobber(CLBR_NONE) 538 paravirt_clobber(CLBR_EAX)
539 : "memory", "cc"); 539 : "memory", "cc");
540 return f; 540 return f;
541} 541}
@@ -620,27 +620,29 @@ static inline unsigned long __raw_local_irq_save(void)
620 .popsection 620 .popsection
621 621
622#define INTERRUPT_RETURN \ 622#define INTERRUPT_RETURN \
623 PARA_SITE(PARA_PATCH(PARAVIRT_iret), CLBR_ANY, \ 623 PARA_SITE(PARA_PATCH(PARAVIRT_iret), CLBR_NONE, \
624 jmp *%cs:paravirt_ops+PARAVIRT_iret) 624 jmp *%cs:paravirt_ops+PARAVIRT_iret)
625 625
626#define DISABLE_INTERRUPTS(clobbers) \ 626#define DISABLE_INTERRUPTS(clobbers) \
627 PARA_SITE(PARA_PATCH(PARAVIRT_irq_disable), clobbers, \ 627 PARA_SITE(PARA_PATCH(PARAVIRT_irq_disable), clobbers, \
628 pushl %ecx; pushl %edx; \ 628 pushl %eax; pushl %ecx; pushl %edx; \
629 call *%cs:paravirt_ops+PARAVIRT_irq_disable; \ 629 call *%cs:paravirt_ops+PARAVIRT_irq_disable; \
630 popl %edx; popl %ecx) \ 630 popl %edx; popl %ecx; popl %eax) \
631 631
632#define ENABLE_INTERRUPTS(clobbers) \ 632#define ENABLE_INTERRUPTS(clobbers) \
633 PARA_SITE(PARA_PATCH(PARAVIRT_irq_enable), clobbers, \ 633 PARA_SITE(PARA_PATCH(PARAVIRT_irq_enable), clobbers, \
634 pushl %ecx; pushl %edx; \ 634 pushl %eax; pushl %ecx; pushl %edx; \
635 call *%cs:paravirt_ops+PARAVIRT_irq_enable; \ 635 call *%cs:paravirt_ops+PARAVIRT_irq_enable; \
636 popl %edx; popl %ecx) 636 popl %edx; popl %ecx; popl %eax)
637 637
638#define ENABLE_INTERRUPTS_SYSEXIT \ 638#define ENABLE_INTERRUPTS_SYSEXIT \
639 PARA_SITE(PARA_PATCH(PARAVIRT_irq_enable_sysexit), CLBR_ANY, \ 639 PARA_SITE(PARA_PATCH(PARAVIRT_irq_enable_sysexit), CLBR_NONE, \
640 jmp *%cs:paravirt_ops+PARAVIRT_irq_enable_sysexit) 640 jmp *%cs:paravirt_ops+PARAVIRT_irq_enable_sysexit)
641 641
642#define GET_CR0_INTO_EAX \ 642#define GET_CR0_INTO_EAX \
643 call *paravirt_ops+PARAVIRT_read_cr0 643 push %ecx; push %edx; \
644 call *paravirt_ops+PARAVIRT_read_cr0; \
645 pop %edx; pop %ecx
644 646
645#endif /* __ASSEMBLY__ */ 647#endif /* __ASSEMBLY__ */
646#endif /* CONFIG_PARAVIRT */ 648#endif /* CONFIG_PARAVIRT */