x86: fix i486 suspend to disk CR4 oops
[linux-2.6.git] / arch / x86 / power / cpu_32.c
index 7dc5d5cf50a2c85c2cad15c84f5e455abd42a34e..d3e083dea7202c8b5c82e1d7378d947f9f2d42a3 100644 (file)
@@ -45,7 +45,7 @@ static void __save_processor_state(struct saved_context *ctxt)
        ctxt->cr0 = read_cr0();
        ctxt->cr2 = read_cr2();
        ctxt->cr3 = read_cr3();
-       ctxt->cr4 = read_cr4();
+       ctxt->cr4 = read_cr4_safe();
 }
 
 /* Needed by apm.c */
@@ -98,7 +98,9 @@ static void __restore_processor_state(struct saved_context *ctxt)
        /*
         * control registers
         */
-       write_cr4(ctxt->cr4);
+       /* cr4 was introduced in the Pentium CPU */
+       if (ctxt->cr4)
+               write_cr4(ctxt->cr4);
        write_cr3(ctxt->cr3);
        write_cr2(ctxt->cr2);
        write_cr0(ctxt->cr0);