]> 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 7a543febabc3e2a1656213fd9a77254e2d855e09..e4f77970ed600f2fa568e96b1c527ccaff47a373 100644 (file)
 # 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
+    shl    $0x20,%rcx                     # rcx[32..47] <- Cs
     lea    L1, %eax
     mov    %r8d, %esi \r
-    or     %rax, %rcx\r
+    or     %rax, %rcx                     # rcx[0..47] <- Cs:@F\r
     mov    %r9d, %edi \r
-    mov    0x28(%rsp), %eax\r
+    mov    0x28(%rsp), %eax               # eax <- New Stack\r
     push   %rcx\r
-    ret\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  *%rdx
-    jmp    .
+    push   %rdi                           # push Context2
+    push   %rsi                           # push Context1
+    callq  *%rdx                          # transfer control to EntryPoint
+    jmp    .                              # no one should get here