]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1. Restore the inline C implementation of GCC assembly files that was temporarily...
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 18 May 2010 05:37:58 +0000 (05:37 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 18 May 2010 05:37:58 +0000 (05:37 +0000)
2. Remove 139 GCC assembly files whose functionality have been covered in the inline C implementation.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10503 6f19259b-4bc3-4df7-8a09-765794883524

148 files changed:
MdePkg/Library/BaseCpuLib/BaseCpuLib.inf
MdePkg/Library/BaseCpuLib/Ia32/CpuFlushTlb.S [deleted file]
MdePkg/Library/BaseCpuLib/Ia32/CpuFlushTlbGcc.c [new file with mode: 0644]
MdePkg/Library/BaseCpuLib/Ia32/CpuSleep.S [deleted file]
MdePkg/Library/BaseCpuLib/Ia32/CpuSleepGcc.c [new file with mode: 0644]
MdePkg/Library/BaseLib/BaseLib.inf
MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.S [deleted file]
MdePkg/Library/BaseLib/Ia32/CpuPause.S [deleted file]
MdePkg/Library/BaseLib/Ia32/DisableInterrupts.S [deleted file]
MdePkg/Library/BaseLib/Ia32/FlushCacheLine.S [deleted file]
MdePkg/Library/BaseLib/Ia32/FxRestore.S [deleted file]
MdePkg/Library/BaseLib/Ia32/FxSave.S [deleted file]
MdePkg/Library/BaseLib/Ia32/GccInline.c [new file with mode: 0644]
MdePkg/Library/BaseLib/Ia32/Invd.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadCr0.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadCr2.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadCr3.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadCr4.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadCs.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDr0.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDr1.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDr2.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDr3.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDr4.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDr5.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDr6.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDr7.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadDs.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadEflags.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadEs.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadFs.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadGdtr.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadGs.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadIdtr.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadLdtr.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadMm0.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadMm1.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadMm2.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadMm3.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadMm4.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadMm5.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadMm6.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadMm7.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadPmc.S [deleted file]
MdePkg/Library/BaseLib/Ia32/ReadTsc.S [deleted file]
MdePkg/Library/BaseLib/Ia32/Wbinvd.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteCr0.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteCr2.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteCr3.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteCr4.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteDr0.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteDr1.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteDr2.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteDr3.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteDr4.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteDr5.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteDr6.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteDr7.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteGdtr.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteIdtr.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteLdtr.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteMm0.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteMm1.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteMm2.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteMm3.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteMm4.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteMm5.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteMm6.S [deleted file]
MdePkg/Library/BaseLib/Ia32/WriteMm7.S [deleted file]
MdePkg/Library/BaseLib/X64/CpuPause.S [deleted file]
MdePkg/Library/BaseLib/X64/DisableInterrupts.S [deleted file]
MdePkg/Library/BaseLib/X64/EnableInterrupts.S [deleted file]
MdePkg/Library/BaseLib/X64/FlushCacheLine.S [deleted file]
MdePkg/Library/BaseLib/X64/FxRestore.S [deleted file]
MdePkg/Library/BaseLib/X64/FxSave.S [deleted file]
MdePkg/Library/BaseLib/X64/GccInline.c [new file with mode: 0644]
MdePkg/Library/BaseLib/X64/Invd.S [deleted file]
MdePkg/Library/BaseLib/X64/Monitor.S [deleted file]
MdePkg/Library/BaseLib/X64/Mwait.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadCr0.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadCr2.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadCr3.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadCr4.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadCs.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDr0.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDr1.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDr2.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDr3.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDr4.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDr5.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDr6.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDr7.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadDs.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadEflags.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadEs.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadFs.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadGdtr.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadGs.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadIdtr.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadLdtr.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMm0.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMm1.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMm2.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMm3.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMm4.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMm5.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMm6.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMm7.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadMsr64.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadPmc.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadSs.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadTr.S [deleted file]
MdePkg/Library/BaseLib/X64/ReadTsc.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteCr0.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteCr2.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteCr3.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteCr4.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteDr0.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteDr1.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteDr2.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteDr3.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteDr4.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteDr5.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteDr6.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteDr7.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteGdtr.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteIdtr.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteLdtr.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMm0.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMm1.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMm2.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMm3.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMm4.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMm5.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMm6.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMm7.S [deleted file]
MdePkg/Library/BaseLib/X64/WriteMsr64.S [deleted file]
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
MdePkg/Library/BaseSynchronizationLib/Ia32/GccInline.c [new file with mode: 0644]
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.S [deleted file]
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.S [deleted file]
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.S [deleted file]
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.S [deleted file]
MdePkg/Library/BaseSynchronizationLib/X64/GccInline.c [new file with mode: 0644]
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.S [deleted file]
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.S [deleted file]
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.S [deleted file]
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.S [deleted file]

index f17c6516a97a90eb6fd3876cc3716e09e9920d01..9bbb1871f34ba8e89c61d1919908ca035a0a1936 100644 (file)
@@ -37,8 +37,8 @@
   Ia32/CpuSleep.asm | INTEL \r
   Ia32/CpuFlushTlb.asm | INTEL \r
 \r
-  Ia32/CpuSleep.S | GCC \r
-  Ia32/CpuFlushTlb.S | GCC \r
+  Ia32/CpuSleepGcc.c | GCC \r
+  Ia32/CpuFlushTlbGcc.c | GCC \r
 \r
 [Sources.X64]\r
   X64/CpuFlushTlb.asm \r
diff --git a/MdePkg/Library/BaseCpuLib/Ia32/CpuFlushTlb.S b/MdePkg/Library/BaseCpuLib/Ia32/CpuFlushTlb.S
deleted file mode 100644 (file)
index 0aec5d0..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------ ;\r
-# Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   CpuFlushTlb.Asm\r
-#\r
-# Abstract:\r
-#\r
-#   CpuFlushTlb function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(CpuFlushTlb)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# CpuFlushTlb (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(CpuFlushTlb):\r
-    movl    %cr3, %eax\r
-    movl    %eax, %cr3\r
-    ret\r
diff --git a/MdePkg/Library/BaseCpuLib/Ia32/CpuFlushTlbGcc.c b/MdePkg/Library/BaseCpuLib/Ia32/CpuFlushTlbGcc.c
new file mode 100644 (file)
index 0000000..f8c3a25
--- /dev/null
@@ -0,0 +1,32 @@
+/** @file\r
+  CpuFlushTlb function for Ia32/X64 GCC.\r
+\r
+  Copyright (c) 2006 - 2008, Intel Corporation<BR>\r
+  Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>\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
+**/\r
+\r
+#include <Library/BaseLib.h>\r
+\r
+/**\r
+  Flushes all the Translation Lookaside Buffers(TLB) entries in a CPU.\r
+\r
+  Flushes all the Translation Lookaside Buffers(TLB) entries in a CPU.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+CpuFlushTlb (\r
+  VOID\r
+  )\r
+{\r
+  AsmWriteCr3 (AsmReadCr3 ());\r
+}\r
+\r
diff --git a/MdePkg/Library/BaseCpuLib/Ia32/CpuSleep.S b/MdePkg/Library/BaseCpuLib/Ia32/CpuSleep.S
deleted file mode 100644 (file)
index b826ca2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------ ;\r
-# Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   CpuSleep.Asm\r
-#\r
-# Abstract:\r
-#\r
-#   CpuSleep function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(CpuSleep)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# CpuSleep (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(CpuSleep):\r
-    hlt\r
-    ret\r
diff --git a/MdePkg/Library/BaseCpuLib/Ia32/CpuSleepGcc.c b/MdePkg/Library/BaseCpuLib/Ia32/CpuSleepGcc.c
new file mode 100644 (file)
index 0000000..fb5ca29
--- /dev/null
@@ -0,0 +1,33 @@
+/** @file\r
+  CpuSleep function for Ia32/X64 GCC.\r
+\r
+  Copyright (c) 2006 - 2008, Intel Corporation<BR>\r
+  Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>\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
+**/\r
+\r
+\r
+/**\r
+  Places the CPU in a sleep state until an interrupt is received.\r
+\r
+  Places the CPU in a sleep state until an interrupt is received. If interrupts\r
+  are disabled prior to calling this function, then the CPU will be placed in a\r
+  sleep state indefinitely.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+CpuSleep (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("hlt"::: "memory");\r
+}\r
+\r
index 8da951c94748f71b157ae9f197e5339e69aff1c3..7a90728794573f748bb938e3f042ea693dccf269 100644 (file)
   Ia32/EnableCache.asm | INTEL\r
   Ia32/DisableCache.asm | INTEL\r
 \r
+  Ia32/GccInline.c | GCC\r
   Ia32/Thunk16.S | GCC \r
-  Ia32/CpuBreakpoint.S | GCC \r
-  Ia32/CpuPause.S | GCC \r
   Ia32/EnableDisableInterrupts.S | GCC \r
-  Ia32/DisableInterrupts.S | GCC \r
-  Ia32/EnableInterrupts.S | GCC \r
-  Ia32/FlushCacheLine.S | GCC \r
-  Ia32/Invd.S | GCC \r
-  Ia32/Wbinvd.S | GCC \r
   Ia32/EnablePaging64.S | GCC \r
   Ia32/DisablePaging32.S | GCC \r
   Ia32/EnablePaging32.S | GCC \r
   Ia32/Mwait.S | GCC \r
   Ia32/Monitor.S | GCC \r
-  Ia32/ReadPmc.S | GCC \r
-  Ia32/ReadTsc.S | GCC \r
-  Ia32/WriteMm7.S | GCC \r
-  Ia32/WriteMm6.S | GCC \r
-  Ia32/WriteMm5.S | GCC \r
-  Ia32/WriteMm4.S | GCC \r
-  Ia32/WriteMm3.S | GCC \r
-  Ia32/WriteMm2.S | GCC \r
-  Ia32/WriteMm1.S | GCC \r
-  Ia32/WriteMm0.S | GCC \r
-  Ia32/ReadMm7.S | GCC \r
-  Ia32/ReadMm6.S | GCC \r
-  Ia32/ReadMm5.S | GCC \r
-  Ia32/ReadMm4.S | GCC \r
-  Ia32/ReadMm3.S | GCC \r
-  Ia32/ReadMm2.S | GCC \r
-  Ia32/ReadMm1.S | GCC \r
-  Ia32/ReadMm0.S | GCC \r
-  Ia32/FxRestore.S | GCC \r
-  Ia32/FxSave.S | GCC \r
-  Ia32/WriteLdtr.S | GCC \r
-  Ia32/ReadLdtr.S | GCC \r
-  Ia32/WriteIdtr.S | GCC \r
-  Ia32/ReadIdtr.S | GCC \r
-  Ia32/WriteGdtr.S | GCC \r
-  Ia32/ReadGdtr.S | GCC \r
-  Ia32/ReadTr.S | GCC \r
-  Ia32/ReadSs.S | GCC \r
-  Ia32/ReadGs.S | GCC \r
-  Ia32/ReadFs.S | GCC \r
-  Ia32/ReadEs.S | GCC \r
-  Ia32/ReadDs.S | GCC \r
-  Ia32/ReadCs.S | GCC \r
-  Ia32/WriteDr7.S | GCC \r
-  Ia32/WriteDr6.S | GCC \r
-  Ia32/WriteDr5.S | GCC \r
-  Ia32/WriteDr4.S | GCC \r
-  Ia32/WriteDr3.S | GCC \r
-  Ia32/WriteDr2.S | GCC \r
-  Ia32/WriteDr1.S | GCC \r
-  Ia32/WriteDr0.S | GCC \r
-  Ia32/ReadDr7.S | GCC \r
-  Ia32/ReadDr6.S | GCC \r
-  Ia32/ReadDr5.S | GCC \r
-  Ia32/ReadDr4.S | GCC \r
-  Ia32/ReadDr3.S | GCC \r
-  Ia32/ReadDr2.S | GCC \r
-  Ia32/ReadDr1.S | GCC \r
-  Ia32/ReadDr0.S | GCC \r
-  Ia32/WriteCr4.S | GCC \r
-  Ia32/WriteCr3.S | GCC \r
-  Ia32/WriteCr2.S | GCC \r
-  Ia32/WriteCr0.S | GCC \r
-  Ia32/ReadCr4.S | GCC \r
-  Ia32/ReadCr3.S | GCC \r
-  Ia32/ReadCr2.S | GCC \r
-  Ia32/ReadCr0.S | GCC \r
-  Ia32/WriteMsr64.S | GCC \r
-  Ia32/ReadMsr64.S | GCC \r
-  Ia32/ReadEflags.S | GCC \r
   Ia32/CpuIdEx.S | GCC \r
   Ia32/CpuId.S | GCC \r
   Ia32/LongJump.S | GCC \r
   X86EnablePaging32.c\r
   X86DisablePaging64.c\r
   X86DisablePaging32.c\r
-  X64/WriteMsr64.S | GCC \r
-  X64/WriteMm7.S | GCC \r
-  X64/WriteMm6.S | GCC \r
-  X64/WriteMm5.S | GCC \r
-  X64/WriteMm4.S | GCC \r
-  X64/WriteMm3.S | GCC \r
-  X64/WriteMm2.S | GCC \r
-  X64/WriteMm1.S | GCC \r
-  X64/WriteMm0.S | GCC \r
-  X64/WriteLdtr.S | GCC \r
-  X64/WriteIdtr.S | GCC \r
-  X64/WriteGdtr.S | GCC \r
-  X64/WriteDr7.S | GCC \r
-  X64/WriteDr6.S | GCC \r
-  X64/WriteDr5.S | GCC \r
-  X64/WriteDr4.S | GCC \r
-  X64/WriteDr3.S | GCC \r
-  X64/WriteDr2.S | GCC \r
-  X64/WriteDr1.S | GCC \r
-  X64/WriteDr0.S | GCC \r
-  X64/WriteCr4.S | GCC \r
-  X64/WriteCr3.S | GCC \r
-  X64/WriteCr2.S | GCC \r
-  X64/WriteCr0.S | GCC \r
-  X64/Wbinvd.S | GCC \r
+  X64/GccInline.c | GCC\r
   X64/Thunk16.S | GCC \r
   X64/SwitchStack.S | GCC \r
   X64/SetJump.S | GCC \r
-  X64/ReadTsc.S | GCC \r
-  X64/ReadTr.S | GCC \r
-  X64/ReadSs.S | GCC \r
-  X64/ReadPmc.S | GCC \r
-  X64/ReadMsr64.S | GCC \r
-  X64/ReadMm7.S | GCC \r
-  X64/ReadMm6.S | GCC \r
-  X64/ReadMm5.S | GCC \r
-  X64/ReadMm4.S | GCC \r
-  X64/ReadMm3.S | GCC \r
-  X64/ReadMm2.S | GCC \r
-  X64/ReadMm1.S | GCC \r
-  X64/ReadMm0.S | GCC \r
-  X64/ReadLdtr.S | GCC \r
-  X64/ReadIdtr.S | GCC \r
-  X64/ReadGs.S | GCC \r
-  X64/ReadGdtr.S | GCC \r
-  X64/ReadFs.S | GCC \r
-  X64/ReadEs.S | GCC \r
-  X64/ReadEflags.S | GCC \r
-  X64/ReadDs.S | GCC \r
-  X64/ReadDr7.S | GCC \r
-  X64/ReadDr6.S | GCC \r
-  X64/ReadDr5.S | GCC \r
-  X64/ReadDr4.S | GCC \r
-  X64/ReadDr3.S | GCC \r
-  X64/ReadDr2.S | GCC \r
-  X64/ReadDr1.S | GCC \r
-  X64/ReadDr0.S | GCC \r
-  X64/ReadCs.S | GCC \r
-  X64/ReadCr4.S | GCC \r
-  X64/ReadCr3.S | GCC \r
-  X64/ReadCr2.S | GCC \r
-  X64/ReadCr0.S | GCC \r
-  X64/Mwait.S | GCC \r
-  X64/Monitor.S | GCC \r
   X64/LongJump.S | GCC \r
-  X64/Invd.S | GCC \r
-  X64/FxSave.S | GCC \r
-  X64/FxRestore.S | GCC \r
-  X64/FlushCacheLine.S | GCC \r
-  X64/EnableInterrupts.S | GCC \r
   X64/EnableDisableInterrupts.S | GCC \r
   X64/DisablePaging64.S | GCC \r
-  X64/DisableInterrupts.S | GCC \r
-  X64/CpuPause.S | GCC \r
   X64/CpuId.S | GCC \r
   X64/CpuIdEx.S | GCC \r
-  X64/CpuBreakpoint.S | GCC \r
   X64/EnableCache.S | GCC\r
   X64/DisableCache.S | GCC\r
   ChkStkGcc.c  | GCC \r
diff --git a/MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.S b/MdePkg/Library/BaseLib/Ia32/CpuBreakpoint.S
deleted file mode 100644 (file)
index 7ad3a1a..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------ ;\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   CpuBreakpoint.S\r
-#\r
-# Abstract:\r
-#\r
-#   CpuBreakpoint function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(CpuBreakpoint)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# CpuBreakpoint (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(CpuBreakpoint):\r
-    int  $3\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/CpuPause.S b/MdePkg/Library/BaseLib/Ia32/CpuPause.S
deleted file mode 100644 (file)
index b5eebb7..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------ ;\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   CpuPause.S\r
-#\r
-# Abstract:\r
-#\r
-#   CpuPause function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(CpuPause)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# CpuPause (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(CpuPause):\r
-    pause\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/DisableInterrupts.S b/MdePkg/Library/BaseLib/Ia32/DisableInterrupts.S
deleted file mode 100644 (file)
index 273410e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   DisableInterrupts.S\r
-#\r
-# Abstract:\r
-#\r
-#   DisableInterrupts function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(DisableInterrupts)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# DisableInterrupts (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(DisableInterrupts):\r
-    cli\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/FlushCacheLine.S b/MdePkg/Library/BaseLib/Ia32/FlushCacheLine.S
deleted file mode 100644 (file)
index 51030bb..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   FlushCacheLine.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmFlushCacheLine function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmFlushCacheLine)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmFlushCacheLine (\r
-#   IN      VOID                      *LinearAddress\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmFlushCacheLine):\r
-    movl    4(%esp), %eax\r
-    clflush (%eax)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/FxRestore.S b/MdePkg/Library/BaseLib/Ia32/FxRestore.S
deleted file mode 100644 (file)
index e1de9c9..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   FxRestore.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalX86FxRestore function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(InternalX86FxRestore)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86FxRestore (\r
-#   IN CONST IA32_FX_BUFFER *Buffer\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(InternalX86FxRestore):\r
-    movl    4(%esp), %eax               # Buffer must be 16-byte aligned\r
-    fxrstor (%eax)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/FxSave.S b/MdePkg/Library/BaseLib/Ia32/FxSave.S
deleted file mode 100644 (file)
index 01e96d0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   FxSave.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalX86FxSave function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(InternalX86FxSave)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86FxSave (\r
-#   OUT IA32_FX_BUFFER *Buffer\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(InternalX86FxSave):\r
-    movl    4(%esp), %eax               # Buffer must be 16-byte aligned\r
-    fxsave  (%eax)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/GccInline.c b/MdePkg/Library/BaseLib/Ia32/GccInline.c
new file mode 100644 (file)
index 0000000..d603b3f
--- /dev/null
@@ -0,0 +1,1758 @@
+/** @file\r
+  GCC inline implementation of BaseLib processor specific functions.\r
+  \r
+  Copyright (c) 2006 - 2010, Intel Corporation<BR>\r
+  Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>\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
+**/\r
+\r
+\r
+#include "BaseLibInternals.h"\r
+\r
+\r
+\r
+/**\r
+  Used to serialize load and store operations.\r
+\r
+  All loads and stores that proceed calls to this function are guaranteed to be\r
+  globally visible when this function returns.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+MemoryFence (\r
+  VOID\r
+  )\r
+{\r
+  // This is a little bit of overkill and it is more about the compiler that it is\r
+  // actually processor syncronization. This is like the _ReadWriteBarrier \r
+  // Microsft specific intrinsic\r
+  __asm__ __volatile__ ("":::"memory");\r
+}\r
+\r
+\r
+/**\r
+  Enables CPU interrupts.\r
+\r
+  Enables CPU interrupts.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+EnableInterrupts (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("sti"::: "memory");\r
+}\r
+\r
+\r
+/**\r
+  Disables CPU interrupts.\r
+\r
+  Disables CPU interrupts.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+DisableInterrupts (\r
+  VOID\r
+  )\r
+{  \r
+  __asm__ __volatile__ ("cli"::: "memory");\r
+}\r
+\r
+\r
+\r
+\r
+/**\r
+  Requests CPU to pause for a short period of time.\r
+\r
+  Requests CPU to pause for a short period of time. Typically used in MP\r
+  systems to prevent memory starvation while waiting for a spin lock.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+CpuPause (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("pause");\r
+}\r
+\r
+\r
+/**\r
+  Generates a breakpoint on the CPU.\r
+\r
+  Generates a breakpoint on the CPU. The breakpoint must be implemented such\r
+  that code can resume normal execution after the breakpoint.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+CpuBreakpoint (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("int $3");\r
+}\r
+\r
+\r
+\r
+/**\r
+  Returns a 64-bit Machine Specific Register(MSR).\r
+\r
+  Reads and returns the 64-bit MSR specified by Index. No parameter checking is\r
+  performed on Index, and some Index values may cause CPU exceptions. The\r
+  caller must either guarantee that Index is valid, or the caller must set up\r
+  exception handlers to catch the exceptions. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @param  Index The 32-bit MSR index to read.\r
+\r
+  @return The value of the MSR identified by Index.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMsr64 (\r
+  IN      UINT32                    Index\r
+  )\r
+{\r
+  UINT64 Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "rdmsr"\r
+    : "=A" (Data)   // %0\r
+    : "c"  (Index)  // %1\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+/**\r
+  Writes a 64-bit value to a Machine Specific Register(MSR), and returns the\r
+  value.\r
+\r
+  Writes the 64-bit value specified by Value to the MSR specified by Index. The\r
+  64-bit value written to the MSR is returned. No parameter checking is\r
+  performed on Index or Value, and some of these may cause CPU exceptions. The\r
+  caller must either guarantee that Index and Value are valid, or the caller\r
+  must establish proper exception handlers. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @param  Index The 32-bit MSR index to write.\r
+  @param  Value The 64-bit value to write to the MSR.\r
+\r
+  @return Value\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmWriteMsr64 (\r
+  IN      UINT32                    Index,\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "wrmsr"\r
+    :\r
+    : "c" (Index),\r
+      "A" (Value)\r
+    );\r
+    \r
+  return Value;\r
+}\r
+\r
+\r
+\r
+/**\r
+  Reads the current value of the EFLAGS register.\r
+\r
+  Reads and returns the current value of the EFLAGS register. This function is\r
+  only available on IA-32 and X64. This returns a 32-bit value on IA-32 and a\r
+  64-bit value on X64.\r
+\r
+  @return EFLAGS on IA-32 or RFLAGS on X64.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadEflags (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Eflags;\r
+  \r
+  __asm__ __volatile__ (\r
+    "pushfl     \n\t"\r
+    "popl %0        "\r
+    : "=r" (Eflags)\r
+    );\r
+    \r
+  return Eflags;\r
+}\r
+\r
+\r
+\r
+/**\r
+  Reads the current value of the Control Register 0 (CR0).\r
+\r
+  Reads and returns the current value of CR0. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of the Control Register 0 (CR0).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadCr0 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN   Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%cr0,%0" \r
+    : "=a" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of the Control Register 2 (CR2).\r
+\r
+  Reads and returns the current value of CR2. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of the Control Register 2 (CR2).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadCr2 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%cr2, %0" \r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+/**\r
+  Reads the current value of the Control Register 3 (CR3).\r
+\r
+  Reads and returns the current value of CR3. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of the Control Register 3 (CR3).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadCr3 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%cr3, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of the Control Register 4 (CR4).\r
+\r
+  Reads and returns the current value of CR4. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of the Control Register 4 (CR4).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadCr4 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%cr4, %0"\r
+    : "=a" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Control Register 0 (CR0).\r
+\r
+  Writes and returns a new value to CR0. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Cr0 The value to write to CR0.\r
+\r
+  @return The value written to CR0.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteCr0 (\r
+  UINTN  Cr0\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%cr0"\r
+    :\r
+    : "r" (Cr0)\r
+    );\r
+  return Cr0;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Control Register 2 (CR2).\r
+\r
+  Writes and returns a new value to CR2. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Cr2 The value to write to CR2.\r
+\r
+  @return The value written to CR2.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteCr2 (\r
+  UINTN  Cr2\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%cr2"\r
+    :\r
+    : "r" (Cr2)\r
+    );\r
+  return Cr2;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Control Register 3 (CR3).\r
+\r
+  Writes and returns a new value to CR3. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Cr3 The value to write to CR3.\r
+\r
+  @return The value written to CR3.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteCr3 (\r
+  UINTN  Cr3\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%cr3"\r
+    :\r
+    : "r" (Cr3)\r
+    );\r
+  return Cr3;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Control Register 4 (CR4).\r
+\r
+  Writes and returns a new value to CR4. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Cr4 The value to write to CR4.\r
+\r
+  @return The value written to CR4.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteCr4 (\r
+  UINTN  Cr4\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%cr4"\r
+    :\r
+    : "r" (Cr4)\r
+    );\r
+  return Cr4;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 0 (DR0).\r
+\r
+  Reads and returns the current value of DR0. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 0 (DR0).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr0 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%dr0, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 1 (DR1).\r
+\r
+  Reads and returns the current value of DR1. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 1 (DR1).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr1 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%dr1, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 2 (DR2).\r
+\r
+  Reads and returns the current value of DR2. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 2 (DR2).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr2 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%dr2, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 3 (DR3).\r
+\r
+  Reads and returns the current value of DR3. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 3 (DR3).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr3 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%dr3, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 4 (DR4).\r
+\r
+  Reads and returns the current value of DR4. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 4 (DR4).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr4 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%dr4, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 5 (DR5).\r
+\r
+  Reads and returns the current value of DR5. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 5 (DR5).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr5 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%dr5, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 6 (DR6).\r
+\r
+  Reads and returns the current value of DR6. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 6 (DR6).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr6 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%dr6, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 7 (DR7).\r
+\r
+  Reads and returns the current value of DR7. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 7 (DR7).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr7 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "movl %%dr7, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 0 (DR0).\r
+\r
+  Writes and returns a new value to DR0. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr0 The value to write to Dr0.\r
+\r
+  @return The value written to Debug Register 0 (DR0).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr0 (\r
+  UINTN  Dr0\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%dr0"\r
+    :\r
+    : "r" (Dr0)\r
+    );\r
+  return Dr0;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 1 (DR1).\r
+\r
+  Writes and returns a new value to DR1. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr1 The value to write to Dr1.\r
+\r
+  @return The value written to Debug Register 1 (DR1).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr1 (\r
+  UINTN  Dr1\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%dr1"\r
+    :\r
+    : "r" (Dr1)\r
+    );\r
+  return Dr1;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 2 (DR2).\r
+\r
+  Writes and returns a new value to DR2. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr2 The value to write to Dr2.\r
+\r
+  @return The value written to Debug Register 2 (DR2).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr2 (\r
+  UINTN  Dr2\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%dr2"\r
+    :\r
+    : "r" (Dr2)\r
+    );\r
+  return Dr2;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 3 (DR3).\r
+\r
+  Writes and returns a new value to DR3. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr3 The value to write to Dr3.\r
+\r
+  @return The value written to Debug Register 3 (DR3).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr3 (\r
+  UINTN  Dr3\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%dr3"\r
+    :\r
+    : "r" (Dr3)\r
+    );\r
+  return Dr3;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 4 (DR4).\r
+\r
+  Writes and returns a new value to DR4. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr4 The value to write to Dr4.\r
+\r
+  @return The value written to Debug Register 4 (DR4).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr4 (\r
+  UINTN  Dr4\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%dr4"\r
+    :\r
+    : "r" (Dr4)\r
+    );\r
+  return Dr4;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 5 (DR5).\r
+\r
+  Writes and returns a new value to DR5. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr5 The value to write to Dr5.\r
+\r
+  @return The value written to Debug Register 5 (DR5).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr5 (\r
+  UINTN  Dr5\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%dr5"\r
+    :\r
+    : "r" (Dr5)\r
+    );\r
+  return Dr5;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 6 (DR6).\r
+\r
+  Writes and returns a new value to DR6. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr6 The value to write to Dr6.\r
+\r
+  @return The value written to Debug Register 6 (DR6).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr6 (\r
+  UINTN  Dr6\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%dr6"\r
+    :\r
+    : "r" (Dr6)\r
+    );\r
+  return Dr6;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 7 (DR7).\r
+\r
+  Writes and returns a new value to DR7. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr7 The value to write to Dr7.\r
+\r
+  @return The value written to Debug Register 7 (DR7).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr7 (\r
+  UINTN  Dr7\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movl %0, %%dr7"\r
+    :\r
+    : "r" (Dr7)\r
+    );\r
+  return Dr7;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Code Segment Register (CS).\r
+\r
+  Reads and returns the current value of CS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of CS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadCs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov   %%cs, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Data Segment Register (DS).\r
+\r
+  Reads and returns the current value of DS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of DS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadDs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%ds, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Extra Segment Register (ES).\r
+\r
+  Reads and returns the current value of ES. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of ES.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadEs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%es, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of FS Data Segment Register (FS).\r
+\r
+  Reads and returns the current value of FS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of FS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadFs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%fs, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of GS Data Segment Register (GS).\r
+\r
+  Reads and returns the current value of GS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of GS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadGs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%gs, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Stack Segment Register (SS).\r
+\r
+  Reads and returns the current value of SS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of SS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadSs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%ds, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Task Register (TR).\r
+\r
+  Reads and returns the current value of TR. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of TR.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadTr (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "str  %0"\r
+    : "=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current Global Descriptor Table Register(GDTR) descriptor.\r
+\r
+  Reads and returns the current GDTR descriptor and returns it in Gdtr. This\r
+  function is only available on IA-32 and X64.\r
+\r
+  @param  Gdtr  Pointer to a GDTR descriptor.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86ReadGdtr (\r
+  OUT     IA32_DESCRIPTOR           *Gdtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "sgdt %0"\r
+    : "=m" (*Gdtr)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current Global Descriptor Table Register (GDTR) descriptor.\r
+\r
+  Writes and the current GDTR descriptor specified by Gdtr. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @param  Gdtr  Pointer to a GDTR descriptor.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86WriteGdtr (\r
+  IN      CONST IA32_DESCRIPTOR     *Gdtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "lgdt %0"\r
+    :\r
+    : "m" (*Gdtr)\r
+    );\r
+    \r
+}\r
+\r
+\r
+/**\r
+  Reads the current Interrupt Descriptor Table Register(GDTR) descriptor.\r
+\r
+  Reads and returns the current IDTR descriptor and returns it in Idtr. This\r
+  function is only available on IA-32 and X64.\r
+\r
+  @param  Idtr  Pointer to a IDTR descriptor.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86ReadIdtr (\r
+  OUT     IA32_DESCRIPTOR           *Idtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "sldt  %0"\r
+    : "=m" (*Idtr)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current Interrupt Descriptor Table Register(GDTR) descriptor.\r
+\r
+  Writes the current IDTR descriptor and returns it in Idtr. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @param  Idtr  Pointer to a IDTR descriptor.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86WriteIdtr (\r
+  IN      CONST IA32_DESCRIPTOR     *Idtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "lidt %0"\r
+    :\r
+    : "m" (*Idtr)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Reads the current Local Descriptor Table Register(LDTR) selector.\r
+\r
+  Reads and returns the current 16-bit LDTR descriptor value. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @return The current selector of LDT.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadLdtr (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "sldt  %0"\r
+    : "=g" (Data)   // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Writes the current Local Descriptor Table Register (GDTR) selector.\r
+\r
+  Writes and the current LDTR descriptor specified by Ldtr. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @param  Ldtr  16-bit LDTR selector value.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteLdtr (\r
+  IN      UINT16                    Ldtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "lldtw  %0"\r
+    :\r
+    : "g" (Ldtr)   // %0\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Save the current floating point/SSE/SSE2 context to a buffer.\r
+\r
+  Saves the current floating point/SSE/SSE2 state to the buffer specified by\r
+  Buffer. Buffer must be aligned on a 16-byte boundary. This function is only\r
+  available on IA-32 and X64.\r
+\r
+  @param  Buffer  Pointer to a buffer to save the floating point/SSE/SSE2 context.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86FxSave (\r
+  OUT     IA32_FX_BUFFER            *Buffer\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "fxsave %0"\r
+    :\r
+    : "m" (*Buffer)  // %0\r
+    );    \r
+}\r
+\r
+\r
+/**\r
+  Restores the current floating point/SSE/SSE2 context from a buffer.\r
+\r
+  Restores the current floating point/SSE/SSE2 state from the buffer specified\r
+  by Buffer. Buffer must be aligned on a 16-byte boundary. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @param  Buffer  Pointer to a buffer to save the floating point/SSE/SSE2 context.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86FxRestore (\r
+  IN      CONST IA32_FX_BUFFER      *Buffer\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "fxrstor %0"\r
+    :\r
+    : "m" (*Buffer)  // %0\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #0 (MM0).\r
+\r
+  Reads and returns the current value of MM0. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM0.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm0 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "push %%eax          \n\t"\r
+    "push %%eax          \n\t"\r
+    "movq %%mm0,  (%%esp)\n\t"\r
+    "pop  %%eax          \n\t"\r
+    "pop  %%edx          \n\t"\r
+    : "=A"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #1 (MM1).\r
+\r
+  Reads and returns the current value of MM1. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM1.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm1 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "push %%eax          \n\t"\r
+    "push %%eax          \n\t"\r
+    "movq %%mm1,  (%%esp)\n\t"\r
+    "pop  %%eax          \n\t"\r
+    "pop  %%edx          \n\t"\r
+    : "=A"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #2 (MM2).\r
+\r
+  Reads and returns the current value of MM2. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM2.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm2 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "push %%eax          \n\t"\r
+    "push %%eax          \n\t"\r
+    "movq %%mm2,  (%%esp)\n\t"\r
+    "pop  %%eax          \n\t"\r
+    "pop  %%edx          \n\t"\r
+    : "=A"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #3 (MM3).\r
+\r
+  Reads and returns the current value of MM3. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM3.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm3 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "push %%eax          \n\t"\r
+    "push %%eax          \n\t"\r
+    "movq %%mm3,  (%%esp)\n\t"\r
+    "pop  %%eax          \n\t"\r
+    "pop  %%edx          \n\t"\r
+    : "=A"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #4 (MM4).\r
+\r
+  Reads and returns the current value of MM4. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM4.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm4 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "push %%eax          \n\t"\r
+    "push %%eax          \n\t"\r
+    "movq %%mm4,  (%%esp)\n\t"\r
+    "pop  %%eax          \n\t"\r
+    "pop  %%edx          \n\t"\r
+    : "=A"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #5 (MM5).\r
+\r
+  Reads and returns the current value of MM5. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM5.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm5 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "push %%eax          \n\t"\r
+    "push %%eax          \n\t"\r
+    "movq %%mm5,  (%%esp)\n\t"\r
+    "pop  %%eax          \n\t"\r
+    "pop  %%edx          \n\t"\r
+    : "=A"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #6 (MM6).\r
+\r
+  Reads and returns the current value of MM6. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM6.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm6 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "push %%eax          \n\t"\r
+    "push %%eax          \n\t"\r
+    "movq %%mm6,  (%%esp)\n\t"\r
+    "pop  %%eax          \n\t"\r
+    "pop  %%edx          \n\t"\r
+    : "=A"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #7 (MM7).\r
+\r
+  Reads and returns the current value of MM7. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM7.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm7 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "push %%eax          \n\t"\r
+    "push %%eax          \n\t"\r
+    "movq %%mm7,  (%%esp)\n\t"\r
+    "pop  %%eax          \n\t"\r
+    "pop  %%edx          \n\t"\r
+    : "=A"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #0 (MM0).\r
+\r
+  Writes the current value of MM0. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM0.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm0 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movq %0, %%mm0"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #1 (MM1).\r
+\r
+  Writes the current value of MM1. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM1.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm1 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movq %0, %%mm1"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #2 (MM2).\r
+\r
+  Writes the current value of MM2. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM2.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm2 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movq %0, %%mm2"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #3 (MM3).\r
+\r
+  Writes the current value of MM3. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM3.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm3 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movq %0, %%mm3"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #4 (MM4).\r
+\r
+  Writes the current value of MM4. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM4.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm4 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movq %0, %%mm4"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #5 (MM5).\r
+\r
+  Writes the current value of MM5. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM5.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm5 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movq %0, %%mm5"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #6 (MM6).\r
+\r
+  Writes the current value of MM6. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM6.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm6 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movq %0, %%mm6"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #7 (MM7).\r
+\r
+  Writes the current value of MM7. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM7.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm7 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movq %0, %%mm7"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Time Stamp Counter (TSC).\r
+\r
+  Reads and returns the current value of TSC. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of TSC\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadTsc (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "rdtsc"\r
+    : "=A" (Data)\r
+    );\r
+  \r
+  return Data;  \r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of a Performance Counter (PMC).\r
+\r
+  Reads and returns the current value of performance counter specified by\r
+  Index. This function is only available on IA-32 and X64.\r
+\r
+  @param  Index The 32-bit Performance Counter index to read.\r
+\r
+  @return The value of the PMC specified by Index.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadPmc (\r
+  IN      UINT32                    Index\r
+  )\r
+{\r
+  UINT64  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "rdpmc"\r
+    : "=A" (Data)\r
+    : "c"  (Index)\r
+    );\r
+  \r
+  return Data;  \r
+}\r
+\r
+\r
+\r
+\r
+/**\r
+  Executes a WBINVD instruction.\r
+\r
+  Executes a WBINVD instruction. This function is only available on IA-32 and\r
+  X64.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWbinvd (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("wbinvd":::"memory");\r
+}\r
+\r
+\r
+/**\r
+  Executes a INVD instruction.\r
+\r
+  Executes a INVD instruction. This function is only available on IA-32 and\r
+  X64.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmInvd (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("invd":::"memory");\r
+    \r
+}\r
+\r
+\r
+/**\r
+  Flushes a cache line from all the instruction and data caches within the\r
+  coherency domain of the CPU.\r
+\r
+  Flushed the cache line specified by LinearAddress, and returns LinearAddress.\r
+  This function is only available on IA-32 and X64.\r
+\r
+  @param  LinearAddress The address of the cache line to flush. If the CPU is\r
+                        in a physical addressing mode, then LinearAddress is a\r
+                        physical address. If the CPU is in a virtual\r
+                        addressing mode, then LinearAddress is a virtual\r
+                        address.\r
+\r
+  @return LinearAddress\r
+**/\r
+VOID *\r
+EFIAPI\r
+AsmFlushCacheLine (\r
+  IN      VOID                      *LinearAddress\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "clflush (%0)"\r
+    : "+a" (LinearAddress) \r
+    : \r
+    : "memory"\r
+    );\r
+    \r
+    return LinearAddress;\r
+}\r
+\r
+\r
diff --git a/MdePkg/Library/BaseLib/Ia32/Invd.S b/MdePkg/Library/BaseLib/Ia32/Invd.S
deleted file mode 100644 (file)
index 76d9017..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   Invd.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmInvd function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmInvd)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmInvd (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmInvd):\r
-    invd\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCr0.S b/MdePkg/Library/BaseLib/Ia32/ReadCr0.S
deleted file mode 100644 (file)
index aadf088..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCr0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadCr0)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadCr0 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadCr0):\r
-    movl    %cr0, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCr2.S b/MdePkg/Library/BaseLib/Ia32/ReadCr2.S
deleted file mode 100644 (file)
index 0b32673..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCr2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadCr2)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadCr2 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadCr2):\r
-    movl    %cr2, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCr3.S b/MdePkg/Library/BaseLib/Ia32/ReadCr3.S
deleted file mode 100644 (file)
index d29fe90..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCr3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadCr3)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadCr3 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadCr3):\r
-    movl    %cr3, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCr4.S b/MdePkg/Library/BaseLib/Ia32/ReadCr4.S
deleted file mode 100644 (file)
index 5754f80..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCr4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadCr4)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadCr4 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadCr4):\r
-    movl    %cr4, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadCs.S b/MdePkg/Library/BaseLib/Ia32/ReadCs.S
deleted file mode 100644 (file)
index e245065..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadCs)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadCs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadCs):\r
-    movl    %cs, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr0.S b/MdePkg/Library/BaseLib/Ia32/ReadDr0.S
deleted file mode 100644 (file)
index 2bf34e0..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDr0)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr0 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDr0):\r
-    movl    %dr0, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr1.S b/MdePkg/Library/BaseLib/Ia32/ReadDr1.S
deleted file mode 100644 (file)
index b608ffa..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr1.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDr1)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr1 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDr1):\r
-    movl    %dr1, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr2.S b/MdePkg/Library/BaseLib/Ia32/ReadDr2.S
deleted file mode 100644 (file)
index b4a3a91..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDr2)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr2 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDr2):\r
-    movl    %dr2, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr3.S b/MdePkg/Library/BaseLib/Ia32/ReadDr3.S
deleted file mode 100644 (file)
index 47ebded..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDr3)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr3 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDr3):\r
-    movl    %dr3, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr4.S b/MdePkg/Library/BaseLib/Ia32/ReadDr4.S
deleted file mode 100644 (file)
index e8e7b38..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDr4)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr4 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDr4):\r
-    movl    %dr4, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr5.S b/MdePkg/Library/BaseLib/Ia32/ReadDr5.S
deleted file mode 100644 (file)
index 280cdf6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr5.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDr5)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr5 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDr5):\r
-    movl    %dr5, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr6.S b/MdePkg/Library/BaseLib/Ia32/ReadDr6.S
deleted file mode 100644 (file)
index c702970..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr6.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDr6)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr6 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDr6):\r
-    movl    %dr6, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr7.S b/MdePkg/Library/BaseLib/Ia32/ReadDr7.S
deleted file mode 100644 (file)
index 52e225a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr7.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDr7)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr7 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDr7):\r
-    movl    %dr7, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDs.S b/MdePkg/Library/BaseLib/Ia32/ReadDs.S
deleted file mode 100644 (file)
index 39ec028..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadDs)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadDs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadDs):\r
-    movl    %ds, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadEflags.S b/MdePkg/Library/BaseLib/Ia32/ReadEflags.S
deleted file mode 100644 (file)
index 9796243..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadEflags.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadEflags function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadEflags)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadEflags (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadEflags):\r
-    pushfl\r
-    pop     %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadEs.S b/MdePkg/Library/BaseLib/Ia32/ReadEs.S
deleted file mode 100644 (file)
index 80c7604..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadEs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadEs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadEs)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadEs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadEs):\r
-    movl    %es, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadFs.S b/MdePkg/Library/BaseLib/Ia32/ReadFs.S
deleted file mode 100644 (file)
index 57a99db..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadFs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadFs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadFs)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadFs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadFs):\r
-    movl    %fs, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadGdtr.S b/MdePkg/Library/BaseLib/Ia32/ReadGdtr.S
deleted file mode 100644 (file)
index 61b4e2e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadGdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalX86ReadGdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(InternalX86ReadGdtr)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86ReadGdtr (\r
-#   OUT IA32_DESCRIPTOR  *Gdtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(InternalX86ReadGdtr):\r
-    movl    4(%esp), %eax\r
-    sgdt    (%eax)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadGs.S b/MdePkg/Library/BaseLib/Ia32/ReadGs.S
deleted file mode 100644 (file)
index d3f3a4c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadGs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadGs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadGs)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadGs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadGs):\r
-    movl    %gs, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadIdtr.S b/MdePkg/Library/BaseLib/Ia32/ReadIdtr.S
deleted file mode 100644 (file)
index fefe422..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadIdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalX86ReadIdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(InternalX86ReadIdtr)\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86ReadIdtr (\r
-#   OUT IA32_DESCRIPTOR  *Idtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(InternalX86ReadIdtr):\r
-    movl    4(%esp), %eax\r
-    sidt    (%eax)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadLdtr.S b/MdePkg/Library/BaseLib/Ia32/ReadLdtr.S
deleted file mode 100644 (file)
index 5818427..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadLdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadLdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadLdtr)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadLdtr (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadLdtr):\r
-    sldt   %ax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm0.S b/MdePkg/Library/BaseLib/Ia32/ReadMm0.S
deleted file mode 100644 (file)
index 3dbe426..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadMm0)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadMm0 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadMm0):\r
-    push    %eax\r
-    push    %eax\r
-    movq    %mm0, (%esp)\r
-    pop     %eax\r
-    pop     %edx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm1.S b/MdePkg/Library/BaseLib/Ia32/ReadMm1.S
deleted file mode 100644 (file)
index 7adbed1..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm1.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadMm1)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadMm1 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadMm1):\r
-    push    %eax\r
-    push    %eax\r
-    movq    %mm1, (%esp)\r
-    pop     %eax\r
-    pop     %edx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm2.S b/MdePkg/Library/BaseLib/Ia32/ReadMm2.S
deleted file mode 100644 (file)
index beba09d..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadMm2)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadMm2 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadMm2):\r
-    push    %eax\r
-    push    %eax\r
-    movq    %mm2, (%esp)\r
-    pop     %eax\r
-    pop     %edx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm3.S b/MdePkg/Library/BaseLib/Ia32/ReadMm3.S
deleted file mode 100644 (file)
index 2d81fd1..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadMm3)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadMm3 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadMm3):\r
-    push    %eax\r
-    push    %eax\r
-    movq    %mm3, (%esp)\r
-    pop     %eax\r
-    pop     %edx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm4.S b/MdePkg/Library/BaseLib/Ia32/ReadMm4.S
deleted file mode 100644 (file)
index 7a197b9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadMm4)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadMm4 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadMm4):\r
-    push    %eax\r
-    push    %eax\r
-    movq    %mm4, (%esp)\r
-    pop     %eax\r
-    pop     %edx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm5.S b/MdePkg/Library/BaseLib/Ia32/ReadMm5.S
deleted file mode 100644 (file)
index 1d2c595..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm5.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadMm5)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadMm5 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadMm5):\r
-    push    %eax\r
-    push    %eax\r
-    movq    %mm5, (%esp)\r
-    pop     %eax\r
-    pop     %edx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm6.S b/MdePkg/Library/BaseLib/Ia32/ReadMm6.S
deleted file mode 100644 (file)
index a6d0bbe..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm6.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadMm6)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadMm6 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadMm6):\r
-    push    %eax\r
-    push    %eax\r
-    movq    %mm6, (%esp)\r
-    pop     %eax\r
-    pop     %edx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadMm7.S b/MdePkg/Library/BaseLib/Ia32/ReadMm7.S
deleted file mode 100644 (file)
index 7c36f59..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm7.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadMm7)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadMm7 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadMm7):\r
-    push    %eax\r
-    push    %eax\r
-    movq    %mm7, (%esp)\r
-    pop     %eax\r
-    pop     %edx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadPmc.S b/MdePkg/Library/BaseLib/Ia32/ReadPmc.S
deleted file mode 100644 (file)
index 124f5ef..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadPmc.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadPmc function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadPmc)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadPmc (\r
-#   IN UINT32   PmcIndex\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadPmc):\r
-    movl    4(%esp), %ecx\r
-    rdpmc\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/ReadTsc.S b/MdePkg/Library/BaseLib/Ia32/ReadTsc.S
deleted file mode 100644 (file)
index 8a44a24..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadTsc.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadTsc function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(AsmReadTsc)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadTsc (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(AsmReadTsc):\r
-    rdtsc\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/Wbinvd.S b/MdePkg/Library/BaseLib/Ia32/Wbinvd.S
deleted file mode 100644 (file)
index c562586..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   Wbinvd.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWbinvd function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWbinvd (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWbinvd)\r
-ASM_PFX(AsmWbinvd):\r
-    wbinvd\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteCr0.S b/MdePkg/Library/BaseLib/Ia32/WriteCr0.S
deleted file mode 100644 (file)
index e98cdb6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteCr0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteCr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr0 (\r
-#   IN      UINTN                     Cr0\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteCr0)\r
-ASM_PFX(AsmWriteCr0):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %cr0\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteCr2.S b/MdePkg/Library/BaseLib/Ia32/WriteCr2.S
deleted file mode 100644 (file)
index f90da89..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteCr2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteCr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr2 (\r
-#   IN      UINTN                     Cr2\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteCr2)\r
-ASM_PFX(AsmWriteCr2):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %cr2\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteCr3.S b/MdePkg/Library/BaseLib/Ia32/WriteCr3.S
deleted file mode 100644 (file)
index 8b3ebeb..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteCr3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteCr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr3 (\r
-#   IN      UINTN                     Cr3\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteCr3)\r
-ASM_PFX(AsmWriteCr3):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %cr3\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteCr4.S b/MdePkg/Library/BaseLib/Ia32/WriteCr4.S
deleted file mode 100644 (file)
index 2ab8ce6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteCr4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteCr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr4 (\r
-#   IN      UINTN                     Cr4\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteCr4)\r
-ASM_PFX(AsmWriteCr4):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %cr4\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr0.S b/MdePkg/Library/BaseLib/Ia32/WriteDr0.S
deleted file mode 100644 (file)
index daf3285..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr0 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr0)\r
-ASM_PFX(AsmWriteDr0):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %dr0\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr1.S b/MdePkg/Library/BaseLib/Ia32/WriteDr1.S
deleted file mode 100644 (file)
index 19b608a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr1.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr1 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr1)\r
-ASM_PFX(AsmWriteDr1):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %dr1\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr2.S b/MdePkg/Library/BaseLib/Ia32/WriteDr2.S
deleted file mode 100644 (file)
index 8c07524..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr2 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr2)\r
-ASM_PFX(AsmWriteDr2):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %dr2\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr3.S b/MdePkg/Library/BaseLib/Ia32/WriteDr3.S
deleted file mode 100644 (file)
index 752f299..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr3 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr3)\r
-ASM_PFX(AsmWriteDr3):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %dr3\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr4.S b/MdePkg/Library/BaseLib/Ia32/WriteDr4.S
deleted file mode 100644 (file)
index ab06b6d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr4 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr4)\r
-ASM_PFX(AsmWriteDr4):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %dr4\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr5.S b/MdePkg/Library/BaseLib/Ia32/WriteDr5.S
deleted file mode 100644 (file)
index 2acd841..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr5.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr5 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr5)\r
-ASM_PFX(AsmWriteDr5):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %dr5\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr6.S b/MdePkg/Library/BaseLib/Ia32/WriteDr6.S
deleted file mode 100644 (file)
index 6b96f00..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr6.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr6 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr6)\r
-ASM_PFX(AsmWriteDr6):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %dr6\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr7.S b/MdePkg/Library/BaseLib/Ia32/WriteDr7.S
deleted file mode 100644 (file)
index 900985b..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr7.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr7 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr7)\r
-ASM_PFX(AsmWriteDr7):\r
-    movl    4(%esp), %eax\r
-    movl    %eax, %dr7\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteGdtr.S b/MdePkg/Library/BaseLib/Ia32/WriteGdtr.S
deleted file mode 100644 (file)
index b5265e3..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteGdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalX86WriteGdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86WriteGdtr (\r
-#   OUT IA32_DESCRIPTOR  *Gdtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalX86WriteGdtr)\r
-ASM_PFX(InternalX86WriteGdtr):\r
-    movl    4(%esp), %eax\r
-    lgdt    (%eax)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteIdtr.S b/MdePkg/Library/BaseLib/Ia32/WriteIdtr.S
deleted file mode 100644 (file)
index 4dad958..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteIdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalX86WriteIdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86WriteIdtr (\r
-#   OUT IA32_DESCRIPTOR  *Idtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalX86WriteIdtr)\r
-ASM_PFX(InternalX86WriteIdtr):\r
-    movl    4(%esp), %eax\r
-    pushfl\r
-    cli\r
-    lidt    (%eax)\r
-    popfl\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteLdtr.S b/MdePkg/Library/BaseLib/Ia32/WriteLdtr.S
deleted file mode 100644 (file)
index 2f6ce32..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteLdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteLdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteLdtr (\r
-#   IN UINT16 Ldtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteLdtr)\r
-ASM_PFX(AsmWriteLdtr):\r
-    movl    4(%esp), %eax\r
-    lldtw   %ax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm0.S b/MdePkg/Library/BaseLib/Ia32/WriteMm0.S
deleted file mode 100644 (file)
index 2b7d758..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm0 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm0)\r
-ASM_PFX(AsmWriteMm0):\r
-    movq    4(%esp), %mm0\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm1.S b/MdePkg/Library/BaseLib/Ia32/WriteMm1.S
deleted file mode 100644 (file)
index 8cf8489..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm1.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm1 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm1)\r
-ASM_PFX(AsmWriteMm1):\r
-    movq    4(%esp), %mm1\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm2.S b/MdePkg/Library/BaseLib/Ia32/WriteMm2.S
deleted file mode 100644 (file)
index 9149fb3..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm2 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm2)\r
-ASM_PFX(AsmWriteMm2):\r
-    movq    4(%esp), %mm2\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm3.S b/MdePkg/Library/BaseLib/Ia32/WriteMm3.S
deleted file mode 100644 (file)
index a898afa..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm3 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm3)\r
-ASM_PFX(AsmWriteMm3):\r
-    movq    4(%esp), %mm3\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm4.S b/MdePkg/Library/BaseLib/Ia32/WriteMm4.S
deleted file mode 100644 (file)
index eb78e1f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm4 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm4)\r
-ASM_PFX(AsmWriteMm4):\r
-    movq    4(%esp), %mm4\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm5.S b/MdePkg/Library/BaseLib/Ia32/WriteMm5.S
deleted file mode 100644 (file)
index aff39be..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm5.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm5 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm5)\r
-ASM_PFX(AsmWriteMm5):\r
-    movq    4(%esp), %mm5\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm6.S b/MdePkg/Library/BaseLib/Ia32/WriteMm6.S
deleted file mode 100644 (file)
index a4412b5..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm6.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm6 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm6)\r
-ASM_PFX(AsmWriteMm6):\r
-    movq    4(%esp), %mm6\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/Ia32/WriteMm7.S b/MdePkg/Library/BaseLib/Ia32/WriteMm7.S
deleted file mode 100644 (file)
index a9ce09d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm7.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm7 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm7)\r
-ASM_PFX(AsmWriteMm7):\r
-    movq    4(%esp), %mm7\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/CpuPause.S b/MdePkg/Library/BaseLib/X64/CpuPause.S
deleted file mode 100644 (file)
index e1ced4f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#------------------------------------------------------------------------------ ;\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   CpuPause.S\r
-#\r
-# Abstract:\r
-#\r
-#   CpuPause function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# CpuPause (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(CpuPause)\r
-ASM_PFX(CpuPause):\r
-    pause\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/DisableInterrupts.S b/MdePkg/Library/BaseLib/X64/DisableInterrupts.S
deleted file mode 100644 (file)
index 14ce320..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   DisableInterrupts.S\r
-#\r
-# Abstract:\r
-#\r
-#   DisableInterrupts function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# DisableInterrupts (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(DisableInterrupts)\r
-ASM_PFX(DisableInterrupts):\r
-    cli\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/EnableInterrupts.S b/MdePkg/Library/BaseLib/X64/EnableInterrupts.S
deleted file mode 100644 (file)
index 698977f..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   EnableInterrupts.S\r
-#\r
-# Abstract:\r
-#\r
-#   EnableInterrupts function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# EnableInterrupts (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(EnableInterrupts)\r
-ASM_PFX(EnableInterrupts):\r
-    sti\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/FlushCacheLine.S b/MdePkg/Library/BaseLib/X64/FlushCacheLine.S
deleted file mode 100644 (file)
index 693d2e4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   FlushCacheLine.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmFlushCacheLine function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID *\r
-# EFIAPI \r
-# AsmFlushCacheLine (\r
-#   IN      VOID                      *LinearAddress\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmFlushCacheLine)\r
-ASM_PFX(AsmFlushCacheLine):\r
-    clflush (%rcx)\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/FxRestore.S b/MdePkg/Library/BaseLib/X64/FxRestore.S
deleted file mode 100644 (file)
index 028e8b2..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   FxRestore.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmFxRestore function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86FxRestore (\r
-#   IN CONST IA32_FX_BUFFER *Buffer\r
-#   )#\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalX86FxRestore)\r
-ASM_PFX(InternalX86FxRestore):\r
-    fxrstor (%rcx)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/FxSave.S b/MdePkg/Library/BaseLib/X64/FxSave.S
deleted file mode 100644 (file)
index 0801427..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   FxSave.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmFxSave function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86FxSave (\r
-#   OUT IA32_FX_BUFFER *Buffer\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalX86FxSave)\r
-ASM_PFX(InternalX86FxSave):\r
-    fxsave  (%rcx)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/GccInline.c b/MdePkg/Library/BaseLib/X64/GccInline.c
new file mode 100644 (file)
index 0000000..d559e3b
--- /dev/null
@@ -0,0 +1,1806 @@
+/** @file\r
+  GCC inline implementation of BaseLib processor specific functions.\r
+  \r
+  Copyright (c) 2006 - 2010, Intel Corporation<BR>\r
+  Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR> \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
+**/\r
+\r
+\r
+#include "BaseLibInternals.h"\r
+\r
+\r
+\r
+\r
+/**\r
+  Used to serialize load and store operations.\r
+\r
+  All loads and stores that proceed calls to this function are guaranteed to be\r
+  globally visible when this function returns.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+MemoryFence (\r
+  VOID\r
+  )\r
+{\r
+  // This is a little bit of overkill and it is more about the compiler that it is\r
+  // actually processor syncronization. This is like the _ReadWriteBarrier \r
+  // Microsft specific intrinsic\r
+  __asm__ __volatile__ ("":::"memory");\r
+}\r
+\r
+\r
+/**\r
+  Enables CPU interrupts.\r
+\r
+  Enables CPU interrupts.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+EnableInterrupts (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("sti"::: "memory");\r
+}\r
+\r
+\r
+/**\r
+  Disables CPU interrupts.\r
+\r
+  Disables CPU interrupts.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+DisableInterrupts (\r
+  VOID\r
+  )\r
+{  \r
+  __asm__ __volatile__ ("cli"::: "memory");\r
+}\r
+\r
+\r
+\r
+\r
+/**\r
+  Requests CPU to pause for a short period of time.\r
+\r
+  Requests CPU to pause for a short period of time. Typically used in MP\r
+  systems to prevent memory starvation while waiting for a spin lock.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+CpuPause (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("pause");\r
+}\r
+\r
+\r
+/**\r
+  Generates a breakpoint on the CPU.\r
+\r
+  Generates a breakpoint on the CPU. The breakpoint must be implemented such\r
+  that code can resume normal execution after the breakpoint.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+CpuBreakpoint (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("int $3");\r
+}\r
+\r
+\r
+\r
+/**\r
+  Returns a 64-bit Machine Specific Register(MSR).\r
+\r
+  Reads and returns the 64-bit MSR specified by Index. No parameter checking is\r
+  performed on Index, and some Index values may cause CPU exceptions. The\r
+  caller must either guarantee that Index is valid, or the caller must set up\r
+  exception handlers to catch the exceptions. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @param  Index The 32-bit MSR index to read.\r
+\r
+  @return The value of the MSR identified by Index.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMsr64 (\r
+  IN      UINT32                    Index\r
+  )\r
+{\r
+  UINT32 LowData;\r
+  UINT32 HighData;\r
+  \r
+  __asm__ __volatile__ (\r
+    "rdmsr"\r
+    : "=a" (LowData),   // %0\r
+      "=d" (HighData)   // %1\r
+    : "c"  (Index)      // %2\r
+    );\r
+    \r
+  return (((UINT64)HighData) << 32) | LowData;\r
+}\r
+\r
+/**\r
+  Writes a 64-bit value to a Machine Specific Register(MSR), and returns the\r
+  value.\r
+\r
+  Writes the 64-bit value specified by Value to the MSR specified by Index. The\r
+  64-bit value written to the MSR is returned. No parameter checking is\r
+  performed on Index or Value, and some of these may cause CPU exceptions. The\r
+  caller must either guarantee that Index and Value are valid, or the caller\r
+  must establish proper exception handlers. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @param  Index The 32-bit MSR index to write.\r
+  @param  Value The 64-bit value to write to the MSR.\r
+\r
+  @return Value\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmWriteMsr64 (\r
+  IN      UINT32                    Index,\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  UINT32 LowData;\r
+  UINT32 HighData;\r
+\r
+  LowData  = (UINT32)(Value);\r
+  HighData = (UINT32)(Value >> 32);\r
+  \r
+  __asm__ __volatile__ (\r
+    "wrmsr"\r
+    :\r
+    : "c" (Index),\r
+      "a" (LowData),\r
+      "d" (HighData)\r
+    );\r
+    \r
+  return Value;\r
+}\r
+\r
+\r
+\r
+/**\r
+  Reads the current value of the EFLAGS register.\r
+\r
+  Reads and returns the current value of the EFLAGS register. This function is\r
+  only available on IA-32 and X64. This returns a 32-bit value on IA-32 and a\r
+  64-bit value on X64.\r
+\r
+  @return EFLAGS on IA-32 or RFLAGS on X64.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadEflags (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Eflags;\r
+  \r
+  __asm__ __volatile__ (\r
+    "pushfq         \n\t"\r
+    "pop     %0         "\r
+    : "=r" (Eflags)       // %0\r
+    );\r
+    \r
+  return Eflags;\r
+}\r
+\r
+\r
+\r
+/**\r
+  Reads the current value of the Control Register 0 (CR0).\r
+\r
+  Reads and returns the current value of CR0. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of the Control Register 0 (CR0).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadCr0 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN   Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%cr0,%0" \r
+    : "=r" (Data)           // %0\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of the Control Register 2 (CR2).\r
+\r
+  Reads and returns the current value of CR2. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of the Control Register 2 (CR2).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadCr2 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%cr2,  %0" \r
+    : "=r" (Data)           // %0\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+/**\r
+  Reads the current value of the Control Register 3 (CR3).\r
+\r
+  Reads and returns the current value of CR3. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of the Control Register 3 (CR3).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadCr3 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%cr3,  %0" \r
+    : "=r" (Data)           // %0\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of the Control Register 4 (CR4).\r
+\r
+  Reads and returns the current value of CR4. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of the Control Register 4 (CR4).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadCr4 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%cr4,  %0" \r
+    : "=r" (Data)           // %0\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Control Register 0 (CR0).\r
+\r
+  Writes and returns a new value to CR0. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Cr0 The value to write to CR0.\r
+\r
+  @return The value written to CR0.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteCr0 (\r
+  UINTN  Cr0\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%cr0"\r
+    :\r
+    : "r" (Cr0)\r
+    );\r
+  return Cr0;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Control Register 2 (CR2).\r
+\r
+  Writes and returns a new value to CR2. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Cr2 The value to write to CR2.\r
+\r
+  @return The value written to CR2.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteCr2 (\r
+  UINTN  Cr2\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%cr2"\r
+    :\r
+    : "r" (Cr2)\r
+    );\r
+  return Cr2;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Control Register 3 (CR3).\r
+\r
+  Writes and returns a new value to CR3. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Cr3 The value to write to CR3.\r
+\r
+  @return The value written to CR3.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteCr3 (\r
+  UINTN  Cr3\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%cr3"\r
+    :\r
+    : "r" (Cr3)\r
+    );\r
+  return Cr3;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Control Register 4 (CR4).\r
+\r
+  Writes and returns a new value to CR4. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Cr4 The value to write to CR4.\r
+\r
+  @return The value written to CR4.\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteCr4 (\r
+  UINTN  Cr4\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%cr4"\r
+    :\r
+    : "r" (Cr4)\r
+    );\r
+  return Cr4;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 0 (DR0).\r
+\r
+  Reads and returns the current value of DR0. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 0 (DR0).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr0 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%dr0, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 1 (DR1).\r
+\r
+  Reads and returns the current value of DR1. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 1 (DR1).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr1 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%dr1, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 2 (DR2).\r
+\r
+  Reads and returns the current value of DR2. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 2 (DR2).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr2 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%dr2, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 3 (DR3).\r
+\r
+  Reads and returns the current value of DR3. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 3 (DR3).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr3 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%dr3, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 4 (DR4).\r
+\r
+  Reads and returns the current value of DR4. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 4 (DR4).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr4 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%dr4, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 5 (DR5).\r
+\r
+  Reads and returns the current value of DR5. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 5 (DR5).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr5 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%dr5, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 6 (DR6).\r
+\r
+  Reads and returns the current value of DR6. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 6 (DR6).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr6 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%dr6, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Debug Register 7 (DR7).\r
+\r
+  Reads and returns the current value of DR7. This function is only available\r
+  on IA-32 and X64. This returns a 32-bit value on IA-32 and a 64-bit value on\r
+  X64.\r
+\r
+  @return The value of Debug Register 7 (DR7).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmReadDr7 (\r
+  VOID\r
+  )\r
+{\r
+  UINTN Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%dr7, %0"\r
+    : "=r" (Data)\r
+    );\r
+  \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 0 (DR0).\r
+\r
+  Writes and returns a new value to DR0. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr0 The value to write to Dr0.\r
+\r
+  @return The value written to Debug Register 0 (DR0).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr0 (\r
+  UINTN  Dr0\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%dr0"\r
+    :\r
+    : "r" (Dr0)\r
+    );\r
+  return Dr0;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 1 (DR1).\r
+\r
+  Writes and returns a new value to DR1. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr1 The value to write to Dr1.\r
+\r
+  @return The value written to Debug Register 1 (DR1).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr1 (\r
+  UINTN  Dr1\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%dr1"\r
+    :\r
+    : "r" (Dr1)\r
+    );\r
+  return Dr1;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 2 (DR2).\r
+\r
+  Writes and returns a new value to DR2. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr2 The value to write to Dr2.\r
+\r
+  @return The value written to Debug Register 2 (DR2).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr2 (\r
+  UINTN  Dr2\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%dr2"\r
+    :\r
+    : "r" (Dr2)\r
+    );\r
+  return Dr2;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 3 (DR3).\r
+\r
+  Writes and returns a new value to DR3. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr3 The value to write to Dr3.\r
+\r
+  @return The value written to Debug Register 3 (DR3).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr3 (\r
+  UINTN  Dr3\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%dr3"\r
+    :\r
+    : "r" (Dr3)\r
+    );\r
+  return Dr3;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 4 (DR4).\r
+\r
+  Writes and returns a new value to DR4. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr4 The value to write to Dr4.\r
+\r
+  @return The value written to Debug Register 4 (DR4).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr4 (\r
+  UINTN  Dr4\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%dr4"\r
+    :\r
+    : "r" (Dr4)\r
+    );\r
+  return Dr4;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 5 (DR5).\r
+\r
+  Writes and returns a new value to DR5. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr5 The value to write to Dr5.\r
+\r
+  @return The value written to Debug Register 5 (DR5).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr5 (\r
+  UINTN  Dr5\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%dr5"\r
+    :\r
+    : "r" (Dr5)\r
+    );\r
+  return Dr5;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 6 (DR6).\r
+\r
+  Writes and returns a new value to DR6. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr6 The value to write to Dr6.\r
+\r
+  @return The value written to Debug Register 6 (DR6).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr6 (\r
+  UINTN  Dr6\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%dr6"\r
+    :\r
+    : "r" (Dr6)\r
+    );\r
+  return Dr6;\r
+}\r
+\r
+\r
+/**\r
+  Writes a value to Debug Register 7 (DR7).\r
+\r
+  Writes and returns a new value to DR7. This function is only available on\r
+  IA-32 and X64. This writes a 32-bit value on IA-32 and a 64-bit value on X64.\r
+\r
+  @param  Dr7 The value to write to Dr7.\r
+\r
+  @return The value written to Debug Register 7 (DR7).\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmWriteDr7 (\r
+  UINTN  Dr7\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mov  %0, %%dr7"\r
+    :\r
+    : "r" (Dr7)\r
+    );\r
+  return Dr7;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Code Segment Register (CS).\r
+\r
+  Reads and returns the current value of CS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of CS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadCs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov   %%cs, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Data Segment Register (DS).\r
+\r
+  Reads and returns the current value of DS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of DS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadDs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%ds, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Extra Segment Register (ES).\r
+\r
+  Reads and returns the current value of ES. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of ES.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadEs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%es, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of FS Data Segment Register (FS).\r
+\r
+  Reads and returns the current value of FS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of FS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadFs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%fs, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of GS Data Segment Register (GS).\r
+\r
+  Reads and returns the current value of GS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of GS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadGs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%gs, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Stack Segment Register (SS).\r
+\r
+  Reads and returns the current value of SS. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of SS.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadSs (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "mov  %%ds, %0"\r
+    :"=a" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Task Register (TR).\r
+\r
+  Reads and returns the current value of TR. This function is only available on\r
+  IA-32 and X64.\r
+\r
+  @return The current value of TR.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadTr (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "str  %0"\r
+    : "=r" (Data)\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current Global Descriptor Table Register(GDTR) descriptor.\r
+\r
+  Reads and returns the current GDTR descriptor and returns it in Gdtr. This\r
+  function is only available on IA-32 and X64.\r
+\r
+  @param  Gdtr  Pointer to a GDTR descriptor.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86ReadGdtr (\r
+  OUT     IA32_DESCRIPTOR           *Gdtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "sgdt %0"\r
+    : "=m" (*Gdtr)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current Global Descriptor Table Register (GDTR) descriptor.\r
+\r
+  Writes and the current GDTR descriptor specified by Gdtr. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @param  Gdtr  Pointer to a GDTR descriptor.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86WriteGdtr (\r
+  IN      CONST IA32_DESCRIPTOR     *Gdtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "lgdt %0"\r
+    :\r
+    : "m" (*Gdtr)\r
+    );\r
+    \r
+}\r
+\r
+\r
+/**\r
+  Reads the current Interrupt Descriptor Table Register(GDTR) descriptor.\r
+\r
+  Reads and returns the current IDTR descriptor and returns it in Idtr. This\r
+  function is only available on IA-32 and X64.\r
+\r
+  @param  Idtr  Pointer to a IDTR descriptor.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86ReadIdtr (\r
+  OUT     IA32_DESCRIPTOR           *Idtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "sldt  %0"\r
+    : "=m" (*Idtr)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current Interrupt Descriptor Table Register(GDTR) descriptor.\r
+\r
+  Writes the current IDTR descriptor and returns it in Idtr. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @param  Idtr  Pointer to a IDTR descriptor.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86WriteIdtr (\r
+  IN      CONST IA32_DESCRIPTOR     *Idtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "lidt %0"\r
+    :\r
+    : "m" (*Idtr)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Reads the current Local Descriptor Table Register(LDTR) selector.\r
+\r
+  Reads and returns the current 16-bit LDTR descriptor value. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @return The current selector of LDT.\r
+\r
+**/\r
+UINT16\r
+EFIAPI\r
+AsmReadLdtr (\r
+  VOID\r
+  )\r
+{\r
+  UINT16  Data;\r
+  \r
+  __asm__ __volatile__ (\r
+    "sldt  %0"\r
+    : "=g" (Data)   // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Writes the current Local Descriptor Table Register (GDTR) selector.\r
+\r
+  Writes and the current LDTR descriptor specified by Ldtr. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @param  Ldtr  16-bit LDTR selector value.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteLdtr (\r
+  IN      UINT16                    Ldtr\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "lldtw  %0"\r
+    :\r
+    : "g" (Ldtr)   // %0\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Save the current floating point/SSE/SSE2 context to a buffer.\r
+\r
+  Saves the current floating point/SSE/SSE2 state to the buffer specified by\r
+  Buffer. Buffer must be aligned on a 16-byte boundary. This function is only\r
+  available on IA-32 and X64.\r
+\r
+  @param  Buffer  Pointer to a buffer to save the floating point/SSE/SSE2 context.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86FxSave (\r
+  OUT     IA32_FX_BUFFER            *Buffer\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "fxsave %0"\r
+    :\r
+    : "m" (*Buffer)  // %0\r
+    );    \r
+}\r
+\r
+\r
+/**\r
+  Restores the current floating point/SSE/SSE2 context from a buffer.\r
+\r
+  Restores the current floating point/SSE/SSE2 state from the buffer specified\r
+  by Buffer. Buffer must be aligned on a 16-byte boundary. This function is\r
+  only available on IA-32 and X64.\r
+\r
+  @param  Buffer  Pointer to a buffer to save the floating point/SSE/SSE2 context.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+InternalX86FxRestore (\r
+  IN      CONST IA32_FX_BUFFER      *Buffer\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "fxrstor %0"\r
+    :\r
+    : "m" (*Buffer)  // %0\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #0 (MM0).\r
+\r
+  Reads and returns the current value of MM0. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM0.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm0 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "movd   %%mm0,  %0    \n\t"\r
+    : "=r"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #1 (MM1).\r
+\r
+  Reads and returns the current value of MM1. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM1.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm1 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "movd   %%mm1,  %0    \n\t"\r
+    : "=r"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #2 (MM2).\r
+\r
+  Reads and returns the current value of MM2. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM2.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm2 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "movd  %%mm2,  %0    \n\t"\r
+    : "=r"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #3 (MM3).\r
+\r
+  Reads and returns the current value of MM3. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM3.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm3 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "movd  %%mm3,  %0    \n\t"\r
+    : "=r"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #4 (MM4).\r
+\r
+  Reads and returns the current value of MM4. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM4.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm4 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "movd  %%mm4,  %0    \n\t"\r
+    : "=r"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #5 (MM5).\r
+\r
+  Reads and returns the current value of MM5. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM5.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm5 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "movd  %%mm5,  %0    \n\t"\r
+    : "=r"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #6 (MM6).\r
+\r
+  Reads and returns the current value of MM6. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM6.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm6 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "movd  %%mm6,  %0    \n\t"\r
+    : "=r"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of 64-bit MMX Register #7 (MM7).\r
+\r
+  Reads and returns the current value of MM7. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of MM7.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadMm7 (\r
+  VOID\r
+  )\r
+{\r
+  UINT64  Data;\r
+\r
+  __asm__ __volatile__ (\r
+    "movd  %%mm7,  %0    \n\t"\r
+    : "=r"  (Data)       // %0\r
+    );\r
+    \r
+  return Data;\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #0 (MM0).\r
+\r
+  Writes the current value of MM0. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM0.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm0 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movd  %0, %%mm0"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #1 (MM1).\r
+\r
+  Writes the current value of MM1. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM1.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm1 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movd  %0, %%mm1"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #2 (MM2).\r
+\r
+  Writes the current value of MM2. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM2.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm2 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movd  %0, %%mm2"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #3 (MM3).\r
+\r
+  Writes the current value of MM3. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM3.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm3 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movd  %0, %%mm3"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #4 (MM4).\r
+\r
+  Writes the current value of MM4. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM4.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm4 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movd  %0, %%mm4"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #5 (MM5).\r
+\r
+  Writes the current value of MM5. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM5.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm5 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movd  %0, %%mm5"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #6 (MM6).\r
+\r
+  Writes the current value of MM6. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM6.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm6 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movd  %0, %%mm6"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Writes the current value of 64-bit MMX Register #7 (MM7).\r
+\r
+  Writes the current value of MM7. This function is only available on IA32 and\r
+  X64.\r
+\r
+  @param  Value The 64-bit value to write to MM7.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWriteMm7 (\r
+  IN      UINT64                    Value\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "movd  %0, %%mm7"  // %0\r
+    :  \r
+    : "m" (Value)\r
+    );\r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of Time Stamp Counter (TSC).\r
+\r
+  Reads and returns the current value of TSC. This function is only available\r
+  on IA-32 and X64.\r
+\r
+  @return The current value of TSC\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadTsc (\r
+  VOID\r
+  )\r
+{\r
+  UINT32  LowData;\r
+  UINT32  HiData;\r
+  \r
+  __asm__ __volatile__ (\r
+    "rdtsc"\r
+    : "=a" (LowData),\r
+      "=d" (HiData)\r
+    );\r
+  \r
+  return (((UINT64)HiData) << 32) | LowData;  \r
+}\r
+\r
+\r
+/**\r
+  Reads the current value of a Performance Counter (PMC).\r
+\r
+  Reads and returns the current value of performance counter specified by\r
+  Index. This function is only available on IA-32 and X64.\r
+\r
+  @param  Index The 32-bit Performance Counter index to read.\r
+\r
+  @return The value of the PMC specified by Index.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+AsmReadPmc (\r
+  IN      UINT32                    Index\r
+  )\r
+{\r
+  UINT32  LowData;\r
+  UINT32  HiData;\r
+  \r
+  __asm__ __volatile__ (\r
+    "rdpmc"\r
+    : "=a" (LowData),\r
+      "=d" (HiData)\r
+    : "c"  (Index)\r
+    );\r
+  \r
+  return (((UINT64)HiData) << 32) | LowData;  \r
+}\r
+\r
+\r
+/**\r
+  Sets up a monitor buffer that is used by AsmMwait().\r
+\r
+  Executes a MONITOR instruction with the register state specified by Eax, Ecx\r
+  and Edx. Returns Eax. This function is only available on IA-32 and X64.\r
+\r
+  @param  Eax The value to load into EAX or RAX before executing the MONITOR\r
+              instruction.\r
+  @param  Ecx The value to load into ECX or RCX before executing the MONITOR\r
+              instruction.\r
+  @param  Edx The value to load into EDX or RDX before executing the MONITOR\r
+              instruction.\r
+\r
+  @return Eax\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmMonitor (\r
+  IN      UINTN                     Eax,\r
+  IN      UINTN                     Ecx,\r
+  IN      UINTN                     Edx\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "monitor"\r
+    :\r
+    : "a" (Eax),\r
+      "c" (Ecx),\r
+      "d" (Edx)\r
+    );\r
+    \r
+  return Eax;\r
+}\r
+\r
+\r
+/**\r
+  Executes an MWAIT instruction.\r
+\r
+  Executes an MWAIT instruction with the register state specified by Eax and\r
+  Ecx. Returns Eax. This function is only available on IA-32 and X64.\r
+\r
+  @param  Eax The value to load into EAX or RAX before executing the MONITOR\r
+              instruction.\r
+  @param  Ecx The value to load into ECX or RCX before executing the MONITOR\r
+              instruction.\r
+\r
+  @return Eax\r
+\r
+**/\r
+UINTN\r
+EFIAPI\r
+AsmMwait (\r
+  IN      UINTN                     Eax,\r
+  IN      UINTN                     Ecx\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "mwait"\r
+    : \r
+    : "a"  (Eax),\r
+      "c"  (Ecx)\r
+    );\r
+    \r
+  return Eax;    \r
+}\r
+\r
+\r
+/**\r
+  Executes a WBINVD instruction.\r
+\r
+  Executes a WBINVD instruction. This function is only available on IA-32 and\r
+  X64.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmWbinvd (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("wbinvd":::"memory");\r
+}\r
+\r
+\r
+/**\r
+  Executes a INVD instruction.\r
+\r
+  Executes a INVD instruction. This function is only available on IA-32 and\r
+  X64.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsmInvd (\r
+  VOID\r
+  )\r
+{\r
+  __asm__ __volatile__ ("invd":::"memory");\r
+    \r
+}\r
+\r
+\r
+/**\r
+  Flushes a cache line from all the instruction and data caches within the\r
+  coherency domain of the CPU.\r
+\r
+  Flushed the cache line specified by LinearAddress, and returns LinearAddress.\r
+  This function is only available on IA-32 and X64.\r
+\r
+  @param  LinearAddress The address of the cache line to flush. If the CPU is\r
+                        in a physical addressing mode, then LinearAddress is a\r
+                        physical address. If the CPU is in a virtual\r
+                        addressing mode, then LinearAddress is a virtual\r
+                        address.\r
+\r
+  @return LinearAddress\r
+**/\r
+VOID *\r
+EFIAPI\r
+AsmFlushCacheLine (\r
+  IN      VOID                      *LinearAddress\r
+  )\r
+{\r
+  __asm__ __volatile__ (\r
+    "clflush (%0)"\r
+    :\r
+    : "r" (LinearAddress) \r
+    : "memory"\r
+    );\r
+    \r
+    return LinearAddress;\r
+}\r
+\r
+\r
diff --git a/MdePkg/Library/BaseLib/X64/Invd.S b/MdePkg/Library/BaseLib/X64/Invd.S
deleted file mode 100644 (file)
index e6794b2..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   Invd.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmInvd function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmInvd (\r
-#   VOID\r
-#   )#\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmInvd)\r
-ASM_PFX(AsmInvd):\r
-    invd\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/Monitor.S b/MdePkg/Library/BaseLib/X64/Monitor.S
deleted file mode 100644 (file)
index c6acb33..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   Monitor.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmMonitor function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmMonitor (\r
-#   IN      UINTN                     Eax,\r
-#   IN      UINTN                     Ecx,\r
-#   IN      UINTN                     Edx\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmMonitor)\r
-ASM_PFX(AsmMonitor):\r
-    mov    %ecx,%eax\r
-    mov    %edx,%ecx\r
-    mov    %r8d,%edx\r
-    monitor\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/Mwait.S b/MdePkg/Library/BaseLib/X64/Mwait.S
deleted file mode 100644 (file)
index d3429e0..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   Mwait.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmMwait function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmMwait (\r
-#   IN      UINTN                     Eax,\r
-#   IN      UINTN                     Ecx\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmMwait)\r
-ASM_PFX(AsmMwait):\r
-    mov    %ecx,%eax\r
-    mov    %edx,%ecx\r
-    mwait\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadCr0.S b/MdePkg/Library/BaseLib/X64/ReadCr0.S
deleted file mode 100644 (file)
index e35495c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCr0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadCr0 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadCr0)\r
-ASM_PFX(AsmReadCr0):\r
-    mov     %cr0, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadCr2.S b/MdePkg/Library/BaseLib/X64/ReadCr2.S
deleted file mode 100644 (file)
index c8ccc9c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCr2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadCr2 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadCr2)\r
-ASM_PFX(AsmReadCr2):\r
-    mov     %cr2, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadCr3.S b/MdePkg/Library/BaseLib/X64/ReadCr3.S
deleted file mode 100644 (file)
index ce05e42..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCr3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadCr3 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadCr3)\r
-ASM_PFX(AsmReadCr3):\r
-    mov     %cr3, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadCr4.S b/MdePkg/Library/BaseLib/X64/ReadCr4.S
deleted file mode 100644 (file)
index c79042a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCr4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadCr4 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadCr4)\r
-ASM_PFX(AsmReadCr4):\r
-    mov     %cr4, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadCs.S b/MdePkg/Library/BaseLib/X64/ReadCs.S
deleted file mode 100644 (file)
index 7c0a631..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadCs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadCs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadCs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadCs)\r
-ASM_PFX(AsmReadCs):\r
-    mov     %cs, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr0.S b/MdePkg/Library/BaseLib/X64/ReadDr0.S
deleted file mode 100644 (file)
index 035cb67..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr0 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDr0)\r
-ASM_PFX(AsmReadDr0):\r
-    mov     %dr0, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr1.S b/MdePkg/Library/BaseLib/X64/ReadDr1.S
deleted file mode 100644 (file)
index 9ed503a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr1.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr1 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDr1)\r
-ASM_PFX(AsmReadDr1):\r
-    mov     %dr1, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr2.S b/MdePkg/Library/BaseLib/X64/ReadDr2.S
deleted file mode 100644 (file)
index 875463c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr2 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDr2)\r
-ASM_PFX(AsmReadDr2):\r
-    mov     %dr2, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr3.S b/MdePkg/Library/BaseLib/X64/ReadDr3.S
deleted file mode 100644 (file)
index 73a05f3..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr3 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDr3)\r
-ASM_PFX(AsmReadDr3):\r
-    mov     %dr3, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr4.S b/MdePkg/Library/BaseLib/X64/ReadDr4.S
deleted file mode 100644 (file)
index 202d83b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr4 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDr4)\r
-ASM_PFX(AsmReadDr4):\r
-    #DB      0fh, 21h, 0e0h\r
-    mov     %dr4, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr5.S b/MdePkg/Library/BaseLib/X64/ReadDr5.S
deleted file mode 100644 (file)
index 7f89c00..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr5.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr5 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDr5)\r
-ASM_PFX(AsmReadDr5):\r
-    mov %dr5, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr6.S b/MdePkg/Library/BaseLib/X64/ReadDr6.S
deleted file mode 100644 (file)
index d92a531..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr6.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr6 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDr6)\r
-ASM_PFX(AsmReadDr6):\r
-    mov %dr6, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDr7.S b/MdePkg/Library/BaseLib/X64/ReadDr7.S
deleted file mode 100644 (file)
index 878b0b1..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDr7.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDr7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadDr7 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDr7)\r
-ASM_PFX(AsmReadDr7):\r
-    mov %dr7, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadDs.S b/MdePkg/Library/BaseLib/X64/ReadDs.S
deleted file mode 100644 (file)
index 39ccebf..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadDs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadDs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadDs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadDs)\r
-ASM_PFX(AsmReadDs):\r
-    movl  %ds, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadEflags.S b/MdePkg/Library/BaseLib/X64/ReadEflags.S
deleted file mode 100644 (file)
index 7aa943a..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadEflags.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadEflags function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmReadEflags (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadEflags)\r
-ASM_PFX(AsmReadEflags):\r
-    pushfq\r
-    pop     %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadEs.S b/MdePkg/Library/BaseLib/X64/ReadEs.S
deleted file mode 100644 (file)
index e9491ae..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadEs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadEs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadEs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadEs)\r
-ASM_PFX(AsmReadEs):\r
-    mov     %es, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadFs.S b/MdePkg/Library/BaseLib/X64/ReadFs.S
deleted file mode 100644 (file)
index a6a89f7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadFs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadFs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadFs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadFs)\r
-ASM_PFX(AsmReadFs):\r
-    mov     %fs, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadGdtr.S b/MdePkg/Library/BaseLib/X64/ReadGdtr.S
deleted file mode 100644 (file)
index 0c7f261..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadGdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadGdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86ReadGdtr (\r
-#   OUT IA32_DESCRIPTOR  *Gdtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalX86ReadGdtr)\r
-ASM_PFX(InternalX86ReadGdtr):\r
-    sgdt  (%rcx)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadGs.S b/MdePkg/Library/BaseLib/X64/ReadGs.S
deleted file mode 100644 (file)
index a480145..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadGs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadGs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadGs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadGs)\r
-ASM_PFX(AsmReadGs):\r
-    mov     %gs, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadIdtr.S b/MdePkg/Library/BaseLib/X64/ReadIdtr.S
deleted file mode 100644 (file)
index 92aa90c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadIdtr.AS\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadIdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86ReadIdtr (\r
-#   OUT     IA32_DESCRIPTOR           *Idtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalX86ReadIdtr)\r
-ASM_PFX(InternalX86ReadIdtr):\r
-    sidt    (%rcx)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadLdtr.S b/MdePkg/Library/BaseLib/X64/ReadLdtr.S
deleted file mode 100644 (file)
index 4c7d7af..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadLdtr.AS\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadLdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadLdtr (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadLdtr)\r
-ASM_PFX(AsmReadLdtr):\r
-    sldt    %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm0.S b/MdePkg/Library/BaseLib/X64/ReadMm0.S
deleted file mode 100644 (file)
index bb52904..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMm0 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMm0)\r
-ASM_PFX(AsmReadMm0):\r
-    movd  %mm0, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm1.S b/MdePkg/Library/BaseLib/X64/ReadMm1.S
deleted file mode 100644 (file)
index 9e96f48..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm1.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMm1 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMm1)\r
-ASM_PFX(AsmReadMm1):\r
-    movd  %mm1, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm2.S b/MdePkg/Library/BaseLib/X64/ReadMm2.S
deleted file mode 100644 (file)
index f473432..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMm2 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMm2)\r
-ASM_PFX(AsmReadMm2):\r
-    movd  %mm2, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm3.S b/MdePkg/Library/BaseLib/X64/ReadMm3.S
deleted file mode 100644 (file)
index be34962..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMm3 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMm3)\r
-ASM_PFX(AsmReadMm3):\r
-    movd  %mm3, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm4.S b/MdePkg/Library/BaseLib/X64/ReadMm4.S
deleted file mode 100644 (file)
index cd098b6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm4.AS\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMm4 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMm4)\r
-ASM_PFX(AsmReadMm4):\r
-    movd  %mm4, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm5.S b/MdePkg/Library/BaseLib/X64/ReadMm5.S
deleted file mode 100644 (file)
index c55301c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm5.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMm5 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMm5)\r
-ASM_PFX(AsmReadMm5):\r
-    movd  %mm5, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm6.S b/MdePkg/Library/BaseLib/X64/ReadMm6.S
deleted file mode 100644 (file)
index 0a5b51b..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm6.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMm6 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMm6)\r
-ASM_PFX(AsmReadMm6):\r
-    movd  %mm6, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm7.S b/MdePkg/Library/BaseLib/X64/ReadMm7.S
deleted file mode 100644 (file)
index d851d19..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMm7.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMm7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMm7 (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMm7)\r
-ASM_PFX(AsmReadMm7):\r
-    movd  %mm7, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadMsr64.S b/MdePkg/Library/BaseLib/X64/ReadMsr64.S
deleted file mode 100644 (file)
index f9fe2c0..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadMsr64.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadMsr64 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadMsr64 (\r
-#   IN UINT32  Index\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadMsr64)\r
-ASM_PFX(AsmReadMsr64):\r
-    rdmsr                               # edx & eax are zero extended\r
-    shl     $0x20, %rdx\r
-    or      %rdx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadPmc.S b/MdePkg/Library/BaseLib/X64/ReadPmc.S
deleted file mode 100644 (file)
index a7f63e4..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadPmc.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadPmc function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadPmc (\r
-#   IN UINT32   PmcIndex\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadPmc)\r
-ASM_PFX(AsmReadPmc):\r
-    rdpmc\r
-    shl     $0x20, %rdx\r
-    or      %rdx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadSs.S b/MdePkg/Library/BaseLib/X64/ReadSs.S
deleted file mode 100644 (file)
index a04c6fe..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadSs.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadSs function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadSs (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadSs)\r
-ASM_PFX(AsmReadSs):\r
-    movl     %ss, %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadTr.S b/MdePkg/Library/BaseLib/X64/ReadTr.S
deleted file mode 100644 (file)
index d9aed11..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadTr.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadTr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT16\r
-# EFIAPI\r
-# AsmReadTr (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadTr)\r
-ASM_PFX(AsmReadTr): \r
-    str     %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/ReadTsc.S b/MdePkg/Library/BaseLib/X64/ReadTsc.S
deleted file mode 100644 (file)
index a520169..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   ReadTsc.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmReadTsc function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmReadTsc (\r
-#   VOID\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmReadTsc)\r
-ASM_PFX(AsmReadTsc):\r
-    rdtsc\r
-    shl     $0x20, %rdx\r
-    or      %rdx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteCr0.S b/MdePkg/Library/BaseLib/X64/WriteCr0.S
deleted file mode 100644 (file)
index 2fc5503..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteCr0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteCr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr0 (\r
-#   UINTN  Cr0\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteCr0)\r
-ASM_PFX(AsmWriteCr0):\r
-    mov    %rcx,%cr0\r
-    mov    %rcx,%rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteCr2.S b/MdePkg/Library/BaseLib/X64/WriteCr2.S
deleted file mode 100644 (file)
index 4b5eddf..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteCr2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteCr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr2 (\r
-#   UINTN  Cr2\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteCr2)\r
-ASM_PFX(AsmWriteCr2):\r
-    mov    %rcx,%cr2\r
-    mov    %rcx,%rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteCr3.S b/MdePkg/Library/BaseLib/X64/WriteCr3.S
deleted file mode 100644 (file)
index ea8b241..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteCr3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteCr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr3 (\r
-#   UINTN  Cr3\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteCr3)\r
-ASM_PFX(AsmWriteCr3):\r
-    mov    %rcx,%cr3\r
-    mov    %rcx,%rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteCr4.S b/MdePkg/Library/BaseLib/X64/WriteCr4.S
deleted file mode 100644 (file)
index e468d38..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteCr4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteCr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteCr4 (\r
-#   UINTN  Cr4\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteCr4)\r
-ASM_PFX(AsmWriteCr4):\r
-    mov    %rcx,%cr4\r
-    mov    %rcx,%rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr0.S b/MdePkg/Library/BaseLib/X64/WriteDr0.S
deleted file mode 100644 (file)
index 0fe7914..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr0 (\r
-#   UINTN  Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr0)\r
-ASM_PFX(AsmWriteDr0):\r
-    mov     %rcx, %dr0\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr1.S b/MdePkg/Library/BaseLib/X64/WriteDr1.S
deleted file mode 100644 (file)
index be1f68a..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr1.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr1 (\r
-#   UINTN  Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr1)\r
-ASM_PFX(AsmWriteDr1):\r
-    mov     %rcx, %dr1\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr2.S b/MdePkg/Library/BaseLib/X64/WriteDr2.S
deleted file mode 100644 (file)
index e5b03e8..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr2 (\r
-#   UINTN  Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr2)\r
-ASM_PFX(AsmWriteDr2):\r
-    mov     %rcx, %dr2\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr3.S b/MdePkg/Library/BaseLib/X64/WriteDr3.S
deleted file mode 100644 (file)
index 61a5d74..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr3 (\r
-#   UINTN  Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr3)\r
-ASM_PFX(AsmWriteDr3):\r
-    mov     %rcx, %dr3\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr4.S b/MdePkg/Library/BaseLib/X64/WriteDr4.S
deleted file mode 100644 (file)
index ce31a10..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr4 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr4)\r
-ASM_PFX(AsmWriteDr4):\r
-    mov     %rcx, %dr4\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr5.S b/MdePkg/Library/BaseLib/X64/WriteDr5.S
deleted file mode 100644 (file)
index 11f2702..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr5.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr5 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr5)\r
-ASM_PFX(AsmWriteDr5):\r
-    mov     %rcx, %dr5\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr6.S b/MdePkg/Library/BaseLib/X64/WriteDr6.S
deleted file mode 100644 (file)
index 15333d1..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr6.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr6 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr6)\r
-ASM_PFX(AsmWriteDr6):\r
-    mov     %rcx, %dr6\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr7.S b/MdePkg/Library/BaseLib/X64/WriteDr7.S
deleted file mode 100644 (file)
index 1196744..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteDr7.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteDr7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINTN\r
-# EFIAPI\r
-# AsmWriteDr7 (\r
-#   IN UINTN Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteDr7)\r
-ASM_PFX(AsmWriteDr7):\r
-    mov     %rcx, %dr7\r
-    mov     %rcx, %rax\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteGdtr.S b/MdePkg/Library/BaseLib/X64/WriteGdtr.S
deleted file mode 100644 (file)
index 69f1a70..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteGdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteGdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86WriteGdtr (\r
-#   IN      CONST IA32_DESCRIPTOR     *Idtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalX86WriteGdtr)\r
-ASM_PFX(InternalX86WriteGdtr):\r
-    lgdt    (%rcx)\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteIdtr.S b/MdePkg/Library/BaseLib/X64/WriteIdtr.S
deleted file mode 100644 (file)
index d18fd62..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteIdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteIdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# InternalX86WriteIdtr (\r
-#   IN      CONST IA32_DESCRIPTOR     *Idtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalX86WriteIdtr)\r
-ASM_PFX(InternalX86WriteIdtr):\r
-    pushfq\r
-    cli\r
-    lidt    (%rcx)\r
-    popfq\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteLdtr.S b/MdePkg/Library/BaseLib/X64/WriteLdtr.S
deleted file mode 100644 (file)
index b375649..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteLdtr.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteLdtr function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteLdtr (\r
-#   IN UINT16 Ldtr\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteLdtr)\r
-ASM_PFX(AsmWriteLdtr):\r
-    lldt    %cx\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm0.S b/MdePkg/Library/BaseLib/X64/WriteMm0.S
deleted file mode 100644 (file)
index 166987c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm0.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm0 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm0 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm0)\r
-ASM_PFX(AsmWriteMm0):\r
-    movd  %rcx, %mm0\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm1.S b/MdePkg/Library/BaseLib/X64/WriteMm1.S
deleted file mode 100644 (file)
index e1446e9..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm1.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm1 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm1 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm1)\r
-ASM_PFX(AsmWriteMm1):\r
-    movd  %rcx, %mm1\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm2.S b/MdePkg/Library/BaseLib/X64/WriteMm2.S
deleted file mode 100644 (file)
index a1afba0..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm2.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm2 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm2 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm2) \r
-ASM_PFX(AsmWriteMm2):\r
-    movd  %rcx, %mm2\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm3.S b/MdePkg/Library/BaseLib/X64/WriteMm3.S
deleted file mode 100644 (file)
index 9c803e5..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm3.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm3 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm3 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm3)\r
-ASM_PFX(AsmWriteMm3):\r
-    movd  %rcx, %mm3\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm4.S b/MdePkg/Library/BaseLib/X64/WriteMm4.S
deleted file mode 100644 (file)
index adb574e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm4.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm4 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm4 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm4)\r
-ASM_PFX(AsmWriteMm4):\r
-    movd  %rcx, %mm4\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm5.S b/MdePkg/Library/BaseLib/X64/WriteMm5.S
deleted file mode 100644 (file)
index 0eba90a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm5.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm5 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm5 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm5)\r
-ASM_PFX(AsmWriteMm5):\r
-    movd  %rcx, %mm5\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm6.S b/MdePkg/Library/BaseLib/X64/WriteMm6.S
deleted file mode 100644 (file)
index 20c906b..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm6.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm6 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm6 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm6)\r
-ASM_PFX(AsmWriteMm6):\r
-    movd  %rcx, %mm6\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm7.S b/MdePkg/Library/BaseLib/X64/WriteMm7.S
deleted file mode 100644 (file)
index 5aa3776..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMm7.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMm7 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# VOID\r
-# EFIAPI\r
-# AsmWriteMm7 (\r
-#   IN UINT64   Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMm7)\r
-ASM_PFX(AsmWriteMm7):\r
-    movd  %rcx, %mm7\r
-    ret\r
diff --git a/MdePkg/Library/BaseLib/X64/WriteMsr64.S b/MdePkg/Library/BaseLib/X64/WriteMsr64.S
deleted file mode 100644 (file)
index 2dc4fb8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   WriteMsr64.S\r
-#\r
-# Abstract:\r
-#\r
-#   AsmWriteMsr64 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# AsmWriteMsr64 (\r
-#   IN UINT32  Index,\r
-#   IN UINT64  Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(AsmWriteMsr64)\r
-ASM_PFX(AsmWriteMsr64):\r
-    mov %rdx, %rax            # meanwhile, rax <- return value\r
-    shr $0x20, %rdx           # edx:eax contains the value to write\r
-    wrmsr\r
-    ret\r
index 461be0ddabc4b93e29b2f712b39732f47a2b92e7..b036f7c32aa3a79ff54ba23568ed31c087569b57 100644 (file)
   Ia32/InterlockedIncrement.asm | INTEL \r
   Synchronization.c | INTEL\r
 \r
-  Ia32/InterlockedCompareExchange64.S | GCC \r
-  Ia32/InterlockedCompareExchange32.S | GCC \r
-  Ia32/InterlockedDecrement.S | GCC \r
-  Ia32/InterlockedIncrement.S | GCC \r
+  Ia32/GccInline.c | GCC\r
   SynchronizationGcc.c  | GCC\r
 \r
 [Sources.X64]\r
   X64/InterlockedIncrement.asm | INTEL \r
   Synchronization.c | INTEL \r
 \r
-\r
-  X64/InterlockedIncrement.S | GCC \r
-  X64/InterlockedDecrement.S | GCC \r
-  X64/InterlockedCompareExchange64.S | GCC \r
-  X64/InterlockedCompareExchange32.S | GCC \r
+  X64/GccInline.c | GCC\r
   SynchronizationGcc.c  | GCC \r
 \r
 [Sources.IPF]\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/GccInline.c b/MdePkg/Library/BaseSynchronizationLib/Ia32/GccInline.c
new file mode 100644 (file)
index 0000000..9b939c9
--- /dev/null
@@ -0,0 +1,193 @@
+/** @file\r
+  GCC inline implementation of BaseSynchronizationLib processor specific functions.\r
+  \r
+  Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
+  Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR>\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
+**/\r
+\r
+\r
+\r
+/**\r
+  Performs an atomic increment of an 32-bit unsigned integer.\r
+\r
+  Performs an atomic increment of the 32-bit unsigned integer specified by\r
+  Value and returns the incremented value. The increment operation must be\r
+  performed using MP safe mechanisms. The state of the return value is not\r
+  guaranteed to be MP safe.\r
+\r
+  @param  Value A pointer to the 32-bit value to increment.\r
+\r
+  @return The incremented value.\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+InternalSyncIncrement (\r
+  IN      volatile UINT32    *Value\r
+  )\r
+{\r
+  UINT32  Result;\r
+\r
+  __asm__ __volatile__ (\r
+    "lock               \n\t"\r
+    "incl    %2         \n\t"\r
+    "movl    %2, %%eax      "\r
+    : "=a" (Result),          // %0\r
+      "=m" (*Value)           // %1\r
+    : "m"  (*Value)           // %2 \r
+    : "memory",\r
+      "cc"\r
+    );\r
+    \r
+  return Result;    \r
+\r
+}\r
+\r
+\r
+/**\r
+  Performs an atomic decrement of an 32-bit unsigned integer.\r
+\r
+  Performs an atomic decrement of the 32-bit unsigned integer specified by\r
+  Value and returns the decremented value. The decrement operation must be\r
+  performed using MP safe mechanisms. The state of the return value is not\r
+  guaranteed to be MP safe.\r
+\r
+  @param  Value A pointer to the 32-bit value to decrement.\r
+\r
+  @return The decremented value.\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+InternalSyncDecrement (\r
+  IN      volatile UINT32       *Value\r
+  )\r
+{\r
+   UINT32  Result;\r
+  \r
+  __asm__ __volatile__ (\r
+    "lock               \n\t"\r
+    "decl    %2         \n\t"\r
+    "movl    %2, %%eax      "\r
+    : "=a" (Result),          // %0\r
+      "=m" (*Value)           // %1\r
+    : "m"  (*Value)           // %2 \r
+    : "memory",\r
+      "cc"\r
+    );\r
+    \r
+  return Result;\r
+}\r
+\r
+/**\r
+  Performs an atomic compare exchange operation on a 32-bit unsigned integer.\r
+\r
+  Performs an atomic compare exchange operation on the 32-bit unsigned integer\r
+  specified by Value.  If Value is equal to CompareValue, then Value is set to\r
+  ExchangeValue and CompareValue is returned.  If Value is not equal to CompareValue,\r
+  then Value is returned.  The compare exchange operation must be performed using\r
+  MP safe mechanisms.\r
+\r
+\r
+  @param  Value         A pointer to the 32-bit value for the compare exchange\r
+                        operation.\r
+  @param  CompareValue  32-bit value used in compare operation.\r
+  @param  ExchangeValue 32-bit value used in exchange operation.\r
+\r
+  @return The original *Value before exchange.\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+InternalSyncCompareExchange32 (\r
+  IN OUT volatile  UINT32           *Value,\r
+  IN      UINT32                    CompareValue,\r
+  IN      UINT32                    ExchangeValue\r
+  )\r
+{\r
+\r
+// GCC 4.1 and forward supports atomic builtins  \r
+#if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)))\r
+\r
+  return __sync_val_compare_and_swap (Value, CompareValue, ExchangeValue);\r
+\r
+#else\r
+\r
+  __asm__ __volatile__ (\r
+    "                     \n\t"\r
+    "lock                 \n\t"\r
+    "cmpxchgl    %1, %2   \n\t"\r
+    : "=a" (CompareValue)     // %0\r
+    : "q"  (ExchangeValue),   // %1\r
+      "m"  (*Value),          // %2\r
+      "0"  (CompareValue)     // %4 \r
+    : "memory",\r
+      "cc"\r
+    );\r
+\r
+    return CompareValue;\r
+\r
+#endif\r
+}\r
+\r
+/**\r
+  Performs an atomic compare exchange operation on a 64-bit unsigned integer.\r
+\r
+  Performs an atomic compare exchange operation on the 64-bit unsigned integer specified\r
+  by Value.  If Value is equal to CompareValue, then Value is set to ExchangeValue and\r
+  CompareValue is returned.  If Value is not equal to CompareValue, then Value is returned.\r
+  The compare exchange operation must be performed using MP safe mechanisms.\r
+\r
+\r
+  @param  Value         A pointer to the 64-bit value for the compare exchange\r
+                        operation.\r
+  @param  CompareValue  64-bit value used in compare operation.\r
+  @param  ExchangeValue 64-bit value used in exchange operation.\r
+\r
+  @return The original *Value before exchange.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+InternalSyncCompareExchange64 (\r
+  IN OUT  volatile UINT64           *Value,\r
+  IN      UINT64                    CompareValue,\r
+  IN      UINT64                    ExchangeValue\r
+  )\r
+{\r
+// GCC 4.1 and forward supports atomic builtins  \r
+#if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)))\r
+\r
+  return __sync_val_compare_and_swap (Value, CompareValue, ExchangeValue);\r
+\r
+#else\r
+\r
+  __asm__ __volatile__ (\r
+    "                       \n\t"\r
+    "push        %%ebx      \n\t" \r
+    "movl        %2,%%ebx   \n\t"   \r
+    "lock                   \n\t"\r
+    "cmpxchg8b   (%1)       \n\t"\r
+    "pop         %%ebx      \n\t"\r
+    : "+A"  (CompareValue)                    // %0\r
+    : "S"   (Value),                          // %1\r
+      "r"   ((UINT32) ExchangeValue),         // %2\r
+      "c"   ((UINT32) (ExchangeValue >> 32))  // %3\r
+    : "memory",\r
+      "cc"\r
+    );\r
+  \r
+  return CompareValue;\r
+\r
+#endif\r
+}\r
+\r
+\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.S b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.S
deleted file mode 100644 (file)
index 7bb8bb5..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   InterlockedCompareExchange32.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalSyncCompareExchange32 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(InternalSyncCompareExchange32)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT32\r
-# EFIAPI\r
-# InternalSyncCompareExchange32 (\r
-#   IN      UINT32                    *Value,\r
-#   IN      UINT32                    CompareValue,\r
-#   IN      UINT32                    ExchangeValue\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(InternalSyncCompareExchange32):\r
-    movl    4(%esp), %ecx\r
-    movl    8(%esp), %eax\r
-    movl    12(%esp), %edx\r
-    lock\r
-    cmpxchgl    %edx, (%ecx)\r
-    ret\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.S b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.S
deleted file mode 100644 (file)
index ec77892..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   InterlockedCompareExchange64.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalSyncCompareExchange64 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(InternalSyncCompareExchange64)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# InternalSyncCompareExchange64 (\r
-#   IN      UINT64                    *Value,\r
-#   IN      UINT64                    CompareValue,\r
-#   IN      UINT64                    ExchangeValue\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(InternalSyncCompareExchange64):\r
-    push    %esi\r
-    push    %ebx\r
-    movl    12(%esp), %esi\r
-    movl    16(%esp), %eax\r
-    movl    20(%esp), %edx\r
-    movl    24(%esp), %ebx\r
-    movl    28(%esp), %ecx\r
-    lock\r
-    cmpxchg8b   (%esi)\r
-    pop     %ebx\r
-    pop     %esi\r
-    ret\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.S b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.S
deleted file mode 100644 (file)
index e77af95..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   InterlockedDecrement.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalSyncDecrement function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(InternalSyncDecrement)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT32\r
-# EFIAPI\r
-# InternalSyncDecrement (\r
-#   IN      UINT32                    *Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(InternalSyncDecrement):\r
-    movl    4(%esp), %eax\r
-    lock\r
-    decl    (%eax)\r
-    movl    (%eax), %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.S b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.S
deleted file mode 100644 (file)
index 207341d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   InterlockedIncrement.S\r
-#\r
-# Abstract:\r
-#\r
-#   InternalSyncIncrement function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-ASM_GLOBAL ASM_PFX(InternalSyncIncrement)\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT32\r
-# EFIAPI\r
-# InternalSyncIncrement (\r
-#   IN      UINT32                    *Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_PFX(InternalSyncIncrement):\r
-    movl    4(%esp), %eax\r
-    lock\r
-    incl    (%eax)\r
-    movl    (%eax), %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/GccInline.c b/MdePkg/Library/BaseSynchronizationLib/X64/GccInline.c
new file mode 100644 (file)
index 0000000..f2f72f8
--- /dev/null
@@ -0,0 +1,192 @@
+/** @file\r
+  GCC inline implementation of BaseSynchronizationLib processor specific functions.\r
+  \r
+  Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
+  Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<BR> \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
+**/\r
+\r
+\r
+\r
+\r
+/**\r
+  Performs an atomic increment of an 32-bit unsigned integer.\r
+\r
+  Performs an atomic increment of the 32-bit unsigned integer specified by\r
+  Value and returns the incremented value. The increment operation must be\r
+  performed using MP safe mechanisms. The state of the return value is not\r
+  guaranteed to be MP safe.\r
+\r
+  @param  Value A pointer to the 32-bit value to increment.\r
+\r
+  @return The incremented value.\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+InternalSyncIncrement (\r
+  IN      volatile UINT32    *Value\r
+  )\r
+{\r
+  UINT32  Result;\r
+\r
+  __asm__ __volatile__ (\r
+    "lock               \n\t"\r
+    "incl    %2         \n\t"\r
+    "mov     %2, %%eax      "\r
+    : "=a" (Result),          // %0\r
+      "=m" (*Value)           // %1\r
+    : "m"  (*Value)           // %2 \r
+    : "memory",\r
+      "cc"\r
+    );\r
+    \r
+  return Result;    \r
+\r
+}\r
+\r
+\r
+/**\r
+  Performs an atomic decrement of an 32-bit unsigned integer.\r
+\r
+  Performs an atomic decrement of the 32-bit unsigned integer specified by\r
+  Value and returns the decremented value. The decrement operation must be\r
+  performed using MP safe mechanisms. The state of the return value is not\r
+  guaranteed to be MP safe.\r
+\r
+  @param  Value A pointer to the 32-bit value to decrement.\r
+\r
+  @return The decremented value.\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+InternalSyncDecrement (\r
+  IN      volatile UINT32       *Value\r
+  )\r
+{\r
+   UINT32  Result;\r
+  \r
+  __asm__ __volatile__ (\r
+    "lock               \n\t"\r
+    "decl    %2         \n\t"\r
+    "mov     %2, %%eax      "\r
+    : "=a" (Result),          // %0\r
+      "=m" (*Value)           // %1\r
+    : "m"  (*Value)           // %2 \r
+    : "memory",\r
+      "cc"\r
+    );\r
+    \r
+  return Result;\r
+}\r
+\r
+\r
+/**\r
+  Performs an atomic compare exchange operation on a 32-bit unsigned integer.\r
+\r
+  Performs an atomic compare exchange operation on the 32-bit unsigned integer\r
+  specified by Value.  If Value is equal to CompareValue, then Value is set to\r
+  ExchangeValue and CompareValue is returned.  If Value is not equal to CompareValue,\r
+  then Value is returned.  The compare exchange operation must be performed using\r
+  MP safe mechanisms.\r
+\r
+\r
+  @param  Value         A pointer to the 32-bit value for the compare exchange\r
+                        operation.\r
+  @param  CompareValue  32-bit value used in compare operation.\r
+  @param  ExchangeValue 32-bit value used in exchange operation.\r
+\r
+  @return The original *Value before exchange.\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+InternalSyncCompareExchange32 (\r
+  IN OUT volatile  UINT32           *Value,\r
+  IN      UINT32                    CompareValue,\r
+  IN      UINT32                    ExchangeValue\r
+  )\r
+{\r
+// GCC 4.1 and forward supports atomic builtins  \r
+#if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)))\r
+\r
+  return __sync_val_compare_and_swap (Value, CompareValue, ExchangeValue);\r
+\r
+#else\r
+\r
+  __asm__ __volatile__ (\r
+    "lock                 \n\t"\r
+    "cmpxchgl    %3, %1       "\r
+    : "=a" (CompareValue),    // %0\r
+      "=m" (*Value)           // %1\r
+    : "a"  (CompareValue),    // %2\r
+      "r"  (ExchangeValue),   // %3 \r
+      "m"  (*Value)\r
+    : "memory",\r
+      "cc"\r
+    );\r
+    \r
+    return CompareValue;\r
+\r
+#endif\r
+}\r
+\r
+\r
+/**\r
+  Performs an atomic compare exchange operation on a 64-bit unsigned integer.\r
+\r
+  Performs an atomic compare exchange operation on the 64-bit unsigned integer specified\r
+  by Value.  If Value is equal to CompareValue, then Value is set to ExchangeValue and\r
+  CompareValue is returned.  If Value is not equal to CompareValue, then Value is returned.\r
+  The compare exchange operation must be performed using MP safe mechanisms.\r
+\r
+\r
+  @param  Value         A pointer to the 64-bit value for the compare exchange\r
+                        operation.\r
+  @param  CompareValue  64-bit value used in compare operation.\r
+  @param  ExchangeValue 64-bit value used in exchange operation.\r
+\r
+  @return The original *Value before exchange.\r
+\r
+**/\r
+UINT64\r
+EFIAPI\r
+InternalSyncCompareExchange64 (\r
+  IN OUT  volatile UINT64           *Value,\r
+  IN      UINT64                    CompareValue,\r
+  IN      UINT64                    ExchangeValue\r
+  )\r
+{\r
+// GCC 4.1 and forward supports atomic builtins  \r
+#if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)))\r
+\r
+  return __sync_val_compare_and_swap (Value, CompareValue, ExchangeValue);\r
+\r
+#else\r
+\r
+  __asm__ __volatile__ (\r
+    "lock                 \n\t"\r
+    "cmpxchgq    %3, %1       "\r
+    : "=a" (CompareValue),    // %0\r
+      "=m" (*Value)           // %1\r
+    : "a"  (CompareValue),    // %2\r
+      "r"  (ExchangeValue),   // %3 \r
+      "m"  (*Value)\r
+    : "memory",\r
+      "cc"\r
+    );\r
+  \r
+  return CompareValue;\r
+\r
+#endif\r
+}\r
+\r
+\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.S b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.S
deleted file mode 100644 (file)
index 980c473..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   InterlockedCompareExchange32.S\r
-#\r
-# Abstract:\r
-#\r
-#   InterlockedCompareExchange32 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT32\r
-# EFIAPI\r
-# InterlockedCompareExchange32 (\r
-#   IN      UINT32                    *Value,\r
-#   IN      UINT32                    CompareValue,\r
-#   IN      UINT32                    ExchangeValue\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalSyncCompareExchange32)\r
-ASM_PFX(InternalSyncCompareExchange32):\r
-    mov     %edx, %eax\r
-    lock/cmpxchg %r8d, (%rcx)\r
-    ret\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.S b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.S
deleted file mode 100644 (file)
index 00362f2..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   InterlockedCompareExchange64.S\r
-#\r
-# Abstract:\r
-#\r
-#   InterlockedCompareExchange64 function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT64\r
-# EFIAPI\r
-# InterlockedCompareExchange64 (\r
-#   IN      UINT64                    *Value,\r
-#   IN      UINT64                    CompareValue,\r
-#   IN      UINT64                    ExchangeValue\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalSyncCompareExchange64)\r
-ASM_PFX(InternalSyncCompareExchange64):\r
-    mov     %rdx, %rax\r
-    lock/cmpxchg %r8,(%rcx)\r
-    ret\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.S b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.S
deleted file mode 100644 (file)
index 72ba5a7..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   InterlockedDecrement.S\r
-#\r
-# Abstract:\r
-#\r
-#   InterlockedDecrement function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT32\r
-# EFIAPI\r
-# InterlockedDecrement (\r
-#   IN      UINT32                    *Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalSyncDecrement)\r
-ASM_PFX(InternalSyncDecrement):\r
-    lock/decl (%rcx)\r
-    mov       (%rcx), %eax\r
-    ret\r
diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.S b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.S
deleted file mode 100644 (file)
index ceb92a2..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#------------------------------------------------------------------------------\r
-#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# 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
-#   InterlockedIncrement.S\r
-#\r
-# Abstract:\r
-#\r
-#   InterlockedIncrement function\r
-#\r
-# Notes:\r
-#\r
-#------------------------------------------------------------------------------\r
-\r
-\r
-#------------------------------------------------------------------------------\r
-# UINT32\r
-# EFIAPI\r
-# InterlockedIncrement (\r
-#   IN      UINT32                    *Value\r
-#   );\r
-#------------------------------------------------------------------------------\r
-ASM_GLOBAL ASM_PFX(InternalSyncIncrement)\r
-ASM_PFX(InternalSyncIncrement):\r
-    lock/incl (%rcx)\r
-    mov       (%rcx), %eax\r
-    ret\r