public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Zeng, Star" <star.zeng@intel.com>
To: "Chen, Chen A" <chen.a.chen@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Dong, Eric" <eric.dong@intel.com>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>,
	"Gao, Liming" <liming.gao@intel.com>,
	"Zeng, Star" <star.zeng@intel.com>
Subject: Re: [PATCH V2 2/4] MdeModulePkg: Removing ipf which is no longer supported from edk2.
Date: Mon, 9 Jul 2018 09:45:00 +0000	[thread overview]
Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103BB7D4F2@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <20180709060331.12052-2-chen.a.chen@intel.com>

Please do not add trailing space at the end of line.
For example the change in RegularExpressionDxe.inf:
-  MSFT:DEBUG_*_IA32_CC_FLAGS   == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
-  MSFT:RELEASE_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF
-  MSFT:DEBUG_*_X64_CC_FLAGS    == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /X
-  MSFT:RELEASE_*_X64_CC_FLAGS  == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /X
-  MSFT:DEBUG_*_IPF_CC_FLAGS    == /nologo /c /WX /GS- /W4 /EHs-c- /GR- /Gy /Os /FIAutoGen.h /QIPF_fr32 /Zi /X
-  MSFT:RELEASE_*_IPF_CC_FLAGS  == /nologo /c /WX /GS- /W4 /EHs-c- /GR- /Gy /Os /FIAutoGen.h /QIPF_fr32 /X
+  MSFT:DEBUG_*_IA32_CC_FLAGS   == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm 
+  MSFT:RELEASE_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF 
+  MSFT:DEBUG_*_X64_CC_FLAGS    == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /X 
+  MSFT:RELEASE_*_X64_CC_FLAGS  == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /X 


Please double confirm other changes for same case, Reviewed-by: Star Zeng <star.zeng@intel.com> with them corrected.


Thanks,
Star
-----Original Message-----
From: Chen, Chen A 
Sent: Monday, July 9, 2018 2:03 PM
To: edk2-devel@lists.01.org
Cc: Chen, Chen A <chen.a.chen@intel.com>; Zeng, Star <star.zeng@intel.com>; Dong, Eric <eric.dong@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>
Subject: [PATCH V2 2/4] MdeModulePkg: Removing ipf which is no longer supported from edk2.

Removing rules for Ipf sources file:
* Remove the source file which path with "ipf" and also listed in
  [Sources.IPF] section of INF file.
* Remove the source file which listed in [Components.IPF] section
  of DSC file and not listed in any other [Components] section.
* Remove the embedded Ipf code for MDE_CPU_IPF.

Removing rules for Inf file:
* Remove IPF from VALID_ARCHITECTURES comments.
* Remove DXE_SAL_DRIVER from LIBRARY_CLASS in [Defines] section.
* Remove the INF which only listed in [Components.IPF] section in DSC.
* Remove statements from [BuildOptions] that provide IPF specific flags.
* Remove any IPF sepcific sections.

Removing rules for Dec file:
* Remove [Includes.IPF] section from Dec.

Removing rules for Dsc file:
* Remove IPF from SUPPORTED_ARCHITECTURES in [Defines] section of DSC.
* Remove any IPF specific sections.
* Remove statements from [BuildOptions] that provide IPF specific flags.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Chen A Chen <chen.a.chen@intel.com>
---
 .../BootManagerMenuApp/BootManagerMenuApp.inf      |    2 +-
 MdeModulePkg/Application/HelloWorld/HelloWorld.inf |    4 +-
 .../MemoryProfileInfo/MemoryProfileInfo.inf        |    4 +-
 MdeModulePkg/Application/UiApp/UiApp.inf           |    2 +-
 .../Application/VariableInfo/VariableInfo.inf      |    4 +-
 .../Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf  |    2 +-
 MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf       |    4 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf          |    4 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf             |    4 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf         |    4 +-
 MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf       |    2 +-
 .../Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf      |    4 +-
 MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf   |    4 +-
 MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf           |    2 +-
 MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf       |    4 +-
 .../IncompatiblePciDeviceSupportDxe.inf            |    2 +-
 .../Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf        |    2 +-
 MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf       |    2 +-
 .../Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf    |    4 +-
 .../Pci/SataControllerDxe/SataControllerDxe.inf    |    2 +-
 .../Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf        |    4 +-
 .../Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf        |    2 +-
 MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf   |    2 +-
 MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf   |    2 +-
 MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf           |    4 +-
 MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf           |    4 +-
 MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf    |    2 +-
 MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf  |    2 +-
 .../Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf       |    4 +-
 MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf            |    4 +-
 MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf  |    4 +-
 MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf                |    4 +-
 .../Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf        |    4 +-
 .../Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf      |    2 +-
 MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf       |    4 +-
 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf       |    2 +-
 MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf       |    2 +-
 MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf         |    2 +-
 .../Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf    |    2 +-
 .../UsbMouseAbsolutePointerDxe.inf                 |    2 +-
 MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf   |    2 +-
 MdeModulePkg/Core/Dxe/DxeMain.inf                  |    2 +-
 MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf            |    5 +-
 MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c     |   85 --
 MdeModulePkg/Core/Pei/PeiMain.inf                  |    2 +-
 MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf        |    2 +-
 MdeModulePkg/Include/Guid/VariableFormat.h         |    7 +-
 .../BasePlatformHookLibNull.inf                    |    4 +-
 .../BaseResetSystemLibNull.inf                     |    4 +-
 MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf   |    4 +-
 MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf   |    2 +-
 .../BootMaintenanceManagerUiLib.inf                |    2 +-
 .../Library/BootManagerUiLib/BootManagerUiLib.inf  |    2 +-
 .../CpuExceptionHandlerLibNull.inf                 |    4 +-
 .../CustomizedDisplayLib/CustomizedDisplayLib.inf  |    2 +-
 .../DebugAgentLibNull/DebugAgentLibNull.inf        |    4 +-
 .../DeviceManagerUiLib/DeviceManagerUiLib.inf      |    2 +-
 .../DisplayUpdateProgressLibGraphics.inf           |    2 +-
 .../DisplayUpdateProgressLibText.inf               |    2 +-
 .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf     |    2 +-
 .../DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf      |    2 +-
 .../DxeCapsuleLibNull/DxeCapsuleLibNull.inf        |    4 +-
 .../DxeCoreMemoryAllocationLib.inf                 |    4 +-
 .../DxeCoreMemoryAllocationProfileLib.inf          |    4 +-
 .../DxeCorePerformanceLib.inf                      |    2 +-
 .../DxeCrc32GuidedSectionExtractLib.inf            |    4 +-
 .../DxeDebugPrintErrorLevelLib.inf                 |    4 +-
 MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf       |    6 +-
 .../DxeFileExplorerProtocol.inf                    |    2 +-
 MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf     |    4 +-
 MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf     |    6 +-
 MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf       |    4 +-
 .../DxePerformanceLib/DxePerformanceLib.inf        |    4 +-
 .../DxePrintLibPrint2Protocol.inf                  |    4 +-
 .../DxeReportStatusCodeLib.inf                     |    6 +-
 .../DxeResetSystemLib/DxeResetSystemLib.inf        |    2 +-
 .../DxeSecurityManagementLib.inf                   |    4 +-
 MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf   |    4 +-
 MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf   |    4 +-
 .../Library/FileExplorerLib/FileExplorerLib.inf    |    2 +-
 .../FmpAuthenticationLibNull.inf                   |    4 +-
 .../LzmaCustomDecompressLib.inf                    |    4 +-
 .../OemHookStatusCodeLibNull.inf                   |    2 +-
 .../PciHostBridgeLibNull/PciHostBridgeLibNull.inf  |    4 +-
 .../PeiCrc32GuidedSectionExtractLib.inf            |    2 +-
 .../PeiDxeDebugLibReportStatusCode.inf             |    4 +-
 .../PeiPerformanceLib/PeiPerformanceLib.inf        |    2 +-
 .../PeiRecoveryLibNull/PeiRecoveryLibNull.inf      |    2 +-
 .../PeiReportStatusCodeLib.inf                     |    2 +-
 .../PeiResetSystemLib/PeiResetSystemLib.inf        |    2 +-
 MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf |    2 +-
 .../PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf    |    6 +-
 .../PlatformHookLibSerialPortPpi.inf               |    6 +-
 .../PlatformVarCleanupLib.inf                      |    4 +-
 .../RuntimeDxeReportStatusCodeLib.inf              |    4 +-
 .../TpmMeasurementLibNull.inf                      |    6 +-
 .../UefiBootManagerLib/UefiBootManagerLib.inf      |    2 +-
 MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf     |    6 +-
 .../UefiHiiServicesLib/UefiHiiServicesLib.inf      |    4 +-
 .../UefiMemoryAllocationProfileLib.inf             |    6 +-
 MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf   |    4 +-
 MdeModulePkg/Logo/Logo.inf                         |    4 +-
 MdeModulePkg/MdeModulePkg.dsc                      |   10 +-
 .../Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf       |    2 +-
 .../Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf   |    2 +-
 .../BootGraphicsResourceTableDxe.inf               |    2 +-
 .../FirmwarePerformanceDxe.inf                     |    2 +-
 .../FirmwarePerformancePei.inf                     |    2 +-
 .../Acpi/S3SaveStateDxe/S3SaveStateDxe.inf         |    2 +-
 .../Acpi/SmmS3SaveState/SmmS3SaveState.inf         |    2 +-
 MdeModulePkg/Universal/BdsDxe/BdsDxe.inf           |    2 +-
 .../BootManagerPolicyDxe/BootManagerPolicyDxe.inf  |    2 +-
 MdeModulePkg/Universal/CapsulePei/CapsulePei.inf   |    2 +-
 .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf        |    6 +-
 .../Console/ConPlatformDxe/ConPlatformDxe.inf      |    2 +-
 .../Console/ConSplitterDxe/ConSplitterDxe.inf      |    2 +-
 .../GraphicsConsoleDxe/GraphicsConsoleDxe.inf      |    2 +-
 .../Universal/Console/TerminalDxe/TerminalDxe.inf  |    4 +-
 .../Universal/DebugPortDxe/DebugPortDxe.inf        |    4 +-
 .../Universal/DebugSupportDxe/DebugSupportDxe.inf  |   10 +-
 .../Universal/DebugSupportDxe/Ipf/AsmFuncs.s       | 1382 --------------------
 .../Universal/DebugSupportDxe/Ipf/Common.i         |   29 -
 .../Universal/DebugSupportDxe/Ipf/Ds64Macros.i     |   78 --
 .../Universal/DebugSupportDxe/Ipf/PlDebugSupport.c |  467 -------
 .../Universal/DebugSupportDxe/Ipf/PlDebugSupport.h |  324 -----
 .../Universal/DevicePathDxe/DevicePathDxe.inf      |    2 +-
 .../Universal/Disk/CdExpressPei/CdExpressPei.inf   |    2 +-
 .../Universal/Disk/DiskIoDxe/DiskIoDxe.inf         |    2 +-
 .../Universal/Disk/PartitionDxe/PartitionDxe.inf   |    2 +-
 MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf      |    3 +-
 .../UnicodeCollation/EnglishDxe/EnglishDxe.inf     |    2 +-
 .../DisplayEngineDxe/DisplayEngineDxe.inf          |    2 +-
 .../DriverHealthManagerDxe.inf                     |    2 +-
 .../Universal/DriverSampleDxe/DriverSampleDxe.inf  |    2 +-
 MdeModulePkg/Universal/EbcDxe/EbcDebugger.inf      |    7 +-
 .../Universal/EbcDxe/EbcDebuggerConfig.inf         |    4 +-
 MdeModulePkg/Universal/EbcDxe/EbcDxe.inf           |    7 +-
 MdeModulePkg/Universal/EbcDxe/Ipf/EbcLowLevel.s    |  206 ---
 MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c     |  884 -------------
 MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h     |   41 -
 MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf         |    2 +-
 .../FaultTolerantWriteDxe.inf                      |    2 +-
 .../FaultTolerantWritePei.inf                      |    4 +-
 .../Universal/FileExplorerDxe/FileExplorerDxe.inf  |    2 +-
 .../Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf    |    2 +-
 .../HiiResourcesSampleDxe.inf                      |    2 +-
 .../LegacyRegion2Dxe/LegacyRegion2Dxe.inf          |    2 +-
 .../Universal/LoadFileOnFv2/LoadFileOnFv2.inf      |    4 +-
 .../GenericMemoryTestDxe/GenericMemoryTestDxe.inf  |    4 +-
 .../NullMemoryTestDxe/NullMemoryTestDxe.inf        |    2 +-
 MdeModulePkg/Universal/Metronome/Metronome.inf     |    2 +-
 .../MonotonicCounterRuntimeDxe.inf                 |    4 +-
 MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf   |    2 +-
 .../Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf        |    2 +-
 MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf   |    4 +-
 .../Universal/Network/IScsiDxe/IScsiDxe.inf        |    2 +-
 MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf   |    2 +-
 MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf   |    2 +-
 .../Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf      |    2 +-
 MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf   |    2 +-
 MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf |    2 +-
 MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf |    2 +-
 .../Network/UefiPxeBcDxe/UefiPxeBcDxe.inf          |    2 +-
 .../Network/VlanConfigDxe/VlanConfigDxe.inf        |    4 +-
 MdeModulePkg/Universal/PCD/Dxe/Pcd.inf             |    2 +-
 MdeModulePkg/Universal/PCD/Pei/Pcd.inf             |    2 +-
 .../PcatSingleSegmentPciCfg2Pei.inf                |    4 +-
 .../PlatformDriOverrideDxe.inf                     |    2 +-
 MdeModulePkg/Universal/PrintDxe/PrintDxe.inf       |    4 +-
 .../PropertiesTableAttributesDxe.inf               |    4 +-
 .../RegularExpressionDxe/RegularExpressionDxe.inf  |   11 +-
 .../Pei/ReportStatusCodeRouterPei.inf              |    4 +-
 .../ReportStatusCodeRouterRuntimeDxe.inf           |    2 +-
 .../SectionExtractionPei/SectionExtractionPei.inf  |    2 +-
 .../Universal/SecurityStubDxe/SecurityStubDxe.inf  |    4 +-
 .../Universal/SetupBrowserDxe/SetupBrowserDxe.inf  |    2 +-
 MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf     |    2 +-
 .../SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf  |    2 +-
 .../StatusCodeHandler/Pei/StatusCodeHandlerPei.inf |    2 +-
 .../RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf     |    2 +-
 .../Universal/TimestampDxe/TimestampDxe.inf        |    2 +-
 .../Universal/Variable/Pei/VariablePei.inf         |    4 +-
 .../Universal/WatchdogTimerDxe/WatchdogTimer.inf   |    2 +-
 186 files changed, 263 insertions(+), 3789 deletions(-)
 delete mode 100644 MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c
 delete mode 100644 MdeModulePkg/Universal/DebugSupportDxe/Ipf/AsmFuncs.s
 delete mode 100644 MdeModulePkg/Universal/DebugSupportDxe/Ipf/Common.i
 delete mode 100644 MdeModulePkg/Universal/DebugSupportDxe/Ipf/Ds64Macros.i
 delete mode 100644 MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.c
 delete mode 100644 MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h
 delete mode 100644 MdeModulePkg/Universal/EbcDxe/Ipf/EbcLowLevel.s
 delete mode 100644 MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c
 delete mode 100644 MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h

diff --git a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf
index 3dc1bab9a0..b10da3742e 100644
--- a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf
+++ b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Application/HelloWorld/HelloWorld.inf b/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
index 1cfed2d85c..d5cd9d4855 100644
--- a/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
+++ b/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
@@ -6,7 +6,7 @@
 #
 #  It demos how to use EDKII PCD mechanism to make code more flexible.
 #
-#  Copyright (c) 2008 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -35,7 +35,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
index 4bb7a9df1d..96b9dac0c7 100644
--- a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
+++ b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
@@ -4,7 +4,7 @@
 #  Note that if the feature is not enabled by setting PcdMemoryProfilePropertyMask,
 #  the application will not display memory profile information.
 #
-#  Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Application/UiApp/UiApp.inf b/MdeModulePkg/Application/UiApp/UiApp.inf
index 417f1a3ec9..66372befbf 100644
--- a/MdeModulePkg/Application/UiApp/UiApp.inf
+++ b/MdeModulePkg/Application/UiApp/UiApp.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Application/VariableInfo/VariableInfo.inf b/MdeModulePkg/Application/VariableInfo/VariableInfo.inf
index 484ad32a4e..762e776e2d 100644
--- a/MdeModulePkg/Application/VariableInfo/VariableInfo.inf
+++ b/MdeModulePkg/Application/VariableInfo/VariableInfo.inf
@@ -6,7 +6,7 @@
 #  Note that if Variable Dxe/Smm driver doesn't enable the feature by setting PcdVariableCollectStatistics
 #  as TRUE, the application will not display variable statistical information.
 #
-#  Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
index 74e62649ce..1c8d144bbd 100644
--- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
+++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gAtaAtapiPassThruDriverBinding
 #  COMPONENT_NAME                =  gAtaAtapiPassThruComponentName
diff --git a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
index 4aab75bab7..446c2f9dee 100644
--- a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+++ b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
@@ -5,7 +5,7 @@
 #  in UEFI spec 2.2. It installs Block IO and Disk Info protocol for each ATA device
 #  it enumerates and identifies successfully.
 #
-#  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gAtaBusDriverBinding
 #  COMPONENT_NAME                =  gAtaBusComponentName
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
index 4dbe2f5e68..bce3b521e3 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This driver enumerates I2C devices on I2C bus and produce I2C IO Protocol on I2C devices.
 #
-#  Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
index 5cd53b2fc4..feab323360 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
@@ -4,7 +4,7 @@
 #  This driver produce I2C Host Protocol on I2C controller handle, enumerate I2C
 #  devices on I2C bus and produce I2C IO Protocol on I2C devices.
 #
-#  Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
index 2fb1085c6d..c40bf7d909 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This driver produce I2C Host Protocol on I2C controller handle.
 #
-#  Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf b/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
index b257e99dba..464720b1f9 100644
--- a/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
+++ b/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gIsaBusDriverBinding
 #  COMPONENT_NAME                =  gIsaBusComponentName
diff --git a/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf b/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
index a0172eabf8..8b6847eeac 100644
--- a/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
+++ b/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
@@ -4,7 +4,7 @@
 # Ps2 Keyboard Driver for UEFI. The keyboard type implemented follows IBM
 # compatible PS2 protocol using Scan Code Set 1.
 #
-# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
@@ -27,7 +27,7 @@
   ENTRY_POINT                    = InitializePs2Keyboard
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #  DRIVER_BINDING                = gKeyboardControllerDriver;
 #  COMPONENT_NAME                = gPs2KeyboardComponentName;
 #  COMPONENT_NAME2               = gPs2KeyboardComponentName2;
diff --git a/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf b/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
index 2c7688a051..a631aaad2e 100644
--- a/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
+++ b/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
@@ -3,7 +3,7 @@
 #
 # This dirver provides support for PS2 based mice.
 #
-# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
   ENTRY_POINT                    = InitializePs2Mouse
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #  DRIVER_BINDING                = gPS2MouseDriver;
 #  COMPONENT_NAME                = gPs2MouseComponentName;
 #  COMPONENT_NAME2               = gPs2MouseComponentName2;
diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf b/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
index bc6bd4ce29..d1db212002 100644
--- a/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
+++ b/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
@@ -34,7 +34,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 #  DRIVER_BINDING                =  gEhciDriverBinding
 #  COMPONENT_NAME                =  gEhciComponentName
diff --git a/MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf b/MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf
index 74c13db1c1..4fa3213479 100644
--- a/MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf b/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf
index 8bcef7bc6a..3686b43af4 100644
--- a/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf
+++ b/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf
@@ -4,7 +4,7 @@
 # for Atapi CD ROM device.
 #
 # This module discovers CDROM devices in Legacy and native mode and installs block IO ppis for them.
-# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf b/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf
index fa3e012cc7..6bc5f9fcbf 100644
--- a/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf
+++ b/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
index bfb783205c..aca625b3b0 100644
--- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
+++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gNvmExpressDriverBinding
 #  COMPONENT_NAME                =  gNvmExpressComponentName
diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf b/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
index a21dd2b5ed..82233e0c7b 100644
--- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
+++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 #  DRIVER_BINDING                =  gPciBusDriverBinding
 #  COMPONENT_NAME                =  gPciBusComponentName
diff --git a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
index 03fddfe75e..461f2bf5d4 100644
--- a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
+++ b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
@@ -3,7 +3,7 @@
 #
 # Produces the Serial I/O protocol for standard UARTS using Super I/O or PCI I/O.
 #
-# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gSerialControllerDriver
 #  COMPONENT_NAME                =  gPciSioSerialComponentName
diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
index 4fcb9678aa..51d95da346 100644
--- a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
+++ b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 #  DRIVER_BINDING                =  gSataControllerDriverBinding
 #  COMPONENT_NAME                =  gSataControllerComponentName
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
index 154ce45d82..b0425e9886 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
@@ -5,7 +5,7 @@
 #  It will produce EFI_SD_MMC_PASS_THRU_PROTOCOL to allow sending SD/MMC/eMMC cmds
 #  to specified devices from upper layer.
 #
-#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gSdMmcPciHcDxeDriverBinding
 #  COMPONENT_NAME                =  gSdMmcPciHcDxeComponentName
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf b/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf
index 51675f5bfb..261fc1191a 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf b/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf
index 525235635a..aa9c11f51b 100644
--- a/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf
+++ b/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gUfsHcDriverBinding
 #  COMPONENT_NAME                =  gUfsHcComponentName
diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf
index 3535da17f0..75029183ab 100644
--- a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf
+++ b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf b/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
index 5dccd3b22e..e6eb351ead 100644
--- a/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
+++ b/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 #  DRIVER_BINDING                =  gUhciDriverBinding
 #  COMPONENT_NAME                =  gUhciComponentName
diff --git a/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf b/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf
index 95ddea2162..1995d73984 100644
--- a/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf
@@ -4,7 +4,7 @@
 # It produces gPeiUsbHostControllerPpiGuid based on gPeiUsbControllerPpiGuid which is used
 # to enable recovery function from USB Drivers.
 #
-# Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf b/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
index 9bdabd10bc..4f9025b724 100644
--- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
+++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 #  DRIVER_BINDING                =  gXhciDriverBinding
 #  COMPONENT_NAME                =  gXhciComponentName
diff --git a/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf b/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
index f307ea7646..c6c48f7349 100644
--- a/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
@@ -4,7 +4,7 @@
 # It produces gPeiUsb2HostControllerPpiGuid based on gPeiUsbControllerPpiGuid
 # which is used to enable recovery function from USB Drivers.
 #
-# Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf b/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
index abcd267668..fb1ef3a8f5 100644
--- a/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
+++ b/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES              =  IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES              =  IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gSCSIBusDriverBinding
 #  COMPONENT_NAME                =  gScsiBusComponentName
diff --git a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
index 397d314272..ffe9ee9dad 100644
--- a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
+++ b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gScsiDiskDriverBinding
 #  COMPONENT_NAME                =  gScsiDiskComponentName
diff --git a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf
index b4127b791d..86c3631c82 100644
--- a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf
@@ -1,7 +1,7 @@
 ## @file
 # Description file for the Embedded MMC (eMMC) Peim driver.
 #
-# Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
index 3f27bdbcaf..b7e38098e6 100644
--- a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
+++ b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
@@ -4,7 +4,7 @@
 #  It produces BlockIo, BlockIo2 and StorageSecurity protocols to allow upper layer
 #  access the EMMC device.
 #
-#  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gEmmcDxeDriverBinding
 #  COMPONENT_NAME                =  gEmmcDxeComponentName
