x86: Store a per-cpu shadow copy of CR4
[cascardo/linux.git] / arch / x86 / power / cpu.c
index 6ec7910..3e32ed5 100644 (file)
@@ -105,11 +105,8 @@ static void __save_processor_state(struct saved_context *ctxt)
        ctxt->cr0 = read_cr0();
        ctxt->cr2 = read_cr2();
        ctxt->cr3 = read_cr3();
-#ifdef CONFIG_X86_32
-       ctxt->cr4 = read_cr4_safe();
-#else
-/* CONFIG_X86_64 */
-       ctxt->cr4 = read_cr4();
+       ctxt->cr4 = __read_cr4_safe();
+#ifdef CONFIG_X86_64
        ctxt->cr8 = read_cr8();
 #endif
        ctxt->misc_enable_saved = !rdmsrl_safe(MSR_IA32_MISC_ENABLE,
@@ -175,12 +172,12 @@ static void notrace __restore_processor_state(struct saved_context *ctxt)
        /* cr4 was introduced in the Pentium CPU */
 #ifdef CONFIG_X86_32
        if (ctxt->cr4)
-               write_cr4(ctxt->cr4);
+               __write_cr4(ctxt->cr4);
 #else
 /* CONFIG X86_64 */
        wrmsrl(MSR_EFER, ctxt->efer);
        write_cr8(ctxt->cr8);
-       write_cr4(ctxt->cr4);
+       __write_cr4(ctxt->cr4);
 #endif
        write_cr3(ctxt->cr3);
        write_cr2(ctxt->cr2);