Fixes for gcc assembly.
authorbbahnsen <bbahnsen@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 12 Jun 2006 17:11:17 +0000 (17:11 +0000)
committerbbahnsen <bbahnsen@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 12 Jun 2006 17:11:17 +0000 (17:11 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@485 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/BaseLib/Ia32/CpuIdEx.s [new file with mode: 0644]
MdePkg/Library/BaseLib/Ia32/LongJump.s

diff --git a/MdePkg/Library/BaseLib/Ia32/CpuIdEx.s b/MdePkg/Library/BaseLib/Ia32/CpuIdEx.s
new file mode 100644 (file)
index 0000000..43c23b6
--- /dev/null
@@ -0,0 +1,67 @@
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, 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
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+#   CpuIdEx.Asm
+#
+# Abstract:
+#
+#   AsmCpuidEx function
+#
+# Notes:
+#
+#------------------------------------------------------------------------------
+
+    .686: 
+    .code: 
+
+#------------------------------------------------------------------------------
+#  UINT32
+#  EFIAPI
+#  AsmCpuidEx (
+#    IN   UINT32  RegisterInEax,
+#    IN   UINT32  RegisterInEcx,
+#    OUT  UINT32  *RegisterOutEax  OPTIONAL,
+#    OUT  UINT32  *RegisterOutEbx  OPTIONAL,
+#    OUT  UINT32  *RegisterOutEcx  OPTIONAL,
+#    OUT  UINT32  *RegisterOutEdx  OPTIONAL
+#    )
+#------------------------------------------------------------------------------
+.globl _AsmCpuidEx
+_AsmCpuidEx:
+    push    %ebx
+    pushl   %ebp
+    movl    %esp, %ebp
+    movl    12(%ebp), %eax
+    movl    16(%ebp), %ecx
+    cpuid
+    pushl   %ecx
+    movl    20(%ebp), %ecx
+    jecxz   L1
+    movl    %eax, (%ecx)
+L1: 
+    movl    24(%ebp), %ecx
+    jecxz   L2
+    movl    %ebx, (%ecx)
+L2: 
+    movl    28(%ebp), %ecx
+    jecxz   L3
+    popl    %ecx
+L3: 
+    movl    32(%ebp), %edx
+    jecxz   L4
+    movl    %edx, (%ecx)
+L4: 
+    movl    12(%ebp), %eax
+    pop     %ebx
+    leave
+    ret
index 4a36afc..8ccffe4 100644 (file)
@@ -1,39 +1,38 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006, Intel Corporation\r
-# All rights reserved. This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-# Module Name:\r
-#\r
-#   LongJump.Asm\r
-#\r
-# Abstract:\r
-#\r
-#   Implementation of _LongJump() on IA-32.\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-\r
-     \r
-\r
-.global __LongJump\r
-__LongJump: \r
-    popl    %eax\r
-    popl    %edx\r
-    popl    %eax\r
-    movl    (%edx),%ebx\r
-    movl    4(%edx),%esi\r
-    movl    8(%edx),%edi\r
-    movl    12(%edx),%ebp\r
-    movl    16(%edx),%esp\r
-    jmpl    *20(%edx)\r
-\r
-\r
-\r
+#------------------------------------------------------------------------------
+#
+# Copyright (c) 2006, 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
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+#   LongJump.Asm
+#
+# Abstract:
+#
+#   Implementation of _LongJump() on IA-32.
+#
+#------------------------------------------------------------------------------
+
+    .386: 
+    .code: 
+
+.globl _InternalLongJump
+_InternalLongJump:
+    popl    %eax
+    popl    %edx
+    popl    %eax
+    movl    (%edx), %ebx
+    movl    4(%edx), %esi
+    movl    8(%edx), %edi
+    movl    12(%edx), %ebp
+    movl    16(%edx), %esp
+    jmp     20(%edx)
+#InternalLongJump ENDP
+
+