x86: turn priviled operation into a macro in head_64.S
authorGlauber de Oliveira Costa <[email protected]>
Wed, 30 Jan 2008 12:31:10 +0000 (13:31 +0100)
committerIngo Molnar <[email protected]>
Wed, 30 Jan 2008 12:31:10 +0000 (13:31 +0100)
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 <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
Acked-by: Jeremy Fitzhardinge <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
arch/x86/kernel/head_64.S

index b6167fe3330e22aec72abc9f534de07d19fcb614..c31b1c96a9d3bafade469a02c8a9f456c5a92415 100644 (file)
 #include <asm/msr.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
  * because we need identity-mapped pages.
  *
@@ -267,7 +274,7 @@ ENTRY(early_idt_handler)
        xorl %eax,%eax
        movq 8(%rsp),%rsi       # get rip
        movq (%rsp),%rdx
-       movq %cr2,%rcx
+       GET_CR2_INTO_RCX
        leaq early_idt_msg(%rip),%rdi
        call early_printk
        cmpl $2,early_recursion_flag(%rip)