]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/X64/DisablePaging64.S
Refine comments of X64 assembly files of MDE BaseLib.
[mirror_edk2.git] / MdePkg / Library / BaseLib / X64 / DisablePaging64.S
index 4ca4145fa263037df19259a474d7ac96f8bbf9b3..e4f77970ed600f2fa568e96b1c527ccaff47a373 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
 # InternalX86DisablePaging64 (
-#   IN      UINT16                    Cs,                      %rdi
-#   IN      UINT64                    EntryPoint,              %rsi
-#   IN      UINT64                    Context1,  OPTIONAL      %rdx
-#   IN      UINT32                    Context2,  OPTIONAL      %rcx
-#   IN      UINT64                    NewStack                 %r8
+#   IN      UINT16                    Cs,
+#   IN      UINT64                    EntryPoint,
+#   IN      UINT64                    Context1,  OPTIONAL
+#   IN      UINT32                    Context2,  OPTIONAL
+#   IN      UINT64                    NewStack
 #   );
 #------------------------------------------------------------------------------
 
 .global ASM_PFX(InternalX86DisablePaging64)
 ASM_PFX(InternalX86DisablePaging64):
     cli    
-    shl    $0x20,%rcx
-    lea    (%rip), %eax
-    mov    %eax,%ecx
-    push   %rcx
-    mov    %edx,%ebx
-    mov    %r8d,%esi
-    mov    %r9d,%edi
-    mov    0x28(%rsp),%eax
-    lret   
+    shl    $0x20,%rcx                     # rcx[32..47] <- Cs
+    lea    L1, %eax
+    mov    %r8d, %esi \r
+    or     %rax, %rcx                     # rcx[0..47] <- Cs:@F\r
+    mov    %r9d, %edi \r
+    mov    0x28(%rsp), %eax               # eax <- New Stack\r
+    push   %rcx\r
+    ret                                   # switch to compatibility mode\r
 L1:
-    mov    %eax,%esp
+    mov    %eax,%esp                      # set up new stack
     mov    %cr0,%rax
     btr    $0x1f,%eax
-    mov    %rax,%cr0
+    mov    %rax,%cr0                      # disable paging
     mov    $0xc0000080,%ecx
     rdmsr  
-    and    $0xfe,%ah
+    and    $0xfe,%ah                      # clear LME
     wrmsr  
     mov    %cr4,%rax
-    and    $0xdf,%al
+    and    $0xdf,%al                      # clear PAE
     mov    %rax,%cr4
-    push   %rdi
-    push   %rsi
-    callq  *%rbx
-    jmp    .
+    push   %rdi                           # push Context2
+    push   %rsi                           # push Context1
+    callq  *%rdx                          # transfer control to EntryPoint
+    jmp    .                              # no one should get here