]> git.proxmox.com Git - mirror_edk2.git/commitdiff
sync comments.
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 28 Oct 2008 09:51:44 +0000 (09:51 +0000)
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 28 Oct 2008 09:51:44 +0000 (09:51 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6274 6f19259b-4bc3-4df7-8a09-765794883524

19 files changed:
MdePkg/Library/BaseLib/Ia32/DisablePaging32.S
MdePkg/Library/BaseLib/Ia32/DivU64x32.S
MdePkg/Library/BaseLib/Ia32/DivU64x32Remainder.S
MdePkg/Library/BaseLib/Ia32/DivU64x64Remainder.S
MdePkg/Library/BaseLib/Ia32/EnablePaging32.S
MdePkg/Library/BaseLib/Ia32/EnablePaging64.S
MdePkg/Library/BaseLib/Ia32/FxRestore.S
MdePkg/Library/BaseLib/Ia32/FxSave.S
MdePkg/Library/BaseLib/Ia32/LRotU64.S
MdePkg/Library/BaseLib/Ia32/LShiftU64.S
MdePkg/Library/BaseLib/Ia32/LongJump.S
MdePkg/Library/BaseLib/Ia32/Monitor.S
MdePkg/Library/BaseLib/Ia32/MultU64x32.S
MdePkg/Library/BaseLib/Ia32/MultU64x64.S
MdePkg/Library/BaseLib/Ia32/Mwait.S
MdePkg/Library/BaseLib/Ia32/RRotU64.S
MdePkg/Library/BaseLib/Ia32/RShiftU64.S
MdePkg/Library/BaseLib/Ia32/SetJump.S
MdePkg/Library/BaseLib/Ia32/SwapBytes64.S

index ee8efc62ef55efe87c54317a94fb87a2da8e7e40..d7aeec50cf83bde7da8afdc8ea29e88372757c47 100644 (file)
@@ -38,15 +38,15 @@ ASM_PFX(InternalX86DisablePaging32):
     movl    8(%esp), %ecx\r
     movl    12(%esp), %edx\r
     pushfl\r
-    pop     %edi\r
+    pop     %edi                        # save EFLAGS to edi\r
     cli\r
     movl    %cr0, %eax\r
     btrl    $31, %eax\r
     movl    16(%esp), %esp\r
     movl    %eax, %cr0\r
     push    %edi\r
-    popfl\r
+    popfl                               # restore EFLAGS from edi\r
     push    %edx\r
     push    %ecx\r
     call    *%ebx\r
-    jmp     .\r
+    jmp     .                           # EntryPoint() should not return\r
index ca2ca192f93fcefd03599b1fa38a656154dbaeed..c3f13960cc1f956a00fa4551d748341c99930bf9 100644 (file)
@@ -34,8 +34,8 @@ ASM_PFX(InternalMathDivU64x32):
     movl    12(%esp), %ecx
     xorl    %edx, %edx
     divl    %ecx
-    push    %eax
+    push    %eax                    # save quotient on stack
     movl    8(%esp), %eax
     divl    %ecx
-    pop     %edx
+    pop     %edx                    # restore high-order dword of the quotient
     ret
index e543fed321d3ce0ba899652464648e124930356d..87ca05357ab14959c4365116ecafddebfbd58068 100644 (file)
 #   );\r
 #------------------------------------------------------------------------------\r
 ASM_PFX(InternalMathDivRemU64x32):\r
-    movl    12(%esp), %ecx\r
-    movl    8(%esp), %eax\r
+    movl    12(%esp), %ecx          # ecx <- divisor\r
+    movl    8(%esp), %eax           # eax <- dividend[32..63]\r
     xorl    %edx, %edx\r
-    divl    %ecx\r
+    divl    %ecx                    # eax <- quotient[32..63], edx <- remainder\r
     push    %eax\r
-    movl    8(%esp), %eax\r
-    divl    %ecx\r
-    movl    20(%esp), %ecx\r
-    jecxz   L1\r
+    movl    8(%esp), %eax           # eax <- dividend[0..31]\r
+    divl    %ecx                    # eax <- quotient[0..31]\r
+    movl    20(%esp), %ecx          # ecx <- Remainder\r
+    jecxz   L1                      # abandon remainder if Remainder == NULL\r
     movl    %edx, (%ecx)\r
 L1:\r
-    pop     %edx\r
+    pop     %edx                    # edx <- quotient[32..63]\r
     ret\r
index f779e39159169435ac70f318ce5d3960b5e788a0..b78697c73e41545819b528154535809dd79c9241 100644 (file)
 #   );\r
 #------------------------------------------------------------------------------\r
 ASM_PFX(InternalMathDivRemU64x64):\r
-    movl    16(%esp), %ecx\r
+    movl    16(%esp), %ecx              # ecx <- divisor[32..63]\r
     testl   %ecx, %ecx\r
-    jnz     Hard\r
+    jnz     Hard                        # call _@DivRemU64x64 if Divisor > 2^32\r
     movl    20(%esp), %ecx\r
     jecxz   L1\r
-    and     $0, 4(%ecx)\r
-    movl    %ecx, 16(%esp)\r
+    and     $0, 4(%ecx)                 # zero high dword of remainder\r
+    movl    %ecx, 16(%esp)              # set up stack frame to match DivRemU64x32\r
 L1:\r
     jmp     ASM_PFX(InternalMathDivRemU64x32)\r
 Hard:\r
@@ -46,10 +46,10 @@ Hard:
     push    %esi\r
     push    %edi\r
     mov     20(%esp), %edx\r
-    mov     16(%esp), %eax\r
+    mov     16(%esp), %eax              # edx:eax <- dividend\r
     movl    %edx, %edi\r
-    movl    %eax, %esi\r
-    mov     24(%esp), %ebx\r
+    movl    %eax, %esi                  # edi:esi <- dividend\r
+    mov     24(%esp), %ebx              # ecx:ebx <- divisor\r
 L2:\r
     shrl    %edx\r
     rcrl    $1, %eax\r
@@ -57,32 +57,32 @@ L2:
     shrl    %ecx\r
     jnz     L2\r
     divl    %ebx\r
-    movl    %eax, %ebx\r
-    movl    28(%esp), %ecx\r
-    mull    24(%esp)\r
-    imull   %ebx, %ecx\r
-    addl    %ecx, %edx\r
-    mov     32(%esp), %ecx\r
-    jc      TooLarge\r
-    cmpl    %edx, %edi\r
-    ja      Correct\r
-    jb      TooLarge\r
-    cmpl    %eax, %esi\r
-    jae     Correct\r
+    movl    %eax, %ebx                  # ebx <- quotient                     \r
+    movl    28(%esp), %ecx              # ecx <- high dword of divisor        \r
+    mull    24(%esp)                    # edx:eax <- quotient * divisor[0..31]\r
+    imull   %ebx, %ecx                  # ecx <- quotient * divisor[32..63]   \r
+    addl    %ecx, %edx                  # edx <- (quotient * divisor)[32..63] \r
+    mov     32(%esp), %ecx              # ecx <- addr for Remainder           \r
+    jc      TooLarge                    # product > 2^64                      \r
+    cmpl    %edx, %edi                  # compare high 32 bits                \r
+    ja      Correct                                                           \r
+    jb      TooLarge                    # product > dividend                  \r
+    cmpl    %eax, %esi                                                        \r
+    jae     Correct                     # product <= dividend                 \r
 TooLarge:\r
-    decl    %ebx\r
-    jecxz   Return\r
-    sub     24(%esp), %eax\r
-    sbb     28(%esp), %edx\r
+    decl    %ebx                        # adjust quotient by -1              \r
+    jecxz   Return                      # return if Remainder == NULL        \r
+    sub     24(%esp), %eax                                                   \r
+    sbb     28(%esp), %edx              # edx:eax <- (quotient - 1) * divisor\r
 Correct:\r
     jecxz   Return\r
     subl    %eax, %esi\r
-    sbbl    %edx, %edi\r
+    sbbl    %edx, %edi                  # edi:esi <- remainder\r
     movl    %esi, (%ecx)\r
     movl    %edi, 4(%ecx)\r
 Return:\r
-    movl    %ebx, %eax\r
-    xorl    %edx, %edx\r
+    movl    %ebx, %eax                  # eax <- quotient         \r
+    xorl    %edx, %edx                  # quotient is 32 bits long\r
     pop     %edi\r
     pop     %esi\r
     pop     %ebx\r
index 858755508a72e56c4add016e14b7b58210c4f329..caecf8b0df694db02eaf7fe75fa93cb89cdc0ac9 100644 (file)
@@ -38,14 +38,14 @@ ASM_PFX(InternalX86EnablePaging32):
     movl    8(%esp), %ecx\r
     movl    12(%esp), %edx\r
     pushfl\r
-    pop     %edi\r
+    pop     %edi                        # save flags in edi\r
     cli\r
     movl    %cr0, %eax\r
     btsl    $31, %eax\r
     movl    16(%esp), %esp\r
     movl    %eax, %cr0\r
     push    %edi\r
-    popfl\r
+    popfl                               # restore flags\r
     push    %edx\r
     push    %ecx\r
     call    *%ebx\r
index 45ae2f306b6c9aa84d46d6c9e91a10dab1816609..ce9d3eb2d95aee001fb2e40e40df0962f19bf274 100644 (file)
@@ -36,7 +36,7 @@
 #------------------------------------------------------------------------------\r
 ASM_PFX(InternalX86EnablePaging64):\r
     cli\r
-    movl    $LongStart, (%esp)\r
+    movl    $LongStart, (%esp)          # offset for far retf, seg is the 1st arg\r
     movl    %cr4, %eax\r
     orb     $0x20, %al\r
     movl    %eax, %cr4                  # enable PAE\r
@@ -45,11 +45,11 @@ ASM_PFX(InternalX86EnablePaging64):
     orb     $1, %ah                     # set LME\r
     wrmsr\r
     movl    %cr0, %eax\r
-    btsl    $31, %eax\r
+    btsl    $31, %eax                   # set PG\r
     movl    %eax, %cr0                  # enable paging\r
-    lret\r
+    lret                                # topmost 2 dwords hold the address\r
 LongStart:                              # long mode starts here\r
-    .byte   0x67, 0x48\r
+    .byte   0x67, 0x48                  # 32-bit address size, 64-bit operand size\r
     movl    (%esp), %ebx                # mov rbx, [esp]\r
     .byte   0x67, 0x48\r
     movl    8(%esp), %ecx               # mov rcx, [esp + 8]\r
@@ -58,6 +58,6 @@ LongStart:                              # long mode starts here
     .byte   0x67, 0x48\r
     movl    0x18(%esp), %esp            # mov rsp, [esp + 18h]\r
     .byte   0x48\r
-    addl    $0x-0x20, %esp                # add rsp, -20h\r
+    addl    $0x-0x20, %esp              # add rsp, -20h\r
     call    *%ebx                       # call rbx\r
-    jmp     .\r
+    jmp     .                           # no one should get here\r
index 600b1d7cc86cfa50c0ab485e577944ef88fba353..bda14dd15eb43235259c794a30d1b48722c74fea 100644 (file)
@@ -31,6 +31,6 @@
 #   );\r
 #------------------------------------------------------------------------------\r
 ASM_PFX(InternalX86FxRestore):\r
-    movl    4(%esp), %eax\r
+    movl    4(%esp), %eax               # Buffer must be 16-byte aligned\r
     fxrstor (%eax)\r
     ret\r
index 81360846d9c64f8816c367bf7077900c27b50d03..b5c107f3bafcd338dd1e6ded75c8e553e3d75f37 100644 (file)
@@ -31,6 +31,6 @@
 #   );\r
 #------------------------------------------------------------------------------\r
 ASM_PFX(InternalX86FxSave):\r
-    movl    4(%esp), %eax\r
+    movl    4(%esp), %eax               # Buffer must be 16-byte aligned\r
     fxsave  (%eax)\r
     ret\r
index 42bb22f1312130f975f8a5908c0df2714b0b2944..615ff8146afa02140835ddf61339c9f9f13a6691 100644 (file)
@@ -38,7 +38,7 @@ ASM_PFX(InternalMathLRotU64):
     shldl   %cl, %eax, %edx\r
     rorl    %cl, %ebx\r
     shldl   %cl, %ebx, %eax\r
-    testb   $32, %cl\r
+    testb   $32, %cl                    # Count >= 32?\r
     cmovnz  %eax, %ecx\r
     cmovnz  %edx, %eax\r
     cmovnz  %ecx, %edx\r
index 9a9c2f68aef8d7004c749e199c5de7447e3ab750..e9ddf6f13101106449f23447f4c2cd2d67ffe48a 100644 (file)
@@ -33,7 +33,7 @@ ASM_PFX(InternalMathLShiftU64):
     movb    12(%esp), %cl
     xorl    %eax, %eax
     movl    4(%esp), %edx
-    testb   $32, %cl
+    testb   $32, %cl                    # Count >= 32?
     cmovz   %edx, %eax
     cmovz   0x8(%esp), %edx
     shld    %cl, %eax, %edx
index a280fe024188aae8ba5bd4cc9425a88a634e718a..11f8bd0f99fd38a65fd0719c2a31334465641cfc 100644 (file)
 #   );
 #------------------------------------------------------------------------------
 ASM_PFX(InternalLongJump):
-    pop     %eax
-    pop     %edx
-    pop     %eax
+    pop     %eax                        # skip return address
+    pop     %edx                        # edx <- JumpBuffer
+    pop     %eax                        # eax <- Value
     movl    (%edx), %ebx
     movl    4(%edx), %esi
     movl    8(%edx), %edi
     movl    12(%edx), %ebp
     movl    16(%edx), %esp
-    jmp     *20(%edx)
+    jmp     *20(%edx)                   # restore "eip"
index d34b8c107b0452fbf53bddc4aa1d129594243fbd..48a87a1985d9edfe6a6a35d33229afc80b2f885f 100644 (file)
@@ -36,5 +36,5 @@ ASM_PFX(AsmMonitor):
     movl    4(%esp), %eax\r
     movl    8(%esp), %ecx\r
     movl    12(%esp), %edx\r
-    monitor %eax, %ecx, %edx\r
+    monitor %eax, %ecx, %edx            # monitor\r
     ret\r
index 581f23e4ba7ed8f989764d7dfea4d3522934728c..16cf86c0dcaaa5ffc87157fada4ef72422d42f38 100644 (file)
@@ -35,7 +35,7 @@
 ASM_PFX(InternalMathMultU64x32):
     movl    12(%esp), %ecx
     movl    %ecx, %eax
-    imull   8(%esp), %ecx
+    imull   8(%esp), %ecx               # overflow not detectable
     mull    0x4(%esp)
     addl    %ecx, %edx
     ret
index 0aae90c6ccdc91289ee0ff0d5026cc6be26a4b30..8dbae8b1a9be2fb9eef477e0f0d4a7dc875298a1 100644 (file)
 #   );\r
 #------------------------------------------------------------------------------\r
 ASM_PFX(InternalMathMultU64x64):\r
-    push    %ebx\r
-    movl    8(%esp), %ebx\r
-    movl    16(%esp), %edx\r
-    movl    %ebx, %ecx\r
-    movl    %edx, %eax\r
-    imull   20(%esp), %ebx\r
-    imull   12(%esp), %edx\r
-    addl    %edx, %ebx\r
-    mull    %ecx\r
-    addl    %ebx, %edx\r
+    push    %ebx                                     \r
+    movl    8(%esp), %ebx             # ebx <- M1[0..31]                \r
+    movl    16(%esp), %edx            # edx <- M2[0..31]                                   \r
+    movl    %ebx, %ecx                                                  \r
+    movl    %edx, %eax                \r
+    imull   20(%esp), %ebx            # ebx <- M1[0..31] * M2[32..63]   \r
+    imull   12(%esp), %edx            # edx <- M1[32..63] * M2[0..31]   \r
+    addl    %edx, %ebx                # carries are abandoned           \r
+    mull    %ecx                      # edx:eax <- M1[0..31] * M2[0..31]\r
+    addl    %ebx, %edx                # carries are abandoned           \r
     pop     %ebx\r
     ret\r
index 862dd41b09fa81b761e8dc859763388ee7df4530..9fd1efd0c9b58ddbc0a580618c12bec6884774ad 100644 (file)
@@ -34,5 +34,5 @@
 ASM_PFX(AsmMwait):\r
     movl    4(%esp), %eax\r
     movl    8(%esp), %ecx\r
-    mwait   %eax, %ecx\r
+    mwait   %eax, %ecx                  # mwait\r
     ret\r
index 4b987478a0965f50fc0d3d5a40a96874f1731c18..cc5807648aa3e9164a2b9c5cd324ea63052a2e07 100644 (file)
@@ -38,8 +38,8 @@ ASM_PFX(InternalMathRRotU64):
     shrdl   %cl, %edx, %eax\r
     roll    %cl, %ebx\r
     shrdl   %cl, %ebx, %edx\r
-    testb   $32, %cl\r
-    cmovnz  %eax, %ecx\r
+    testb   $32, %cl                    # Count >= 32?\r
+    cmovnz  %eax, %ecx                  # switch eax & edx if Count >= 32\r
     cmovnz  %edx, %eax\r
     cmovnz  %ecx, %edx\r
     pop     %ebx\r
index f2a49cb9c0755c5d18398143916c33feb72b4acd..ecb67e15526706600047c00116e1e9f89cc56a07 100644 (file)
 #   );
 #------------------------------------------------------------------------------
 ASM_PFX(InternalMathRShiftU64):
-    movb    12(%esp), %cl
+    movb    12(%esp), %cl               # cl <- Count
     xorl    %edx, %edx
     movl    8(%esp), %eax
-    testb   $32, %cl
+    testb   $32, %cl                    # Count >= 32?
     cmovz   %eax, %edx
     cmovz   0x4(%esp), %eax
     shrdl   %cl, %edx, %eax
index acb2b95e2502981bf123e594b2ba03eac7c2339c..dc7f04800360ec7fc4d8fdf8b62f7d75cfc39a5f 100644 (file)
 #------------------------------------------------------------------------------\r
 ASM_PFX(SetJump):\r
     pushl   0x4(%esp)\r
-    call    ASM_PFX(InternalAssertJumpBuffer)\r
-    pop     %ecx\r
+    call    ASM_PFX(InternalAssertJumpBuffer)               # To validate JumpBuffer\r
     pop     %ecx\r
+    pop     %ecx                                            # ecx <- return address\r
     movl    (%esp), %edx\r
     movl    %ebx, (%edx)\r
     movl    %esi, 4(%edx)\r
     movl    %edi, 8(%edx)\r
     movl    %ebp, 12(%edx)\r
     movl    %esp, 16(%edx)\r
-    movl    %ecx, 20(%edx)\r
+    movl    %ecx, 20(%edx)                                  # eip value to restore in LongJump\r
     xorl    %eax, %eax\r
     jmp     *%ecx\r
index 8c3864d8640fbda03c0e6c272ad6110e138ec6c2..f08177d97b87af64d0d447cbfc3b4d0f061f7290 100644 (file)
@@ -31,8 +31,8 @@
 #------------------------------------------------------------------------------
 .globl ASM_PFX(InternalMathSwapBytes64)
 ASM_PFX(InternalMathSwapBytes64):
-    movl    8(%esp), %eax
-    movl    4(%esp), %edx
+    movl    8(%esp), %eax               # eax <- upper 32 bits
+    movl    4(%esp), %edx               # edx <- lower 32 bits
     bswapl  %eax
     bswapl  %edx
     ret