diff --git a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
index 1530f1efdb..0a31661aed 100644
--- a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
@@ -1,7 +1,7 @@
 ## @file
 # Description file for the SD memory card Peim driver.
 #
-# Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
index a763314275..1ce801ffcb 100644
--- a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
+++ b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
@@ -4,7 +4,7 @@
 #  It produces BlockIo and BlockIo2 protocols to allow upper layer
 #  access the SD memory card device.
 #
-#  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gSdDxeDriverBinding
 #  COMPONENT_NAME                =  gSdDxeComponentName
diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
index 28daf67ffc..daa8b6b573 100644
--- a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
@@ -1,7 +1,7 @@
 ## @file
 # Description file for the Universal Flash Storage (UFS) Peim driver.
 #
-# Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf
index 93b6424020..a8a3f7c4c5 100644
--- a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf
+++ b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gUfsPassThruDriverBinding
 #  COMPONENT_NAME                =  gUfsPassThruComponentName
diff --git a/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf b/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
index 977bef5c8b..1cd8286ad3 100644
--- a/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
+++ b/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
@@ -1,7 +1,7 @@
 ## @file
 # The Usb mass storage device Peim driver is used to support recovery from USB device.
 #
-# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
index 30d59adb34..e9baefdcff 100644
--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
+++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 #  DRIVER_BINDING                =  mUsbBusDriverBinding
 #  COMPONENT_NAME                =  mUsbBusComponentName
diff --git a/MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf b/MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf
index 0d81bf8dc2..8781adc6a8 100644
--- a/MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf
+++ b/MdeModulePkg/Bus/Usb/UsbBusPei/UsbBusPei.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf b/MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
index 41f0d9ab9b..b994ea3e24 100644
--- a/MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
+++ b/MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
@@ -37,7 +37,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 #  DRIVER_BINDING                =  gUsbKeyboardDriverBinding
 #  COMPONENT_NAME                =  gUsbKeyboardComponentName
diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
index 1fdd43443f..91953b35bc 100644
--- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
+++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
@@ -38,7 +38,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gUSBMassDriverBinding
 #  COMPONENT_NAME                =  gUsbMassStorageComponentName
diff --git a/MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/UsbMouseAbsolutePointerDxe.inf b/MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/UsbMouseAbsolutePointerDxe.inf
index 10e74b9783..aacd8fe3fe 100644
--- a/MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/UsbMouseAbsolutePointerDxe.inf
+++ b/MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe/UsbMouseAbsolutePointerDxe.inf
@@ -34,7 +34,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gUsbMouseAbsolutePointerDriverBinding
 #  COMPONENT_NAME                =  gUsbMouseAbsolutePointerComponentName
diff --git a/MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf b/MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
index 5bea024d20..6da3debb96 100644
--- a/MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
+++ b/MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe.inf
@@ -34,7 +34,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gUsbMouseDriverBinding
 #  COMPONENT_NAME                =  gUsbMouseComponentName
diff --git a/MdeModulePkg/Core/Dxe/DxeMain.inf b/MdeModulePkg/Core/Dxe/DxeMain.inf
index 68fa0a01d9..404f924764 100644
--- a/MdeModulePkg/Core/Dxe/DxeMain.inf
+++ b/MdeModulePkg/Core/Dxe/DxeMain.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
index 7deeb8f270..2ea429c215 100644
--- a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
+++ b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
@@ -31,7 +31,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only) AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only) AARCH64
 #
 
 [Sources]
@@ -49,9 +49,6 @@
   X64/VirtualMemory.c
   X64/DxeLoadFunc.c
 
-[Sources.IPF]
-  Ipf/DxeLoadFunc.c
-
 [Sources.EBC]
   Ebc/DxeLoadFunc.c
 
diff --git a/MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c b/MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c
deleted file mode 100644
index 7443648017..0000000000
--- a/MdeModulePkg/Core/DxeIplPeim/Ipf/DxeLoadFunc.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/** @file
-  Ipf-specific functionality for DxeLoad.
-
-Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "DxeIpl.h"
-
-
-
-/**
-   Transfers control to DxeCore.
-
-   This function performs a CPU architecture specific operations to execute
-   the entry point of DxeCore with the parameters of HobList.
-   It also installs EFI_END_OF_PEI_PPI to signal the end of PEI phase.
-
-   @param DxeCoreEntryPoint         The entry point of DxeCore.
-   @param HobList                   The start of HobList passed to DxeCore.
-
-**/
-VOID
-HandOffToDxeCore (
-  IN EFI_PHYSICAL_ADDRESS   DxeCoreEntryPoint,
-  IN EFI_PEI_HOB_POINTERS   HobList
-  )
-{
-  VOID                *BaseOfStack;
-  VOID                *TopOfStack;
-  VOID                *BspStore;
-  EFI_STATUS          Status;
-
-  //
-  // Allocate 128KB for the Stack
-  //
-  BaseOfStack = AllocatePages (EFI_SIZE_TO_PAGES (STACK_SIZE));
-  ASSERT (BaseOfStack != NULL);
-
-  //
-  // Allocate 16KB for the BspStore
-  //
-  BspStore    = AllocatePages (EFI_SIZE_TO_PAGES (BSP_STORE_SIZE));
-  ASSERT (BspStore != NULL);
-  //
-  // Build BspStoreHob
-  //
-  BuildBspStoreHob ((EFI_PHYSICAL_ADDRESS) (UINTN) BspStore, BSP_STORE_SIZE, EfiBootServicesData);
-
-  //
-  // Compute the top of the stack we were allocated. Pre-allocate a UINTN
-  // for safety.
-  //
-  TopOfStack = (VOID *) ((UINTN) BaseOfStack + EFI_SIZE_TO_PAGES (STACK_SIZE) * EFI_PAGE_SIZE - CPU_STACK_ALIGNMENT);
-  TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);
-
-  //
-  // End of PEI phase signal
-  //
-  Status = PeiServicesInstallPpi (&gEndOfPeiSignalPpi);
-  ASSERT_EFI_ERROR (Status);
-
-  //
-  // Update the contents of BSP stack HOB to reflect the real stack info passed to DxeCore.
-  //
-  UpdateStackHob ((EFI_PHYSICAL_ADDRESS)(UINTN) BaseOfStack, STACK_SIZE);
-
-  //
-  // Transfer the control to the entry point of DxeCore.
-  //
-  SwitchStack (
-    (SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint,
-    HobList.Raw,
-    NULL,
-    TopOfStack,
-    BspStore
-    );
-}
diff --git a/MdeModulePkg/Core/Pei/PeiMain.inf b/MdeModulePkg/Core/Pei/PeiMain.inf
index 2fb01958e5..18f46e1bd4 100644
--- a/MdeModulePkg/Core/Pei/PeiMain.inf
+++ b/MdeModulePkg/Core/Pei/PeiMain.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf b/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
index d66c8b9f09..980efad3dd 100644
--- a/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
+++ b/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
@@ -31,7 +31,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Include/Guid/VariableFormat.h b/MdeModulePkg/Include/Guid/VariableFormat.h
index b0c2616c4d..52214f1b6c 100644
--- a/MdeModulePkg/Include/Guid/VariableFormat.h
+++ b/MdeModulePkg/Include/Guid/VariableFormat.h
@@ -2,7 +2,7 @@
   The variable data structures are related to EDK II-specific implementation of UEFI variables.
   VariableFormat.h defines variable data headers and variable storage region headers.
 
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials are licensed and made available under
 the terms and conditions of the BSD License that accompanies this distribution.
 The full text of the license may be found at
@@ -28,13 +28,8 @@ extern EFI_GUID gEfiAuthenticatedVariableGuid;
 ///
 /// Alignment of variable name and data, according to the architecture:
 /// * For IA-32 and Intel(R) 64 architectures: 1.
-/// * For IA-64 architecture: 8.
 ///
-#if defined (MDE_CPU_IPF)
-#define ALIGNMENT         8
-#else
 #define ALIGNMENT         1
-#endif
 
 //
 // GET_PAD_SIZE calculates the miminal pad bytes needed to make the current pad size satisfy the alignment requirement.
diff --git a/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf b/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
index 6d5195576f..7a004005f0 100644
--- a/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
+++ b/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null Platform Hook Library instance.
 #
-#  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf b/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
index 96e0ebb212..b744b0767f 100644
--- a/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
+++ b/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null Reset System Library instance that only generates ASSERT() conditions.
 #
-#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf b/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
index 4b493f4eb6..d9b781cbe1 100644
--- a/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
+++ b/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
@@ -1,7 +1,7 @@
 ##  @file
 #   Library used for sorting routines.
 #
-#  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved. <BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -23,7 +23,7 @@
   LIBRARY_CLASS                  = SortLib|DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
index a2afc9e089..310254510d 100644
--- a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
+++ b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
index aad9d7678e..d23f71ff28 100644
--- a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
+++ b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf b/MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
index f6fc074b9d..5ae0f174b6 100644
--- a/MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
+++ b/MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf b/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
index c79c5a76ee..4dbbe410d5 100644
--- a/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
+++ b/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 # Null instance of CPU Exception Handler Library with empty functions.
 #
-#  Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf b/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
index 4b1f6b4404..6ce2e59957 100644
--- a/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
+++ b/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
index ce1eab2623..8318f1e4ca 100644
--- a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
+++ b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null instance of Debug Agent Library with empty functions.
 #
-#  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
index d493b37baa..2e61a3debd 100644
--- a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
+++ b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf b/MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf
index ada6076770..6ba073f21f 100644
--- a/MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf
+++ b/MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf
@@ -37,7 +37,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DisplayUpdateProgressLibText/DisplayUpdateProgressLibText.inf b/MdeModulePkg/Library/DisplayUpdateProgressLibText/DisplayUpdateProgressLibText.inf
index c3134439e4..df8624a77e 100644
--- a/MdeModulePkg/Library/DisplayUpdateProgressLibText/DisplayUpdateProgressLibText.inf
+++ b/MdeModulePkg/Library/DisplayUpdateProgressLibText/DisplayUpdateProgressLibText.inf
@@ -37,7 +37,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
index 8367264f76..74f23f97ff 100644
--- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
+++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
index 342df9e99c..5a80cbef3f 100644
--- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
+++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
index b836607aae..42cb306655 100644
--- a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
+++ b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
@@ -2,7 +2,7 @@
 #  NULL Dxe Capsule library instance.
 #  It can make core modules pass package level build.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
index caba8cd4a4..a7df08b520 100644
--- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
+++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
@@ -4,7 +4,7 @@
 # for memory allocation instead of using UEFI boot services in an indirect way.
 # It is assumed that this library instance must be linked with DxeCore in this package.
 #
-# Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
index a2b5f8c102..823ca7127d 100644
--- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
+++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
@@ -4,7 +4,7 @@
 # for memory allocation/profile instead of using UEFI boot services or memory profile protocol in an indirect way.
 # It is assumed that this library instance must be linked with DxeCore in this package.
 #
-# Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
index 8fab47ff02..e19a74bbe6 100644
--- a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
+++ b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
@@ -35,7 +35,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
index 7a8efbf8cf..176d9d984a 100644
--- a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
+++ b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
@@ -25,14 +25,14 @@
   FILE_GUID                      = 387A2490-81FC-4E7C-8E0A-3E58C30FCD0B
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = NULL|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = NULL|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
   CONSTRUCTOR                    = DxeCrc32GuidedSectionExtractLibConstructor
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLib.inf b/MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLib.inf
index 69a41f40c7..47f8681f2f 100644
--- a/MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLib.inf
+++ b/MdeModulePkg/Library/DxeDebugPrintErrorLevelLib/DxeDebugPrintErrorLevelLib.inf
@@ -22,12 +22,12 @@
   FILE_GUID                      = 1D564EC9-9373-49a4-9E3F-E4D7B9974C84
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = DebugPrintErrorLevelLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = DebugPrintErrorLevelLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                    = DxeDebugPrintErrorLevelLibConstructor
   DESTRUCTOR                     = DxeDebugPrintErrorLevelLibDestructor
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf b/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
index d541acd5a9..091f0a0465 100644
--- a/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
+++ b/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This library instance provides DPC service by consuming EFI DPC Protocol.
 #
-#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution.  The full text of the license may be found at
@@ -19,13 +19,13 @@
   FILE_GUID                      = 38897D86-FF36-4472-AE64-1DB9AE715C81
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = DpcLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = DpcLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                    = DpcLibConstructor
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeFileExplorerProtocol/DxeFileExplorerProtocol.inf b/MdeModulePkg/Library/DxeFileExplorerProtocol/DxeFileExplorerProtocol.inf
index 9db58cb8f6..bfa18d7bdd 100644
--- a/MdeModulePkg/Library/DxeFileExplorerProtocol/DxeFileExplorerProtocol.inf
+++ b/MdeModulePkg/Library/DxeFileExplorerProtocol/DxeFileExplorerProtocol.inf
@@ -20,7 +20,7 @@
   FILE_GUID                      = 6806C45F-13C4-4274-B8A3-055EF641A060
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = FileExplorerLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = FileExplorerLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                    = FileExplorerConstructor
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
index d6d5391b3a..dbcb67f9ab 100644
--- a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
+++ b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
@@ -21,12 +21,12 @@
   FILE_GUID                      = ABBAB4CD-EA88-45b9-8234-C8A7450531FC
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = HttpLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = HttpLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
index 086c74d1f1..c8e7a516a9 100644
--- a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
+++ b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This library instance provides IP services upon EFI IPv4/IPv6 Protocols.
 #
-#  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution.  The full text of the license may be found at
@@ -20,12 +20,12 @@
   FILE_GUID                      = A302F877-8625-425c-B1EC-7487B62C4FDA
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = IpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = IpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
index c31a04bb72..290b865e09 100644
--- a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
+++ b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
@@ -21,12 +21,12 @@
   FILE_GUID                      = db6dcef3-9f4e-4340-9351-fc35aa8a5888
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = NetLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = NetLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf b/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
index d9c7e833b5..3f10a4234f 100644
--- a/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
+++ b/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
@@ -24,12 +24,12 @@
   FILE_GUID                      = 8B8B4CCC-65FC-41a5-8067-308B8E42CCF2
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = PerformanceLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = PerformanceLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
index 1cda2dc5cf..e1b05986ca 100644
--- a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
+++ b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Library instance that implements Print Library class based on protocol gEfiPrint2ProtocolGuid.
 #
-#  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -20,7 +20,7 @@
   FILE_GUID                      = 55D460DB-8FEA-415a-B95D-70145AE0675C
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = PrintLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = PrintLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                    = PrintLibConstructor
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf b/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
index 962cf8b05b..d833b667e5 100644
--- a/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+++ b/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
@@ -3,7 +3,7 @@
 #
 #  Retrieve status code and report status code in DXE phase.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -22,12 +22,12 @@
   FILE_GUID                      = EBF144C8-70F5-4e09-ADE2-F41F5C59AFDA
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = ReportStatusCodeLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER SMM_CORE
+  LIBRARY_CLASS                  = ReportStatusCodeLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER SMM_CORE
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf b/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf
index 5cd52d8859..be1a01518f 100644
--- a/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf
+++ b/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf b/MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
index 41d8ff8fd1..023b7fd88d 100644
--- a/MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
+++ b/MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
@@ -22,12 +22,12 @@
   FILE_GUID                      = 7F61122C-19DF-47c3-BA0D-6C1149E30FA1
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = SecurityManagementLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = SecurityManagementLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf b/MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf
index 2dc74a73e2..78465d5826 100644
--- a/MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf
+++ b/MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf
@@ -20,12 +20,12 @@
   FILE_GUID                      = D4608509-1AB0-4cc7-827A-AB8E1E7BD3E6
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = TcpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = TcpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
index 3e541ee6ee..3a10a7945d 100644
--- a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
+++ b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
@@ -20,12 +20,12 @@
   FILE_GUID                      = 7E615AA1-41EE-49d4-B7E9-1D7A60AA5C8D
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = UdpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = UdpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf b/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
index 5d9822d95f..d5a4732dd3 100644
--- a/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
+++ b/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf b/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
index f9b87ca53a..5c4e9d0958 100644
--- a/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
+++ b/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
@@ -3,7 +3,7 @@
 #
 # NULL Instance of FmpAuthentication Library.
 #
-# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf b/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
index 127c7ded86..9d3a51a383 100644
--- a/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
+++ b/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
@@ -5,7 +5,7 @@
 #  LZMA SDK 16.04 was placed in the public domain on 2016-10-04.
 #  It was released on the http://www.7-zip.org/sdk.html website.
 #
-#  Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf b/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
index 34555761a0..1d49f5e379 100644
--- a/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
+++ b/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
index 8df14924ad..42da8d93c1 100644
--- a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
+++ b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null instance of PCI Host Bridge Library with empty functions.
 #
-#  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials are licensed and made available
 #  under the terms and conditions of the BSD License which accompanies this
@@ -27,7 +27,7 @@
 # The following information is for reference only and not required by the build
 # tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf
index c1d6f27992..eaa2f2c931 100644
--- a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf
+++ b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
index 12a063f5b8..8d98982aed 100644
--- a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
+++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
@@ -21,12 +21,12 @@
   FILE_GUID                      = bda39d3a-451b-4350-8266-81ab10fa0523
   MODULE_TYPE                    = PEIM
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = DebugLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER SMM_CORE PEIM SEC PEI_CORE UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = DebugLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER SMM_CORE PEIM SEC PEI_CORE UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf b/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
index cad3a120a2..96bc613949 100644
--- a/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
+++ b/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf b/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf
index 70c9a88491..a2b26855fb 100644
--- a/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf
+++ b/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf b/MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
index 5b1df7e2bb..e1b89792ab 100644
--- a/MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
+++ b/MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf b/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf
index b1b9388c63..3d930e5d21 100644
--- a/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf
+++ b/MdeModulePkg/Library/PeiResetSystemLib/PeiResetSystemLib.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf b/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf
index f408d7f528..10525b0502 100644
--- a/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf
+++ b/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf b/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
index 0feff36612..f66e46e58e 100644
--- a/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
+++ b/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
@@ -1,7 +1,7 @@
 ## @file
 # DXE S3 boot script Library.
 #
-# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials are
 # licensed and made available under the terms and conditions of the BSD License
@@ -20,7 +20,7 @@
   FILE_GUID                      = 57F9967B-26CD-4262-837A-55B8AA158254
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = S3BootScriptLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER DXE_SAL_DRIVER UEFI_DRIVER UEFI_APPLICATION
+  LIBRARY_CLASS                  = S3BootScriptLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_DRIVER UEFI_APPLICATION
 
 
   CONSTRUCTOR                    = S3BootScriptLibInitialize
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf b/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
index d577506b26..10be353742 100644
--- a/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
+++ b/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null Platform Hook Library instance with dependency on gPeiSerialPortPpiGuid
 #
-#  Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -18,13 +18,13 @@
   FILE_GUID                      = 621734D8-8B5E-4c01-B330-9F89A1081710
   MODULE_TYPE                    = PEIM
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = PlatformHookLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER SMM_CORE PEIM SEC PEI_CORE UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = PlatformHookLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER SMM_CORE PEIM SEC PEI_CORE UEFI_APPLICATION UEFI_DRIVER
   MODULE_UNI_FILE                = PlatformHookLibSerialPortPpi.uni
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
index 6e7fcb6a5c..26b99c178e 100644
--- a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
+++ b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Sample platform variable cleanup library instance.
 #
-#  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions
@@ -21,7 +21,7 @@
   FILE_GUID                     = 9C9623EB-4EF3-44e0-A931-F3A340D1A0F9
   MODULE_TYPE                   = DXE_DRIVER
   VERSION_STRING                = 1.0
-  LIBRARY_CLASS                 = PlatformVarCleanupLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                 = PlatformVarCleanupLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                   = PlatformVarCleanupLibConstructor
   DESTRUCTOR                    = PlatformVarCleanupLibDestructor
 
diff --git a/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf b/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
index 9f03e2a1ed..e350e1b577 100644
--- a/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
+++ b/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
@@ -20,13 +20,13 @@
   FILE_GUID                      = 07D25BBB-F832-41bb-BBA0-612E9F033067
   MODULE_TYPE                    = DXE_RUNTIME_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = ReportStatusCodeLib|DXE_RUNTIME_DRIVER DXE_SAL_DRIVER
+  LIBRARY_CLASS                  = ReportStatusCodeLib|DXE_RUNTIME_DRIVER
   CONSTRUCTOR                    = ReportStatusCodeLibConstructor
   DESTRUCTOR                     = ReportStatusCodeLibDestructor
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf b/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
index fef783a4f9..5e82b85656 100644
--- a/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
+++ b/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Provides NULL TPM measurement function.
 #
-# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
 # which accompanies this distribution. The full text of the license may be found at
@@ -17,13 +17,13 @@
   FILE_GUID                      = 6DFD6E9F-9278-48D8-8F45-B6CFF2C2B69C
   MODULE_TYPE                    = UEFI_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = TpmMeasurementLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = TpmMeasurementLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   MODULE_UNI_FILE                = TpmMeasurementLibNull.uni
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF
+#  VALID_ARCHITECTURES           = IA32 X64
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
index 72c5ca1cd5..408410872d 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
+++ b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf b/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
index 7ee68428a1..44076dfcbd 100644
--- a/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
+++ b/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
@@ -1,7 +1,7 @@
 ## @file
 #  HII Library implementation using UEFI HII protocols and services.
 #
-#  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -21,10 +21,10 @@
   FILE_GUID                      = 3143687A-7C80-404e-B5FE-2D88980E1B1C
   MODULE_TYPE                    = UEFI_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = HiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = HiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf b/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
index fba1d6620e..8aee50527a 100644
--- a/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
+++ b/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
@@ -20,12 +20,12 @@
   FILE_GUID                      = 894DC1B6-07A3-4a9d-8CDD-333580B3D4B1
   MODULE_TYPE                    = UEFI_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = UefiHiiServicesLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = UefiHiiServicesLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
   CONSTRUCTOR                    = UefiHiiServicesLibConstructor
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/UefiMemoryAllocationProfileLib/UefiMemoryAllocationProfileLib.inf b/MdeModulePkg/Library/UefiMemoryAllocationProfileLib/UefiMemoryAllocationProfileLib.inf
index c4954efb04..e7630209b0 100644
--- a/MdeModulePkg/Library/UefiMemoryAllocationProfileLib/UefiMemoryAllocationProfileLib.inf
+++ b/MdeModulePkg/Library/UefiMemoryAllocationProfileLib/UefiMemoryAllocationProfileLib.inf
@@ -27,12 +27,12 @@
   FILE_GUID                      = 9E8A380A-231E-41E4-AD40-5E706196B853
   MODULE_TYPE                    = UEFI_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = MemoryAllocationLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
-  LIBRARY_CLASS                  = MemoryProfileLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = MemoryAllocationLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = MemoryProfileLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                    = MemoryProfileLibConstructor
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf b/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
index 4c3d5e0545..ddfeca3a4b 100644
--- a/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+++ b/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
@@ -1,7 +1,7 @@
 ##  @file
 #   Library used for sorting routines.
 #
