x86: relocate_kernel - use predefined macroses for processor state
authorgorcunov@gmail.com <gorcunov@gmail.com>
Sat, 22 Mar 2008 21:00:08 +0000 (00:00 +0300)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:41:29 +0000 (17:41 +0200)
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/relocate_kernel_32.S
arch/x86/kernel/relocate_kernel_64.S

index ce12bb8678ad0938d7a00e2bc45dc0dccf9d8ef6..a7ecc8e0bc67b3b3740996d8623f132f4a50ad7b 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/linkage.h>
 #include <asm/page.h>
 #include <asm/kexec.h>
+#include <asm/processor-flags.h>
 
 /*
  * Must be relocatable PIC code callable as a C function
@@ -167,16 +168,16 @@ identity_mapped:
        pushl   %edx
 
        /* Set cr0 to a known state:
-        * 31 0 == Paging disabled
-        * 18 0 == Alignment check disabled
-        * 16 0 == Write protect disabled
-        * 3  0 == No task switch
-        * 2  0 == Don't do FP software emulation.
-        * 0  1 == Proctected mode enabled
+        *  - Paging disabled
+        *  - Alignment check disabled
+        *  - Write protect disabled
+        *  - No task switch
+        *  - Don't do FP software emulation.
+        *  - Proctected mode enabled
         */
        movl    %cr0, %eax
-       andl    $~((1<<31)|(1<<18)|(1<<16)|(1<<3)|(1<<2)), %eax
-       orl     $(1<<0), %eax
+       andl    $~(X86_CR0_PG | X86_CR0_AM | X86_CR0_WP | X86_CR0_TS | X86_CR0_EM), %eax
+       orl     $(X86_CR0_PE), %eax
        movl    %eax, %cr0
 
        /* clear cr4 if applicable */
index c2c8b9d6e241ff0969ffb1eaa99b903d63223e4d..0c93a945b32e4b12262e078f6f556d014bd04d1e 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/linkage.h>
 #include <asm/page.h>
 #include <asm/kexec.h>
+#include <asm/processor-flags.h>
 
 /*
  * Must be relocatable PIC code callable as a C function
@@ -171,33 +172,22 @@ identity_mapped:
        pushq   %rdx
 
        /* Set cr0 to a known state:
-        * 31 1 == Paging enabled
-        * 18 0 == Alignment check disabled
-        * 16 0 == Write protect disabled
-        * 3  0 == No task switch
-        * 2  0 == Don't do FP software emulation.
-        * 0  1 == Proctected mode enabled
+        *  - Paging enabled
+        *  - Alignment check disabled
+        *  - Write protect disabled
+        *  - No task switch
+        *  - Don't do FP software emulation.
+        *  - Proctected mode enabled
         */
        movq    %cr0, %rax
-       andq    $~((1<<18)|(1<<16)|(1<<3)|(1<<2)), %rax
-       orl     $((1<<31)|(1<<0)), %eax
+       andq    $~(X86_CR0_AM | X86_CR0_WP | X86_CR0_TS | X86_CR0_EM), %rax
+       orl     $(X86_CR0_PG | X86_CR0_PE), %eax
        movq    %rax, %cr0
 
        /* Set cr4 to a known state:
-        * 10 0 == xmm exceptions disabled
-        * 9  0 == xmm registers instructions disabled
-        * 8  0 == performance monitoring counter disabled
-        * 7  0 == page global disabled
-        * 6  0 == machine check exceptions disabled
-        * 5  1 == physical address extension enabled
-        * 4  0 == page size extensions disabled
-        * 3  0 == Debug extensions disabled
-        * 2  0 == Time stamp disable (disabled)
-        * 1  0 == Protected mode virtual interrupts disabled
-        * 0  0 == VME disabled
+        *  - physical address extension enabled
         */
-
-       movq    $((1<<5)), %rax
+       movq    $X86_CR4_PAE, %rax
        movq    %rax, %cr4
 
        jmp 1f