]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/X64/EnablePaging64.S
Refine comments of X64 assembly files of MDE BaseLib.
[mirror_edk2.git] / MdePkg / Library / BaseLib / X64 / EnablePaging64.S
index 452bd39acc83472141dd27ada213d1dd70ef35cc..6a66aba3f7bd8f4f6a3203d743d19d3aaddea029 100644 (file)
@@ -1,6 +1,6 @@
 #------------------------------------------------------------------------------
 #
-# Copyright (c) 2006, Intel Corporation
+# Copyright (c) 2006 - 2008, Intel Corporation
 # All rights reserved. This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
 # which accompanies this distribution.  The full text of the license may be found at
 # VOID
 # EFIAPI
 # InternalX86EnablePaging64 (
-#   IN      UINT16                    Cs,                      %rdi
-#   IN      UINT64                    EntryPoint,              %rsi
-#   IN      UINT64                    Context1,  OPTIONAL      %rdx
-#   IN      UINT64                    Context2,  OPTIONAL      %rcx
-#   IN      UINT64                    NewStack                 %r8
+#   IN      UINT16                    Cs,
+#   IN      UINT64                    EntryPoint,
+#   IN      UINT64                    Context1,  OPTIONAL
+#   IN      UINT64                    Context2,  OPTIONAL
+#   IN      UINT64                    NewStack
 #   );
 #------------------------------------------------------------------------------
 .global ASM_PFX(InternalX86EnablePaging64)
 ASM_PFX(InternalX86EnablePaging64):
     cli    
-    pop    %rax
+    pop    %rax                      # skip the return address
     callq  Base
 Base:
-    addl   $(L1-Base),(%rsp)
+    addl   $(L1-Base),(%rsp)         # offset for ret, seg is the 1st arg
     mov    %cr4,%rax
     or     $0x20,%al
-    mov    %rax,%cr4
+    mov    %rax,%cr4                 # enable PAE
     mov    $0xc0000080,%ecx
     rdmsr  
-    or     $0x1,%ah
+    or     $0x1,%ah                  # set LME
     wrmsr  
     mov    %cr0,%rax
     bts    $0x1f,%eax
-    mov    %rax,%cr0
+    mov    %rax,%cr0                 # enable paging
     lret   
-L1:
+L1:                                  # long mode starts here
     addr32 mov (%esp),%rbx
     addr32 mov 0x8(%esp),%rcx
     addr32 mov 0x10(%esp),%rdx
     addr32 mov 0x18(%esp),%rsp
     add    $-0x20,%rsp
     callq  *%rbx
-    jmp    .
+    jmp    .                         # dead loop if EntryPoint() returned