-#  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved. <BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -23,7 +23,7 @@
   LIBRARY_CLASS                  = SortLib|UEFI_APPLICATION UEFI_DRIVER UEFI_DRIVER DXE_RUNTIME_DRIVER DXE_DRIVER
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Logo/Logo.inf b/MdeModulePkg/Logo/Logo.inf
index e2e61c82c5..1a30fed80c 100644
--- a/MdeModulePkg/Logo/Logo.inf
+++ b/MdeModulePkg/Logo/Logo.inf
@@ -1,7 +1,7 @@
 ## @file
 #  The default logo bitmap picture shown on setup screen, which is corresponding to gEfiDefaultBmpLogoGuid.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 
 [Binaries]
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index bb7744894a..b65ff5f4e6 100644
--- a/MdeModulePkg/MdeModulePkg.dsc
+++ b/MdeModulePkg/MdeModulePkg.dsc
@@ -20,7 +20,7 @@
   PLATFORM_VERSION               = 0.98
   DSC_SPECIFICATION              = 0x00010005
   OUTPUT_DIRECTORY               = Build/MdeModule
-  SUPPORTED_ARCHITECTURES        = IA32|IPF|X64|EBC|ARM|AARCH64
+  SUPPORTED_ARCHITECTURES        = IA32|X64|EBC|ARM|AARCH64
   BUILD_TARGETS                  = DEBUG|RELEASE|NOOPT
   SKUID_IDENTIFIER               = DEFAULT
 
@@ -79,7 +79,6 @@
   SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf
   CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
   PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
-  PalLib|MdePkg/Library/BasePalLibNull/BasePalLibNull.inf
   CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
   FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf
   #
@@ -202,9 +201,6 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizePopulateCapsule|0x0
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|28
 
-[PcdsFixedAtBuild.IPF]
-  gEfiMdePkgTokenSpaceGuid.PcdIoBlockBaseAddressForIpf|0x0ffffc000000
-
 ###################################################################################################
 #
 # Components Section - list of the modules and components that will be processed by compilation
@@ -445,14 +441,14 @@
   MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
   MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
 
-[Components.IA32, Components.X64, Components.IPF, Components.AARCH64]
+[Components.IA32, Components.X64, Components.AARCH64]
   MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
   MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
   MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
   MdeModulePkg/Universal/EbcDxe/EbcDebugger.inf
   MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
 
