diff --git a/EdkModulePkg/EdkModulePkg-All-Archs.fpd b/EdkModulePkg/EdkModulePkg-All-Archs.fpd
index ce5569186f..e6d333380f 100644
--- a/EdkModulePkg/EdkModulePkg-All-Archs.fpd
+++ b/EdkModulePkg/EdkModulePkg-All-Archs.fpd
@@ -146,7 +146,7 @@
gEfiEdkModulePkgTokenSpaceGuid
UINT32
4
- 0x10000
+ 0x1000Value>
PcdMaximumUnicodeStringLength
@@ -15103,7 +15103,7 @@
"-nostdlib", "-O2", "--gc-sections", "--dll", "--export-all-symbols", "--entry ${ENTRYPOINT}"
-
+
-
+
diff --git a/MdePkg/Library/BaseLib/BaseLib.msa b/MdePkg/Library/BaseLib/BaseLib.msa
index 8d7af00fec..ae3cae71c5 100644
--- a/MdePkg/Library/BaseLib/BaseLib.msa
+++ b/MdePkg/Library/BaseLib/BaseLib.msa
@@ -175,6 +175,104 @@
Ia32/CpuBreakpoint.asm
Ia32/CpuFlushTlb.asm
Ia32/Thunk16.asm
+
+ Ia32/LShiftU64.S
+ Ia32/RShiftU64.S
+ Ia32/ARShiftU64.S
+ Ia32/LRotU64.S
+ Ia32/RRotU64.S
+ Ia32/MultU64x32.S
+ Ia32/MultU64x64.S
+ Ia32/DivU64x32.S
+ Ia32/ModU64x32.S
+ Ia32/DivU64x32Remainder.S
+ Ia32/DivU64x64Remainder.S
+ Ia32/SwapBytes64.S
+ Ia32/SetJump.S
+ Ia32/LongJump.S
+ Ia32/CpuId.S
+ Ia32/CpuIdEx.S
+ Ia32/ReadEflags.S
+ Ia32/ReadMsr64.S
+ Ia32/WriteMsr32.S
+ Ia32/WriteMsr64.S
+ Ia32/ReadCr0.S
+ Ia32/ReadCr2.S
+ Ia32/ReadCr3.S
+ Ia32/ReadCr4.S
+ Ia32/WriteCr0.S
+ Ia32/WriteCr2.S
+ Ia32/WriteCr3.S
+ Ia32/WriteCr4.S
+ Ia32/ReadDr0.S
+ Ia32/ReadDr1.S
+ Ia32/ReadDr2.S
+ Ia32/ReadDr3.S
+ Ia32/ReadDr4.S
+ Ia32/ReadDr5.S
+ Ia32/ReadDr6.S
+ Ia32/ReadDr7.S
+ Ia32/WriteDr0.S
+ Ia32/WriteDr1.S
+ Ia32/WriteDr2.S
+ Ia32/WriteDr3.S
+ Ia32/WriteDr4.S
+ Ia32/WriteDr5.S
+ Ia32/WriteDr6.S
+ Ia32/WriteDr7.S
+ Ia32/ReadCs.S
+ Ia32/ReadDs.S
+ Ia32/ReadEs.S
+ Ia32/ReadFs.S
+ Ia32/ReadGs.S
+ Ia32/ReadSs.S
+ Ia32/ReadTr.S
+ Ia32/ReadGdtr.S
+ Ia32/WriteGdtr.S
+ Ia32/ReadIdtr.S
+ Ia32/WriteIdtr.S
+ Ia32/ReadLdtr.S
+ Ia32/WriteLdtr.S
+ Ia32/FxSave.S
+ Ia32/FxRestore.S
+ Ia32/ReadMm0.S
+ Ia32/ReadMm1.S
+ Ia32/ReadMm2.S
+ Ia32/ReadMm3.S
+ Ia32/ReadMm4.S
+ Ia32/ReadMm5.S
+ Ia32/ReadMm6.S
+ Ia32/ReadMm7.S
+ Ia32/WriteMm0.S
+ Ia32/WriteMm1.S
+ Ia32/WriteMm2.S
+ Ia32/WriteMm3.S
+ Ia32/WriteMm4.S
+ Ia32/WriteMm5.S
+ Ia32/WriteMm6.S
+ Ia32/WriteMm7.S
+ Ia32/ReadTsc.S
+ Ia32/ReadPmc.S
+ Ia32/Monitor.S
+ Ia32/Mwait.S
+ Ia32/EnablePaging32.S
+ Ia32/DisablePaging32.S
+ Ia32/EnablePaging64.S
+ Ia32/Wbinvd.S
+ Ia32/Invd.S
+ Ia32/FlushCacheLine.S
+ Ia32/InterlockedIncrement.S
+ Ia32/InterlockedDecrement.S
+ Ia32/InterlockedCompareExchange32.S
+ Ia32/InterlockedCompareExchange64.S
+ Ia32/EnableInterrupts.S
+ Ia32/DisableInterrupts.S
+ Ia32/EnableDisableInterrupts.S
+ Ia32/CpuSleep.S
+ Ia32/CpuPause.S
+ Ia32/CpuBreakpoint.S
+ Ia32/CpuFlushTlb.S
+ Ia32/Thunk16.S
X86LowLevel.c
X86Thunk.c
Unaligned.c
diff --git a/MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa b/MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa
index 1c8c6b06c1..99d6dba269 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa
+++ b/MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.msa
@@ -56,6 +56,17 @@
Ia32/ScanMem16.asm
Ia32/ScanMem32.asm
Ia32/ScanMem64.asm
+ Ia32/CopyMem.S
+ Ia32/SetMem.S
+ Ia32/ZeroMem.S
+ Ia32/SetMem16.S
+ Ia32/SetMem32.S
+ Ia32/SetMem64.S
+ Ia32/CompareMem.S
+ Ia32/ScanMem8.S
+ Ia32/ScanMem16.S
+ Ia32/ScanMem32.S
+ Ia32/ScanMem64.S
X64/CopyMem.asm
X64/SetMem.asm
X64/SetMem16.asm
diff --git a/MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa b/MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa
index 1aad519301..d3fa91d59b 100644
--- a/MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa
+++ b/MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.msa
@@ -56,6 +56,17 @@
Ia32/ScanMem16.asm
Ia32/ScanMem32.asm
Ia32/ScanMem64.asm
+ Ia32/CopyMem.S
+ Ia32/SetMem.S
+ Ia32/SetMem16.S
+ Ia32/SetMem32.S
+ Ia32/SetMem64.S
+ Ia32/ZeroMem.S
+ Ia32/CompareMem.S
+ Ia32/ScanMem8.S
+ Ia32/ScanMem16.S
+ Ia32/ScanMem32.S
+ Ia32/ScanMem64.S
MemLibGuid.c
CopyMemWrapper.c
SetMemWrapper.c
diff --git a/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa b/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa
index 7c8798da7e..bfbfdf869c 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa
+++ b/MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.msa
@@ -56,6 +56,17 @@
Ia32/ScanMem16.asm
Ia32/ScanMem32.asm
Ia32/ScanMem64.asm
+ Ia32/CopyMem.S
+ Ia32/SetMem.S
+ Ia32/SetMem16.S
+ Ia32/SetMem32.S
+ Ia32/SetMem64.S
+ Ia32/ZeroMem.S
+ Ia32/CompareMem.S
+ Ia32/ScanMem8.S
+ Ia32/ScanMem16.S
+ Ia32/ScanMem32.S
+ Ia32/ScanMem64.S
MemLibGuid.c
CopyMemWrapper.c
SetMemWrapper.c
diff --git a/MdePkg/MdePkg-All-Archs.fpd b/MdePkg/MdePkg-All-Archs.fpd
index 837771b196..bf2ddb09e6 100644
--- a/MdePkg/MdePkg-All-Archs.fpd
+++ b/MdePkg/MdePkg-All-Archs.fpd
@@ -2616,7 +2616,7 @@
"-nostdlib", "-O2", "--gc-sections", "--dll", "--export-all-symbols", "--entry ${ENTRYPOINT}"
-
+
-
+
diff --git a/Tools/Conf/BuildMacro.xml b/Tools/Conf/BuildMacro.xml
index 28d6f0cb04..3b315d46fa 100644
--- a/Tools/Conf/BuildMacro.xml
+++ b/Tools/Conf/BuildMacro.xml
@@ -134,16 +134,16 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-
+
-
+
@@ -158,20 +158,27 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+ asm - Build_Assembly
+ S - Build_Gcc_Assembly
+ s - Build_Ipf_Assembly -->
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -249,6 +256,67 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tools/Conf/target.template b/Tools/Conf/target.template
index fde5df2d5a..0644b39d7f 100644
--- a/Tools/Conf/target.template
+++ b/Tools/Conf/target.template
@@ -6,6 +6,6 @@ TOOLS_DEFINITION_FILE = Tools/Conf/tools_def.txt
# Separate multiple targets with space, not not use comma
TARGET =
-TARGET_ARCH =
-TAGNAME =
+TARGET_ARCH = IA32
+TAGNAME = MSFT
diff --git a/Tools/Conf/tools_def.template b/Tools/Conf/tools_def.template
index 8026b46007..c4e601f112 100644
--- a/Tools/Conf/tools_def.template
+++ b/Tools/Conf/tools_def.template
@@ -23,7 +23,7 @@
*_MSFT_IA32_ASMLINK_PATH = C:\WINDDK\3790.1830\Bin\Bin16\
*_MSFT_IA32_ASL_PATH = C:\TianoTools\Bin
*_MSFT_IA32_*_DPATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
-#*_MSFT_IA32_ASM_EXT = .asm
+*_MSFT_IA32_ASM_EXT = .asm
# x64 definitions
*_MSFT_X64_*_PATH = C:\WINDDK\3790.1830\bin\win64\x86\amd64
@@ -35,6 +35,7 @@
# IPF definitions
*_MSFT_IPF_*_PATH = C:\WINDDK\3790.1830\bin\win64\x86
*_MSFT_IPF_ASM_NAME = ias.exe
+*_MSFT_IPF_ASM_EXT = .s
# EBC definitions
*_MSFT_EBC_*_FAMILY = INTEL
@@ -45,18 +46,13 @@
*_MSFT_EBC_PP_NAME = iec.exe
# GCC definitions
-#*_GCC_*_*_FAMILY = GCC
-#*_GCC_*_CC_NAME = gcc
-#*_GCC_*_SLINK_NAME = ar
-#*_GCC_*_DLINK_NAME = ld
+*_GCC_IA32_*_FAMILY = GCC
+*_GCC_IA32_CC_NAME = gcc
+*_GCC_IA32_SLINK_NAME = ar
+*_GCC_IA32_DLINK_NAME = ld
+*_GCC_IA32_ASM_NAME = as
+*_GCC_IA32_PP_NAME = gcc
# GCC, IA32
-#*_GCC_IA32_*_PATH = C:\cygwin\opt\tiano\i386-tiano-pe\i386-tiano-pe\bin
-#*_GCC_IA32_ASM_FAMILY = MSFT
-#*_GCC_IA32_ASM_NAME = ml.exe
-#*_GCC_IA32_ASM_PATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
-#*_GCC_IA32_ASM_DPATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
-#*_GCC_IA32_PP_FAMILY = MSFT
-#*_GCC_IA32_PP_NAME = cl.exe
-#*_GCC_IA32_PP_PATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
-#*_GCC_IA32_PP_DPATH = C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
+*_GCC_IA32_*_PATH = C:\cygwin\opt\tiano\i386-tiano-pe\i386-tiano-pe\bin
+*_GCC_IA32_ASM_EXT = .S