x86: turn priviled operation into a macro in head_64.S
under paravirt, read cr2 cannot be issued directly anymore. So wrap it in a macro, defined to the operation itself in case paravirt is off, but to something else if we have paravirt in the game Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Acked-by: Jeremy Fitzhardinge <jeremy@xensource.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
committed by
Ingo Molnar
parent
70fd93c9d9
commit
49a697871e
@@ -19,6 +19,13 @@
|
|||||||
#include <asm/msr.h>
|
#include <asm/msr.h>
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_PARAVIRT
|
||||||
|
#include <asm/asm-offsets.h>
|
||||||
|
#include <asm/paravirt.h>
|
||||||
|
#else
|
||||||
|
#define GET_CR2_INTO_RCX movq %cr2, %rcx
|
||||||
|
#endif
|
||||||
|
|
||||||
/* we are not able to switch in one step to the final KERNEL ADRESS SPACE
|
/* we are not able to switch in one step to the final KERNEL ADRESS SPACE
|
||||||
* because we need identity-mapped pages.
|
* because we need identity-mapped pages.
|
||||||
*
|
*
|
||||||
@@ -267,7 +274,7 @@ ENTRY(early_idt_handler)
|
|||||||
xorl %eax,%eax
|
xorl %eax,%eax
|
||||||
movq 8(%rsp),%rsi # get rip
|
movq 8(%rsp),%rsi # get rip
|
||||||
movq (%rsp),%rdx
|
movq (%rsp),%rdx
|
||||||
movq %cr2,%rcx
|
GET_CR2_INTO_RCX
|
||||||
leaq early_idt_msg(%rip),%rdi
|
leaq early_idt_msg(%rip),%rdi
|
||||||
call early_printk
|
call early_printk
|
||||||
cmpl $2,early_recursion_flag(%rip)
|
cmpl $2,early_recursion_flag(%rip)
|
||||||
|
Reference in New Issue
Block a user