-[Components.IA32, Components.X64, Components.IPF, Components.ARM, Components.AARCH64]
+[Components.IA32, Components.X64, Components.ARM, Components.AARCH64]
   MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
   MdeModulePkg/Core/Dxe/DxeMain.inf {
     <LibraryClasses>
diff --git a/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf b/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf
index f4860cdc0b..a1241571e9 100644
--- a/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf
+++ b/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
index 32c66785d5..f81cf1cceb 100644
--- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
+++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
index 080a939cc0..968a3b11c5 100644
--- a/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
+++ b/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf
index 843cda7021..b4ac04ee73 100644
--- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf
+++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.inf b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.inf
index 1b69e49cf9..9fec6cb5a0 100644
--- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.inf
+++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf b/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
index a4184212bb..d208661b0c 100644
--- a/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
+++ b/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf b/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf
index 0742da60ca..d993a81883 100644
--- a/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf
+++ b/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf b/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
index 7e644aa995..27b3914386 100644
--- a/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
+++ b/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/BootManagerPolicyDxe/BootManagerPolicyDxe.inf b/MdeModulePkg/Universal/BootManagerPolicyDxe/BootManagerPolicyDxe.inf
index 33014723d0..e58407732f 100644
--- a/MdeModulePkg/Universal/BootManagerPolicyDxe/BootManagerPolicyDxe.inf
+++ b/MdeModulePkg/Universal/BootManagerPolicyDxe/BootManagerPolicyDxe.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/CapsulePei/CapsulePei.inf b/MdeModulePkg/Universal/CapsulePei/CapsulePei.inf
index 02cf90c75d..587956eb5f 100644
--- a/MdeModulePkg/Universal/CapsulePei/CapsulePei.inf
+++ b/MdeModulePkg/Universal/CapsulePei/CapsulePei.inf
@@ -33,7 +33,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
index 3849bc84a8..812b5a6427 100644
--- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
@@ -27,14 +27,14 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 
 [Sources]
   CapsuleService.c
   CapsuleService.h
-
-[Sources.Ia32, Sources.IPF, Sources.EBC]
+
+[Sources.Ia32, Sources.EBC, Sources.ARM, Sources.AARCH64]
   SaveLongModeContext.c
   CapsuleReset.c
 
diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
index bc57e2c8a1..0f8c5d6a49 100644
--- a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
+++ b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gConPlatformTextInDriverBinding
 #  COMPONENT_NAME                =  gConPlatformComponentName
diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
index a191ebcd9b..1f45e9cd55 100644
--- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
+++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
@@ -34,7 +34,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gConSplitterConInDriverBinding
 #  COMPONENT_NAME                =  gConSplitterConInComponentName
diff --git a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
index bf387cd97b..3645fad30a 100644
--- a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
+++ b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gGraphicsConsoleDriverBinding
 #  COMPONENT_NAME                =  gGraphicsConsoleComponentName
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
index 0780296798..cec5433f4e 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
@@ -5,7 +5,7 @@
 #  protocols based on Serial I/O protocol for serial devices including hotplug serial
 #  devices.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gTerminalDriverBinding
 #  COMPONENT_NAME                =  gTerminalComponentName
diff --git a/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf b/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
index b727cda3cf..6b26596491 100644
--- a/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
+++ b/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
@@ -4,7 +4,7 @@
 # This driver binds exclusively to a standard UART serial port on the controller handle,
 # and initializes serial Io interface, publishs Debug Port and Device Path Protocol.
 #
-# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gDebugPortDriverBinding
 #  COMPONENT_NAME                =  gDebugPortComponentName
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
index 0d37f5fb64..d0e2e45c7f 100644
--- a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
+++ b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF
+#  VALID_ARCHITECTURES           = IA32 X64
 #
 
 [Sources]
@@ -50,14 +50,6 @@
   X64/PlDebugSupportX64.c
   X64/AsmFuncs.nasm
 
-[Sources.IPF]
-  Ipf/PlDebugSupport.h
-  Ipf/PlDebugSupport.c
-  Ipf/Ds64Macros.i
-  Ipf/Common.i
-  Ipf/AsmFuncs.s
-
-
 [Packages]
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/AsmFuncs.s b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/AsmFuncs.s
deleted file mode 100644
index db75fc088e..0000000000
--- a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/AsmFuncs.s
+++ /dev/null
@@ -1,1382 +0,0 @@
-/// @file
-///  Low level IPF routines used by the debug support driver
-///
-/// Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-/// This program and the accompanying materials
-/// are licensed and made available under the terms and conditions of the BSD License
-/// which accompanies this distribution.  The full text of the license may be found at
-/// http://opensource.org/licenses/bsd-license.php
-///
-/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-///
-///
-
-
-#include "Common.i"
-#include "Ds64Macros.i"
-
-ASM_GLOBAL PatchSaveBuffer
-ASM_GLOBAL IpfContextBuf
-ASM_GLOBAL CommonHandler
-ASM_GLOBAL ExternalInterruptCount
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      InstructionCacheFlush
-//
-//  Description:
-//      Flushes instruction cache for specified number of bytes
-//
-        ASM_GLOBAL InstructionCacheFlush
-        .proc   InstructionCacheFlush
-        .align 32
-InstructionCacheFlush::
- {      .mii
-        alloc   r3=2, 0, 0, 0
-        cmp4.leu p0,p6=32, r33;;
-        (p6)    mov r33=32;;
- }
- {      .mii
-        nop.m    0
-        zxt4    r29=r33;;
-        dep.z   r30=r29, 0, 5;;
- }
- {      .mii
-        cmp4.eq p0,p7=r0, r30
-        shr.u   r28=r29, 5;;
-        (p7)    adds    r28=1, r28;;
- }
- {      .mii
-        nop.m    0
-        shl r27=r28, 5;;
-        zxt4    r26=r27;;
- }
- {      .mfb
-        add r31=r26, r32
-        nop.f    0
-        nop.b    0
- }
-LoopBack:   // $L143:
- {      .mii
-        fc   r32
-        adds    r32=32, r32;;
-        cmp.ltu p14,p15=r32, r31
- }
- {      .mfb
-        nop.m    0
-        nop.f    0
-        //(p14) br.cond.dptk.few $L143#;;
-        (p14)   br.cond.dptk.few LoopBack;;
- }
- {      .mmi
-        sync.i;;
-        srlz.i
-        nop.i   0;;
- }
- {      .mfb
-        nop.m    0
-        nop.f    0
-        br.ret.sptk.few b0;;
- }
-        .endp   InstructionCacheFlush
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      ChainHandler
-//
-//  Description:
-//      Chains an interrupt handler
-//
-//      The purpose of this function is to enable chaining of the external interrupt.
-//      Since there's no clean SAL abstraction for doing this, we must do it
-//      surreptitiously.
-//
-//      The reserved IVT entry at offset 0x3400 is coopted for use by this handler.
-//      According to Itanium architecture, it is reserved.  Strictly speaking, this is
-//      not safe, as we're cheating and violating the Itanium architecture.  However,
-//      as long as we're the only ones cheating, we should be OK.  Without hooks in
-//      the SAL to enable IVT management, there aren't many good options.
-//
-//      The strategy is to replace the first bundle of the external interrupt handler
-//      with our own that will branch into a piece of code we've supplied and located
-//      in the reserved IVT entry.  Only the first bundle of the external interrupt
-//      IVT entry is modified.
-//
-//      The original bundle is moved and relocated to space
-//      allocated within the reserved IVT entry.  The next bundle following is
-//      is generated to go a hard coded branch back to the second bundle of the
-//      external interrupt IVT entry just in case the first bundle had no branch.
-//
-//      Our new code will execute our handler, and then fall through to the
-//      original bundle after restoring all context appropriately.
-//
-//      The following is a representation of what the IVT memory map looks like with
-//      our chained handler installed:
-//
-//
-//
-//
-//
-//      This IVT entry is      Failsafe bundle
-//      reserved by the
-//      Itanium architecture   Original bundle 0
-//      and is used for
-//      for locating our
-//      handler and the
-//      original bundle        Patch code...
-//      zero of the ext
-//      interrupt handler
-//
-//      RSVD    (3400)         Unused
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//      EXT_INT (3000)         Bundle 0               Bundle zero - This one is
-//                                modified, all other bundles
-//                                                       in the EXT_INT entry are
-//                                                       untouched.
-//
-//
-//       Arguments:
-//
-//       Returns:
-//
-//       Notes:
-//
-//
-        ASM_GLOBAL ChainHandler
-        .proc ChainHandler
-ChainHandler:
-
-        NESTED_SETUP( 0,2+3,3,0 )
-
-        mov         r8=1                           // r8 = success
-        mov         r2=cr.iva;;
-//
-// NOTE: There's a potential hazard here in that we're simply stealing a bunch of
-// bundles (memory) from the IVT and assuming there's no catastrophic side effect.
-//
-// First, save IVT area we're taking over with the patch so we can restore it later
-//
-        addl        out0=PATCH_ENTRY_OFFSET, r2    // out0 = source buffer
-        movl        out1=PatchSaveBuffer           // out1 = destination buffer
-        mov         out2=0x40;;                    // out2 = number of bundles to copy... save entire IDT entry
-        br.call.sptk.few    b0 = CopyBundles
-
-// Next, copy the patch code into the IVT
-        movl        out0=PatchCode                 // out0 = source buffer of patch code
-        addl        out1=PATCH_OFFSET, r2          // out1 = destination buffer - in IVT
-        mov         out2=PATCH_CODE_SIZE;;       
-        shr         out2=out2, 4;;                 // out2 = number of bundles to copy
-        br.call.sptk.few    b0 = CopyBundles
-
-
-// copy original bundle 0 from the external interrupt handler to the
-// appropriate place in the reserved IVT interrupt slot
-        addl        out0=EXT_INT_ENTRY_OFFSET, r2  // out0 = source buffer
-        addl        out1=RELOCATED_EXT_INT, r2     // out1 = destination buffer - in reserved IVT
-        mov         out2=1;;                       // out2 = copy 1 bundle
-        br.call.sptk.few    b0 = CopyBundles
-
-// Now relocate it there because it very likely had a branch instruction that
-// that must now be fixed up.
-        addl        out0=RELOCATED_EXT_INT, r2     // out0 = new runtime address of bundle - in reserved IVT
-        addl        out1=EXT_INT_ENTRY_OFFSET, r2;;// out1 = IP address of previous location
-        mov         out2=out0;;                    // out2 = IP address of new location
-        br.call.sptk.few    b0 = RelocateBundle
-
-// Now copy into the failsafe branch into the next bundle just in case
-// the original ext int bundle 0 bundle did not contain a branch instruction
-        movl        out0=FailsafeBranch            // out0 = source buffer
-        addl        out1=FAILSAFE_BRANCH_OFFSET, r2  // out1 = destination buffer - in reserved IVT
-        mov         out2=1;;                       // out2 = copy 1 bundle
-        br.call.sptk.few    b0 = CopyBundles
-
-// Last, copy in our replacement for the external interrupt IVT entry bundle 0
-        movl        out0=PatchCodeNewBun0          // out0 = source buffer - our replacement bundle 0
-        addl        out1=EXT_INT_ENTRY_OFFSET, r2  // out1 = destination buffer - bundle 0 of External interrupt entry
-        mov         out2=1;;                       // out2 = copy 1 bundle
-        br.call.sptk.few    b0 = CopyBundles
-
-ChainHandlerDone:
-        NESTED_RETURN
-
-        .endp ChainHandler
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      UnchainHandler
-//
-//  Description:
-//      Unchains an interrupt handler
-//
-//  Arguments:
-//
-//  Returns:
-//
-//  Notes:
-//
-//
-        ASM_GLOBAL UnchainHandler
-        .proc UnchainHandler
-
-UnchainHandler:
-
-        NESTED_SETUP( 0,2+3,3,0 )
-
-        mov         r8=1                        // r8 = success
-        mov         r2=cr.iva;;                 // r2 = interrupt vector address
-
-// First copy original Ext Int bundle 0 back to it's proper home...
-        addl        out0=RELOCATED_EXT_INT, r2     // out0 = source - in reserved IVT
-        addl        out1=EXT_INT_ENTRY_OFFSET, r2  // out1 = destination buffer - first bundle of Ext Int entry
-        mov         out2=1;;                       // out2 = copy 1 bundle
-        br.call.sptk.few    b0 = CopyBundles
-
-// Now, relocate it again...
-        addl        out0=EXT_INT_ENTRY_OFFSET, r2  // out1 = New runtime address
-        addl        out1=RELOCATED_EXT_INT, r2;;   // out0 = IP address of previous location
-        mov         out2=out0;;                    // out2 = IP address of new location
-        br.call.sptk.few    b0 = RelocateBundle
-
-// Last, restore the patch area
-        movl        out0=PatchSaveBuffer           // out0 = source buffer
-        addl        out1=PATCH_ENTRY_OFFSET, r2    // out1 = destination buffer
-        mov         out2=0x40;;                    // out2 = number of bundles to copy... save entire IDT entry
-        br.call.sptk.few    b0 = CopyBundles
-
-UnchainHandlerDone:
-        NESTED_RETURN
-
-        .endp UnchainHandler
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      CopyBundles
-//
-//  Description:
-//      Copies instruction bundles - flushes icache as necessary
-//
-//  Arguments:
-//      in0 - Bundle source
-//      in1 - Bundle destination
-//      in2 - Bundle count
-//
-//  Returns:
-//
-//  Notes:
-//      This procedure is a leaf routine
-//
-        .proc   CopyBundles
-
-CopyBundles:
-
-        NESTED_SETUP(3,2+1,0,0)
-
-        shl         in2=in2, 1;;                // in2 = count of 8 byte blocks to copy
-
-CopyBundlesLoop:
-
-        cmp.eq      p14, p15 = 0, in2;;         // Check if done
-(p14)   br.sptk.few CopyBundlesDone;;
-
-        ld8         loc2=[in0], 0x8;;           // loc2 = source bytes
-        st8         [in1]=loc2;;                // [in1] = destination bytes
-        fc          in1;;                       // Flush instruction cache
-        sync.i;;                                // Ensure local and remote data/inst caches in sync
-        srlz.i;;                                // Ensure sync has been observed
-        add         in1=0x8, in1;;              // in1 = next destination
-        add         in2=-1, in2;;               // in2 = decrement 8 bytes blocks to copy
-        br.sptk.few CopyBundlesLoop;;
-
-CopyBundlesDone:
-        NESTED_RETURN
-
-        .endp   CopyBundles
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      RelocateBundle
-//
-//  Description:
-//      Relocates an instruction bundle by updating any ip-relative branch instructions.
-//
-//  Arguments:
-//      in0 - Runtime address of bundle
-//      in1 - IP address of previous location of bundle
-//      in2 - IP address of new location of bundle
-//
-//  Returns:
-//      in0 - 1 if successful or 0 if unsuccessful
-//
-//  Notes:
-//      This routine examines all slots in the given bundle that are destined for the
-//      branch execution unit.  If any of these slots contain an IP-relative branch
-//      namely instructions B1, B2, B3, or B6, the slot is fixed-up with a new relative
-//      address.  Errors can occur if a branch cannot be reached.
-//
-        .proc   RelocateBundle
-
-RelocateBundle:
-
-        NESTED_SETUP(3,2+4,3,0)
-
-        mov         loc2=SLOT0                  // loc2 = slot index
-        mov         loc5=in0;;                  // loc5 = runtime address of bundle
-        mov         in0=1;;                     // in0 = success
-
-RelocateBundleNextSlot:
-
-        cmp.ge      p14, p15 = SLOT2, loc2;;    // Check if maximum slot
-(p15)   br.sptk.few RelocateBundleDone
-
-        mov         out0=loc5;;                 // out0 = runtime address of bundle
-        br.call.sptk.few    b0 = GetTemplate
-        mov         loc3=out0;;                 // loc3 = instruction template
-        mov         out0=loc5                   // out0 = runtime address of bundle
-        mov         out1=loc2;;                 // out1 = instruction slot number
-        br.call.sptk.few    b0 = GetSlot
-        mov         loc4=out0;;                 // loc4 = instruction encoding
-        mov         out0=loc4                   // out0 = instuction encoding
-        mov         out1=loc2                   // out1 = instruction slot number
-        mov         out2=loc3;;                 // out2 = instruction template
-        br.call.sptk.few    b0 = IsSlotBranch
-        cmp.eq      p14, p15 = 1, out0;;        // Check if branch slot
-(p15)   add         loc2=1,loc2                 // Increment slot
-(p15)   br.sptk.few RelocateBundleNextSlot
-        mov         out0=loc4                   // out0 = instuction encoding
-        mov         out1=in1                    // out1 = IP address of previous location
-        mov         out2=in2;;                  // out2 = IP address of new location
-        br.call.sptk.few    b0 = RelocateSlot
-        cmp.eq      p14, p15 = 1, out1;;        // Check if relocated slot
-(p15)   mov         in0=0                       // in0 = failure
-(p15)   br.sptk.few RelocateBundleDone
-        mov         out2=out0;;                 // out2 = instruction encoding
-        mov         out0=loc5                   // out0 = runtime address of bundle
-        mov         out1=loc2;;                 // out1 = instruction slot number
-        br.call.sptk.few    b0 = SetSlot
-        add         loc2=1,loc2;;               // Increment slot
-        br.sptk.few RelocateBundleNextSlot
-
-RelocateBundleDone:
-        NESTED_RETURN
-
-        .endp   RelocateBundle
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      RelocateSlot
-//
-//  Description:
-//      Relocates an instruction bundle by updating any ip-relative branch instructions.
-//
-//  Arguments:
-//      in0 - Instruction encoding (41-bits, right justified)
-//      in1 - IP address of previous location of bundle
-//      in2 - IP address of new location of bundle
-//
-//  Returns:
-//      in0 - Instruction encoding (41-bits, right justified)
-//      in1 - 1 if successful otherwise 0
-//
-//  Notes:
-//      This procedure is a leaf routine
-//
-        .proc   RelocateSlot
-
-RelocateSlot:
-        NESTED_SETUP(3,2+5,0,0)
-        extr.u      loc2=in0, 37, 4;;           // loc2 = instruction opcode
-        cmp.eq      p14, p15 = 4, loc2;;        // IP-relative branch (B1) or
-                                                // IP-relative counted branch (B2)
-(p15)   cmp.eq      p14, p15 = 5, loc2;;        // IP-relative call (B3)
-(p15)   cmp.eq      p14, p15 = 7, loc2;;        // IP-relative predict (B6)
-(p15)   mov         in1=1                       // Instruction did not need to be reencoded
-(p15)   br.sptk.few RelocateSlotDone
-        tbit.nz     p14, p15 = in0, 36;;        // put relative offset sign bit in p14
-        extr.u      loc2=in0, 13, 20;;          // loc2 = relative offset in instruction
-(p14)   movl        loc3=0xfffffffffff00000;;   // extend sign
-(p14)   or          loc2=loc2, loc3;;
-        shl         loc2=loc2,4;;               // convert to byte offset instead of bundle offset
-        add         loc3=loc2, in1;;            // loc3 = physical address of branch target
-(p14)   sub         loc2=r0,loc2;;              // flip sign in loc2 if offset is negative
-        sub         loc4=loc3,in2;;             // loc4 = relative offset from new ip to branch target
-        cmp.lt      p15, p14 = 0, loc4;;        // get new sign bit
-(p14)   sub         loc5=r0,loc4                // get absolute value of offset
-(p15)   mov         loc5=loc4;;
-        movl        loc6=0x0FFFFFF;;            // maximum offset in bytes for ip-rel branch
-        cmp.gt      p14, p15 = loc5, loc6;;     // check to see we're not out of range for an ip-relative branch
-(p14)   br.sptk.few RelocateSlotError
-        cmp.lt      p15, p14 = 0, loc4;;        // store sign in p14 again
-(p14)   dep         in0=-1,in0,36,1              // store sign bit in instruction
-(p15)   dep         in0=0,in0,36,1
-        shr         loc4=loc4, 4;;              // convert back to bundle offset
-        dep         in0=loc4,in0,13,16;;        // put first 16 bits of new offset into instruction
-        shr         loc4=loc4,16;;
-        dep         in0=loc4,in0,13+16,4        // put last 4 bits of new offset into instruction
-        mov         in1=1;;                     // in1 = success
-        br.sptk.few RelocateSlotDone;;
-
-RelocateSlotError:
-        mov         in1=0;;                     // in1 = failure
-
-RelocateSlotDone:
-        NESTED_RETURN
-
-        .endp   RelocateSlot
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      IsSlotBranch
-//
-//  Description:
-//      Determines if the given instruction is a branch instruction.
-//
-//  Arguments:
-//      in0 - Instruction encoding (41-bits, right justified)
-//      in1 - Instruction slot number
-//      in2 - Bundle template
-//
-//  Returns:
-//      in0 - 1 if branch or 0 if not branch
-//
-//  Notes:
-//      This procedure is a leaf routine
-//
-//      IsSlotBranch recognizes all branch instructions by looking at the provided template.
-//      The instruction encoding is only passed to this routine for future expansion.
-//
-        .proc   IsSlotBranch
-
-IsSlotBranch:
-
-        NESTED_SETUP (3,2+0,0,0)
-
-        mov         in0=1;;                     // in0 = 1 which destroys the instruction
-        andcm       in2=in2,in0;;               // in2 = even template to reduce compares
-        mov         in0=0;;                     // in0 = not a branch
-        cmp.eq      p14, p15 = 0x16, in2;;      // Template 0x16 is BBB
-(p14)   br.sptk.few IsSlotBranchTrue
-        cmp.eq      p14, p15 = SLOT0, in1;;     // Slot 0 has no other possiblities
-(p14)   br.sptk.few IsSlotBranchDone
-        cmp.eq      p14, p15 = 0x12, in2;;      // Template 0x12 is MBB
-(p14)   br.sptk.few IsSlotBranchTrue
-        cmp.eq      p14, p15 = SLOT1, in1;;     // Slot 1 has no other possiblities
-(p14)   br.sptk.few IsSlotBranchDone
-        cmp.eq      p14, p15 = 0x10, in2;;      // Template 0x10 is MIB
-(p14)   br.sptk.few IsSlotBranchTrue
-        cmp.eq      p14, p15 = 0x18, in2;;      // Template 0x18 is MMB
-(p14)   br.sptk.few IsSlotBranchTrue
-        cmp.eq      p14, p15 = 0x1C, in2;;      // Template 0x1C is MFB
-(p14)   br.sptk.few IsSlotBranchTrue
-        br.sptk.few IsSlotBranchDone
-
-IsSlotBranchTrue:
-        mov         in0=1;;                     // in0 = branch
-
-IsSlotBranchDone:
-        NESTED_RETURN
-
-        .endp   IsSlotBranch
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      GetTemplate
-//
-//  Description:
-//      Retrieves the instruction template for an instruction bundle
-//
-//  Arguments:
-//      in0 - Runtime address of bundle
-//
-//  Returns:
-//      in0 - Instruction template (5-bits, right-justified)
-//
-//  Notes:
-//      This procedure is a leaf routine
-//
-        .proc   GetTemplate
-
-GetTemplate:
-
-        NESTED_SETUP (1,2+2,0,0)
-
-        ld8     loc2=[in0], 0x8             // loc2 = first 8 bytes of branch bundle
-        movl    loc3=MASK_0_4;;             // loc3 = template mask
-        and     loc2=loc2,loc3;;            // loc2 = template, right justified
-        mov     in0=loc2;;                  // in0 = template, right justified
-
-        NESTED_RETURN
-
-        .endp   GetTemplate
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      GetSlot
-//
-//  Description:
-//      Gets the instruction encoding for an instruction slot and bundle
-//
-//  Arguments:
-//      in0 - Runtime address of bundle
-//      in1 - Instruction slot (either 0, 1, or 2)
-//
-//  Returns:
-//      in0 - Instruction encoding (41-bits, right justified)
-//
-//  Notes:
-//      This procedure is a leaf routine
-//
-//      Slot0 - [in0 + 0x8] Bits 45-5
-//      Slot1 - [in0 + 0x8] Bits 63-46 and [in0] Bits 22-0
-//      Slot2 - [in0] Bits 63-23
-//
-        .proc   GetSlot
-
-GetSlot:
-        NESTED_SETUP (2,2+3,0,0)
-
-        ld8     loc2=[in0], 0x8;;           // loc2 = first 8 bytes of branch bundle
-        ld8     loc3=[in0];;                // loc3 = second 8 bytes of branch bundle
-        cmp.eq  p14, p15 = 2, in1;;         // check if slot 2 specified
- (p14)  br.cond.sptk.few    GetSlot2;;      // get slot 2
-        cmp.eq  p14, p15 = 1, in1;;         // check if slot 1 specified
- (p14)  br.cond.sptk.few    GetSlot1;;      // get slot 1
-
-GetSlot0:
-        extr.u  in0=loc2, 5, 45             // in0 = extracted slot 0
-        br.sptk.few GetSlotDone;;
-
-GetSlot1:
-        extr.u  in0=loc2, 46, 18            // in0 = bits 63-46 of loc2 right-justified
-        extr.u  loc4=loc3, 0, 23;;          // loc4 = bits 22-0 of loc3 right-justified
-        dep     in0=loc4, in0, 18, 15;;
-        shr.u   loc4=loc4,15;;
-        dep     in0=loc4, in0, 33, 8;;      // in0 = extracted slot 1
-        br.sptk.few GetSlotDone;;
-
-GetSlot2:
-        extr.u  in0=loc3, 23, 41;;          // in0 = extracted slot 2
-
-GetSlotDone:
-        NESTED_RETURN
-
-        .endp   GetSlot
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      SetSlot
-//
-//  Description:
-//      Sets the instruction encoding for an instruction slot and bundle
-//
-//  Arguments:
-//      in0 - Runtime address of bundle
-//      in1 - Instruction slot (either 0, 1, or 2)
-//      in2 - Instruction encoding (41-bits, right justified)
-//
-//  Returns:
-//
-//  Notes:
-//      This procedure is a leaf routine
-//
-        .proc       SetSlot
-
-SetSlot:
-        NESTED_SETUP (3,2+3,0,0)
-
-        ld8     loc2=[in0], 0x8;;           // loc2 = first 8 bytes of bundle
-        ld8     loc3=[in0];;                // loc3 = second 8 bytes of bundle
-        cmp.eq  p14, p15 = 2, in1;;         // check if slot 2 specified
- (p14)  br.cond.sptk.few    SetSlot2;;      // set slot 2
-        cmp.eq  p14, p15 = 1, in1;;         // check if slot 1 specified
- (p14)  br.cond.sptk.few    SetSlot1;;      // set slot 1
-
-SetSlot0:
-        dep     loc2=0, loc2, 5, 41;;       // remove old instruction from slot 0
-        shl     loc4=in2, 5;;               // loc4 = new instruction ready to be inserted
-        or      loc2=loc2, loc4;;           // loc2 = updated first 8 bytes of bundle
-        add     loc4=0x8,in0;;              // loc4 = address to store first 8 bytes of bundle
-        st8     [loc4]=loc2                 // [loc4] = updated bundle
-        br.sptk.few SetSlotDone;;
-        ;;
-
-SetSlot1:
-        dep     loc2=0, loc2, 46, 18        // remove old instruction from slot 1
-        dep     loc3=0, loc3, 0, 23;;
-        shl     loc4=in2, 46;;              // loc4 = partial instruction ready to be inserted
-        or      loc2=loc2, loc4;;           // loc2 = updated first 8 bytes of bundle
-        add     loc4=0x8,in0;;              // loc4 = address to store first 8 bytes of bundle
-        st8     [loc4]=loc2;;               // [loc4] = updated bundle
-        shr.u   loc4=in2, 18;;              // loc4 = partial instruction ready to be inserted
-        or      loc3=loc3, loc4;;           // loc3 = updated second 8 bytes of bundle
-        st8     [in0]=loc3;;                // [in0] = updated bundle
-        br.sptk.few SetSlotDone;;
-
-SetSlot2:
-        dep     loc3=0, loc3, 23, 41;;      // remove old instruction from slot 2
-        shl     loc4=in2, 23;;              // loc4 = instruction ready to be inserted
-        or      loc3=loc3, loc4;;           // loc3 = updated second 8 bytes of bundle
-        st8     [in0]=loc3;;                // [in0] = updated bundle
-
-SetSlotDone:
-
-        NESTED_RETURN
-        .endp       SetSlot
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      GetIva
-//
-//  Description:
-//      C callable function to obtain the current value of IVA
-//
-//  Returns:
-//      Current value if IVA
-
-        ASM_GLOBAL     GetIva
-        .proc       GetIva
-GetIva:
-        mov         r8=cr2;;
-        br.ret.sptk.many    b0
-
-        .endp       GetIva
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      ProgramInterruptFlags
-//
-//  Description:
-//      C callable function to enable/disable interrupts
-//
-//  Returns:
-//      Previous state of psr.ic
-//
-        ASM_GLOBAL     ProgramInterruptFlags
-        .proc       ProgramInterruptFlags
-ProgramInterruptFlags:
-        alloc       loc0=1,2,0,0;;
-        mov         loc0=psr
-        mov         loc1=0x6000;;
-        and         r8=loc0, loc1           // obtain current psr.ic and psr.i state
-        and         in0=in0, loc1           // insure no extra bits set in input
-        andcm       loc0=loc0,loc1;;        // clear original psr.i and psr.ic
-        or          loc0=loc0,in0;;         // OR in new psr.ic value
-        mov         psr.l=loc0;;            // write new psr
-        srlz.d
-        br.ret.sptk.many    b0              // return
-
-        .endp       ProgramInterruptFlags
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      SpillContext
-//
-//  Description:
-//      Saves system context to context record.
-//
-//  Arguments:
-//          in0 = 512 byte aligned context record address
-//          in1 = original B0
-//          in2 = original ar.bsp
-//          in3 = original ar.bspstore
-//          in4 = original ar.rnat
-//          in5 = original ar.pfs
-//
-//  Notes:
-//      loc0 - scratch
-//      loc1 - scratch
-//      loc2 - temporary application unat storage
-//      loc3 - temporary exception handler unat storage
-
-        .proc       SpillContext
-
-SpillContext:
-        alloc       loc0=6,4,0,0;;          // alloc 6 input, 4 locals, 0 outs
-        mov         loc2=ar.unat;;          // save application context unat (spilled later)
-        mov         ar.unat=r0;;            // set UNAT=0
-        st8.spill   [in0]=r0,8;;
-        st8.spill   [in0]=r1,8;;            // save R1 - R31
-        st8.spill   [in0]=r2,8;;
-        st8.spill   [in0]=r3,8;;
-        st8.spill   [in0]=r4,8;;
-        st8.spill   [in0]=r5,8;;
-        st8.spill   [in0]=r6,8;;
-        st8.spill   [in0]=r7,8;;
-        st8.spill   [in0]=r8,8;;
-        st8.spill   [in0]=r9,8;;
-        st8.spill   [in0]=r10,8;;
-        st8.spill   [in0]=r11,8;;
-        st8.spill   [in0]=r12,8;;
-        st8.spill   [in0]=r13,8;;
-        st8.spill   [in0]=r14,8;;
-        st8.spill   [in0]=r15,8;;
-        st8.spill   [in0]=r16,8;;
-        st8.spill   [in0]=r17,8;;
-        st8.spill   [in0]=r18,8;;
-        st8.spill   [in0]=r19,8;;
-        st8.spill   [in0]=r20,8;;
-        st8.spill   [in0]=r21,8;;
-        st8.spill   [in0]=r22,8;;
-        st8.spill   [in0]=r23,8;;
-        st8.spill   [in0]=r24,8;;
-        st8.spill   [in0]=r25,8;;
-        st8.spill   [in0]=r26,8;;
-        st8.spill   [in0]=r27,8;;
-        st8.spill   [in0]=r28,8;;
-        st8.spill   [in0]=r29,8;;
-        st8.spill   [in0]=r30,8;;
-        st8.spill   [in0]=r31,8;;
-        mov         loc3=ar.unat;;          // save debugger context unat (spilled later)
-        stf.spill   [in0]=f2,16;;           // save f2 - f31
-        stf.spill   [in0]=f3,16;;
-        stf.spill   [in0]=f4,16;;
-        stf.spill   [in0]=f5,16;;
-        stf.spill   [in0]=f6,16;;
-        stf.spill   [in0]=f7,16;;
-        stf.spill   [in0]=f8,16;;
-        stf.spill   [in0]=f9,16;;
-        stf.spill   [in0]=f10,16;;
-        stf.spill   [in0]=f11,16;;
-        stf.spill   [in0]=f12,16;;
-        stf.spill   [in0]=f13,16;;
-        stf.spill   [in0]=f14,16;;
-        stf.spill   [in0]=f15,16;;
-        stf.spill   [in0]=f16,16;;
-        stf.spill   [in0]=f17,16;;
-        stf.spill   [in0]=f18,16;;
-        stf.spill   [in0]=f19,16;;
-        stf.spill   [in0]=f20,16;;
-        stf.spill   [in0]=f21,16;;
-        stf.spill   [in0]=f22,16;;
-        stf.spill   [in0]=f23,16;;
-        stf.spill   [in0]=f24,16;;
-        stf.spill   [in0]=f25,16;;
-        stf.spill   [in0]=f26,16;;
-        stf.spill   [in0]=f27,16;;
-        stf.spill   [in0]=f28,16;;
-        stf.spill   [in0]=f29,16;;
-        stf.spill   [in0]=f30,16;;
-        stf.spill   [in0]=f31,16;;
-        mov         loc0=pr;;               // save predicates
-        st8.spill   [in0]=loc0,8;;
-        st8.spill   [in0]=in1,8;;           // save b0 - b7... in1 already equals saved b0
-        mov         loc0=b1;;
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=b2;;
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=b3;;
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=b4;;
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=b5;;
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=b6;;
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=b7;;
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.rsc;;           // save ar.rsc
-        st8.spill   [in0]=loc0,8;;
-        st8.spill   [in0]=in2,8;;           // save ar.bsp (in2)
-        st8.spill   [in0]=in3,8;;           // save ar.bspstore (in3)
-        st8.spill   [in0]=in4,8;;           // save ar.rnat (in4)
-        mov         loc0=ar.fcr;;           // save ar.fcr (ar21 - IA32 floating-point control register)
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.eflag;;         // save ar.eflag (ar24)
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.csd;;           // save ar.csd (ar25 - ia32 CS descriptor)
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.ssd;;           // save ar.ssd (ar26 - ia32 ss descriptor)
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.cflg;;          // save ar.cflg (ar27 - ia32 cr0 and cr4)
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.fsr;;           // save ar.fsr (ar28 - ia32 floating-point status register)
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.fir;;           // save ar.fir (ar29 - ia32 floating-point instruction register)
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.fdr;;           // save ar.fdr (ar30 - ia32 floating-point data register)
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.ccv;;           // save ar.ccv
-        st8.spill   [in0]=loc0,8;;
-        st8.spill   [in0]=loc2,8;;          // save ar.unat (saved to loc2 earlier)
-        mov         loc0=ar.fpsr;;          // save floating point status register
-        st8.spill   [in0]=loc0,8;;
-        st8.spill   [in0]=in5,8;;           // save ar.pfs
-        mov         loc0=ar.lc;;            // save ar.lc
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ar.ec;;            // save ar.ec
-        st8.spill   [in0]=loc0,8;;
-
-        // save control registers
-        mov         loc0=cr.dcr;;           // save dcr
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.itm;;           // save itm
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.iva;;           // save iva
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.pta;;           // save pta
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.ipsr;;          // save ipsr
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.isr;;           // save isr
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.iip;;           // save iip
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.ifa;;           // save ifa
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.itir;;          // save itir
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.iipa;;          // save iipa
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.ifs;;           // save ifs
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.iim;;           // save iim
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=cr.iha;;           // save iha
-        st8.spill   [in0]=loc0,8;;
-
-        // save debug registers
-        mov         loc0=dbr[r0];;          // save dbr0 - dbr7
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=1;;
-        mov         loc0=dbr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=2;;
-        mov         loc0=dbr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=3;;
-        mov         loc0=dbr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=4;;
-        mov         loc0=dbr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=5;;
-        mov         loc0=dbr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=6;;
-        mov         loc0=dbr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=7;;
-        mov         loc0=dbr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        mov         loc0=ibr[r0];;          // save ibr0 - ibr7
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=1;;
-        mov         loc0=ibr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=2;;
-        mov         loc0=ibr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=3;;
-        mov         loc0=ibr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=4;;
-        mov         loc0=ibr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=5;;
-        mov         loc0=ibr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=6;;
-        mov         loc0=ibr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        movl        loc1=7;;
-        mov         loc0=ibr[loc1];;
-        st8.spill   [in0]=loc0,8;;
-        st8.spill   [in0]=loc3;;
-
-        br.ret.sptk.few     b0
-
-        .endp       SpillContext
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      FillContext
-//
-//  Description:
-//      Restores register context from context record.
-//
-//  Arguments:
-//          in0 = address of last element 512 byte aligned context record address
-//          in1 = modified B0
-//          in2 = modified ar.bsp
-//          in3 = modified ar.bspstore
-//          in4 = modified ar.rnat
-//          in5 = modified ar.pfs
-//
-//  Notes:
-//      loc0 - scratch
-//      loc1 - scratch
-//      loc2 - temporary application unat storage
-//      loc3 - temporary exception handler unat storage
-
-        .proc       FillContext
-FillContext:
-        alloc       loc0=6,4,0,0;;          // alloc 6 inputs, 4 locals, 0 outs
-        ld8.fill    loc3=[in0],-8;;         // int_nat (nat bits for R1-31)
-        movl        loc1=7;;                // ibr7
-        ld8.fill    loc0=[in0],-8;;
-        mov         ibr[loc1]=loc0;;
-        movl        loc1=6;;                // ibr6
-        ld8.fill    loc0=[in0],-8;;
-        mov         ibr[loc1]=loc0;;
-        movl        loc1=5;;                // ibr5
-        ld8.fill    loc0=[in0],-8;;
-        mov         ibr[loc1]=loc0;;
-        movl        loc1=4;;                // ibr4
-        ld8.fill    loc0=[in0],-8;;
-        mov         ibr[loc1]=loc0;;
-        movl        loc1=3;;                // ibr3
-        ld8.fill    loc0=[in0],-8;;
-        mov         ibr[loc1]=loc0;;
-        movl        loc1=2;;                // ibr2
-        ld8.fill    loc0=[in0],-8;;
-        mov         ibr[loc1]=loc0;;
-        movl        loc1=1;;                // ibr1
-        ld8.fill    loc0=[in0],-8;;
-        mov         ibr[loc1]=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ibr0
-        mov         ibr[r0]=loc0;;
-        movl        loc1=7;;                // dbr7
-        ld8.fill    loc0=[in0],-8;;
-        mov         dbr[loc1]=loc0;;
-        movl        loc1=6;;                // dbr6
-        ld8.fill    loc0=[in0],-8;;
-        mov         dbr[loc1]=loc0;;
-        movl        loc1=5;;                // dbr5
-        ld8.fill    loc0=[in0],-8;;
-        mov         dbr[loc1]=loc0;;
-        movl        loc1=4;;                // dbr4
-        ld8.fill    loc0=[in0],-8;;
-        mov         dbr[loc1]=loc0;;
-        movl        loc1=3;;                // dbr3
-        ld8.fill    loc0=[in0],-8;;
-        mov         dbr[loc1]=loc0;;
-        movl        loc1=2;;                // dbr2
-        ld8.fill    loc0=[in0],-8;;
-        mov         dbr[loc1]=loc0;;
-        movl        loc1=1;;                // dbr1
-        ld8.fill    loc0=[in0],-8;;
-        mov         dbr[loc1]=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // dbr0
-        mov         dbr[r0]=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // iha
-        mov         cr.iha=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // iim
-        mov         cr.iim=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ifs
-        mov         cr.ifs=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // iipa
-        mov         cr.iipa=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // itir
-        mov         cr.itir=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ifa
-        mov         cr.ifa=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // iip
-        mov         cr.iip=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // isr
-        mov         cr.isr=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ipsr
-        mov         cr.ipsr=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // pta
-        mov         cr.pta=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // iva
-        mov         cr.iva=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // itm
-        mov         cr.itm=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // dcr
-        mov         cr.dcr=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ec
-        mov         ar.ec=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // lc
-        mov         ar.lc=loc0;;
-        ld8.fill    in5=[in0],-8;;          // ar.pfs
-        ld8.fill    loc0=[in0],-8;;         // ar.fpsr
-        mov         ar.fpsr=loc0;;
-        ld8.fill    loc2=[in0],-8;;         // ar.unat - restored later...
-        ld8.fill    loc0=[in0],-8;;         // ar.ccv
-        mov         ar.ccv=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ar.fdr
-        mov         ar.fdr=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ar.fir
-        mov         ar.fir=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ar.fsr
-        mov         ar.fsr=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ar.cflg
-        mov         ar.cflg=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ar.ssd
-        mov         ar.ssd=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ar.csd
-        mov         ar.csd=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ar.eflag
-        mov         ar.eflag=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // ar.fcr
-        mov         ar.fcr=loc0;;
-        ld8.fill    in4=[in0],-8;;          // ar.rnat
-        ld8.fill    in3=[in0],-8;;          // bspstore
-        ld8.fill    in2=[in0],-8;;          // bsp
-        ld8.fill    loc0=[in0],-8;;         // ar.rsc
-        mov         ar.rsc=loc0;;
-        ld8.fill    loc0=[in0],-8;;         // B7 - B0
-        mov         b7=loc0;;
-        ld8.fill    loc0=[in0],-8;;
-        mov         b6=loc0;;
-        ld8.fill    loc0=[in0],-8;;
-        mov         b5=loc0;;
-        ld8.fill    loc0=[in0],-8;;
-        mov         b4=loc0;;
-        ld8.fill    loc0=[in0],-8;;
-        mov         b3=loc0;;
-        ld8.fill    loc0=[in0],-8;;
-        mov         b2=loc0;;
-        ld8.fill    loc0=[in0],-8;;
-        mov         b1=loc0;;
-        ld8.fill    in1=[in0],-8;;          // b0 is temporarily stored in in1
-        ld8.fill    loc0=[in0],-16;;        // predicates
-        mov         pr=loc0;;
-        ldf.fill    f31=[in0],-16;;
-        ldf.fill    f30=[in0],-16;;
-        ldf.fill    f29=[in0],-16;;
-        ldf.fill    f28=[in0],-16;;
-        ldf.fill    f27=[in0],-16;;
-        ldf.fill    f26=[in0],-16;;
-        ldf.fill    f25=[in0],-16;;
-        ldf.fill    f24=[in0],-16;;
-        ldf.fill    f23=[in0],-16;;
-        ldf.fill    f22=[in0],-16;;
-        ldf.fill    f21=[in0],-16;;
-        ldf.fill    f20=[in0],-16;;
-        ldf.fill    f19=[in0],-16;;
-        ldf.fill    f18=[in0],-16;;
-        ldf.fill    f17=[in0],-16;;
-        ldf.fill    f16=[in0],-16;;
-        ldf.fill    f15=[in0],-16;;
-        ldf.fill    f14=[in0],-16;;
-        ldf.fill    f13=[in0],-16;;
-        ldf.fill    f12=[in0],-16;;
-        ldf.fill    f11=[in0],-16;;
-        ldf.fill    f10=[in0],-16;;
-        ldf.fill    f9=[in0],-16;;
-        ldf.fill    f8=[in0],-16;;
-        ldf.fill    f7=[in0],-16;;
-        ldf.fill    f6=[in0],-16;;
-        ldf.fill    f5=[in0],-16;;
-        ldf.fill    f4=[in0],-16;;
-        ldf.fill    f3=[in0],-16;;
-        ldf.fill    f2=[in0],-8;;
-        mov         ar.unat=loc3;;          // restore unat (int_nat) before fill of general registers
-        ld8.fill    r31=[in0],-8;;
-        ld8.fill    r30=[in0],-8;;
-        ld8.fill    r29=[in0],-8;;
-        ld8.fill    r28=[in0],-8;;
-        ld8.fill    r27=[in0],-8;;
-        ld8.fill    r26=[in0],-8;;
-        ld8.fill    r25=[in0],-8;;
-        ld8.fill    r24=[in0],-8;;
-        ld8.fill    r23=[in0],-8;;
-        ld8.fill    r22=[in0],-8;;
-        ld8.fill    r21=[in0],-8;;
-        ld8.fill    r20=[in0],-8;;
-        ld8.fill    r19=[in0],-8;;
-        ld8.fill    r18=[in0],-8;;
-        ld8.fill    r17=[in0],-8;;
-        ld8.fill    r16=[in0],-8;;
-        ld8.fill    r15=[in0],-8;;
-        ld8.fill    r14=[in0],-8;;
-        ld8.fill    r13=[in0],-8;;
-        ld8.fill    r12=[in0],-8;;
-        ld8.fill    r11=[in0],-8;;
-        ld8.fill    r10=[in0],-8;;
-        ld8.fill    r9=[in0],-8;;
-        ld8.fill    r8=[in0],-8;;
-        ld8.fill    r7=[in0],-8;;
-        ld8.fill    r6=[in0],-8;;
-        ld8.fill    r5=[in0],-8;;
-        ld8.fill    r4=[in0],-8;;
-        ld8.fill    r3=[in0],-8;;
-        ld8.fill    r2=[in0],-8;;
-        ld8.fill    r1=[in0],-8;;
-        mov         ar.unat=loc2;;          // restore application context unat
-
-        br.ret.sptk.many    b0
-
-        .endp       FillContext
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      HookHandler
-//
-//  Description:
-//      Common branch target from hooked IVT entries.  Runs in interrupt context.
-//      Responsible for saving and restoring context and calling common C
-//      handler.  Banked registers running on bank 0 at entry.
-//
-//  Arguments:
-//      All arguments are passed in banked registers:
-//          B0_REG = Original B0
-//          SCRATCH_REG1 = IVT entry index
-//
-//  Returns:
-//      Returns via rfi
-//
-//  Notes:
-//      loc0 - scratch
-//      loc1 - scratch
-//      loc2 - vector number / mask
-//      loc3 - 16 byte aligned context record address
-//      loc4 - temporary storage of last address in context record
-
-HookHandler:
-        flushrs;;                               // Synch RSE with backing store
-        mov         SCRATCH_REG2=ar.bsp         // save interrupted context bsp
-        mov         SCRATCH_REG3=ar.bspstore    // save interrupted context bspstore
-        mov         SCRATCH_REG4=ar.rnat        // save interrupted context rnat
-        mov         SCRATCH_REG6=cr.ifs;;       // save IFS in case we need to chain...
-        cover;;                                 // creates new frame, moves old
-                                                //   CFM to IFS.
-        alloc       SCRATCH_REG5=0,5,6,0        // alloc 5 locals, 6 outs
-        ;;
-        // save banked registers to locals
-        mov         out1=B0_REG                 // out1 = Original B0
-        mov         out2=SCRATCH_REG2           // out2 = original ar.bsp
-        mov         out3=SCRATCH_REG3           // out3 = original ar.bspstore
-        mov         out4=SCRATCH_REG4           // out4 = original ar.rnat
-        mov         out5=SCRATCH_REG5           // out5 = original ar.pfs
-        mov         loc2=SCRATCH_REG1;;         // loc2 = vector number + chain flag
-        bsw.1;;                                 // switch banked registers to bank 1
-        srlz.d                                  // explicit serialize required
-                                                // now fill in context record structure
-        movl        loc3=IpfContextBuf          // Insure context record is aligned
-        add         loc0=-0x200,r0;;            // mask the lower 9 bits (align on 512 byte boundary)
-        and         loc3=loc3,loc0;;
-        add         loc3=0x200,loc3;;           // move to next 512 byte boundary
-                                                // loc3 now contains the 512 byte aligned context record
-                                                // spill register context into context record
-        mov         out0=loc3;;                 // Context record base in out0
-                                                // original B0 in out1 already
-                                                // original ar.bsp in out2 already
-                                                // original ar.bspstore in out3 already
-        br.call.sptk.few b0=SpillContext;;      // spill context
-        mov         loc4=out0                   // save modified address
-
-    // At this point, the context has been saved to the context record and we're
-    // ready to call the C part of the handler...
-
-        movl        loc0=CommonHandler;;        // obtain address of plabel
-        ld8         loc1=[loc0];;               // get entry point of CommonHandler
-        mov         b6=loc1;;                   // put it in a branch register
-        adds        loc1= 8, loc0;;             // index to GP in plabel
-        ld8         r1=[loc1];;                 // set up gp for C call
-        mov         loc1=0xfffff;;              // mask off so only vector bits are present
-        and         out0=loc2,loc1;;            // pass vector number (exception type)
-        mov         out1=loc3;;                 // pass context record address
-        br.call.sptk.few b0=b6;;                // call C handler
-
-    // We've returned from the C call, so restore the context and either rfi
-    // back to interrupted thread, or chain into the SAL if this was an external interrupt
-        mov         out0=loc4;;                 // pass address of last element in context record
-        br.call.sptk.few b0=FillContext;;       // Fill context
-        mov         b0=out1                     // fill in b0
-        mov         ar.rnat=out4
-        mov         ar.pfs=out5
-
-  // Loadrs is necessary because the debugger may have changed some values in
-  // the backing store.  The processor, however may not be aware that the
-  // stacked registers need to be reloaded from the backing store.  Therefore,
-  // we explicitly cause the RSE to refresh the stacked register's contents
-  // from the backing store.
-        mov         loc0=ar.rsc                 // get RSC value
-        mov         loc1=ar.rsc                 // save it so we can restore it
-        movl        loc3=0xffffffffc000ffff;;   // create mask for clearing RSC.loadrs
-        and         loc0=loc0,loc3;;            // create value for RSC with RSC.loadrs==0
-        mov         ar.rsc=loc0;;               // modify RSC
-        loadrs;;                                // invalidate register stack
-        mov         ar.rsc=loc1;;               // restore original RSC
-
-        bsw.0;;                                 // switch banked registers back to bank 0
-        srlz.d;;                                // explicit serialize required
-        mov         PR_REG=pr                   // save predicates - to be restored after chaining decision
-        mov         B0_REG=b0                   // save b0 - required by chain code
-        mov         loc2=EXCPT_EXTERNAL_INTERRUPT;;
-        cmp.eq      p7,p0=SCRATCH_REG1,loc2;;   // check to see if this is the timer tick
-  (p7)  br.cond.dpnt.few    DO_CHAIN;;
-
-NO_CHAIN:
-        mov         pr=PR_REG;;
-        rfi;;                                   // we're outa here.
-
-DO_CHAIN:
-        mov         pr=PR_REG
-        mov         SCRATCH_REG1=cr.iva
-        mov         SCRATCH_REG2=PATCH_RETURN_OFFSET;;
-        add         SCRATCH_REG1=SCRATCH_REG1, SCRATCH_REG2;;
-        mov         b0=SCRATCH_REG1;;
-        br.cond.sptk.few  b0;;
-
-EndHookHandler:
-
-
-/////////////////////////////////////////////
-//
-//  Name:
-//      HookStub
-//
-//  Description:
-//      HookStub will be copied from it's loaded location into the IVT when
-//      an IVT entry is hooked.  The IVT entry does an indirect jump via B0 to
-//      HookHandler, which in turn calls into the default C handler, which calls
-//      the user-installed C handler.  The calls return and HookHandler executes
-//      an rfi.
-//
-//  Notes:
-//      Saves B0 to B0_REG
-//      Saves IVT index to SCRATCH_REG1 (immediate value is fixed up when code is copied
-//          to the IVT entry.
-
-        ASM_GLOBAL HookStub
-        .proc   HookStub
-HookStub:
-
-        mov         B0_REG=b0
-        movl        SCRATCH_REG1=HookHandler;;
-        mov         b0=SCRATCH_REG1;;
-        mov         SCRATCH_REG1=0;;// immediate value is fixed up during install of handler to be the vector number
-        br.cond.sptk.few b0
-
-        .endp       HookStub
-
-
-/////////////////////////////////////////////
-// The following code is moved into IVT entry 14 (offset 3400) which is reserved
-// in the Itanium architecture.  The patch code is located at the end of the
-// IVT entry.
-
-PatchCode:
-        mov       SCRATCH_REG0=psr
-        mov       SCRATCH_REG6=cr.ipsr
-        mov       PR_REG=pr
-        mov       B0_REG=b0;;
-
-        // turn off any virtual translations
-        movl      SCRATCH_REG1 = ~( MASK(PSR_DT,1) | MASK(PSR_RT,1));;
-        and       SCRATCH_REG1 = SCRATCH_REG0, SCRATCH_REG1;;
-        mov       psr.l = SCRATCH_REG1;;
-        srlz.d
-        tbit.z    p14, p15 = SCRATCH_REG6, PSR_IS;;   // Check to see if we were
-                                                      // interrupted from IA32
-                                                      // context.  If so, bail out
-                                                      // and chain to SAL immediately
- (p15)  br.cond.sptk.few Stub_IVT_Passthru;;
-        // we only want to take 1 out of 32 external interrupts to minimize the
-        // impact to system performance.  Check our interrupt count and bail
-        // out if we're not up to 32
-        movl      SCRATCH_REG1=ExternalInterruptCount;;
-        ld8       SCRATCH_REG2=[SCRATCH_REG1];;       // ExternalInterruptCount
-        tbit.z    p14, p15 = SCRATCH_REG2, 5;;        // bit 5 set?
- (p14)  add       SCRATCH_REG2=1, SCRATCH_REG2;;      // No?  Then increment
-                                                      // ExternalInterruptCount
-                                                      // and Chain to SAL
-                                                      // immediately
- (p14)  st8       [SCRATCH_REG1]=SCRATCH_REG2;;
- (p14)  br.cond.sptk.few Stub_IVT_Passthru;;
- (p15)  mov       SCRATCH_REG2=0;;                    // Yes?  Then reset
-                                                        // ExternalInterruptCount
-                                                        // and branch to
-                                                        // HookHandler
- (p15)  st8       [SCRATCH_REG1]=SCRATCH_REG2;;
-        mov       pr=PR_REG
-        movl      SCRATCH_REG1=HookHandler;;          // SCRATCH_REG1 = entrypoint of HookHandler
-        mov       b0=SCRATCH_REG1;;                   // b0 = entrypoint of HookHandler
-        mov       SCRATCH_REG1=EXCPT_EXTERNAL_INTERRUPT;;
-        br.sptk.few b0;;                                // branch to HookHandler
-
-PatchCodeRet:
-        // fake-up an rfi to get RSE back to being coherent and insure psr has
-        // original contents when interrupt occured, then exit to SAL
-        // at this point:
-        //      cr.ifs has been modified by previous "cover"
-        //      SCRATCH_REG6 has original cr.ifs
-
-        mov       SCRATCH_REG5=cr.ipsr
-        mov       SCRATCH_REG4=cr.iip;;
-        mov       cr.ipsr=SCRATCH_REG0
-        mov       SCRATCH_REG1=ip;;
-        add       SCRATCH_REG1=0x30, SCRATCH_REG1;;
-        mov       cr.iip=SCRATCH_REG1;;
-        rfi;;                       // rfi to next instruction
-
-Stub_RfiTarget:
-        mov       cr.ifs=SCRATCH_REG6
-        mov       cr.ipsr=SCRATCH_REG5
-        mov       cr.iip=SCRATCH_REG4;;
-
-Stub_IVT_Passthru:
-        mov       pr=PR_REG                         // pr = saved predicate registers
-        mov       b0=B0_REG;;                       // b0 = saved b0
-EndPatchCode:
-
-
-/////////////////////////////////////////////
-// The following bundle is moved into IVT entry 14 (offset 0x3400) which is reserved
-// in the Itanium architecture.  This bundle will be the last bundle and will
-// be located at offset 0x37F0 in the IVT.
-
-FailsafeBranch:
-{
-        .mib
-        nop.m     0
-        nop.i     0
-        br.sptk.few -(FAILSAFE_BRANCH_OFFSET - EXT_INT_ENTRY_OFFSET - 0x10)
-}
-
-
-/////////////////////////////////////////////
-// The following bundle is moved into IVT entry 13 (offset 0x3000) which is the
-// external interrupt.  It branches to the patch code.
-
-PatchCodeNewBun0:
-{
-        .mib
-        nop.m     0
-        nop.i     0
-        br.cond.sptk.few PATCH_BRANCH
-}
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/Common.i b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/Common.i
deleted file mode 100644
index a11f780125..0000000000
--- a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/Common.i
+++ /dev/null
@@ -1,29 +0,0 @@
-/// @file
-///  This is set of useful macros.
-///
-/// Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
-/// This program and the accompanying materials
-/// are licensed and made available under the terms and conditions of the BSD License
-/// which accompanies this distribution.  The full text of the license may be found at
-/// http://opensource.org/licenses/bsd-license.php
-///
-/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-///
-/// Module Name: Common.i
-///
-///
-
-
-#define NESTED_SETUP(i,l,o,r)               \
-         alloc loc1=ar##.##pfs,i,l,o,r ;    \
-         mov loc0=b0 ;;
-
-
-#define NESTED_RETURN                       \
-         mov b0=loc0 ;                      \
-         mov ar##.##pfs=loc1 ;;             \
-         br##.##ret##.##dpnt  b0 ;;
-
-#define MASK(bp,value)  (value << bp)
-
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/Ds64Macros.i b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/Ds64Macros.i
deleted file mode 100644
index 8ce97f32c2..0000000000
--- a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/Ds64Macros.i
+++ /dev/null
@@ -1,78 +0,0 @@
-/// @file
-///  This is set of macros used in calculating offsets in the IVT.
-///
-/// Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-/// This program and the accompanying materials
-/// are licensed and made available under the terms and conditions of the BSD License
-/// which accompanies this distribution.  The full text of the license may be found at
-/// http://opensource.org/licenses/bsd-license.php
-///
-/// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-/// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-///
-///
-
-
-#define EXCPT_EXTERNAL_INTERRUPT 12
-#define MASK_0_4        0x000000000000001F  // mask bits 0 through 4
-#define SLOT0           0
-#define SLOT1           1
-#define SLOT2           2
-
-#define PSR_DT          17
-#define PSR_TB          26
-#define PSR_RT          27
-#define PSR_IS          34
-#define PSR_IT          36
-#define PSR_IC          13
-#define PSR_I           14
-#define PSR_SS          40
-#define PSR_BN          44
-#define PSR_RI_MASK     0x60000000000
-
-#define EXCPT_EXTERNAL_INTERRUPT 12
-
-#define SCRATCH_REG0    r23
-#define SCRATCH_REG1    r24
-#define SCRATCH_REG2    r25
-#define SCRATCH_REG3    r26
-#define SCRATCH_REG4    r27
-#define SCRATCH_REG5    r28
-#define SCRATCH_REG6    r29
-#define PR_REG          r30
-#define B0_REG          r31
-
-
-// EXT_INT_OFFSET is the offset of the external interrupt entry in the IVT
-#define EXT_INT_ENTRY_OFFSET    0x03000
-
-// PATCH_ENTRY_OFFSET is the offset into the IVT of the entry that is coopted (stolen)
-// for use by the handler.  The entire entry is restored when the handler is
-// unloaded.
-#define PATCH_ENTRY_OFFSET      0x03400
-
-// PATCH_CODE_SIZE is the size of patch code
-#define PATCH_CODE_SIZE       (EndPatchCode - PatchCode)
-
-// A hard coded branch back into the external interrupt IVT entry's second bundle
-// is put here, just in case the original bundle zero did not have a branch
-// This is the last bundle in the reserved IVT entry
-#define FAILSAFE_BRANCH_OFFSET  (PATCH_ENTRY_OFFSET + 0x400 - 0x10)
-
-// the original external interrupt IVT entry bundle zero is copied and relocated
-// here... also in the reserved IVT entry
-// This is the second-to-last bundle in the reserved IVT entry
-#define RELOCATED_EXT_INT       (PATCH_ENTRY_OFFSET + 0x400 - 0x20)
-
-// The patch is actually stored at the end of IVT:PATCH_ENTRY.  The PATCH_OFFSET
-// is the offset into IVT where the patch is actually stored.  It is carefully
-// located so that when we run out of patch code, the next bundle is the
-// relocated bundle 0 from the original external interrupt handler
-#define PATCH_OFFSET            (PATCH_ENTRY_OFFSET + 0x400 - ( EndPatchCode - PatchCode ) - 0x20)
-
-#define PATCH_RETURN_OFFSET     (PATCH_ENTRY_OFFSET + 0x400 - ( EndPatchCode - PatchCodeRet ) - 0x20)
-
-// PATCH_BRANCH is used only in the new bundle that is placed at the beginning
-// of the external interrupt IVT entry.
-#define PATCH_BRANCH            (PATCH_OFFSET - EXT_INT_ENTRY_OFFSET)
-
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.c b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.c
deleted file mode 100644
index 44f59e8ec8..0000000000
--- a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.c
+++ /dev/null
@@ -1,467 +0,0 @@
-/** @file
-  IPF specific functions to support Debug Support protocol.
-
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "PlDebugSupport.h"
-
-BOOLEAN  mInHandler = FALSE;
-
-//
-// number of bundles to swap in ivt
-//
-#define NUM_BUNDLES_IN_STUB 5
-#define NUM_IVT_ENTRIES     64
-
-typedef struct {
-  BUNDLE         OrigBundles[NUM_BUNDLES_IN_STUB];
-  CALLBACK_FUNC  RegisteredCallback;
-} IVT_ENTRY;
-
-IVT_ENTRY IvtEntryTable[NUM_IVT_ENTRIES];
-
-//
-// IPF context record is overallocated by 512 bytes to guarantee a 512 byte alignment exists
-// within the buffer and still have a large enough buffer to hold a whole IPF context record.
-//
-UINT8     IpfContextBuf[sizeof (EFI_SYSTEM_CONTEXT_IPF) + 512];
-
-//
-// The PatchSaveBuffer is used to store the original bundles from the IVT where it is patched
-// with the common handler.
-//
-UINT8     PatchSaveBuffer[0x400];
-UINTN     ExternalInterruptCount;
-
-
-/**
-  IPF specific DebugSupport driver initialization.
-
-  Must be public because it's referenced from DebugSupport.c
-
-  @retval  EFI_SUCCESS     Always.
-
-**/
-EFI_STATUS
-PlInitializeDebugSupportDriver (
-  VOID
-  )
-{
-  ZeroMem (IvtEntryTable, sizeof (IvtEntryTable));
-  ExternalInterruptCount = 0;
-  return EFI_SUCCESS;
-}
-
-/**
-  Unload handler that is called during UnloadImage() - deallocates pool memory
-  used by the driver.
-
-  Must be public because it's referenced from DebugSuport.c
-
-  @param  ImageHandle    The firmware allocated handle for the EFI image.
-
-  @retval EFI_SUCCESS    Always.
-
-**/
-EFI_STATUS
-EFIAPI
-PlUnloadDebugSupportDriver (
-  IN EFI_HANDLE       ImageHandle
-  )
-{
-  EFI_EXCEPTION_TYPE  ExceptionType;
-
-  for (ExceptionType = 0; ExceptionType < NUM_IVT_ENTRIES; ExceptionType++) {
-    ManageIvtEntryTable (ExceptionType, NULL, NULL);
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  C routine that is called for all registered exceptions.  This is the main
-  exception dispatcher.
-
-  Must be public because it's referenced from AsmFuncs.s.
-
-  @param  ExceptionType        Specifies which processor exception.
-  @param  Context              System Context.
-**/
-VOID
-CommonHandler (
-  IN EFI_EXCEPTION_TYPE ExceptionType,
-  IN EFI_SYSTEM_CONTEXT Context
-  )
-{
-  DEBUG_CODE_BEGIN ();
-    if (mInHandler) {
-      DEBUG ((EFI_D_INFO, "ERROR: Re-entered debugger!\n"
-                                    "       ExceptionType == %X\n"
-                                    "       Context       == %X\n"
-                                    "       Context.SystemContextIpf->CrIip  == %LX\n"
-                                    "       Context.SystemContextIpf->CrIpsr == %LX\n"
-                                    "       mInHandler     == %X\n",
-                                    (INT32)ExceptionType,
-                                    Context,
-                                    Context.SystemContextIpf->CrIip,
-                                    Context.SystemContextIpf->CrIpsr,
-                                    mInHandler));
-    }
-  DEBUG_CODE_END ();
-
-  ASSERT (!mInHandler);
-  mInHandler = TRUE;
-  if (IvtEntryTable[ExceptionType].RegisteredCallback != NULL) {
-    if (ExceptionType != EXCEPT_IPF_EXTERNAL_INTERRUPT) {
-      IvtEntryTable[ExceptionType].RegisteredCallback (ExceptionType, Context.SystemContextIpf);
-    } else {
-      IvtEntryTable[ExceptionType].RegisteredCallback (Context.SystemContextIpf);
-    }
-  } else {
-    ASSERT (0);
-  }
-
-  mInHandler = FALSE;
-}
-
-/**
-  Given an integer number, return the physical address of the entry point in the IFT.
-
-  @param  HandlerIndex       Index of the Handler
-  @param  EntryPoint         IFT Entrypoint
-
-**/
-VOID
-GetHandlerEntryPoint (
-  UINTN   HandlerIndex,
-  VOID    **EntryPoint
-  )
-{
-  UINT8 *TempPtr;
-
-  //
-  // get base address of IVT
-  //
-  TempPtr = GetIva ();
-
-  if (HandlerIndex < 20) {
-    //
-    // first 20 provide 64 bundles per vector
-    //
-    TempPtr += 0x400 * HandlerIndex;
-  } else {
-    //
-    // the rest provide 16 bundles per vector
-    //
-    TempPtr += 0x5000 + 0x100 * (HandlerIndex - 20);
-  }
-
-  *EntryPoint = (VOID *) TempPtr;
-}
-
-/**
-  This is the worker function that uninstalls and removes all handlers.
-
-  @param  ExceptionType     Specifies which processor exception.
-  @param  NewBundles        New Boundles.
-  @param  NewCallback       A pointer to the new function to be registered.
-
-  @retval EFI_ALEADY_STARTED Ivt already hooked.
-  @retval EFI_SUCCESS        Successfully uninstalled.
-
-**/
-EFI_STATUS
-ManageIvtEntryTable (
-  IN  EFI_EXCEPTION_TYPE           ExceptionType,
-  IN  BUNDLE                       NewBundles[NUM_BUNDLES_IN_STUB],
-  IN  CALLBACK_FUNC                NewCallback
-  )
-{
-  BUNDLE  *B0Ptr;
-  UINT64  InterruptFlags;
-  EFI_TPL OldTpl;
-
-  //
-  // Get address of bundle 0
-  //
-  GetHandlerEntryPoint (ExceptionType, (VOID **) &B0Ptr);
-
-  if (IvtEntryTable[ExceptionType].RegisteredCallback != NULL) {
-    //
-    // we've already installed to this vector
-    //
-    if (NewCallback != NULL) {
-      //
-      // if the input handler is non-null, error
-      //
-      return EFI_ALREADY_STARTED;
-    } else {
-      //
-      // else remove the previously installed handler
-      //
-      OldTpl          = gBS->RaiseTPL (TPL_HIGH_LEVEL);
-      InterruptFlags  = ProgramInterruptFlags (DISABLE_INTERRUPTS);
-      if (ExceptionType == EXCEPT_IPF_EXTERNAL_INTERRUPT) {
-        UnchainExternalInterrupt ();
-      } else {
-        UnhookEntry (ExceptionType);
-      }
-
-      ProgramInterruptFlags (InterruptFlags);
-      gBS->RestoreTPL (OldTpl);
-      //
-      // re-init IvtEntryTable
-      //
-      ZeroMem (&IvtEntryTable[ExceptionType], sizeof (IVT_ENTRY));
-    }
-  } else {
-    //
-    // no user handler installed on this vector
-    //
-    if (NewCallback != NULL) {
-      OldTpl          = gBS->RaiseTPL (TPL_HIGH_LEVEL);
-      InterruptFlags  = ProgramInterruptFlags (DISABLE_INTERRUPTS);
-      if (ExceptionType == EXCEPT_IPF_EXTERNAL_INTERRUPT) {
-        ChainExternalInterrupt (NewCallback);
-      } else {
-        HookEntry (ExceptionType, NewBundles, NewCallback);
-      }
-
-      ProgramInterruptFlags (InterruptFlags);
-      gBS->RestoreTPL (OldTpl);
-    }
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Saves original IVT contents and inserts a few new bundles which are fixed up
-  to store the ExceptionType and then call the common handler.
-
-  @param  ExceptionType      Specifies which processor exception.
-  @param  NewBundles         New Boundles.
-  @param  NewCallback        A pointer to the new function to be hooked.
-
-**/
-VOID
-HookEntry (
-  IN  EFI_EXCEPTION_TYPE  ExceptionType,
-  IN  BUNDLE              NewBundles[4],
-  IN  CALLBACK_FUNC       NewCallback
-  )
-{
-  BUNDLE  *FixupBundle;
-  BUNDLE  *B0Ptr;
-
-  //
-  // Get address of bundle 0
-  //
-  GetHandlerEntryPoint (ExceptionType, (VOID **) &B0Ptr);
-
-  //
-  // copy original bundles from IVT to IvtEntryTable so we can restore them later
-  //
-  CopyMem (
-    IvtEntryTable[ExceptionType].OrigBundles,
-    B0Ptr,
-    sizeof (BUNDLE) * NUM_BUNDLES_IN_STUB
-    );
-  //
-  // insert new B0
-  //
-  CopyMem (B0Ptr, NewBundles, sizeof (BUNDLE) * NUM_BUNDLES_IN_STUB);
-
-  //
-  // fixup IVT entry so it stores its index and whether or not to chain...
-  //
-  FixupBundle = B0Ptr + 2;
-  FixupBundle->High |= ExceptionType << 36;
-
-  InstructionCacheFlush (B0Ptr, 5);
-  IvtEntryTable[ExceptionType].RegisteredCallback = NewCallback;
-}
-
-/**
-  Restores original IVT contents when unregistering a callback function.
-
-  @param  ExceptionType     Specifies which processor exception.
-
-**/
-VOID
-UnhookEntry (
-  IN  EFI_EXCEPTION_TYPE  ExceptionType
-  )
-{
-  BUNDLE  *B0Ptr;
-
-  //
-  // Get address of bundle 0
-  //
-  GetHandlerEntryPoint (ExceptionType, (VOID **) &B0Ptr);
-  //
-  // restore original bundles in IVT
-  //
-  CopyMem (
-    B0Ptr,
-    IvtEntryTable[ExceptionType].OrigBundles,
-    sizeof (BUNDLE) * NUM_BUNDLES_IN_STUB
-    );
-  InstructionCacheFlush (B0Ptr, 5);
-}
-
-/**
-  Sets up cache flush and calls assembly function to chain external interrupt.
-
-  Records new callback in IvtEntryTable.
-
-  @param  NewCallback     A pointer to the interrupt handle.
-
-**/
-VOID
-ChainExternalInterrupt (
-  IN  CALLBACK_FUNC  NewCallback
-  )
-{
-  VOID  *Start;
-
-  Start = (VOID *) ((UINT8 *) GetIva () + 0x400 * EXCEPT_IPF_EXTERNAL_INTERRUPT + 0x400);
-  IvtEntryTable[EXCEPT_IPF_EXTERNAL_INTERRUPT].RegisteredCallback = NewCallback;
-  ChainHandler ();
-  InstructionCacheFlush (Start, 0x400);
-}
-
-/**
-  Sets up cache flush and calls assembly function to restore external interrupt.
-  Removes registered callback from IvtEntryTable.
-
-**/
-VOID
-UnchainExternalInterrupt (
-  VOID
-  )
-{
-  VOID  *Start;
-
-  Start = (VOID *) ((UINT8 *) GetIva () + 0x400 * EXCEPT_IPF_EXTERNAL_INTERRUPT + 0x400);
-  UnchainHandler ();
-  InstructionCacheFlush (Start, 0x400);
-  IvtEntryTable[EXCEPT_IPF_EXTERNAL_INTERRUPT].RegisteredCallback = NULL;
-}
-
-/**
-  Returns the maximum value that may be used for the ProcessorIndex parameter in
-  RegisterPeriodicCallback() and RegisterExceptionCallback().
-
-  Hard coded to support only 1 processor for now.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  MaxProcessorIndex     Pointer to a caller-allocated UINTN in which the maximum supported
-                                processor index is returned. Always 0 returned.
-
-  @retval EFI_SUCCESS           Always returned with **MaxProcessorIndex set to 0.
-
-**/
-EFI_STATUS
-EFIAPI
-GetMaximumProcessorIndex (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL    *This,
-  OUT UINTN                        *MaxProcessorIndex
-  )
-{
-  *MaxProcessorIndex = 0;
-  return (EFI_SUCCESS);
-}
-
-/**
-  Registers a function to be called back periodically in interrupt context.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor the callback function applies to.
-  @param  PeriodicCallback      A pointer to a function of type PERIODIC_CALLBACK that is the main
-                                periodic entry point of the debug agent.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback
-                                function was previously registered.
-  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback
-                                function.
-**/
-EFI_STATUS
-EFIAPI
-RegisterPeriodicCallback (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL     *This,
-  IN UINTN                          ProcessorIndex,
-  IN EFI_PERIODIC_CALLBACK          PeriodicCallback
-  )
-{
-  return ManageIvtEntryTable (EXCEPT_IPF_EXTERNAL_INTERRUPT, NULL, PeriodicCallback);
-}
-
-/**
-  Registers a function to be called when a given processor exception occurs.
-
-  This code executes in boot services context.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor the callback function applies to.
-  @param  ExceptionCallback     A pointer to a function of type EXCEPTION_CALLBACK that is called
-                                when the processor exception specified by ExceptionType occurs.
-  @param  ExceptionType         Specifies which processor exception to hook.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback
-                                function was previously registered.
-  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback
-                                function.
-**/
-EFI_STATUS
-EFIAPI
-RegisterExceptionCallback (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL    *This,
-  IN UINTN                         ProcessorIndex,
-  IN EFI_EXCEPTION_CALLBACK        ExceptionCallback,
-  IN EFI_EXCEPTION_TYPE            ExceptionType
-  )
-{
-  return ManageIvtEntryTable (
-          ExceptionType,
-          (BUNDLE *) ((EFI_PLABEL *) HookStub)->EntryPoint,
-          ExceptionCallback
-          );
-}
-
-/**
-  Invalidates processor instruction cache for a memory range. Subsequent execution in this range
-  causes a fresh memory fetch to retrieve code to be executed.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor's instruction cache is to be invalidated.
-  @param  Start                 Specifies the physical base of the memory range to be invalidated.
-  @param  Length                Specifies the minimum number of bytes in the processor's instruction
-                                cache to invalidate.
-
-  @retval EFI_SUCCESS           Always returned.
-
-**/
-EFI_STATUS
-EFIAPI
-InvalidateInstructionCache (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL    *This,
-  IN UINTN                         ProcessorIndex,
-  IN VOID                          *Start,
-  IN UINTN                         Length
-  )
-{
-  InstructionCacheFlush (Start, Length);
-  return EFI_SUCCESS;
-}
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h
deleted file mode 100644
index 1701fbff42..0000000000
--- a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h
+++ /dev/null
@@ -1,324 +0,0 @@
-/** @file
-  IPF specific types, macros, and definitions for Debug Support Driver.
-
-Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef _PLDEBUG_SUPPORT_H_
-#define _PLDEBUG_SUPPORT_H_
-
-#include <Uefi.h>
-
-#include <Protocol/DebugSupport.h>
-#include <Protocol/LoadedImage.h>
-
-#include <Library/DebugLib.h>
-#include <Library/UefiDriverEntryPoint.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-
-#define DISABLE_INTERRUPTS  0UL
-
-#define EFI_ISA IsaIpf
-
-typedef struct {
-  UINT64  Low;
-  UINT64  High;
-} BUNDLE;
-
-typedef
-VOID
-(*CALLBACK_FUNC) (
-  );
-
-/**
-  IPF specific DebugSupport driver initialization.
-
-  Must be public because it's referenced from DebugSupport.c
-
-  @retval  EFI_SUCCESS     Always.
-
-**/
-EFI_STATUS
-PlInitializeDebugSupportDriver (
-  VOID
-  );
-
-/**
-  Unload handler that is called during UnloadImage() - deallocates pool memory
-  used by the driver.
-
-  Must be public because it's referenced from DebugSuport.c
-
-  @param  ImageHandle    The firmware allocated handle for the EFI image.
-
-  @retval EFI_SUCCESS    Always.
-
-**/
-EFI_STATUS
-EFIAPI
-PlUnloadDebugSupportDriver (
-  IN EFI_HANDLE                   ImageHandle
-  );
-
-/**
-  C callable function to obtain the current value of IVA.
-
-  @return Current value of IVA.
-
-**/
-VOID  *
-GetIva (
-  VOID
-  );
-
-/**
-  C callable function that HookStub will be copied from it's loaded location into the IVT when
-  an IVT entry is hooked.
-
-**/
-VOID
-HookStub (
-  VOID
-  );
-
-/**
-  C callable function to chain an interrupt handler.
-
-**/
-VOID
-ChainHandler (
-  VOID
-  );
-
-/**
-  C callable function to unchain an interrupt handler.
-
-**/
-VOID
-UnchainHandler (
-  VOID
-  );
-
-/**
-  C callable function to enable/disable interrupts.
-
-  @param  NewInterruptState   New Interrupt State.
-
-  @return Previous state of psr.ic.
-
-**/
-UINT64
-ProgramInterruptFlags (
-  IN UINT64                       NewInterruptState
-  );
-
-/**
-  Flushes instruction cache for specified number of bytes.
-
-  @param  StartAddress     Cache Start Address.
-  @param  SizeInBytes      Cache Size.
-
-**/
-VOID
-InstructionCacheFlush (
-  IN VOID    *StartAddress,
-  IN UINTN   SizeInBytes
-  );
-
-/**
-  Returns the maximum value that may be used for the ProcessorIndex parameter in
-  RegisterPeriodicCallback() and RegisterExceptionCallback().
-
-  Hard coded to support only 1 processor for now.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  MaxProcessorIndex     Pointer to a caller-allocated UINTN in which the maximum supported
-                                processor index is returned. Always 0 returned.
-
-  @retval EFI_SUCCESS           Always returned with **MaxProcessorIndex set to 0.
-
-**/
-EFI_STATUS
-EFIAPI
-GetMaximumProcessorIndex (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,
-  OUT UINTN                       *MaxProcessorIndex
-  );
-
-/**
-  Registers a function to be called back periodically in interrupt context.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor the callback function applies to.
-  @param  PeriodicCallback      A pointer to a function of type PERIODIC_CALLBACK that is the main
-                                periodic entry point of the debug agent.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback
-                                function was previously registered.
-  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback
-                                function.
-**/
-EFI_STATUS
-EFIAPI
-RegisterPeriodicCallback (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,
-  IN UINTN                        ProcessorIndex,
-  IN EFI_PERIODIC_CALLBACK        PeriodicCallback
-  );
-
-/**
-  Registers a function to be called when a given processor exception occurs.
-
-  This code executes in boot services context.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor the callback function applies to.
-  @param  ExceptionCallback     A pointer to a function of type EXCEPTION_CALLBACK that is called
-                                when the processor exception specified by ExceptionType occurs.
-  @param  ExceptionType         Specifies which processor exception to hook.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback
-                                function was previously registered.
-  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback
-                                function.
-**/
-EFI_STATUS
-EFIAPI
-RegisterExceptionCallback (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,
-  IN UINTN                        ProcessorIndex,
-  IN EFI_EXCEPTION_CALLBACK       ExceptionCallback,
-  IN EFI_EXCEPTION_TYPE           ExceptionType
-  );
-
-/**
-  Invalidates processor instruction cache for a memory range. Subsequent execution in this range
-  causes a fresh memory fetch to retrieve code to be executed.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor's instruction cache is to be invalidated.
-  @param  Start                 Specifies the physical base of the memory range to be invalidated.
-  @param  Length                Specifies the minimum number of bytes in the processor's instruction
-                                cache to invalidate.
-
-  @retval EFI_SUCCESS           Always returned.
-
-**/
-EFI_STATUS
-EFIAPI
-InvalidateInstructionCache (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,
-  IN UINTN                        ProcessorIndex,
-  IN VOID                         *Start,
-  IN UINTN                        Length
-  );
-
-/**
-  C routine that is called for all registered exceptions.  This is the main
-  exception dispatcher.
-
-  Must be public because it's referenced from AsmFuncs.s.
-
-  @param  ExceptionType        Specifies which processor exception.
-  @param  Context              System Context.
-**/
-VOID
-CommonHandler (
-  IN EFI_EXCEPTION_TYPE ExceptionType,
-  IN EFI_SYSTEM_CONTEXT Context
-  );
-
-/**
-  This is the worker function that uninstalls and removes all handlers.
-
-  @param  ExceptionType     Specifies which processor exception.
-  @param  NewBundles        New Boundles.
-  @param  NewCallback       A pointer to the new function to be registered.
-
-  @retval EFI_ALEADY_STARTED Ivt already hooked.
-  @retval EFI_SUCCESS        Successfully uninstalled.
-
-**/
-EFI_STATUS
-ManageIvtEntryTable (
-  IN  EFI_EXCEPTION_TYPE    ExceptionType,
-  IN  BUNDLE                NewBundles[4],
-  IN  CALLBACK_FUNC         NewCallback
-  );
-
-/**
-  Saves original IVT contents and inserts a few new bundles which are fixed up
-  to store the ExceptionType and then call the common handler.
-
-  @param  ExceptionType      Specifies which processor exception.
-  @param  NewBundles         New Boundles.
-  @param  NewCallback        A pointer to the new function to be hooked.
-
-**/
-VOID
-HookEntry (
-  IN  EFI_EXCEPTION_TYPE    ExceptionType,
-  IN  BUNDLE                NewBundles[4],
-  IN  CALLBACK_FUNC         NewCallback
-  );
-
-/**
-  Restores original IVT contents when unregistering a callback function.
-
-  @param  ExceptionType     Specifies which processor exception.
-
-**/
-VOID
-UnhookEntry (
-  IN  EFI_EXCEPTION_TYPE    ExceptionType
-  );
-
-/**
-  Sets up cache flush and calls assembly function to chain external interrupt.
-
-  Records new callback in IvtEntryTable.
-
-  @param  NewCallback     A pointer to the interrupt handle.
-
-**/
-VOID
-ChainExternalInterrupt (
-  IN  CALLBACK_FUNC         NewCallback
-  );
-
-/**
-  Sets up cache flush and calls assembly function to restore external interrupt.
-  Removes registered callback from IvtEntryTable.
-
-**/
-VOID
-UnchainExternalInterrupt (
-  VOID
-  );
-
-/**
-  Given an integer number, return the physical address of the entry point in the IFT.
-
-  @param  HandlerIndex       Index of the Handler
-  @param  EntryPoint         IFT Entrypoint
-
-**/
-VOID
-GetHandlerEntryPoint (
-  UINTN                     HandlerIndex,
-  VOID                      **EntryPoint
-  );
-
-#endif
diff --git a/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf b/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
index 37bbe297e6..1fdd4dbe56 100644
--- a/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
+++ b/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf b/MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf
index e9ddecf967..8ed0023d81 100644
--- a/MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf
+++ b/MdeModulePkg/Universal/Disk/CdExpressPei/CdExpressPei.inf
@@ -31,7 +31,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf b/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
index 6c00f553aa..d9241879c0 100644
--- a/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
+++ b/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
@@ -31,7 +31,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gDiskIoDriverBinding
 #  COMPONENT_NAME                =  gDiskIoComponentName
diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf b/MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
index 46e39129cf..39ad5aa2fb 100644
--- a/MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
+++ b/MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
@@ -34,7 +34,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                = gPartitionDriverBinding
 #  COMPONENT_NAME                = gPartitionComponentName
diff --git a/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf b/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
index 7fea6bd9dc..fb0bd9ee4c 100644
--- a/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
+++ b/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
@@ -1,6 +1,7 @@
 ## @file
 #  UDF/ECMA-167 file system driver.
 #
+#  Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
 #  Copyright (C) 2014-2017 Paulo Alcantara <pcacjr@zytor.com>
 #
 #  This program and the accompanying materials
@@ -23,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                = gUdfDriverBinding
 #  COMPONENT_NAME                = gUdfComponentName
diff --git a/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf b/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
index ad763b1af4..01bc115da9 100644
--- a/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
+++ b/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf b/MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
index c1c1974c13..0e484b3ce6 100644
--- a/MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
+++ b/MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf b/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
index d84c7cee15..a4d4e6e4f7 100644
--- a/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
+++ b/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
@@ -33,7 +33,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 
diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf b/MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf
index f856efebc7..6cc05eb293 100644
--- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf
+++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebugger.inf b/MdeModulePkg/Universal/EbcDxe/EbcDebugger.inf
index 4554eb485d..fefdd2a5b1 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebugger.inf
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebugger.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
 #
 
 [Sources]
@@ -73,11 +73,6 @@
   X64/EbcSupport.c
   X64/EbcLowLevel.nasm
 
-[Sources.IPF]
-  Ipf/EbcSupport.h
-  Ipf/EbcSupport.c
-  Ipf/EbcLowLevel.s
-
 [Sources.AARCH64]
   AArch64/EbcSupport.c
   AArch64/EbcLowLevel.S
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
index 0d931a46f0..cdbad43aa7 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
@@ -1,7 +1,7 @@
 ## @file
 #  EBC Debugger configuration application.
 #
-#  Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf b/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
index 8f128b121d..849df7e0eb 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
 #
 
 [Sources]
@@ -48,11 +48,6 @@
   X64/EbcSupport.c
   X64/EbcLowLevel.nasm
 
-[Sources.IPF]
-  Ipf/EbcSupport.h
-  Ipf/EbcSupport.c
-  Ipf/EbcLowLevel.s
-
 [Sources.AARCH64]
   AArch64/EbcSupport.c
   AArch64/EbcLowLevel.S
diff --git a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcLowLevel.s b/MdeModulePkg/Universal/EbcDxe/Ipf/EbcLowLevel.s
deleted file mode 100644
index 4ae24dee7d..0000000000
--- a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcLowLevel.s
+++ /dev/null
@@ -1,206 +0,0 @@
-///** @file
-//  
-//  Contains low level routines for the Virtual Machine implementation
-//  on an Itanium-based platform.
-//
-//  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-//  This program and the accompanying materials
-//  are licensed and made available under the terms and conditions of the BSD License
-//  which accompanies this distribution.  The full text of the license may be found at
-//  http://opensource.org/licenses/bsd-license.php
-//  
-//  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-//  
-//**/
-
-.file  "EbcLowLevel.s"
-
-#define PROCEDURE_ENTRY(name)   .##text;            \
-                                .##type name, @function;    \
-                                .##proc name;           \
-name::
-
-#define PROCEDURE_EXIT(name)    .##endp name
-
-// Note: use of NESTED_SETUP requires number of locals (l) >= 3
-
-#define NESTED_SETUP(i,l,o,r) \
-         alloc loc1=ar##.##pfs,i,l,o,r ;\
-         mov loc0=b0
-
-#define NESTED_RETURN \
-         mov b0=loc0 ;\
-         mov ar##.##pfs=loc1 ;;\
-         br##.##ret##.##dpnt  b0;;
-
-.type CopyMem, @function;
-
-//-----------------------------------------------------------------------------
-//++
-// EbcAsmLLCALLEX
-//
-//  Implements the low level EBC CALLEX instruction. Sets up the
-//  stack pointer, does the spill of function arguments, and
-//  calls the native function. On return it restores the original
-//  stack pointer and returns to the caller.
-//
-// Arguments :
-//
-// On Entry :
-//    in0 = Address of native code to call
-//    in1 = New stack pointer
-//
-// Return Value:
-//
-// As per static calling conventions.
-//
-//--
-//---------------------------------------------------------------------------
-;// void EbcAsmLLCALLEX (UINTN FunctionAddr, UINTN EbcStackPointer)
-PROCEDURE_ENTRY(EbcAsmLLCALLEX)
-  NESTED_SETUP (2,6,8,0)
-
-  // NESTED_SETUP uses loc0 and loc1 for context save
-
-  //
-  // Save a copy of the EBC VM stack pointer
-  //
-  mov r8 = in1;;
-
-  //
-  // Copy stack arguments from EBC stack into registers.
-  // Assume worst case and copy 8.
-  //
-  ld8   out0 = [r8], 8;;
-  ld8   out1 = [r8], 8;;
-  ld8   out2 = [r8], 8;;
-  ld8   out3 = [r8], 8;;
-  ld8   out4 = [r8], 8;;
-  ld8   out5 = [r8], 8;;
-  ld8   out6 = [r8], 8;;
-  ld8   out7 = [r8], 8;;
-
-  //
-  // Save the original stack pointer
-  //
-  mov   loc2 = r12;
-
-  //
-  // Save the gp
-  //
-  or    loc3 = r1, r0
-
-  //
-  // Set the new aligned stack pointer. Reserve space for the required
-  // 16-bytes of scratch area as well.
-  //
-  add  r12 = 48, in1
-
-  //
-  // Now call the function. Load up the function address from the descriptor
-  // pointed to by in0. Then get the gp from the descriptor at the following
-  // address in the descriptor.
-  //
-  ld8   r31 = [in0], 8;;
-  ld8   r30 = [in0];;
-  mov   b1 = r31
-  mov   r1 = r30
-  (p0) br.call.dptk.many b0 = b1;;
-
-  //
-  // Restore the original stack pointer and gp
-  //
-  mov   r12 = loc2
-  or    r1 = loc3, r0
-
-  //
-  // Now return
-  //
-  NESTED_RETURN
-
-PROCEDURE_EXIT(EbcAsmLLCALLEX)
-
-//-----------------------------------------------------------------------------
-//++
-// EbcLLCALLEXNative
-//
-//  This function is called to execute an EBC CALLEX instruction.
-//  This instruction requires that we thunk out to external native
-//  code. On return, we restore the stack pointer to its original location.
-//  Destroys no working registers.  For IPF, at least 8 register slots
-//  must be allocated on the stack frame to support any number of 
-//  arguments beiung passed to the external native function.  The
-//  size of the stack frame is FramePtr - EbcSp.  If this size is less
-//  than 64-bytes, the amount of stack frame allocated is rounded up
-//  to 64-bytes 
-//
-// Arguments On Entry :
-//    in0 = CallAddr     The function address.
-//    in1 = EbcSp        The new EBC stack pointer.
-//    in2 = FramePtr     The frame pointer.
-//
-// Return Value:
-//    None
-//
-// C Function Prototype:
-//    VOID
-//    EFIAPI
-//    EbcLLCALLEXNative (
-//      IN UINTN        CallAddr,
-//      IN UINTN        EbcSp,
-//      IN VOID         *FramePtr
-//      );
-//--
-//---------------------------------------------------------------------------
-
-PROCEDURE_ENTRY(EbcLLCALLEXNative)
-  NESTED_SETUP (3,6,3,0)
-
-  mov   loc2 = in2;;              // loc2 = in2 = FramePtr
-  mov   loc3 = in1;;              // loc3 = in1 = EbcSp
-  sub   loc2 = loc2, loc3;;       // loc2 = loc2 - loc3 = FramePtr - EbcSp
-  mov   out2 = loc2;;             // out2 = loc2 = FramePtr - EbcSp
-  mov   loc4 = 0x40;;             // loc4 = 0x40
-  cmp.leu p6  = out2, loc4;;      // IF out2 < loc4 THEN P6=1 ELSE P6=0; IF (FramePtr - EbcSp) < 0x40 THEN P6 = 1 ELSE P6=0
-  (p6) mov   loc2 = loc4;;        // IF P6==1 THEN loc2 = loc4 = 0x40
-  mov   loc4 = r12;;              // save sp
-  or    loc5 = r1, r0             // save gp
-
-  sub   r12 = r12, loc2;;         // sp = sp - loc2 = sp - MAX (0x40, FramePtr - EbcSp)
-
-  and   r12 = -0x10, r12          // Round sp down to the nearest 16-byte boundary
-  mov   out1 = in1;;              // out1 = EbcSp
-  mov   out0 = r12;;              // out0 = sp
-  adds  r12 = -0x8, r12           
-  (p0) br.call.dptk.many b0 = CopyMem;;      // CopyMem (sp, EbcSp, (FramePtr - EbcSp))
-  adds  r12 = 0x8, r12            
-
-  mov   out0 = in0;;              // out0 = CallAddr
-  mov   out1 = r12;;              // out1 = sp
-  (p0) br.call.dptk.many b0 = EbcAsmLLCALLEX;;    // EbcAsmLLCALLEX (CallAddr, sp)
-  mov   r12 = loc4;;              // restore sp
-  or    r1 = loc5, r0             // restore gp
-
-  NESTED_RETURN
-PROCEDURE_EXIT(EbcLLCALLEXNative)
-
-
-//
-// UINTN EbcLLGetEbcEntryPoint(VOID)
-//
-// Description:
-//    Simply return, so that the caller retrieves the return register
-//    contents (R8). That's where the thunk-to-ebc code stuffed the
-//    EBC entry point.
-//
-PROCEDURE_ENTRY(EbcLLGetEbcEntryPoint)
-    br.ret.sptk  b0 ;;
-PROCEDURE_EXIT(EbcLLGetEbcEntryPoint)
-
-
-
-
-
-
-
diff --git a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c b/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c
deleted file mode 100644
index f99348f181..0000000000
--- a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.c
+++ /dev/null
@@ -1,884 +0,0 @@
-/** @file
-  This module contains EBC support routines that are customized based on
-  the target processor.
-
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "EbcInt.h"
-#include "EbcExecute.h"
-#include "EbcSupport.h"
-#include "EbcDebuggerHook.h"
-
-/**
-  Given raw bytes of Itanium based code, format them into a bundle and
-  write them out.
-
-  @param  MemPtr                 pointer to memory location to write the bundles
-                                 to.
-  @param  Template               5-bit template.
-  @param  Slot0                  Instruction slot 0 data for the bundle.
-  @param  Slot1                  Instruction slot 1 data for the bundle.
-  @param  Slot2                  Instruction slot 2 data for the bundle.
-
-  @retval EFI_INVALID_PARAMETER  Pointer is not aligned
-  @retval EFI_INVALID_PARAMETER  No more than 5 bits in template
-  @retval EFI_INVALID_PARAMETER  More than 41 bits used in code
-  @retval EFI_SUCCESS            All data is written.
-
-**/
-EFI_STATUS
-WriteBundle (
-  IN    VOID    *MemPtr,
-  IN    UINT8   Template,
-  IN    UINT64  Slot0,
-  IN    UINT64  Slot1,
-  IN    UINT64  Slot2
-  );
-
-/**
-  Pushes a 64 bit unsigned value to the VM stack.
-
-  @param VmPtr  The pointer to current VM context.
-  @param Arg    The value to be pushed.
-
-**/
-VOID
-PushU64 (
-  IN VM_CONTEXT *VmPtr,
-  IN UINT64     Arg
-  )
-{
-  //
-  // Advance the VM stack down, and then copy the argument to the stack.
-  // Hope it's aligned.
-  //
-  VmPtr->Gpr[0] -= sizeof (UINT64);
-  *(UINT64 *) VmPtr->Gpr[0] = Arg;
-}
-
-/**
-  Begin executing an EBC image. The address of the entry point is passed
-  in via a processor register, so we'll need to make a call to get the
-  value.
-
-  This is a thunk function. Microsoft x64 compiler only provide fast_call
-  calling convention, so the first four arguments are passed by rcx, rdx,
-  r8, and r9, while other arguments are passed in stack.
-
-  @param  Arg1                  The 1st argument.
-  @param  ...                   The variable arguments list.
-
-  @return The value returned by the EBC application we're going to run.
-
-**/
-UINT64
-EFIAPI
-EbcInterpret (
-  UINT64      Arg1,
-  ...
-  )
-{
-  //
-  // Create a new VM context on the stack
-  //
-  VM_CONTEXT  VmContext;
-  UINTN       Addr;
-  EFI_STATUS  Status;
-  UINTN       StackIndex;
-  VA_LIST     List;
-  UINT64      Arg2;
-  UINT64      Arg3;
-  UINT64      Arg4;
-  UINT64      Arg5;
-  UINT64      Arg6;
-  UINT64      Arg7;
-  UINT64      Arg8;
-  UINT64      Arg9;
-  UINT64      Arg10;
-  UINT64      Arg11;
-  UINT64      Arg12;
-  UINT64      Arg13;
-  UINT64      Arg14;
-  UINT64      Arg15;
-  UINT64      Arg16;
-  //
-  // Get the EBC entry point from the processor register. Make sure you don't
-  // call any functions before this or you could mess up the register the
-  // entry point is passed in.
-  //
-  Addr = EbcLLGetEbcEntryPoint ();
-  //
-  // Need the args off the stack.
-  //
-  VA_START (List, Arg1);
-  Arg2      = VA_ARG (List, UINT64);
-  Arg3      = VA_ARG (List, UINT64);
-  Arg4      = VA_ARG (List, UINT64);
-  Arg5      = VA_ARG (List, UINT64);
-  Arg6      = VA_ARG (List, UINT64);
-  Arg7      = VA_ARG (List, UINT64);
-  Arg8      = VA_ARG (List, UINT64);
-  Arg9      = VA_ARG (List, UINT64);
-  Arg10     = VA_ARG (List, UINT64);
-  Arg11     = VA_ARG (List, UINT64);
-  Arg12     = VA_ARG (List, UINT64);
-  Arg13     = VA_ARG (List, UINT64);
-  Arg14     = VA_ARG (List, UINT64);
-  Arg15     = VA_ARG (List, UINT64);
-  Arg16     = VA_ARG (List, UINT64);
-  VA_END (List);
-  //
-  // Now clear out our context
-  //
-  ZeroMem ((VOID *) &VmContext, sizeof (VM_CONTEXT));
-  //
-  // Set the VM instruction pointer to the correct location in memory.
-  //
-  VmContext.Ip = (VMIP) Addr;
-  //
-  // Initialize the stack pointer for the EBC. Get the current system stack
-  // pointer and adjust it down by the max needed for the interpreter.
-  //
-  //
-  // NOTE: Eventually we should have the interpreter allocate memory
-  //       for stack space which it will use during its execution. This
-  //       would likely improve performance because the interpreter would
-  //       no longer be required to test each memory access and adjust
-  //       those reading from the stack gap.
-  //
-  // For IPF, the stack looks like (assuming 10 args passed)
-  //   arg10
-  //   arg9       (Bottom of high stack)
-  //   [ stack gap for interpreter execution ]
-  //   [ magic value for detection of stack corruption ]
-  //   arg8       (Top of low stack)
-  //   arg7....
-  //   arg1
-  //   [ 64-bit return address ]
-  //   [ ebc stack ]
-  // If the EBC accesses memory in the stack gap, then we assume that it's
-  // actually trying to access args9 and greater. Therefore we need to
-  // adjust memory accesses in this region to point above the stack gap.
-  //
-  //
-  // Now adjust the EBC stack pointer down to leave a gap for interpreter
-  // execution. Then stuff a magic value there.
-  //
-
-  Status = GetEBCStack((EFI_HANDLE)(UINTN)-1, &VmContext.StackPool, &StackIndex);
-  if (EFI_ERROR(Status)) {
-    return Status;
-  }
-  VmContext.StackTop = (UINT8*)VmContext.StackPool + (STACK_REMAIN_SIZE);
-  VmContext.Gpr[0] = (UINT64) ((UINT8*)VmContext.StackPool + STACK_POOL_SIZE);
-  VmContext.HighStackBottom = (UINTN) VmContext.Gpr[0];
-  VmContext.Gpr[0] -= sizeof (UINTN);
-
-
-  PushU64 (&VmContext, (UINT64) VM_STACK_KEY_VALUE);
-  VmContext.StackMagicPtr = (UINTN *) VmContext.Gpr[0];
-  VmContext.LowStackTop   = (UINTN) VmContext.Gpr[0];
-  //
-  // Push the EBC arguments on the stack. Does not matter that they may not
-  // all be valid.
-  //
-  PushU64 (&VmContext, Arg16);
-  PushU64 (&VmContext, Arg15);
-  PushU64 (&VmContext, Arg14);
-  PushU64 (&VmContext, Arg13);
-  PushU64 (&VmContext, Arg12);
-  PushU64 (&VmContext, Arg11);
-  PushU64 (&VmContext, Arg10);
-  PushU64 (&VmContext, Arg9);
-  PushU64 (&VmContext, Arg8);
-  PushU64 (&VmContext, Arg7);
-  PushU64 (&VmContext, Arg6);
-  PushU64 (&VmContext, Arg5);
-  PushU64 (&VmContext, Arg4);
-  PushU64 (&VmContext, Arg3);
-  PushU64 (&VmContext, Arg2);
-  PushU64 (&VmContext, Arg1);
-  //
-  // Push a bogus return address on the EBC stack because the
-  // interpreter expects one there. For stack alignment purposes on IPF,
-  // EBC return addresses are always 16 bytes. Push a bogus value as well.
-  //
-  PushU64 (&VmContext, 0);
-  PushU64 (&VmContext, 0xDEADBEEFDEADBEEF);
-  VmContext.StackRetAddr = (UINT64) VmContext.Gpr[0];
-
-  //
-  // Begin executing the EBC code
-  //
-  EbcDebuggerHookEbcInterpret (&VmContext);
-  EbcExecute (&VmContext);
-
-  //
-  // Return the value in Gpr[7] unless there was an error
-  //
-  ReturnEBCStack(StackIndex);
-  return (UINT64) VmContext.Gpr[7];
-}
-
-
-/**
-  Begin executing an EBC image. The address of the entry point is passed
-  in via a processor register, so we'll need to make a call to get the
-  value.
-
-  @param  ImageHandle      image handle for the EBC application we're executing
-  @param  SystemTable      standard system table passed into an driver's entry
-                           point
-
-  @return The value returned by the EBC application we're going to run.
-
-**/
-UINT64
-EFIAPI
-ExecuteEbcImageEntryPoint (
-  IN EFI_HANDLE           ImageHandle,
-  IN EFI_SYSTEM_TABLE     *SystemTable
-  )
-{
-  //
-  // Create a new VM context on the stack
-  //
-  VM_CONTEXT  VmContext;
-  UINTN       Addr;
-  EFI_STATUS  Status;
-  UINTN       StackIndex;
-
-  //
-  // Get the EBC entry point from the processor register. Make sure you don't
-  // call any functions before this or you could mess up the register the
-  // entry point is passed in.
-  //
-  Addr = EbcLLGetEbcEntryPoint ();
-
-  //
-  // Now clear out our context
-  //
-  ZeroMem ((VOID *) &VmContext, sizeof (VM_CONTEXT));
-
-  //
-  // Save the image handle so we can track the thunks created for this image
-  //
-  VmContext.ImageHandle = ImageHandle;
-  VmContext.SystemTable = SystemTable;
-
-  //
-  // Set the VM instruction pointer to the correct location in memory.
-  //
-  VmContext.Ip = (VMIP) Addr;
-
-  //
-  // Get the stack pointer. This is the bottom of the upper stack.
-  //
-
-  Status = GetEBCStack(ImageHandle, &VmContext.StackPool, &StackIndex);
-  if (EFI_ERROR(Status)) {
-    return Status;
-  }
-  VmContext.StackTop = (UINT8*)VmContext.StackPool + (STACK_REMAIN_SIZE);
-  VmContext.Gpr[0] = (UINT64) ((UINT8*)VmContext.StackPool + STACK_POOL_SIZE);
-  VmContext.HighStackBottom = (UINTN) VmContext.Gpr[0];
-  VmContext.Gpr[0] -= sizeof (UINTN);
-
-
-  //
-  // Allocate stack space for the interpreter. Then put a magic value
-  // at the bottom so we can detect stack corruption.
-  //
-  PushU64 (&VmContext, (UINT64) VM_STACK_KEY_VALUE);
-  VmContext.StackMagicPtr = (UINTN *) (UINTN) VmContext.Gpr[0];
-
-  //
-  // When we thunk to external native code, we copy the last 8 qwords from
-  // the EBC stack into the processor registers, and adjust the stack pointer
-  // up. If the caller is not passing 8 parameters, then we've moved the
-  // stack pointer up into the stack gap. If this happens, then the caller
-  // can mess up the stack gap contents (in particular our magic value).
-  // Therefore, leave another gap below the magic value. Pick 10 qwords down,
-  // just as a starting point.
-  //
-  VmContext.Gpr[0] -= 10 * sizeof (UINT64);
-
-  //
-  // Align the stack pointer such that after pushing the system table,
-  // image handle, and return address on the stack, it's aligned on a 16-byte
-  // boundary as required for IPF.
-  //
-  VmContext.Gpr[0] &= (INT64)~0x0f;
-  VmContext.LowStackTop = (UINTN) VmContext.Gpr[0];
-  //
-  // Simply copy the image handle and system table onto the EBC stack.
-  // Greatly simplifies things by not having to spill the args
-  //
-  PushU64 (&VmContext, (UINT64) SystemTable);
-  PushU64 (&VmContext, (UINT64) ImageHandle);
-
-  //
-  // Interpreter assumes 64-bit return address is pushed on the stack.
-  // IPF does not do this so pad the stack accordingly. Also, a
-  // "return address" is 16 bytes as required for IPF stack alignments.
-  //
-  PushU64 (&VmContext, (UINT64) 0);
-  PushU64 (&VmContext, (UINT64) 0x1234567887654321);
-  VmContext.StackRetAddr = (UINT64) VmContext.Gpr[0];
-
-  //
-  // Begin executing the EBC code
-  //
-  EbcDebuggerHookExecuteEbcImageEntryPoint (&VmContext);
-  EbcExecute (&VmContext);
-
-  //
-  // Return the value in Gpr[7] unless there was an error
-  //
-  ReturnEBCStack(StackIndex);
-  return (UINT64) VmContext.Gpr[7];
-}
-
-
-/**
-  Create thunks for an EBC image entry point, or an EBC protocol service.
-
-  @param  ImageHandle           Image handle for the EBC image. If not null, then
-                                we're creating a thunk for an image entry point.
-  @param  EbcEntryPoint         Address of the EBC code that the thunk is to call
-  @param  Thunk                 Returned thunk we create here
-  @param  Flags                 Flags indicating options for creating the thunk
-
-  @retval EFI_SUCCESS           The thunk was created successfully.
-  @retval EFI_INVALID_PARAMETER The parameter of EbcEntryPoint is not 16-bit
-                                aligned.
-  @retval EFI_OUT_OF_RESOURCES  There is not enough memory to created the EBC
-                                Thunk.
-  @retval EFI_BUFFER_TOO_SMALL  EBC_THUNK_SIZE is not larger enough.
-
-**/
-EFI_STATUS
-EbcCreateThunks (
-  IN EFI_HANDLE           ImageHandle,
-  IN VOID                 *EbcEntryPoint,
-  OUT VOID                **Thunk,
-  IN  UINT32              Flags
-  )
-{
-  UINT8       *Ptr;
-  UINT8       *ThunkBase;
-  UINT64      Addr;
-  UINT64      Code[3];    // Code in a bundle
-  UINT64      RegNum;     // register number for MOVL
-  UINT64      BitI;       // bits of MOVL immediate data
-  UINT64      BitIc;         // bits of MOVL immediate data
-  UINT64      BitImm5c;      // bits of MOVL immediate data
-  UINT64      BitImm9d;      // bits of MOVL immediate data
-  UINT64      BitImm7b;      // bits of MOVL immediate data
-  UINT64      Br;         // branch register for loading and jumping
-  UINT64      *Data64Ptr;
-  UINT32      ThunkSize;
-  UINT32      Size;
-
-  //
-  // Check alignment of pointer to EBC code, which must always be aligned
-  // on a 2-byte boundary.
-  //
-  if ((UINT32) (UINTN) EbcEntryPoint & 0x01) {
-    return EFI_INVALID_PARAMETER;
-  }
-  //
-  // Allocate memory for the thunk. Make the (most likely incorrect) assumption
-  // that the returned buffer is not aligned, so round up to the next
-  // alignment size.
-  //
-  Size      = EBC_THUNK_SIZE + EBC_THUNK_ALIGNMENT - 1;
-  ThunkSize = Size;
-  Ptr = EbcAllocatePoolForThunk (Size);
-
-  if (Ptr == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-  //
-  // Save the start address of the buffer.
-  //
-  ThunkBase = Ptr;
-
-  //
-  // Make sure it's aligned for code execution. If not, then
-  // round up.
-  //
-  if ((UINT32) (UINTN) Ptr & (EBC_THUNK_ALIGNMENT - 1)) {
-    Ptr = (UINT8 *) (((UINTN) Ptr + (EBC_THUNK_ALIGNMENT - 1)) &~ (UINT64) (EBC_THUNK_ALIGNMENT - 1));
-  }
-  //
-  // Return the pointer to the thunk to the caller to user as the
-  // image entry point.
-  //
-  *Thunk = (VOID *) Ptr;
-
-  //
-  // Clear out the thunk entry
-  // ZeroMem(Ptr, Size);
-  //
-  // For IPF, when you do a call via a function pointer, the function pointer
-  // actually points to a function descriptor which consists of a 64-bit
-  // address of the function, followed by a 64-bit gp for the function being
-  // called. See the the Software Conventions and Runtime Architecture Guide
-  // for details.
-  // So first off in our thunk, create a descriptor for our actual thunk code.
-  // This means we need to create a pointer to the thunk code (which follows
-  // the descriptor we're going to create), followed by the gp of the Vm
-  // interpret function we're going to eventually execute.
-  //
-  Data64Ptr = (UINT64 *) Ptr;
-
-  //
-  // Write the function's entry point (which is our thunk code that follows
-  // this descriptor we're creating).
-  //
-  *Data64Ptr = (UINT64) (Data64Ptr + 2);
-  //
-  // Get the gp from the descriptor for EbcInterpret and stuff it in our thunk
-  // descriptor.
-  //
-  *(Data64Ptr + 1) = *(UINT64 *) ((UINT64 *) (UINTN) EbcInterpret + 1);
-  //
-  // Advance our thunk data pointer past the descriptor. Since the
-  // descriptor consists of 16 bytes, the pointer is still aligned for
-  // IPF code execution (on 16-byte boundary).
-  //
-  Ptr += sizeof (UINT64) * 2;
-
-  //
-  // *************************** MAGIC BUNDLE ********************************
-  //
-  // Write magic code bundle for: movl r8 = 0xca112ebcca112ebc to help the VM
-  // to recognize it is a thunk.
-  //
-  Addr = (UINT64) 0xCA112EBCCA112EBC;
-
-  //
-  // Now generate the code bytes. First is nop.m 0x0
-  //
-  Code[0] = OPCODE_NOP;
-
-  //
-  // Next is simply Addr[62:22] (41 bits) of the address
-  //
-  Code[1] = RShiftU64 (Addr, 22) & 0x1ffffffffff;
-
-  //
-  // Extract bits from the address for insertion into the instruction
-  // i = Addr[63:63]
-  //
-  BitI = RShiftU64 (Addr, 63) & 0x01;
-  //
-  // ic = Addr[21:21]
-  //
-  BitIc = RShiftU64 (Addr, 21) & 0x01;
-  //
-  // imm5c = Addr[20:16] for 5 bits
-  //
-  BitImm5c = RShiftU64 (Addr, 16) & 0x1F;
-  //
-  // imm9d = Addr[15:7] for 9 bits
-  //
-  BitImm9d = RShiftU64 (Addr, 7) & 0x1FF;
-  //
-  // imm7b = Addr[6:0] for 7 bits
-  //
-  BitImm7b = Addr & 0x7F;
-
-  //
-  // The EBC entry point will be put into r8, so r8 can be used here
-  // temporary. R8 is general register and is auto-serialized.
-  //
-  RegNum = 8;
-
-  //
-  // Next is jumbled data, including opcode and rest of address
-  //
-  Code[2] = LShiftU64 (BitImm7b, 13);
-  Code[2] = Code[2] | LShiftU64 (0x00, 20);   // vc
-  Code[2] = Code[2] | LShiftU64 (BitIc, 21);
-  Code[2] = Code[2] | LShiftU64 (BitImm5c, 22);
-  Code[2] = Code[2] | LShiftU64 (BitImm9d, 27);
-  Code[2] = Code[2] | LShiftU64 (BitI, 36);
-  Code[2] = Code[2] | LShiftU64 ((UINT64)MOVL_OPCODE, 37);
-  Code[2] = Code[2] | LShiftU64 ((RegNum & 0x7F), 6);
-
-  WriteBundle ((VOID *) Ptr, 0x05, Code[0], Code[1], Code[2]);
-
-  //
-  // *************************** FIRST BUNDLE ********************************
-  //
-  // Write code bundle for: movl r8 = EBC_ENTRY_POINT so we pass
-  // the ebc entry point in to the interpreter function via a processor
-  // register.
-  // Note -- we could easily change this to pass in a pointer to a structure
-  // that contained, among other things, the EBC image's entry point. But
-  // for now pass it directly.
-  //
-  Ptr += 16;
-  Addr = (UINT64) EbcEntryPoint;
-
-  //
-  // Now generate the code bytes. First is nop.m 0x0
-  //
-  Code[0] = OPCODE_NOP;
-
-  //
-  // Next is simply Addr[62:22] (41 bits) of the address
-  //
-  Code[1] = RShiftU64 (Addr, 22) & 0x1ffffffffff;
-
-  //
-  // Extract bits from the address for insertion into the instruction
-  // i = Addr[63:63]
-  //
-  BitI = RShiftU64 (Addr, 63) & 0x01;
-  //
-  // ic = Addr[21:21]
-  //
-  BitIc = RShiftU64 (Addr, 21) & 0x01;
-  //
-  // imm5c = Addr[20:16] for 5 bits
-  //
-  BitImm5c = RShiftU64 (Addr, 16) & 0x1F;
-  //
-  // imm9d = Addr[15:7] for 9 bits
-  //
-  BitImm9d = RShiftU64 (Addr, 7) & 0x1FF;
-  //
-  // imm7b = Addr[6:0] for 7 bits
-  //
-  BitImm7b = Addr & 0x7F;
-
-  //
-  // Put the EBC entry point in r8, which is the location of the return value
-  // for functions.
-  //
-  RegNum = 8;
-
-  //
-  // Next is jumbled data, including opcode and rest of address
-  //
-  Code[2] = LShiftU64 (BitImm7b, 13);
-  Code[2] = Code[2] | LShiftU64 (0x00, 20);   // vc
-  Code[2] = Code[2] | LShiftU64 (BitIc, 21);
-  Code[2] = Code[2] | LShiftU64 (BitImm5c, 22);
-  Code[2] = Code[2] | LShiftU64 (BitImm9d, 27);
-  Code[2] = Code[2] | LShiftU64 (BitI, 36);
-  Code[2] = Code[2] | LShiftU64 ((UINT64)MOVL_OPCODE, 37);
-  Code[2] = Code[2] | LShiftU64 ((RegNum & 0x7F), 6);
-
-  WriteBundle ((VOID *) Ptr, 0x05, Code[0], Code[1], Code[2]);
-
-  //
-  // *************************** NEXT BUNDLE *********************************
-  //
-  // Write code bundle for:
-  //   movl rx = offset_of(EbcInterpret|ExecuteEbcImageEntryPoint)
-  //
-  // Advance pointer to next bundle, then compute the offset from this bundle
-  // to the address of the entry point of the interpreter.
-  //
-  Ptr += 16;
-  if ((Flags & FLAG_THUNK_ENTRY_POINT) != 0) {
-    Addr = (UINT64) ExecuteEbcImageEntryPoint;
-  } else {
-    Addr = (UINT64) EbcInterpret;
-  }
-  //
-  // Indirection on Itanium-based systems
-  //
-  Addr = *(UINT64 *) Addr;
-
-  //
-  // Now write the code to load the offset into a register
-  //
-  Code[0] = OPCODE_NOP;
-
-  //
-  // Next is simply Addr[62:22] (41 bits) of the address
-  //
-  Code[1] = RShiftU64 (Addr, 22) & 0x1ffffffffff;
-
-  //
-  // Extract bits from the address for insertion into the instruction
-  // i = Addr[63:63]
-  //
-  BitI = RShiftU64 (Addr, 63) & 0x01;
-  //
-  // ic = Addr[21:21]
-  //
-  BitIc = RShiftU64 (Addr, 21) & 0x01;
-  //
-  // imm5c = Addr[20:16] for 5 bits
-  //
-  BitImm5c = RShiftU64 (Addr, 16) & 0x1F;
-  //
-  // imm9d = Addr[15:7] for 9 bits
-  //
-  BitImm9d = RShiftU64 (Addr, 7) & 0x1FF;
-  //
-  // imm7b = Addr[6:0] for 7 bits
-  //
-  BitImm7b = Addr & 0x7F;
-
-  //
-  // Put it in r31, a scratch register
-  //
-  RegNum = 31;
-
-  //
-  // Next is jumbled data, including opcode and rest of address
-  //
-  Code[2] =   LShiftU64(BitImm7b, 13);
-  Code[2] = Code[2] | LShiftU64 (0x00, 20);   // vc
-  Code[2] = Code[2] | LShiftU64 (BitIc, 21);
-  Code[2] = Code[2] | LShiftU64 (BitImm5c, 22);
-  Code[2] = Code[2] | LShiftU64 (BitImm9d, 27);
-  Code[2] = Code[2] | LShiftU64 (BitI, 36);
-  Code[2] = Code[2] | LShiftU64 ((UINT64)MOVL_OPCODE, 37);
-  Code[2] = Code[2] | LShiftU64 ((RegNum & 0x7F), 6);
-
-  WriteBundle ((VOID *) Ptr, 0x05, Code[0], Code[1], Code[2]);
-
-  //
-  // *************************** NEXT BUNDLE *********************************
-  //
-  // Load branch register with EbcInterpret() function offset from the bundle
-  // address: mov b6 = RegNum
-  //
-  // See volume 3 page 4-29 of the Arch. Software Developer's Manual.
-  //
-  // Advance pointer to next bundle
-  //
-  Ptr += 16;
-  Code[0] = OPCODE_NOP;
-  Code[1] = OPCODE_NOP;
-  Code[2] = OPCODE_MOV_BX_RX;
-
-  //
-  // Pick a branch register to use. Then fill in the bits for the branch
-  // register and user register (same user register as previous bundle).
-  //
-  Br = 6;
-  Code[2] |= LShiftU64 (Br, 6);
-  Code[2] |= LShiftU64 (RegNum, 13);
-  WriteBundle ((VOID *) Ptr, 0x0d, Code[0], Code[1], Code[2]);
-
-  //
-  // *************************** NEXT BUNDLE *********************************
-  //
-  // Now do the branch:  (p0) br.cond.sptk.few b6
-  //
-  // Advance pointer to next bundle.
-  // Fill in the bits for the branch register (same reg as previous bundle)
-  //
-  Ptr += 16;
-  Code[0] = OPCODE_NOP;
-  Code[1] = OPCODE_NOP;
-  Code[2] = OPCODE_BR_COND_SPTK_FEW;
-  Code[2] |= LShiftU64 (Br, 13);
-  WriteBundle ((VOID *) Ptr, 0x1d, Code[0], Code[1], Code[2]);
-
-  //
-  // Add the thunk to our list of allocated thunks so we can do some cleanup
-  // when the image is unloaded. Do this last since the Add function flushes
-  // the instruction cache for us.
-  //
-  EbcAddImageThunk (ImageHandle, (VOID *) ThunkBase, ThunkSize);
-
-  //
-  // Done
-  //
-  return EFI_SUCCESS;
-}
-
-
-/**
-  Given raw bytes of Itanium based code, format them into a bundle and
-  write them out.
-
-  @param  MemPtr                 pointer to memory location to write the bundles
-                                 to.
-  @param  Template               5-bit template.
-  @param  Slot0                  Instruction slot 0 data for the bundle.
-  @param  Slot1                  Instruction slot 1 data for the bundle.
-  @param  Slot2                  Instruction slot 2 data for the bundle.
-
-  @retval EFI_INVALID_PARAMETER  Pointer is not aligned
-  @retval EFI_INVALID_PARAMETER  No more than 5 bits in template
-  @retval EFI_INVALID_PARAMETER  More than 41 bits used in code
-  @retval EFI_SUCCESS            All data is written.
-
-**/
-EFI_STATUS
-WriteBundle (
-  IN    VOID    *MemPtr,
-  IN    UINT8   Template,
-  IN    UINT64  Slot0,
-  IN    UINT64  Slot1,
-  IN    UINT64  Slot2
-  )
-{
-  UINT8   *BPtr;
-  UINT32  Index;
-  UINT64  Low64;
-  UINT64  High64;
-
-  //
-  // Verify pointer is aligned
-  //
-  if ((UINT64) MemPtr & 0xF) {
-    return EFI_INVALID_PARAMETER;
-  }
-  //
-  // Verify no more than 5 bits in template
-  //
-  if ((Template &~0x1F) != 0) {
-    return EFI_INVALID_PARAMETER;
-  }
-  //
-  // Verify max of 41 bits used in code
-  //
-  if (((Slot0 | Slot1 | Slot2) &~0x1ffffffffff) != 0) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Low64   = LShiftU64 (Slot1, 46);
-  Low64   = Low64 | LShiftU64 (Slot0, 5) | Template;
-
-  High64  = RShiftU64 (Slot1, 18);
-  High64  = High64 | LShiftU64 (Slot2, 23);
-
-  //
-  // Now write it all out
-  //
-  BPtr = (UINT8 *) MemPtr;
-  for (Index = 0; Index < 8; Index++) {
-    *BPtr = (UINT8) Low64;
-    Low64 = RShiftU64 (Low64, 8);
-    BPtr++;
-  }
-
-  for (Index = 0; Index < 8; Index++) {
-    *BPtr   = (UINT8) High64;
-    High64  = RShiftU64 (High64, 8);
-    BPtr++;
-  }
-
-  return EFI_SUCCESS;
-}
-
-
-/**
-  This function is called to execute an EBC CALLEX instruction.
-  The function check the callee's content to see whether it is common native
-  code or a thunk to another piece of EBC code.
-  If the callee is common native code, use EbcLLCAllEXASM to manipulate,
-  otherwise, set the VM->IP to target EBC code directly to avoid another VM
-  be startup which cost time and stack space.
-
-  @param  VmPtr            Pointer to a VM context.
-  @param  FuncAddr         Callee's address
-  @param  NewStackPointer  New stack pointer after the call
-  @param  FramePtr         New frame pointer after the call
-  @param  Size             The size of call instruction
-
-**/
-VOID
-EbcLLCALLEX (
-  IN VM_CONTEXT   *VmPtr,
-  IN UINTN        FuncAddr,
-  IN UINTN        NewStackPointer,
-  IN VOID         *FramePtr,
-  IN UINT8        Size
-  )
-{
-  UINTN    IsThunk;
-  UINTN    TargetEbcAddr;
-  UINTN    CodeOne18;
-  UINTN    CodeOne23;
-  UINTN    CodeTwoI;
-  UINTN    CodeTwoIc;
-  UINTN    CodeTwo7b;
-  UINTN    CodeTwo5c;
-  UINTN    CodeTwo9d;
-  UINTN    CalleeAddr;
-
-  IsThunk       = 1;
-  TargetEbcAddr = 0;
-
-  //
-  // FuncAddr points to the descriptor of the target instructions.
-  //
-  CalleeAddr = *((UINT64 *)FuncAddr);
-
-  //
-  // Processor specific code to check whether the callee is a thunk to EBC.
-  //
-  if (*((UINT64 *)CalleeAddr) != 0xBCCA000100000005) {
-    IsThunk = 0;
-    goto Action;
-  }
-  if (*((UINT64 *)CalleeAddr + 1) != 0x697623C1004A112E)  {
-    IsThunk = 0;
-    goto Action;
-  }
-
-  CodeOne18 = RShiftU64 (*((UINT64 *)CalleeAddr + 2), 46) & 0x3FFFF;
-  CodeOne23 = (*((UINT64 *)CalleeAddr + 3)) & 0x7FFFFF;
-  CodeTwoI  = RShiftU64 (*((UINT64 *)CalleeAddr + 3), 59) & 0x1;
-  CodeTwoIc = RShiftU64 (*((UINT64 *)CalleeAddr + 3), 44) & 0x1;
-  CodeTwo7b = RShiftU64 (*((UINT64 *)CalleeAddr + 3), 36) & 0x7F;
-  CodeTwo5c = RShiftU64 (*((UINT64 *)CalleeAddr + 3), 45) & 0x1F;
-  CodeTwo9d = RShiftU64 (*((UINT64 *)CalleeAddr + 3), 50) & 0x1FF;
-
-  TargetEbcAddr = CodeTwo7b;
-  TargetEbcAddr = TargetEbcAddr | LShiftU64 (CodeTwo9d, 7);
-  TargetEbcAddr = TargetEbcAddr | LShiftU64 (CodeTwo5c, 16);
-  TargetEbcAddr = TargetEbcAddr | LShiftU64 (CodeTwoIc, 21);
-  TargetEbcAddr = TargetEbcAddr | LShiftU64 (CodeOne18, 22);
-  TargetEbcAddr = TargetEbcAddr | LShiftU64 (CodeOne23, 40);
-  TargetEbcAddr = TargetEbcAddr | LShiftU64 (CodeTwoI, 63);
-
-Action:
-  if (IsThunk == 1){
-    //
-    // The callee is a thunk to EBC, adjust the stack pointer down 16 bytes and
-    // put our return address and frame pointer on the VM stack.
-    // Then set the VM's IP to new EBC code.
-    //
-    VmPtr->Gpr[0] -= 8;
-    VmWriteMemN (VmPtr, (UINTN) VmPtr->Gpr[0], (UINTN) FramePtr);
-    VmPtr->FramePtr = (VOID *) (UINTN) VmPtr->Gpr[0];
-    VmPtr->Gpr[0] -= 8;
-    VmWriteMem64 (VmPtr, (UINTN) VmPtr->Gpr[0], (UINT64) (VmPtr->Ip + Size));
-
-    VmPtr->Ip = (VMIP) (UINTN) TargetEbcAddr;
-  } else {
-    //
-    // The callee is not a thunk to EBC, call native code,
-    // and get return value.
-    //
-    VmPtr->Gpr[7] = EbcLLCALLEXNative (FuncAddr, NewStackPointer, FramePtr);
-
-    //
-    // Advance the IP.
-    //
-    VmPtr->Ip += Size;
-  }
-}
diff --git a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h b/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h
deleted file mode 100644
index d90ea82ad0..0000000000
--- a/MdeModulePkg/Universal/EbcDxe/Ipf/EbcSupport.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/** @file
-  Definition of EBC Support function.
-
-Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef _IPF_EBC_SUPPORT_H_
-#define _IPF_EBC_SUPPORT_H_
-
-#define VM_STACK_SIZE   (1024 * 32)
-
-#define EBC_THUNK_SIZE  128
-#define STACK_REMAIN_SIZE (1024 * 4)
-
-//
-// For code execution, thunks must be aligned on 16-byte boundary
-//
-#define EBC_THUNK_ALIGNMENT 16
-
-//
-// Opcodes for IPF instructions. We'll need to hand-create thunk code (stuffing
-// bits) to insert a jump to the interpreter.
-//
-#define OPCODE_NOP              (UINT64) 0x00008000000
-#define OPCODE_BR_COND_SPTK_FEW (UINT64) 0x00100000000
-#define OPCODE_MOV_BX_RX        (UINT64) 0x00E00100000
-
-//
-// Opcode for MOVL instruction
-//
-#define MOVL_OPCODE 0x06
-
-#endif
diff --git a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
index 5eb7ef924a..066e0bbae7 100644
--- a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
+++ b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
index 30a765c807..20396260ce 100644
--- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
+++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf b/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
index 12b26604e2..b5cab4bf55 100644
--- a/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
+++ b/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
@@ -3,7 +3,7 @@
 #
 # This module installs gEdkiiFaultTolerantWriteGuid PPI to inform the check for FTW last write data has been done.
 #
-# Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
index 8f8b8b4294..e00e581d63 100644
--- a/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
+++ b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
index 0593ff85bb..44bdf42344 100644
--- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
+++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/HiiResourcesSampleDxe/HiiResourcesSampleDxe.inf b/MdeModulePkg/Universal/HiiResourcesSampleDxe/HiiResourcesSampleDxe.inf
index 7287ba5050..b925508434 100644
--- a/MdeModulePkg/Universal/HiiResourcesSampleDxe/HiiResourcesSampleDxe.inf
+++ b/MdeModulePkg/Universal/HiiResourcesSampleDxe/HiiResourcesSampleDxe.inf
@@ -34,7 +34,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/LegacyRegion2Dxe/LegacyRegion2Dxe.inf b/MdeModulePkg/Universal/LegacyRegion2Dxe/LegacyRegion2Dxe.inf
index 3a34cf210f..c7c2e0d03d 100644
--- a/MdeModulePkg/Universal/LegacyRegion2Dxe/LegacyRegion2Dxe.inf
+++ b/MdeModulePkg/Universal/LegacyRegion2Dxe/LegacyRegion2Dxe.inf
@@ -34,7 +34,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf b/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf
index a4ded94e7f..4f14b3a307 100644
--- a/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf
+++ b/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf
@@ -5,7 +5,7 @@
 #  version of the module only supports loading of files for the purpose of
 #  booting from the file.
 #
-#  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf b/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
index 975dc4cd3a..85123ad223 100644
--- a/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
+++ b/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 # This driver first constructs the non-tested memory range, then performs the R/W/V memory test.
 #
-# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials are
 # licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf b/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
index a0d2ce7a89..beb18bfce1 100644
--- a/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
+++ b/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Metronome/Metronome.inf b/MdeModulePkg/Universal/Metronome/Metronome.inf
index 3a633ed753..88a28afd0b 100644
--- a/MdeModulePkg/Universal/Metronome/Metronome.inf
+++ b/MdeModulePkg/Universal/Metronome/Metronome.inf
@@ -34,7 +34,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Packages]
diff --git a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
index e44e268014..c73ec42994 100644
--- a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 # This module produces the UEFI boot service GetNextMonotonicCount() and runtime service GetNextHighMonotonicCount().
 #
-# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf b/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
index 85f7982971..29f0c43592 100644
--- a/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
+++ b/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gArpDriverBinding
 #  COMPONENT_NAME                =  gArpComponentName
diff --git a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf
index e41bddb017..2d1008f894 100644
--- a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf
+++ b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gDhcp4DriverBinding
 #  COMPONENT_NAME                =  gDhcp4ComponentName
diff --git a/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf b/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
index 8a1f8baf79..233339d7d3 100644
--- a/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
+++ b/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This module produces Deferred Procedure Call Protocol.
 #
-#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution.  The full text of the license may be found at
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES      = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES      = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
index dce39681d1..c2b9bd2c6f 100644
--- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
+++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gIScsiDriverBinding
 #  COMPONENT_NAME                =  gIScsiComponentName
diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
index b2b934a8c3..fb15c3fffa 100644
--- a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
+++ b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
@@ -31,7 +31,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gIp4DriverBinding
 #  COMPONENT_NAME                =  gIp4ComponentName
diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf b/MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
index 090ab732b9..d3f74e199c 100644
--- a/MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
+++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gMnpDriverBinding
 #  COMPONENT_NAME                =  gMnpComponentName
diff --git a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
index ad9e7abce6..1e8b12d500 100644
--- a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
+++ b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gMtftp4DriverBinding
 #  COMPONENT_NAME                =  gMtftp4ComponentName
diff --git a/MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf b/MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
index 021d45d44d..04ce74670c 100644
--- a/MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
+++ b/MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  mSimpleNetworkDriverBinding
 #  COMPONENT_NAME                =  gSimpleNetworkComponentName
diff --git a/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf b/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
index 5021cbc4b8..11a6425471 100644
--- a/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
+++ b/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  mTcp4DriverBinding
 #  COMPONENT_NAME                =  gTcp4ComponentName
diff --git a/MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf b/MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
index 69b6d5d943..7b7b6150d2 100644
--- a/MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
+++ b/MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gUdp4DriverBinding
 #  COMPONENT_NAME                =  gUdp4ComponentName
diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
index 121d68ed26..de2c6ad72c 100644
--- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
+++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
@@ -32,7 +32,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF
+#  VALID_ARCHITECTURES           = IA32 X64
 #
 #  DRIVER_BINDING                =  gPxeBcDriverBinding
 #  COMPONENT_NAME                =  gPxeBcComponentName
diff --git a/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf b/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
index a36c57871e..b344e4b729 100644
--- a/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
+++ b/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
@@ -4,7 +4,7 @@
 #  This module produces EFI HII Configuration Access Protocol to provide one way to
 #  configurate VALN setting
 #
-#  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -27,7 +27,7 @@
 
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PCD/Dxe/Pcd.inf b/MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
index e6b3e0d920..93c451bbd4 100644
--- a/MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
+++ b/MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
@@ -303,7 +303,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PCD/Pei/Pcd.inf b/MdeModulePkg/Universal/PCD/Pei/Pcd.inf
index c2a3ccbbc0..974a68c994 100644
--- a/MdeModulePkg/Universal/PCD/Pei/Pcd.inf
+++ b/MdeModulePkg/Universal/PCD/Pei/Pcd.inf
@@ -302,7 +302,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf
index 27bce7b7b7..748e0d7b29 100644
--- a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf
+++ b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf
@@ -4,7 +4,7 @@
 #  It installs SingleSegmentPciConfiguration2 PPI to provide read, write and modify access to Pci configuration space in PEI phase.
 #  To follow PI specification, these services also support access to the unaligned Pci address.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf
index 5bd9e44edd..aeaceb050e 100644
--- a/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf
+++ b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf
@@ -43,7 +43,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PrintDxe/PrintDxe.inf b/MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
index 19eef5a8a8..50b24e75fc 100644
--- a/MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
+++ b/MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
@@ -3,7 +3,7 @@
 #
 #  This driver produces Print2 protocols layered on top of the PrintLib from the MdePkg.
 #
-#  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution.  The full text of the license may be found at
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf b/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
index 3f699f6b5a..9b78f07f13 100644
--- a/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
+++ b/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
@@ -4,7 +4,7 @@
 # This module sets EFI_MEMORY_XP for attributes of EfiACPIMemoryNVS and EfiReservedMemoryType
 # in UEFI memory map, if and only of PropertiesTable is published and has BIT0 set.
 #
-# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
index d8a1490021..b35ec85b9b 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
@@ -1,6 +1,7 @@
 ## @file
 #  EFI_REGULAR_EXPRESSION_PROTOCOL Implementation
 #
+#  Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
 #  (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
 #
 #  This program and the accompanying materials are licensed and made available
@@ -74,12 +75,10 @@
 
 [BuildOptions]
   # Override MSFT build option to remove /Oi and /GL
-  MSFT:DEBUG_*_IA32_CC_FLAGS   == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
-  MSFT:RELEASE_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF
-  MSFT:DEBUG_*_X64_CC_FLAGS    == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /X
-  MSFT:RELEASE_*_X64_CC_FLAGS  == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /X
-  MSFT:DEBUG_*_IPF_CC_FLAGS    == /nologo /c /WX /GS- /W4 /EHs-c- /GR- /Gy /Os /FIAutoGen.h /QIPF_fr32 /Zi /X
-  MSFT:RELEASE_*_IPF_CC_FLAGS  == /nologo /c /WX /GS- /W4 /EHs-c- /GR- /Gy /Os /FIAutoGen.h /QIPF_fr32 /X
+  MSFT:DEBUG_*_IA32_CC_FLAGS   == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm 
+  MSFT:RELEASE_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF 
+  MSFT:DEBUG_*_X64_CC_FLAGS    == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /X 
+  MSFT:RELEASE_*_X64_CC_FLAGS  == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /X 
   INTEL:*_*_*_CC_FLAGS         =  /Oi-
 
   # Oniguruma: potentially uninitialized local variable used
diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
index a3de382d00..ea53f32ff7 100644
--- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
+++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Report Status Code Router PEIM which produces Report Stataus Code Handler PPI and Status Code PPI.
 #
-#  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is only for build)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is only for build)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
index 9556260082..0671e895a8 100644
--- a/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/SectionExtractionPei/SectionExtractionPei.inf b/MdeModulePkg/Universal/SectionExtractionPei/SectionExtractionPei.inf
index 91800cec01..ba6bd9584b 100644
--- a/MdeModulePkg/Universal/SectionExtractionPei/SectionExtractionPei.inf
+++ b/MdeModulePkg/Universal/SectionExtractionPei/SectionExtractionPei.inf
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
index c5553a38e0..5bddc885b5 100644
--- a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
+++ b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This driver produces security2 and security architectural protocol based on SecurityManagementLib.
 #
-#  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -24,7 +24,7 @@
 
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf b/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
index 4f847d4061..e7618350dc 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf b/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
index 0e623aeb41..e0c89307a3 100644
--- a/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
+++ b/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
index 879bc21481..698a64c3b1 100644
--- a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
+++ b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
@@ -35,7 +35,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf b/MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf
index 5d96fe3041..60deee3826 100644
--- a/MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf
+++ b/MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is only for build)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is only for build)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
index 928ae15b6f..f04d40ef28 100644
--- a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/TimestampDxe/TimestampDxe.inf b/MdeModulePkg/Universal/TimestampDxe/TimestampDxe.inf
index 07858857e3..a5d91f6dff 100644
--- a/MdeModulePkg/Universal/TimestampDxe/TimestampDxe.inf
+++ b/MdeModulePkg/Universal/TimestampDxe/TimestampDxe.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Packages]
diff --git a/MdeModulePkg/Universal/Variable/Pei/VariablePei.inf b/MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
index 72a440dcd1..5095bfd8b8 100644
--- a/MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
+++ b/MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
@@ -3,7 +3,7 @@
 #
 #  This module implements ReadOnly Variable Services required by PEIM and installs PEI ReadOnly Varaiable2 PPI.
 #
-#  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf b/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
index cd2daf3033..acf12144f3 100644
--- a/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
+++ b/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Packages]
-- 
2.16.2.windows.1



  reply	other threads:[~2018-07-09  9:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-09  6:03 [PATCH V2 1/4] CryptoPkg: Removing ipf which is no longer supported from edk2 Chen A Chen
2018-07-09  6:03 ` [PATCH V2 2/4] MdeModulePkg: " Chen A Chen
2018-07-09  9:45   ` Zeng, Star [this message]
2018-07-10  7:08     ` Gao, Liming
2018-07-09  6:03 ` [PATCH V2 3/4] MdePkg: " Chen A Chen
2018-07-09  6:03 ` [PATCH V2 4/4] UefiCpuPkg: " Chen A Chen
2018-07-09  6:13   ` Dong, Eric

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0C09AFA07DD0434D9E2A0C6AEB0483103BB7D4F2@shsmsx102.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox