x86: trampoline_64.S - use predefined constants with simplification
authorCyrill Gorcunov <gorcunov@gmail.com>
Wed, 28 Jan 2009 20:21:25 +0000 (23:21 +0300)
committerIngo Molnar <mingo@elte.hu>
Thu, 29 Jan 2009 13:37:01 +0000 (14:37 +0100)
Impact: cleanup

We may use macros from processor-flags.h instead
of hardcoding bits. Actually it's not direct mapping
of old instructions with new ones -- BTS does change
CF flag while MOV does not. But i didn't find any
dependency on CF in this code.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Alexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/trampoline_64.S

index 894293c..95a012a 100644 (file)
@@ -29,6 +29,7 @@
 #include <asm/page.h>
 #include <asm/msr.h>
 #include <asm/segment.h>
+#include <asm/processor-flags.h>
 
 .section .rodata, "a", @progbits
 
@@ -37,7 +38,7 @@
 ENTRY(trampoline_data)
 r_base = .
        cli                     # We should be safe anyway
-       wbinvd  
+       wbinvd
        mov     %cs, %ax        # Code and data in the same place
        mov     %ax, %ds
        mov     %ax, %es
@@ -73,9 +74,8 @@ r_base = .
        lidtl   tidt - r_base   # load idt with 0, 0
        lgdtl   tgdt - r_base   # load gdt with whatever is appropriate
 
-       xor     %ax, %ax
-       inc     %ax             # protected mode (PE) bit
-       lmsw    %ax             # into protected mode
+       mov     $X86_CR0_PE, %ax        # protected mode (PE) bit
+       lmsw    %ax                     # into protected mode
 
        # flush prefetch and jump to startup_32
        ljmpl   *(startup_32_vector - r_base)
@@ -86,9 +86,8 @@ startup_32:
        movl    $__KERNEL_DS, %eax      # Initialize the %ds segment register
        movl    %eax, %ds
 
-       xorl    %eax, %eax
-       btsl    $5, %eax                # Enable PAE mode
-       movl    %eax, %cr4
+       movl    $X86_CR4_PAE, %eax
+       movl    %eax, %cr4              # Enable PAE mode
 
                                        # Setup trampoline 4 level pagetables
        leal    (trampoline_level4_pgt - r_base)(%esi), %eax
@@ -99,9 +98,9 @@ startup_32:
        xorl    %edx, %edx
        wrmsr
 
-       xorl    %eax, %eax
-       btsl    $31, %eax               # Enable paging and in turn activate Long Mode
-       btsl    $0, %eax                # Enable protected mode
+       # Enable paging and in turn activate Long Mode
+       # Enable protected mode
+       movl    $(X86_CR0_PG | X86_CR0_PE), %eax
        movl    %eax, %cr0
 
        /*