public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2.
@ 2018-06-13  3:44 chenc2
  2018-06-13 12:40 ` Ard Biesheuvel
  2018-06-14  0:55 ` Zeng, Star
  0 siblings, 2 replies; 5+ messages in thread
From: chenc2 @ 2018-06-13  3:44 UTC (permalink / raw)
  To: edk2-devel; +Cc: chenc2, Star Zeng, Eric Dong, Michael D Kinney

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>
Signed-off-by: chenc2 <chen.a.chen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
---
 .../BootManagerMenuApp/BootManagerMenuApp.inf      |    2 +-
 MdeModulePkg/Application/HelloWorld/HelloWorld.inf |    2 +-
 .../MemoryProfileInfo/MemoryProfileInfo.inf        |    2 +-
 MdeModulePkg/Application/UiApp/UiApp.inf           |    2 +-
 .../Application/VariableInfo/VariableInfo.inf      |    2 +-
 .../Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf  |    2 +-
 MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf       |    2 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf          |    2 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf             |    2 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf         |    2 +-
 MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf       |    2 +-
 .../Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf      |    2 +-
 MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf   |    2 +-
 MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf           |    2 +-
 MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf       |    2 +-
 .../IncompatiblePciDeviceSupportDxe.inf            |    2 +-
 .../Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf        |    4 +-
 MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf       |    2 +-
 .../Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf    |    2 +-
 .../Pci/SataControllerDxe/SataControllerDxe.inf    |    2 +-
 .../Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf        |    2 +-
 .../Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf        |    4 +-
 MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf   |    4 +-
 MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf   |    4 +-
 MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf           |    2 +-
 MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf           |    2 +-
 MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf    |    2 +-
 MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf  |    2 +-
 .../Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf       |    2 +-
 MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf            |    2 +-
 MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf  |    2 +-
 MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf                |    2 +-
 .../Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf        |    2 +-
 .../Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf      |    2 +-
 MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf       |    2 +-
 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        |    4 +-
 MdeModulePkg/Include/Guid/VariableFormat.h         |    5 -
 .../BasePlatformHookLibNull.inf                    |    2 +-
 .../BaseResetSystemLibNull.inf                     |    2 +-
 MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf   |    2 +-
 MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf   |    2 +-
 .../BootMaintenanceManagerUiLib.inf                |    2 +-
 .../Library/BootManagerUiLib/BootManagerUiLib.inf  |    2 +-
 .../CpuExceptionHandlerLibNull.inf                 |    2 +-
 .../CustomizedDisplayLib/CustomizedDisplayLib.inf  |    4 +-
 .../DebugAgentLibNull/DebugAgentLibNull.inf        |    2 +-
 .../DeviceManagerUiLib/DeviceManagerUiLib.inf      |    2 +-
 .../DisplayUpdateProgressLibGraphics.inf           |    2 +-
 .../DisplayUpdateProgressLibText.inf               |    2 +-
 .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf     |    2 +-
 .../DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf      |    2 +-
 .../DxeCapsuleLibNull/DxeCapsuleLibNull.inf        |    2 +-
 .../DxeCoreMemoryAllocationLib.inf                 |    2 +-
 .../DxeCoreMemoryAllocationProfileLib.inf          |    2 +-
 .../DxeCorePerformanceLib.inf                      |    2 +-
 .../DxeCrc32GuidedSectionExtractLib.inf            |    4 +-
 .../DxeDebugPrintErrorLevelLib.inf                 |    4 +-
 MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf       |    4 +-
 .../DxeFileExplorerProtocol.inf                    |    4 +-
 MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf     |    6 +-
 MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf     |    4 +-
 MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf       |    6 +-
 .../DxePerformanceLib/DxePerformanceLib.inf        |    4 +-
 .../DxePrintLibPrint2Protocol.inf                  |    2 +-
 .../DxeReportStatusCodeLib.inf                     |    4 +-
 .../DxeResetSystemLib/DxeResetSystemLib.inf        |    2 +-
 .../DxeSecurityManagementLib.inf                   |    4 +-
 MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf   |    4 +-
 MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf   |    4 +-
 .../Library/FileExplorerLib/FileExplorerLib.inf    |    4 +-
 .../FmpAuthenticationLibNull.inf                   |    2 +-
 .../LzmaCustomDecompressLib.inf                    |    2 +-
 .../OemHookStatusCodeLibNull.inf                   |    4 +-
 .../PciHostBridgeLibNull/PciHostBridgeLibNull.inf  |    2 +-
 .../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    |    4 +-
 .../PlatformHookLibSerialPortPpi.inf               |    4 +-
 .../PlatformVarCleanupLib.inf                      |    2 +-
 .../RuntimeDxeReportStatusCodeLib.inf              |    4 +-
 .../TpmMeasurementLibNull.inf                      |    4 +-
 .../UefiBootManagerLib/UefiBootManagerLib.inf      |    2 +-
 MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf     |    4 +-
 .../UefiHiiServicesLib/UefiHiiServicesLib.inf      |    4 +-
 .../UefiMemoryAllocationProfileLib.inf             |    6 +-
 MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf   |    2 +-
 MdeModulePkg/Logo/Logo.inf                         |    2 +-
 MdeModulePkg/MdeModulePkg.dsc                      |   28 +-
 .../Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf       |    2 +-
 .../Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf   |    2 +-
 .../BootGraphicsResourceTableDxe.inf               |    2 +-
 .../FirmwarePerformanceDxe.inf                     |    2 +-
 .../FirmwarePerformancePei.inf                     |    2 +-
 .../Acpi/S3SaveStateDxe/S3SaveStateDxe.inf         |    4 +-
 .../Acpi/SmmS3SaveState/SmmS3SaveState.inf         |    2 +-
 MdeModulePkg/Universal/BdsDxe/BdsDxe.inf           |    2 +-
 .../BootManagerPolicyDxe/BootManagerPolicyDxe.inf  |    2 +-
 MdeModulePkg/Universal/CapsulePei/CapsulePei.inf   |    2 +-
 .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf        |    4 +-
 .../Console/ConPlatformDxe/ConPlatformDxe.inf      |    4 +-
 .../Console/ConSplitterDxe/ConSplitterDxe.inf      |    2 +-
 .../GraphicsConsoleDxe/GraphicsConsoleDxe.inf      |    2 +-
 .../Universal/Console/TerminalDxe/TerminalDxe.inf  |    2 +-
 .../Universal/DebugPortDxe/DebugPortDxe.inf        |    2 +-
 .../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      |    2 +-
 .../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         |    2 +-
 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                      |    2 +-
 .../Universal/FileExplorerDxe/FileExplorerDxe.inf  |    2 +-
 .../Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf    |    2 +-
 .../HiiResourcesSampleDxe.inf                      |    2 +-
 .../LegacyRegion2Dxe/LegacyRegion2Dxe.inf          |    2 +-
 .../Universal/LoadFileOnFv2/LoadFileOnFv2.inf      |    2 +-
 .../GenericMemoryTestDxe/GenericMemoryTestDxe.inf  |    2 +-
 .../NullMemoryTestDxe/NullMemoryTestDxe.inf        |    2 +-
 MdeModulePkg/Universal/Metronome/Metronome.inf     |    2 +-
 .../MonotonicCounterRuntimeDxe.inf                 |    2 +-
 MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf   |    2 +-
 .../Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf        |    2 +-
 MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf   |    2 +-
 .../Universal/Network/IScsiDxe/IScsiDxe.inf        |    4 +-
 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        |    2 +-
 MdeModulePkg/Universal/PCD/Dxe/Pcd.inf             |    2 +-
 MdeModulePkg/Universal/PCD/Pei/Pcd.inf             |    2 +-
 .../PcatSingleSegmentPciCfg2Pei.inf                |    2 +-
 .../PlatformDriOverrideDxe.inf                     |    2 +-
 MdeModulePkg/Universal/PrintDxe/PrintDxe.inf       |    2 +-
 .../PropertiesTableAttributesDxe.inf               |    2 +-
 .../RegularExpressionDxe/RegularExpressionDxe.inf  |    2 -
 .../Pei/ReportStatusCodeRouterPei.inf              |    2 +-
 .../ReportStatusCodeRouterRuntimeDxe.inf           |    2 +-
 .../SectionExtractionPei/SectionExtractionPei.inf  |    2 +-
 .../Universal/SecurityStubDxe/SecurityStubDxe.inf  |    2 +-
 .../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         |    2 +-
 .../Universal/WatchdogTimerDxe/WatchdogTimer.inf   |    4 +-
 186 files changed, 213 insertions(+), 3759 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 392a97065c..8559a42b80 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..491069266b 100644
--- a/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
+++ b/MdeModulePkg/Application/HelloWorld/HelloWorld.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/Application/MemoryProfileInfo/MemoryProfileInfo.inf b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
index 4bb7a9df1d..57ced0927b 100644
--- a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
+++ b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.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/Application/UiApp/UiApp.inf b/MdeModulePkg/Application/UiApp/UiApp.inf
index d144462ce4..7a7983d6bf 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..05de341016 100644
--- a/MdeModulePkg/Application/VariableInfo/VariableInfo.inf
+++ b/MdeModulePkg/Application/VariableInfo/VariableInfo.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/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
index d1ce859091..4f97ee7872 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..863d4aa8c2 100644
--- a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+++ b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.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                =  gAtaBusDriverBinding
 #  COMPONENT_NAME                =  gAtaBusComponentName
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
index 4dbe2f5e68..23c7f2326a 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.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.common]
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
index 5cd53b2fc4..36c79028a9 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.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.common]
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
index 2fb1085c6d..2fd8e7e316 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.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.common]
diff --git a/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf b/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
index 1d9e22ec4c..e64ccc31ce 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..b12410d8ff 100644
--- a/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
+++ b/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
@@ -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..7f8a82a51a 100644
--- a/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
+++ b/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
@@ -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 238923e828..819bc5a75d 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 813ccc9450..cc29427890 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..3096ffb077 100644
--- a/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf
+++ b/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.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/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf b/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf
index a83edaec7b..7db7e6a7dd 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 4918696104..e8defcdfb5 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
@@ -78,4 +78,4 @@
 #
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  NvmExpressDxeExtra.uni
\ No newline at end of file
+  NvmExpressDxeExtra.uni
diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf b/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
index 97608bfcf2..1b3b61f664 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..b27933ac1f 100644
--- a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
+++ b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.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                =  gSerialControllerDriver
 #  COMPONENT_NAME                =  gPciSioSerialComponentName
diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
index 03f9fa0d1d..88eacb1dd9 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..ff5720558c 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.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                =  gSdMmcPciHcDxeDriverBinding
 #  COMPONENT_NAME                =  gSdMmcPciHcDxeComponentName
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf b/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf
index bc6ea60d6b..129c1dabbf 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]
@@ -53,4 +53,4 @@
   gEfiPeiMasterBootModePpiGuid AND gEfiPeiMemoryDiscoveredPpiGuid
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  SdMmcPciHcPeiExtra.uni
\ No newline at end of file
+  SdMmcPciHcPeiExtra.uni
diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf b/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf
index c1ce9ea851..bf74c5d436 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
@@ -53,4 +53,4 @@
   gEdkiiUfsHostControllerProtocolGuid         ## BY_START
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  UfsPciHcDxeExtra.uni
\ No newline at end of file
+  UfsPciHcDxeExtra.uni
diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf
index b16935628c..4d1ebf61bc 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]
@@ -53,4 +53,4 @@
   gEfiPeiMasterBootModePpiGuid AND gEfiPeiMemoryDiscoveredPpiGuid
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  UfsPciHcPeiExtra.uni
\ No newline at end of file
+  UfsPciHcPeiExtra.uni
diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf b/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
index 9c5ff7b6fc..e393b8aaba 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..1a188fe687 100644
--- a/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.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/XhciDxe/XhciDxe.inf b/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
index 614938ac89..27630cd645 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..c594891be6 100644
--- a/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.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/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf b/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
index 18ffd88d89..c523cdc005 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 3fbc589236..8f41f5bd77 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..c3c9bcdda6 100644
--- a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.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/Bus/Sd/EmmcDxe/EmmcDxe.inf b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
index 3f27bdbcaf..2f21b56a83 100644
--- a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
+++ b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.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                =  gEmmcDxeDriverBinding
 #  COMPONENT_NAME                =  gEmmcDxeComponentName
diff --git a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
index 1530f1efdb..dcf0ac6f65 100644
--- a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.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/Bus/Sd/SdDxe/SdDxe.inf b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
index a763314275..92b0ebc25d 100644
--- a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
+++ b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.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                =  gSdDxeDriverBinding
 #  COMPONENT_NAME                =  gSdDxeComponentName
diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
index 28daf67ffc..66ccf54209 100644
--- a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.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/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf
index 467c533ceb..e3d6483c92 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..4494934dbe 100644
--- a/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
+++ b/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.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/UsbBusDxe/UsbBusDxe.inf b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
index b7b30cc937..1fcf25553d 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 734619a2fa..1dcbbb7442 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 7939a1857d..ff63af6be4 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 26d15c7679..8f0195b3b5 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 af10382d52..80a1242ed4 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 13d8859f98..bb5aff325b 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 d2e7360ed4..40ccc85e10 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..192e11aedb 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 7d9cdaa2f0..0309112992 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 035aa9a596..3af9521e47 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]
@@ -62,4 +62,4 @@
   TRUE
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  RuntimeDxeExtra.uni
\ No newline at end of file
+  RuntimeDxeExtra.uni
diff --git a/MdeModulePkg/Include/Guid/VariableFormat.h b/MdeModulePkg/Include/Guid/VariableFormat.h
index b0c2616c4d..0bc33436dd 100644
--- a/MdeModulePkg/Include/Guid/VariableFormat.h
+++ b/MdeModulePkg/Include/Guid/VariableFormat.h
@@ -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..1b6bcff697 100644
--- a/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
+++ b/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.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/BaseResetSystemLibNull/BaseResetSystemLibNull.inf b/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
index 96e0ebb212..be5257e879 100644
--- a/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
+++ b/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.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/BaseSortLib/BaseSortLib.inf b/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
index 4b493f4eb6..ffd83d4e5c 100644
--- a/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
+++ b/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
@@ -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 47969cc05a..566c0954c6 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 def923b977..271d02fdac 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 7983b07949..62fe49c88f 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..a2544e84b3 100644
--- a/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
+++ b/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.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.common]
diff --git a/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf b/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
index 23528948a3..8c1dc6e56f 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]
@@ -62,4 +62,4 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor                  ## CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextHighlightColor         ## CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldBackgroundHighlightColor   ## CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid                   ## CONSUMES
\ No newline at end of file
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid                   ## CONSUMES
diff --git a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
index ce1eab2623..0fb986d119 100644
--- a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
+++ b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.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.common]
diff --git a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
index 1dc665b940..6c35414db1 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..324ab7dab9 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..24d22ea094 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..14629c64fa 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..0f8c633d6e 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..60071d772e 100644
--- a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
+++ b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.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/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
index caba8cd4a4..c53e45be32 100644
--- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
+++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.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/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
index a2b5f8c102..5b847a8132 100644
--- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
+++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.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/DxeCorePerformanceLib/DxeCorePerformanceLib.inf b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
index e752a93d83..a083c6957a 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 d244897ab6..2983d897a4 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 b471af7a88..52188a1d94 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..a82b60b36c 100644
--- a/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
+++ b/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
@@ -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 5725a9b4ab..1e7e3b42f3 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]
@@ -38,4 +38,4 @@
   gEfiFileExplorerProtocolGuid                         ## CONSUMES
 
 [Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER]
-  gEfiFileExplorerProtocolGuid
\ No newline at end of file
+  gEfiFileExplorerProtocolGuid
diff --git a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
index 92b9b91239..d44a1ec8d0 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]
@@ -45,4 +45,4 @@
   NetLib
 
 [Protocols]
-  gEfiHttpUtilitiesProtocolGuid                 ## SOMETIMES_CONSUMES
\ No newline at end of file
+  gEfiHttpUtilitiesProtocolGuid                 ## SOMETIMES_CONSUMES
diff --git a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
index 086c74d1f1..f2c4d66bd2 100644
--- a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
+++ b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
@@ -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 ad0727c42f..33c4d9b71c 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]
@@ -64,4 +64,4 @@
   gEfiIp4Config2ProtocolGuid                    ## SOMETIMES_CONSUMES
   gEfiComponentNameProtocolGuid                 ## SOMETIMES_CONSUMES
   gEfiComponentName2ProtocolGuid                ## SOMETIMES_CONSUMES
-  gEfiAdapterInformationProtocolGuid            ## SOMETIMES_CONSUMES
\ No newline at end of file
+  gEfiAdapterInformationProtocolGuid            ## SOMETIMES_CONSUMES
diff --git a/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf b/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
index edc63c6f0b..0c8113c98a 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..a5b230b2d3 100644
--- a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
+++ b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
@@ -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..a15a01ffb4 100644
--- a/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+++ b/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
@@ -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..20521f806e 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 0f8a13b99d..7a4af4461d 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 1b29dcec48..18e0df8f58 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 ce6e996a51..8edba6146e 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 75071d9541..a8ad97b77f 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]
@@ -60,4 +60,4 @@
   gEfiDevicePathToTextProtocolGuid              ## PRODUCES
 
 [Depex.common.DXE_DRIVER]
-  gEfiFormBrowser2ProtocolGuid AND gEfiHiiDatabaseProtocolGuid
\ No newline at end of file
+  gEfiFormBrowser2ProtocolGuid AND gEfiHiiDatabaseProtocolGuid
diff --git a/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf b/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
index f9b87ca53a..1c9402f400 100644
--- a/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
+++ b/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.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/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf b/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
index 127c7ded86..da5ae5abfb 100644
--- a/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
+++ b/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.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/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf b/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
index 32ed1a41bf..b746232558 100644
--- a/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
+++ b/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
@@ -25,11 +25,11 @@
 #
 # 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]
   OemHookStatusCodeLibNull.c
 
 [Packages]
-  MdePkg/MdePkg.dec
\ No newline at end of file
+  MdePkg/MdePkg.dec
diff --git a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
index 8df14924ad..7d669e6387 100644
--- a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
+++ b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.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/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf
index 45fd141f01..ff4234f0da 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 55446672d7..855b586505 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 ce49db1c8d..8e3f4c2a9b 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 6c565acc40..492bc6e0ce 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 f66ce80cd5..39b303cf9c 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..4ddb68cd83 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 f582054870..15817a87c5 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..1e7ea280a9 100644
--- a/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
+++ b/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
@@ -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..82db784e92 100644
--- a/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
+++ b/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
@@ -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..dce4a96837 100644
--- a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
+++ b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
@@ -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 49d9933b58..bd4493d98b 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..157744caff 100644
--- a/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
+++ b/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
@@ -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 8d5b89ea29..f7402351fc 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..6f4715e255 100644
--- a/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
+++ b/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
@@ -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 a009e9a715..4971fcf672 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 21b544cc10..50a6afc2a1 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..00f75ce547 100644
--- a/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+++ b/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
@@ -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..e69a6d58c5 100644
--- a/MdeModulePkg/Logo/Logo.inf
+++ b/MdeModulePkg/Logo/Logo.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
 #
 
 [Binaries]
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index 18928f96d8..fbfeae5dc2 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
 
@@ -202,28 +202,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
-#                      tools and the EDK II tools to generate PE32/PE32+/Coff image files.
-#
-# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
-#       into firmware volume images. This section is just a list of modules to compile from
-#       source into UEFI-compliant binaries.
-#       It is the FDF file that contains information on combining binary files into firmware
-#       volume images, whose concept is beyond UEFI and is described in PI specification.
-#       Binary modules do not need to be listed in this section, as they should be
-#       specified in the FDF file. For example: Shell binary (Shell_Full.efi), FAT binary (Fat.efi),
-#       Logo (Logo.bmp), and etc.
-#       There may also be modules listed in this section that are not required in the FDF file,
-#       When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
-#       generated for it, but the binary will not be put into any firmware volume.
-#
-###################################################################################################
-
 [Components]
   MdeModulePkg/Application/HelloWorld/HelloWorld.inf
   MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
@@ -444,14 +422,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.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 34b1600171..0de8489719 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 ffb8d08f98..dcf7e40ca1 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 bc1c10e981..24e1633b1f 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 3d2dd6eb73..dc8ec2d3f1 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 a6ce5e6494..4166533aaf 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 05e98f40cd..007593455f 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]
@@ -74,4 +74,4 @@
   TRUE
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  S3SaveStateDxeExtra.uni
\ No newline at end of file
+  S3SaveStateDxeExtra.uni
diff --git a/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf b/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf
index f1f264ec43..1e7cdb740d 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 b8c5aa9795..ea6384559c 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 488f421341..5c2efc102c 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 c54bc21a95..a1936312e5 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 9ab04ce1b3..33c60a8c65 100644
--- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
@@ -27,13 +27,13 @@
 #
 # 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]
   CapsuleService.c
 
-[Sources.Ia32, Sources.IPF, Sources.EBC, Sources.ARM, Sources.AARCH64]
+[Sources.Ia32, Sources.EBC, Sources.ARM, Sources.AARCH64]
   SaveLongModeContext.c
 
 [Sources.X64]
diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
index 1d404dfc6f..2f51db8d3f 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
@@ -96,4 +96,4 @@
   gEfiGraphicsOutputProtocolGuid                ## SOMETIMES_CONSUMES
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  ConPlatformDxeExtra.uni
\ No newline at end of file
+  ConPlatformDxeExtra.uni
diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
index ff10a50b50..10ce585cb0 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 ccf44979d5..f43b205db5 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..dbbfb3f844 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.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                =  gTerminalDriverBinding
 #  COMPONENT_NAME                =  gTerminalComponentName
diff --git a/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf b/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
index b727cda3cf..1298d04b52 100644
--- a/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
+++ b/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.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                =  gDebugPortDriverBinding
 #  COMPONENT_NAME                =  gDebugPortComponentName
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
index 0d37f5fb64..c81404baf1 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 0cf29cadfb..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 - 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.
-
-**/
-
-#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 ba6ed6b6d8..4642ea7fda 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 facad470ef..8e3e0506e1 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 cee27d5b11..a89c0fe197 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 fb2ea87a9d..301acea82d 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..6f33847746 100644
--- a/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
+++ b/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
@@ -23,7 +23,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 46c834c648..07bb06325d 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 fa7b2ca35d..65ab746ccd 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 482981c143..7b7d62d7c3 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 bfd7484518..32e8a6d8bd 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..b40cddd3ec 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..a36b7e830b 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.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]
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf b/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
index 197a9a754f..5db0f7bcea 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 06b3a08e78..126ef24bfb 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 5649241f71..e478958280 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..a2c2b65342 100644
--- a/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
+++ b/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.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/FileExplorerDxe/FileExplorerDxe.inf b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
index 86d7533261..d11bef9843 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 adb3603e84..a66a5fa8b5 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 51a598cb05..3a51e11439 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 46cd490d8f..09c6e73d59 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..7b84e10688 100644
--- a/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf
+++ b/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.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/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf b/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
index 975dc4cd3a..e932588d95 100644
--- a/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
+++ b/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.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/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf b/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
index 96770e5b8d..b63223cd97 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 a688f3cc02..e5cd6608f3 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..77f86b7b21 100644
--- a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.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/Network/ArpDxe/ArpDxe.inf b/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
index 9dff604a94..44d0ddffcf 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 9b6c9c1dcc..33ad02a6f6 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..86011271c3 100644
--- a/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
+++ b/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.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/Network/IScsiDxe/IScsiDxe.inf b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
index 4fd2a62af9..1f718d9b17 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
@@ -122,4 +122,4 @@
   gIScsiCHAPAuthInfoGuid
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  IScsi4DxeExtra.uni
\ No newline at end of file
+  IScsi4DxeExtra.uni
diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
index 313528783d..4f5ada112e 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 07e62f5ba2..e5281c0d4b 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 3d7c8c00e0..6750aa168b 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 90fd8d5475..ea23c8e3ac 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 ba3c377b5f..ba8ec64f87 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 e1b4898c31..62c1da316b 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 fe8f210467..53a32eaf65 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..5db5a57417 100644
--- a/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
+++ b/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
@@ -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 a20b645a45..d475639c0e 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 3cba28944c..ca3e4c4cca 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..fbe035560d 100644
--- a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf
+++ b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.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/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf
index 4225fb92c3..97cf45d530 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..beeef73887 100644
--- a/MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
+++ b/MdeModulePkg/Universal/PrintDxe/PrintDxe.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/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf b/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
index 3f699f6b5a..43247a3eec 100644
--- a/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
+++ b/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.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/RegularExpressionDxe/RegularExpressionDxe.inf b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
index d4d9a83992..f649e7e7c4 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
@@ -78,8 +78,6 @@
   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 
   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..cf2b0e88af 100644
--- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
+++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.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/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
index 0445d94340..f71a27458b 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 912031a27b..0d6bb5cdc6 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..b6f6fb282b 100644
--- a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
+++ b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
@@ -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 f7b53ea1d2..bbb6020707 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 4fd6b97b42..79fe23fa55 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 5d3aa67f7c..d20ada6d3a 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 7c4faa360e..2ba56701e6 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 637804f5de..145cf8d409 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 f71d5262ea..730f19bd59 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..6944f85b0e 100644
--- a/MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
+++ b/MdeModulePkg/Universal/Variable/Pei/VariablePei.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/WatchdogTimerDxe/WatchdogTimer.inf b/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
index bde84574b9..a16af84dba 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]
@@ -53,4 +53,4 @@
 #
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  WatchdogTimerExtra.uni
\ No newline at end of file
+  WatchdogTimerExtra.uni
-- 
2.16.2.windows.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2.
  2018-06-13  3:44 [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2 chenc2
@ 2018-06-13 12:40 ` Ard Biesheuvel
  2018-06-14  0:59   ` Zeng, Star
  2018-06-14  4:06   ` Gao, Liming
  2018-06-14  0:55 ` Zeng, Star
  1 sibling, 2 replies; 5+ messages in thread
From: Ard Biesheuvel @ 2018-06-13 12:40 UTC (permalink / raw)
  To: chenc2; +Cc: edk2-devel@lists.01.org, Michael D Kinney, Eric Dong, Star Zeng

On 13 June 2018 at 05:44, chenc2 <chen.a.chen@intel.com> wrote:
> 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>
> Signed-off-by: chenc2 <chen.a.chen@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1

Hello Chen,

Thanks for doing this work. I suppose this means we can finally get
rid of the 12 (!) copies of the following code throughout the code
base:

  //
  // NOTE: Some versions of Linux ELILO for Itanium have an incorrect
magic value
  //       in the PE/COFF Header.  If the MachineType is Itanium(IA64) and the
  //       Magic value in the OptionalHeader is
EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC
  //       then override the returned value to EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC
  //
  if (Hdr.Pe32->FileHeader.Machine == IMAGE_FILE_MACHINE_IA64 &&
Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
    return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
  }

Thanks,
Ard.


> ---
>  .../BootManagerMenuApp/BootManagerMenuApp.inf      |    2 +-
>  MdeModulePkg/Application/HelloWorld/HelloWorld.inf |    2 +-
>  .../MemoryProfileInfo/MemoryProfileInfo.inf        |    2 +-
>  MdeModulePkg/Application/UiApp/UiApp.inf           |    2 +-
>  .../Application/VariableInfo/VariableInfo.inf      |    2 +-
>  .../Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf  |    2 +-
>  MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf       |    2 +-
>  MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf          |    2 +-
>  MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf             |    2 +-
>  MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf         |    2 +-
>  MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf       |    2 +-
>  .../Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf      |    2 +-
>  MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf   |    2 +-
>  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf       |    2 +-
>  .../IncompatiblePciDeviceSupportDxe.inf            |    2 +-
>  .../Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf        |    4 +-
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf       |    2 +-
>  .../Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf    |    2 +-
>  .../Pci/SataControllerDxe/SataControllerDxe.inf    |    2 +-
>  .../Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf        |    2 +-
>  .../Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf        |    4 +-
>  MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf   |    4 +-
>  MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf   |    4 +-
>  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf           |    2 +-
>  MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf    |    2 +-
>  MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf  |    2 +-
>  .../Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf       |    2 +-
>  MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf            |    2 +-
>  MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf  |    2 +-
>  MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf                |    2 +-
>  .../Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf        |    2 +-
>  .../Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf      |    2 +-
>  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf       |    2 +-
>  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        |    4 +-
>  MdeModulePkg/Include/Guid/VariableFormat.h         |    5 -
>  .../BasePlatformHookLibNull.inf                    |    2 +-
>  .../BaseResetSystemLibNull.inf                     |    2 +-
>  MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf   |    2 +-
>  MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf   |    2 +-
>  .../BootMaintenanceManagerUiLib.inf                |    2 +-
>  .../Library/BootManagerUiLib/BootManagerUiLib.inf  |    2 +-
>  .../CpuExceptionHandlerLibNull.inf                 |    2 +-
>  .../CustomizedDisplayLib/CustomizedDisplayLib.inf  |    4 +-
>  .../DebugAgentLibNull/DebugAgentLibNull.inf        |    2 +-
>  .../DeviceManagerUiLib/DeviceManagerUiLib.inf      |    2 +-
>  .../DisplayUpdateProgressLibGraphics.inf           |    2 +-
>  .../DisplayUpdateProgressLibText.inf               |    2 +-
>  .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf     |    2 +-
>  .../DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf      |    2 +-
>  .../DxeCapsuleLibNull/DxeCapsuleLibNull.inf        |    2 +-
>  .../DxeCoreMemoryAllocationLib.inf                 |    2 +-
>  .../DxeCoreMemoryAllocationProfileLib.inf          |    2 +-
>  .../DxeCorePerformanceLib.inf                      |    2 +-
>  .../DxeCrc32GuidedSectionExtractLib.inf            |    4 +-
>  .../DxeDebugPrintErrorLevelLib.inf                 |    4 +-
>  MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf       |    4 +-
>  .../DxeFileExplorerProtocol.inf                    |    4 +-
>  MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf     |    6 +-
>  MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf     |    4 +-
>  MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf       |    6 +-
>  .../DxePerformanceLib/DxePerformanceLib.inf        |    4 +-
>  .../DxePrintLibPrint2Protocol.inf                  |    2 +-
>  .../DxeReportStatusCodeLib.inf                     |    4 +-
>  .../DxeResetSystemLib/DxeResetSystemLib.inf        |    2 +-
>  .../DxeSecurityManagementLib.inf                   |    4 +-
>  MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf   |    4 +-
>  MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf   |    4 +-
>  .../Library/FileExplorerLib/FileExplorerLib.inf    |    4 +-
>  .../FmpAuthenticationLibNull.inf                   |    2 +-
>  .../LzmaCustomDecompressLib.inf                    |    2 +-
>  .../OemHookStatusCodeLibNull.inf                   |    4 +-
>  .../PciHostBridgeLibNull/PciHostBridgeLibNull.inf  |    2 +-
>  .../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    |    4 +-
>  .../PlatformHookLibSerialPortPpi.inf               |    4 +-
>  .../PlatformVarCleanupLib.inf                      |    2 +-
>  .../RuntimeDxeReportStatusCodeLib.inf              |    4 +-
>  .../TpmMeasurementLibNull.inf                      |    4 +-
>  .../UefiBootManagerLib/UefiBootManagerLib.inf      |    2 +-
>  MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf     |    4 +-
>  .../UefiHiiServicesLib/UefiHiiServicesLib.inf      |    4 +-
>  .../UefiMemoryAllocationProfileLib.inf             |    6 +-
>  MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf   |    2 +-
>  MdeModulePkg/Logo/Logo.inf                         |    2 +-
>  MdeModulePkg/MdeModulePkg.dsc                      |   28 +-
>  .../Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf       |    2 +-
>  .../Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf   |    2 +-
>  .../BootGraphicsResourceTableDxe.inf               |    2 +-
>  .../FirmwarePerformanceDxe.inf                     |    2 +-
>  .../FirmwarePerformancePei.inf                     |    2 +-
>  .../Acpi/S3SaveStateDxe/S3SaveStateDxe.inf         |    4 +-
>  .../Acpi/SmmS3SaveState/SmmS3SaveState.inf         |    2 +-
>  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf           |    2 +-
>  .../BootManagerPolicyDxe/BootManagerPolicyDxe.inf  |    2 +-
>  MdeModulePkg/Universal/CapsulePei/CapsulePei.inf   |    2 +-
>  .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf        |    4 +-
>  .../Console/ConPlatformDxe/ConPlatformDxe.inf      |    4 +-
>  .../Console/ConSplitterDxe/ConSplitterDxe.inf      |    2 +-
>  .../GraphicsConsoleDxe/GraphicsConsoleDxe.inf      |    2 +-
>  .../Universal/Console/TerminalDxe/TerminalDxe.inf  |    2 +-
>  .../Universal/DebugPortDxe/DebugPortDxe.inf        |    2 +-
>  .../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      |    2 +-
>  .../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         |    2 +-
>  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                      |    2 +-
>  .../Universal/FileExplorerDxe/FileExplorerDxe.inf  |    2 +-
>  .../Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf    |    2 +-
>  .../HiiResourcesSampleDxe.inf                      |    2 +-
>  .../LegacyRegion2Dxe/LegacyRegion2Dxe.inf          |    2 +-
>  .../Universal/LoadFileOnFv2/LoadFileOnFv2.inf      |    2 +-
>  .../GenericMemoryTestDxe/GenericMemoryTestDxe.inf  |    2 +-
>  .../NullMemoryTestDxe/NullMemoryTestDxe.inf        |    2 +-
>  MdeModulePkg/Universal/Metronome/Metronome.inf     |    2 +-
>  .../MonotonicCounterRuntimeDxe.inf                 |    2 +-
>  MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf   |    2 +-
>  .../Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf        |    2 +-
>  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf   |    2 +-
>  .../Universal/Network/IScsiDxe/IScsiDxe.inf        |    4 +-
>  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        |    2 +-
>  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf             |    2 +-
>  MdeModulePkg/Universal/PCD/Pei/Pcd.inf             |    2 +-
>  .../PcatSingleSegmentPciCfg2Pei.inf                |    2 +-
>  .../PlatformDriOverrideDxe.inf                     |    2 +-
>  MdeModulePkg/Universal/PrintDxe/PrintDxe.inf       |    2 +-
>  .../PropertiesTableAttributesDxe.inf               |    2 +-
>  .../RegularExpressionDxe/RegularExpressionDxe.inf  |    2 -
>  .../Pei/ReportStatusCodeRouterPei.inf              |    2 +-
>  .../ReportStatusCodeRouterRuntimeDxe.inf           |    2 +-
>  .../SectionExtractionPei/SectionExtractionPei.inf  |    2 +-
>  .../Universal/SecurityStubDxe/SecurityStubDxe.inf  |    2 +-
>  .../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         |    2 +-
>  .../Universal/WatchdogTimerDxe/WatchdogTimer.inf   |    4 +-
>  186 files changed, 213 insertions(+), 3759 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
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2.
  2018-06-13  3:44 [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2 chenc2
  2018-06-13 12:40 ` Ard Biesheuvel
@ 2018-06-14  0:55 ` Zeng, Star
  1 sibling, 0 replies; 5+ messages in thread
From: Zeng, Star @ 2018-06-14  0:55 UTC (permalink / raw)
  To: Chen, Chen A, edk2-devel@lists.01.org
  Cc: Dong, Eric, Kinney, Michael D, Zeng, Star

Some comments.

1. Please remove line below in MdeModulePkg.dsc, that is IPF specific.

PalLib|MdePkg/Library/BasePalLibNull/BasePalLibNull.inf

2. Please do not remove 'Components.ARM' in MdeModulePkg.dsc.

Thanks,
Star
-----Original Message-----
From: Chen, Chen A 
Sent: Wednesday, June 13, 2018 11:45 AM
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 20/37] 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>
Signed-off-by: chenc2 <chen.a.chen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
---
 .../BootManagerMenuApp/BootManagerMenuApp.inf      |    2 +-
 MdeModulePkg/Application/HelloWorld/HelloWorld.inf |    2 +-
 .../MemoryProfileInfo/MemoryProfileInfo.inf        |    2 +-
 MdeModulePkg/Application/UiApp/UiApp.inf           |    2 +-
 .../Application/VariableInfo/VariableInfo.inf      |    2 +-
 .../Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf  |    2 +-
 MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf       |    2 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf          |    2 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf             |    2 +-
 MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf         |    2 +-
 MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf       |    2 +-
 .../Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf      |    2 +-
 MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf   |    2 +-
 MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf           |    2 +-
 MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf       |    2 +-
 .../IncompatiblePciDeviceSupportDxe.inf            |    2 +-
 .../Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf        |    4 +-
 MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf       |    2 +-
 .../Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf    |    2 +-
 .../Pci/SataControllerDxe/SataControllerDxe.inf    |    2 +-
 .../Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf        |    2 +-
 .../Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf        |    4 +-
 MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf   |    4 +-
 MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf   |    4 +-
 MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf           |    2 +-
 MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf           |    2 +-
 MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf           |    2 +-
 MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf    |    2 +-
 MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf  |    2 +-
 .../Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf       |    2 +-
 MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf            |    2 +-
 MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf  |    2 +-
 MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf                |    2 +-
 .../Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf        |    2 +-
 .../Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf      |    2 +-
 MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf       |    2 +-
 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        |    4 +-
 MdeModulePkg/Include/Guid/VariableFormat.h         |    5 -
 .../BasePlatformHookLibNull.inf                    |    2 +-
 .../BaseResetSystemLibNull.inf                     |    2 +-
 MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf   |    2 +-
 MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf   |    2 +-
 .../BootMaintenanceManagerUiLib.inf                |    2 +-
 .../Library/BootManagerUiLib/BootManagerUiLib.inf  |    2 +-
 .../CpuExceptionHandlerLibNull.inf                 |    2 +-
 .../CustomizedDisplayLib/CustomizedDisplayLib.inf  |    4 +-
 .../DebugAgentLibNull/DebugAgentLibNull.inf        |    2 +-
 .../DeviceManagerUiLib/DeviceManagerUiLib.inf      |    2 +-
 .../DisplayUpdateProgressLibGraphics.inf           |    2 +-
 .../DisplayUpdateProgressLibText.inf               |    2 +-
 .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf     |    2 +-
 .../DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf      |    2 +-
 .../DxeCapsuleLibNull/DxeCapsuleLibNull.inf        |    2 +-
 .../DxeCoreMemoryAllocationLib.inf                 |    2 +-
 .../DxeCoreMemoryAllocationProfileLib.inf          |    2 +-
 .../DxeCorePerformanceLib.inf                      |    2 +-
 .../DxeCrc32GuidedSectionExtractLib.inf            |    4 +-
 .../DxeDebugPrintErrorLevelLib.inf                 |    4 +-
 MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf       |    4 +-
 .../DxeFileExplorerProtocol.inf                    |    4 +-
 MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf     |    6 +-
 MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf     |    4 +-
 MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf       |    6 +-
 .../DxePerformanceLib/DxePerformanceLib.inf        |    4 +-
 .../DxePrintLibPrint2Protocol.inf                  |    2 +-
 .../DxeReportStatusCodeLib.inf                     |    4 +-
 .../DxeResetSystemLib/DxeResetSystemLib.inf        |    2 +-
 .../DxeSecurityManagementLib.inf                   |    4 +-
 MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf   |    4 +-
 MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf   |    4 +-
 .../Library/FileExplorerLib/FileExplorerLib.inf    |    4 +-
 .../FmpAuthenticationLibNull.inf                   |    2 +-
 .../LzmaCustomDecompressLib.inf                    |    2 +-
 .../OemHookStatusCodeLibNull.inf                   |    4 +-
 .../PciHostBridgeLibNull/PciHostBridgeLibNull.inf  |    2 +-
 .../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    |    4 +-
 .../PlatformHookLibSerialPortPpi.inf               |    4 +-
 .../PlatformVarCleanupLib.inf                      |    2 +-
 .../RuntimeDxeReportStatusCodeLib.inf              |    4 +-
 .../TpmMeasurementLibNull.inf                      |    4 +-
 .../UefiBootManagerLib/UefiBootManagerLib.inf      |    2 +-
 MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf     |    4 +-
 .../UefiHiiServicesLib/UefiHiiServicesLib.inf      |    4 +-
 .../UefiMemoryAllocationProfileLib.inf             |    6 +-
 MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf   |    2 +-
 MdeModulePkg/Logo/Logo.inf                         |    2 +-
 MdeModulePkg/MdeModulePkg.dsc                      |   28 +-
 .../Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf       |    2 +-
 .../Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf   |    2 +-
 .../BootGraphicsResourceTableDxe.inf               |    2 +-
 .../FirmwarePerformanceDxe.inf                     |    2 +-
 .../FirmwarePerformancePei.inf                     |    2 +-
 .../Acpi/S3SaveStateDxe/S3SaveStateDxe.inf         |    4 +-
 .../Acpi/SmmS3SaveState/SmmS3SaveState.inf         |    2 +-
 MdeModulePkg/Universal/BdsDxe/BdsDxe.inf           |    2 +-
 .../BootManagerPolicyDxe/BootManagerPolicyDxe.inf  |    2 +-
 MdeModulePkg/Universal/CapsulePei/CapsulePei.inf   |    2 +-
 .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf        |    4 +-
 .../Console/ConPlatformDxe/ConPlatformDxe.inf      |    4 +-
 .../Console/ConSplitterDxe/ConSplitterDxe.inf      |    2 +-
 .../GraphicsConsoleDxe/GraphicsConsoleDxe.inf      |    2 +-
 .../Universal/Console/TerminalDxe/TerminalDxe.inf  |    2 +-
 .../Universal/DebugPortDxe/DebugPortDxe.inf        |    2 +-
 .../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      |    2 +-
 .../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         |    2 +-
 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                      |    2 +-
 .../Universal/FileExplorerDxe/FileExplorerDxe.inf  |    2 +-
 .../Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf    |    2 +-
 .../HiiResourcesSampleDxe.inf                      |    2 +-
 .../LegacyRegion2Dxe/LegacyRegion2Dxe.inf          |    2 +-
 .../Universal/LoadFileOnFv2/LoadFileOnFv2.inf      |    2 +-
 .../GenericMemoryTestDxe/GenericMemoryTestDxe.inf  |    2 +-
 .../NullMemoryTestDxe/NullMemoryTestDxe.inf        |    2 +-
 MdeModulePkg/Universal/Metronome/Metronome.inf     |    2 +-
 .../MonotonicCounterRuntimeDxe.inf                 |    2 +-
 MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf   |    2 +-
 .../Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf        |    2 +-
 MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf   |    2 +-
 .../Universal/Network/IScsiDxe/IScsiDxe.inf        |    4 +-
 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        |    2 +-
 MdeModulePkg/Universal/PCD/Dxe/Pcd.inf             |    2 +-
 MdeModulePkg/Universal/PCD/Pei/Pcd.inf             |    2 +-
 .../PcatSingleSegmentPciCfg2Pei.inf                |    2 +-
 .../PlatformDriOverrideDxe.inf                     |    2 +-
 MdeModulePkg/Universal/PrintDxe/PrintDxe.inf       |    2 +-
 .../PropertiesTableAttributesDxe.inf               |    2 +-
 .../RegularExpressionDxe/RegularExpressionDxe.inf  |    2 -
 .../Pei/ReportStatusCodeRouterPei.inf              |    2 +-
 .../ReportStatusCodeRouterRuntimeDxe.inf           |    2 +-
 .../SectionExtractionPei/SectionExtractionPei.inf  |    2 +-
 .../Universal/SecurityStubDxe/SecurityStubDxe.inf  |    2 +-
 .../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         |    2 +-
 .../Universal/WatchdogTimerDxe/WatchdogTimer.inf   |    4 +-
 186 files changed, 213 insertions(+), 3759 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 392a97065c..8559a42b80 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..491069266b 100644
--- a/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
+++ b/MdeModulePkg/Application/HelloWorld/HelloWorld.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/Application/MemoryProfileInfo/MemoryProfileInfo.inf b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
index 4bb7a9df1d..57ced0927b 100644
--- a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
+++ b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.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/Application/UiApp/UiApp.inf b/MdeModulePkg/Application/UiApp/UiApp.inf
index d144462ce4..7a7983d6bf 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..05de341016 100644
--- a/MdeModulePkg/Application/VariableInfo/VariableInfo.inf
+++ b/MdeModulePkg/Application/VariableInfo/VariableInfo.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/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
index d1ce859091..4f97ee7872 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..863d4aa8c2 100644
--- a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+++ b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.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                =  gAtaBusDriverBinding
 #  COMPONENT_NAME                =  gAtaBusComponentName
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
index 4dbe2f5e68..23c7f2326a 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.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.common]
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
index 5cd53b2fc4..36c79028a9 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.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.common]
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
index 2fb1085c6d..2fd8e7e316 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.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.common]
diff --git a/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf b/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
index 1d9e22ec4c..e64ccc31ce 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..b12410d8ff 100644
--- a/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
+++ b/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
@@ -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..7f8a82a51a 100644
--- a/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
+++ b/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
@@ -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 238923e828..819bc5a75d 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 813ccc9450..cc29427890 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..3096ffb077 100644
--- a/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf
+++ b/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.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/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf b/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf
index a83edaec7b..7db7e6a7dd 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 4918696104..e8defcdfb5 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
@@ -78,4 +78,4 @@
 #
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  NvmExpressDxeExtra.uni
\ No newline at end of file
+  NvmExpressDxeExtra.uni
diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf b/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
index 97608bfcf2..1b3b61f664 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..b27933ac1f 100644
--- a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
+++ b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.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                =  gSerialControllerDriver
 #  COMPONENT_NAME                =  gPciSioSerialComponentName
diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
index 03f9fa0d1d..88eacb1dd9 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..ff5720558c 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.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                =  gSdMmcPciHcDxeDriverBinding
 #  COMPONENT_NAME                =  gSdMmcPciHcDxeComponentName
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf b/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf
index bc6ea60d6b..129c1dabbf 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]
@@ -53,4 +53,4 @@
   gEfiPeiMasterBootModePpiGuid AND gEfiPeiMemoryDiscoveredPpiGuid
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  SdMmcPciHcPeiExtra.uni
\ No newline at end of file
+  SdMmcPciHcPeiExtra.uni
diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf b/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf
index c1ce9ea851..bf74c5d436 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
@@ -53,4 +53,4 @@
   gEdkiiUfsHostControllerProtocolGuid         ## BY_START
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  UfsPciHcDxeExtra.uni
\ No newline at end of file
+  UfsPciHcDxeExtra.uni
diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf
index b16935628c..4d1ebf61bc 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]
@@ -53,4 +53,4 @@
   gEfiPeiMasterBootModePpiGuid AND gEfiPeiMemoryDiscoveredPpiGuid
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  UfsPciHcPeiExtra.uni
\ No newline at end of file
+  UfsPciHcPeiExtra.uni
diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf b/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
index 9c5ff7b6fc..e393b8aaba 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..1a188fe687 100644
--- a/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.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/XhciDxe/XhciDxe.inf b/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
index 614938ac89..27630cd645 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..c594891be6 100644
--- a/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.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/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf b/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
index 18ffd88d89..c523cdc005 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 3fbc589236..8f41f5bd77 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..c3c9bcdda6 100644
--- a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.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/Bus/Sd/EmmcDxe/EmmcDxe.inf b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
index 3f27bdbcaf..2f21b56a83 100644
--- a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
+++ b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.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                =  gEmmcDxeDriverBinding
 #  COMPONENT_NAME                =  gEmmcDxeComponentName
diff --git a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
index 1530f1efdb..dcf0ac6f65 100644
--- a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.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/Bus/Sd/SdDxe/SdDxe.inf b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
index a763314275..92b0ebc25d 100644
--- a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
+++ b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.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                =  gSdDxeDriverBinding
 #  COMPONENT_NAME                =  gSdDxeComponentName
diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
index 28daf67ffc..66ccf54209 100644
--- a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.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/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf
index 467c533ceb..e3d6483c92 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..4494934dbe 100644
--- a/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
+++ b/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.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/UsbBusDxe/UsbBusDxe.inf b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
index b7b30cc937..1fcf25553d 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 734619a2fa..1dcbbb7442 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 7939a1857d..ff63af6be4 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 26d15c7679..8f0195b3b5 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 af10382d52..80a1242ed4 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 13d8859f98..bb5aff325b 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 d2e7360ed4..40ccc85e10 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..192e11aedb 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 7d9cdaa2f0..0309112992 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 035aa9a596..3af9521e47 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]
@@ -62,4 +62,4 @@
   TRUE
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  RuntimeDxeExtra.uni
\ No newline at end of file
+  RuntimeDxeExtra.uni
diff --git a/MdeModulePkg/Include/Guid/VariableFormat.h b/MdeModulePkg/Include/Guid/VariableFormat.h
index b0c2616c4d..0bc33436dd 100644
--- a/MdeModulePkg/Include/Guid/VariableFormat.h
+++ b/MdeModulePkg/Include/Guid/VariableFormat.h
@@ -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..1b6bcff697 100644
--- a/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
+++ b/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.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/BaseResetSystemLibNull/BaseResetSystemLibNull.inf b/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
index 96e0ebb212..be5257e879 100644
--- a/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
+++ b/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.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/BaseSortLib/BaseSortLib.inf b/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
index 4b493f4eb6..ffd83d4e5c 100644
--- a/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
+++ b/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
@@ -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 47969cc05a..566c0954c6 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 def923b977..271d02fdac 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 7983b07949..62fe49c88f 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..a2544e84b3 100644
--- a/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
+++ b/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.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.common]
diff --git a/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf b/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
index 23528948a3..8c1dc6e56f 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]
@@ -62,4 +62,4 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor                  ## CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextHighlightColor         ## CONSUMES
   gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldBackgroundHighlightColor   ## CONSUMES
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid                   ## CONSUMES
\ No newline at end of file
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid                   ## CONSUMES
diff --git a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
index ce1eab2623..0fb986d119 100644
--- a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
+++ b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.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.common]
diff --git a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
index 1dc665b940..6c35414db1 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..324ab7dab9 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..24d22ea094 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..14629c64fa 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..0f8c633d6e 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..60071d772e 100644
--- a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
+++ b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.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/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
index caba8cd4a4..c53e45be32 100644
--- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
+++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.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/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
index a2b5f8c102..5b847a8132 100644
--- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
+++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.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/DxeCorePerformanceLib/DxeCorePerformanceLib.inf b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
index e752a93d83..a083c6957a 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 d244897ab6..2983d897a4 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 b471af7a88..52188a1d94 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..a82b60b36c 100644
--- a/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
+++ b/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
@@ -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 5725a9b4ab..1e7e3b42f3 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]
@@ -38,4 +38,4 @@
   gEfiFileExplorerProtocolGuid                         ## CONSUMES
 
 [Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER]
-  gEfiFileExplorerProtocolGuid
\ No newline at end of file
+  gEfiFileExplorerProtocolGuid
diff --git a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
index 92b9b91239..d44a1ec8d0 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]
@@ -45,4 +45,4 @@
   NetLib
 
 [Protocols]
-  gEfiHttpUtilitiesProtocolGuid                 ## SOMETIMES_CONSUMES
\ No newline at end of file
+  gEfiHttpUtilitiesProtocolGuid                 ## SOMETIMES_CONSUMES
diff --git a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
index 086c74d1f1..f2c4d66bd2 100644
--- a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
+++ b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
@@ -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 ad0727c42f..33c4d9b71c 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]
@@ -64,4 +64,4 @@
   gEfiIp4Config2ProtocolGuid                    ## SOMETIMES_CONSUMES
   gEfiComponentNameProtocolGuid                 ## SOMETIMES_CONSUMES
   gEfiComponentName2ProtocolGuid                ## SOMETIMES_CONSUMES
-  gEfiAdapterInformationProtocolGuid            ## SOMETIMES_CONSUMES
\ No newline at end of file
+  gEfiAdapterInformationProtocolGuid            ## SOMETIMES_CONSUMES
diff --git a/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf b/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
index edc63c6f0b..0c8113c98a 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..a5b230b2d3 100644
--- a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
+++ b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
@@ -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..a15a01ffb4 100644
--- a/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+++ b/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
@@ -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..20521f806e 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 0f8a13b99d..7a4af4461d 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 1b29dcec48..18e0df8f58 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 ce6e996a51..8edba6146e 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 75071d9541..a8ad97b77f 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]
@@ -60,4 +60,4 @@
   gEfiDevicePathToTextProtocolGuid              ## PRODUCES
 
 [Depex.common.DXE_DRIVER]
-  gEfiFormBrowser2ProtocolGuid AND gEfiHiiDatabaseProtocolGuid
\ No newline at end of file
+  gEfiFormBrowser2ProtocolGuid AND gEfiHiiDatabaseProtocolGuid
diff --git a/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf b/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
index f9b87ca53a..1c9402f400 100644
--- a/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
+++ b/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.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/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf b/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
index 127c7ded86..da5ae5abfb 100644
--- a/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
+++ b/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.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/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf b/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
index 32ed1a41bf..b746232558 100644
--- a/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
+++ b/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
@@ -25,11 +25,11 @@
 #
 # 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]
   OemHookStatusCodeLibNull.c
 
 [Packages]
-  MdePkg/MdePkg.dec
\ No newline at end of file
+  MdePkg/MdePkg.dec
diff --git a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
index 8df14924ad..7d669e6387 100644
--- a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
+++ b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.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/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf
index 45fd141f01..ff4234f0da 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 55446672d7..855b586505 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 ce49db1c8d..8e3f4c2a9b 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 6c565acc40..492bc6e0ce 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 f66ce80cd5..39b303cf9c 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..4ddb68cd83 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 f582054870..15817a87c5 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..1e7ea280a9 100644
--- a/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
+++ b/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
@@ -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..82db784e92 100644
--- a/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
+++ b/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
@@ -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..dce4a96837 100644
--- a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
+++ b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
@@ -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 49d9933b58..bd4493d98b 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..157744caff 100644
--- a/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
+++ b/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
@@ -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 8d5b89ea29..f7402351fc 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..6f4715e255 100644
--- a/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
+++ b/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
@@ -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 a009e9a715..4971fcf672 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 21b544cc10..50a6afc2a1 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..00f75ce547 100644
--- a/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+++ b/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
@@ -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..e69a6d58c5 100644
--- a/MdeModulePkg/Logo/Logo.inf
+++ b/MdeModulePkg/Logo/Logo.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
 #
 
 [Binaries]
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index 18928f96d8..fbfeae5dc2 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
 
@@ -202,28 +202,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
-#                      tools and the EDK II tools to generate PE32/PE32+/Coff image files.
-#
-# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
-#       into firmware volume images. This section is just a list of modules to compile from
-#       source into UEFI-compliant binaries.
-#       It is the FDF file that contains information on combining binary files into firmware
-#       volume images, whose concept is beyond UEFI and is described in PI specification.
-#       Binary modules do not need to be listed in this section, as they should be
-#       specified in the FDF file. For example: Shell binary (Shell_Full.efi), FAT binary (Fat.efi),
-#       Logo (Logo.bmp), and etc.
-#       There may also be modules listed in this section that are not required in the FDF file,
-#       When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
-#       generated for it, but the binary will not be put into any firmware volume.
-#
-###################################################################################################
-
 [Components]
   MdeModulePkg/Application/HelloWorld/HelloWorld.inf
   MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
@@ -444,14 +422,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.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 34b1600171..0de8489719 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 ffb8d08f98..dcf7e40ca1 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 bc1c10e981..24e1633b1f 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 3d2dd6eb73..dc8ec2d3f1 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 a6ce5e6494..4166533aaf 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 05e98f40cd..007593455f 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]
@@ -74,4 +74,4 @@
   TRUE
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  S3SaveStateDxeExtra.uni
\ No newline at end of file
+  S3SaveStateDxeExtra.uni
diff --git a/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf b/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf
index f1f264ec43..1e7cdb740d 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 b8c5aa9795..ea6384559c 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 488f421341..5c2efc102c 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 c54bc21a95..a1936312e5 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 9ab04ce1b3..33c60a8c65 100644
--- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
@@ -27,13 +27,13 @@
 #
 # 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]
   CapsuleService.c
 
-[Sources.Ia32, Sources.IPF, Sources.EBC, Sources.ARM, Sources.AARCH64]
+[Sources.Ia32, Sources.EBC, Sources.ARM, Sources.AARCH64]
   SaveLongModeContext.c
 
 [Sources.X64]
diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
index 1d404dfc6f..2f51db8d3f 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
@@ -96,4 +96,4 @@
   gEfiGraphicsOutputProtocolGuid                ## SOMETIMES_CONSUMES
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  ConPlatformDxeExtra.uni
\ No newline at end of file
+  ConPlatformDxeExtra.uni
diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
index ff10a50b50..10ce585cb0 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 ccf44979d5..f43b205db5 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..dbbfb3f844 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.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                =  gTerminalDriverBinding
 #  COMPONENT_NAME                =  gTerminalComponentName
diff --git a/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf b/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
index b727cda3cf..1298d04b52 100644
--- a/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
+++ b/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.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                =  gDebugPortDriverBinding
 #  COMPONENT_NAME                =  gDebugPortComponentName
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
index 0d37f5fb64..c81404baf1 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 0cf29cadfb..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 - 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.
-
-**/
-
-#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 ba6ed6b6d8..4642ea7fda 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 facad470ef..8e3e0506e1 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 cee27d5b11..a89c0fe197 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 fb2ea87a9d..301acea82d 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..6f33847746 100644
--- a/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
+++ b/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
@@ -23,7 +23,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 46c834c648..07bb06325d 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 fa7b2ca35d..65ab746ccd 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 482981c143..7b7d62d7c3 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 bfd7484518..32e8a6d8bd 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..b40cddd3ec 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..a36b7e830b 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.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]
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf b/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
index 197a9a754f..5db0f7bcea 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 06b3a08e78..126ef24bfb 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 5649241f71..e478958280 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..a2c2b65342 100644
--- a/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
+++ b/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.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/FileExplorerDxe/FileExplorerDxe.inf b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
index 86d7533261..d11bef9843 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 adb3603e84..a66a5fa8b5 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 51a598cb05..3a51e11439 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 46cd490d8f..09c6e73d59 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..7b84e10688 100644
--- a/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf
+++ b/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.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/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf b/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
index 975dc4cd3a..e932588d95 100644
--- a/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
+++ b/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.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/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf b/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
index 96770e5b8d..b63223cd97 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 a688f3cc02..e5cd6608f3 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..77f86b7b21 100644
--- a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.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/Network/ArpDxe/ArpDxe.inf b/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
index 9dff604a94..44d0ddffcf 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 9b6c9c1dcc..33ad02a6f6 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..86011271c3 100644
--- a/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
+++ b/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.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/Network/IScsiDxe/IScsiDxe.inf b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
index 4fd2a62af9..1f718d9b17 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
@@ -122,4 +122,4 @@
   gIScsiCHAPAuthInfoGuid
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  IScsi4DxeExtra.uni
\ No newline at end of file
+  IScsi4DxeExtra.uni
diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
index 313528783d..4f5ada112e 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 07e62f5ba2..e5281c0d4b 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 3d7c8c00e0..6750aa168b 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 90fd8d5475..ea23c8e3ac 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 ba3c377b5f..ba8ec64f87 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 e1b4898c31..62c1da316b 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 fe8f210467..53a32eaf65 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..5db5a57417 100644
--- a/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
+++ b/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
@@ -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 a20b645a45..d475639c0e 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 3cba28944c..ca3e4c4cca 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..fbe035560d 100644
--- a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf
+++ b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.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/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf
index 4225fb92c3..97cf45d530 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..beeef73887 100644
--- a/MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
+++ b/MdeModulePkg/Universal/PrintDxe/PrintDxe.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/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf b/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
index 3f699f6b5a..43247a3eec 100644
--- a/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
+++ b/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.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/RegularExpressionDxe/RegularExpressionDxe.inf b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
index d4d9a83992..f649e7e7c4 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
@@ -78,8 +78,6 @@
   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 
   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..cf2b0e88af 100644
--- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
+++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.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/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
index 0445d94340..f71a27458b 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 912031a27b..0d6bb5cdc6 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..b6f6fb282b 100644
--- a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
+++ b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
@@ -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 f7b53ea1d2..bbb6020707 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 4fd6b97b42..79fe23fa55 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 5d3aa67f7c..d20ada6d3a 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 7c4faa360e..2ba56701e6 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 637804f5de..145cf8d409 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 f71d5262ea..730f19bd59 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..6944f85b0e 100644
--- a/MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
+++ b/MdeModulePkg/Universal/Variable/Pei/VariablePei.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/WatchdogTimerDxe/WatchdogTimer.inf b/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
index bde84574b9..a16af84dba 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]
@@ -53,4 +53,4 @@
 #
 
 [UserExtensions.TianoCore."ExtraFiles"]
-  WatchdogTimerExtra.uni
\ No newline at end of file
+  WatchdogTimerExtra.uni
-- 
2.16.2.windows.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2.
  2018-06-13 12:40 ` Ard Biesheuvel
@ 2018-06-14  0:59   ` Zeng, Star
  2018-06-14  4:06   ` Gao, Liming
  1 sibling, 0 replies; 5+ messages in thread
From: Zeng, Star @ 2018-06-14  0:59 UTC (permalink / raw)
  To: Ard Biesheuvel, Chen, Chen A
  Cc: edk2-devel@lists.01.org, Kinney, Michael D, Dong, Eric,
	Zeng, Star

Agree.
I think cleanup in C code can be done in next step. :)


Thanks,
Star
-----Original Message-----
From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] 
Sent: Wednesday, June 13, 2018 8:40 PM
To: Chen, Chen A <chen.a.chen@intel.com>
Cc: edk2-devel@lists.01.org; Kinney, Michael D <michael.d.kinney@intel.com>; Dong, Eric <eric.dong@intel.com>; Zeng, Star <star.zeng@intel.com>
Subject: Re: [edk2] [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2.

On 13 June 2018 at 05:44, chenc2 <chen.a.chen@intel.com> wrote:
> 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>
> Signed-off-by: chenc2 <chen.a.chen@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1

Hello Chen,

Thanks for doing this work. I suppose this means we can finally get rid of the 12 (!) copies of the following code throughout the code
base:

  //
  // NOTE: Some versions of Linux ELILO for Itanium have an incorrect magic value
  //       in the PE/COFF Header.  If the MachineType is Itanium(IA64) and the
  //       Magic value in the OptionalHeader is
EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC
  //       then override the returned value to EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC
  //
  if (Hdr.Pe32->FileHeader.Machine == IMAGE_FILE_MACHINE_IA64 && Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
    return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
  }

Thanks,
Ard.


> ---
>  .../BootManagerMenuApp/BootManagerMenuApp.inf      |    2 +-
>  MdeModulePkg/Application/HelloWorld/HelloWorld.inf |    2 +-
>  .../MemoryProfileInfo/MemoryProfileInfo.inf        |    2 +-
>  MdeModulePkg/Application/UiApp/UiApp.inf           |    2 +-
>  .../Application/VariableInfo/VariableInfo.inf      |    2 +-
>  .../Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf  |    2 +-
>  MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf       |    2 +-
>  MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf          |    2 +-
>  MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf             |    2 +-
>  MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf         |    2 +-
>  MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf       |    2 +-
>  .../Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf      |    2 +-
>  MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf   |    2 +-
>  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf       |    2 +-
>  .../IncompatiblePciDeviceSupportDxe.inf            |    2 +-
>  .../Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf        |    4 +-
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf       |    2 +-
>  .../Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf    |    2 +-
>  .../Pci/SataControllerDxe/SataControllerDxe.inf    |    2 +-
>  .../Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf        |    2 +-
>  .../Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf        |    4 +-
>  MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf   |    4 +-
>  MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf   |    4 +-
>  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf           |    2 +-
>  MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf           |    2 +-
>  MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf    |    2 +-
>  MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf  |    2 +-
>  .../Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf       |    2 +-
>  MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf            |    2 +-
>  MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf  |    2 +-
>  MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf                |    2 +-
>  .../Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf        |    2 +-
>  .../Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf      |    2 +-
>  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf       |    2 +-
>  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        |    4 +-
>  MdeModulePkg/Include/Guid/VariableFormat.h         |    5 -
>  .../BasePlatformHookLibNull.inf                    |    2 +-
>  .../BaseResetSystemLibNull.inf                     |    2 +-
>  MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf   |    2 +-
>  MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf   |    2 +-
>  .../BootMaintenanceManagerUiLib.inf                |    2 +-
>  .../Library/BootManagerUiLib/BootManagerUiLib.inf  |    2 +-
>  .../CpuExceptionHandlerLibNull.inf                 |    2 +-
>  .../CustomizedDisplayLib/CustomizedDisplayLib.inf  |    4 +-
>  .../DebugAgentLibNull/DebugAgentLibNull.inf        |    2 +-
>  .../DeviceManagerUiLib/DeviceManagerUiLib.inf      |    2 +-
>  .../DisplayUpdateProgressLibGraphics.inf           |    2 +-
>  .../DisplayUpdateProgressLibText.inf               |    2 +-
>  .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf     |    2 +-
>  .../DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf      |    2 +-
>  .../DxeCapsuleLibNull/DxeCapsuleLibNull.inf        |    2 +-
>  .../DxeCoreMemoryAllocationLib.inf                 |    2 +-
>  .../DxeCoreMemoryAllocationProfileLib.inf          |    2 +-
>  .../DxeCorePerformanceLib.inf                      |    2 +-
>  .../DxeCrc32GuidedSectionExtractLib.inf            |    4 +-
>  .../DxeDebugPrintErrorLevelLib.inf                 |    4 +-
>  MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf       |    4 +-
>  .../DxeFileExplorerProtocol.inf                    |    4 +-
>  MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf     |    6 +-
>  MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf     |    4 +-
>  MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf       |    6 +-
>  .../DxePerformanceLib/DxePerformanceLib.inf        |    4 +-
>  .../DxePrintLibPrint2Protocol.inf                  |    2 +-
>  .../DxeReportStatusCodeLib.inf                     |    4 +-
>  .../DxeResetSystemLib/DxeResetSystemLib.inf        |    2 +-
>  .../DxeSecurityManagementLib.inf                   |    4 +-
>  MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf   |    4 +-
>  MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf   |    4 +-
>  .../Library/FileExplorerLib/FileExplorerLib.inf    |    4 +-
>  .../FmpAuthenticationLibNull.inf                   |    2 +-
>  .../LzmaCustomDecompressLib.inf                    |    2 +-
>  .../OemHookStatusCodeLibNull.inf                   |    4 +-
>  .../PciHostBridgeLibNull/PciHostBridgeLibNull.inf  |    2 +-
>  .../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    |    4 +-
>  .../PlatformHookLibSerialPortPpi.inf               |    4 +-
>  .../PlatformVarCleanupLib.inf                      |    2 +-
>  .../RuntimeDxeReportStatusCodeLib.inf              |    4 +-
>  .../TpmMeasurementLibNull.inf                      |    4 +-
>  .../UefiBootManagerLib/UefiBootManagerLib.inf      |    2 +-
>  MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf     |    4 +-
>  .../UefiHiiServicesLib/UefiHiiServicesLib.inf      |    4 +-
>  .../UefiMemoryAllocationProfileLib.inf             |    6 +-
>  MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf   |    2 +-
>  MdeModulePkg/Logo/Logo.inf                         |    2 +-
>  MdeModulePkg/MdeModulePkg.dsc                      |   28 +-
>  .../Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf       |    2 +-
>  .../Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf   |    2 +-
>  .../BootGraphicsResourceTableDxe.inf               |    2 +-
>  .../FirmwarePerformanceDxe.inf                     |    2 +-
>  .../FirmwarePerformancePei.inf                     |    2 +-
>  .../Acpi/S3SaveStateDxe/S3SaveStateDxe.inf         |    4 +-
>  .../Acpi/SmmS3SaveState/SmmS3SaveState.inf         |    2 +-
>  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf           |    2 +-
>  .../BootManagerPolicyDxe/BootManagerPolicyDxe.inf  |    2 +-
>  MdeModulePkg/Universal/CapsulePei/CapsulePei.inf   |    2 +-
>  .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf        |    4 +-
>  .../Console/ConPlatformDxe/ConPlatformDxe.inf      |    4 +-
>  .../Console/ConSplitterDxe/ConSplitterDxe.inf      |    2 +-
>  .../GraphicsConsoleDxe/GraphicsConsoleDxe.inf      |    2 +-
>  .../Universal/Console/TerminalDxe/TerminalDxe.inf  |    2 +-
>  .../Universal/DebugPortDxe/DebugPortDxe.inf        |    2 +-
>  .../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      |    2 +-
>  .../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         |    2 +-
>  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                      |    2 +-
>  .../Universal/FileExplorerDxe/FileExplorerDxe.inf  |    2 +-
>  .../Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf    |    2 +-
>  .../HiiResourcesSampleDxe.inf                      |    2 +-
>  .../LegacyRegion2Dxe/LegacyRegion2Dxe.inf          |    2 +-
>  .../Universal/LoadFileOnFv2/LoadFileOnFv2.inf      |    2 +-
>  .../GenericMemoryTestDxe/GenericMemoryTestDxe.inf  |    2 +-
>  .../NullMemoryTestDxe/NullMemoryTestDxe.inf        |    2 +-
>  MdeModulePkg/Universal/Metronome/Metronome.inf     |    2 +-
>  .../MonotonicCounterRuntimeDxe.inf                 |    2 +-
>  MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf   |    2 +-
>  .../Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf        |    2 +-
>  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf   |    2 +-
>  .../Universal/Network/IScsiDxe/IScsiDxe.inf        |    4 +-
>  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        |    2 +-
>  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf             |    2 +-
>  MdeModulePkg/Universal/PCD/Pei/Pcd.inf             |    2 +-
>  .../PcatSingleSegmentPciCfg2Pei.inf                |    2 +-
>  .../PlatformDriOverrideDxe.inf                     |    2 +-
>  MdeModulePkg/Universal/PrintDxe/PrintDxe.inf       |    2 +-
>  .../PropertiesTableAttributesDxe.inf               |    2 +-
>  .../RegularExpressionDxe/RegularExpressionDxe.inf  |    2 -
>  .../Pei/ReportStatusCodeRouterPei.inf              |    2 +-
>  .../ReportStatusCodeRouterRuntimeDxe.inf           |    2 +-
>  .../SectionExtractionPei/SectionExtractionPei.inf  |    2 +-
>  .../Universal/SecurityStubDxe/SecurityStubDxe.inf  |    2 +-
>  .../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         |    2 +-
>  .../Universal/WatchdogTimerDxe/WatchdogTimer.inf   |    4 +-
>  186 files changed, 213 insertions(+), 3759 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
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2.
  2018-06-13 12:40 ` Ard Biesheuvel
  2018-06-14  0:59   ` Zeng, Star
@ 2018-06-14  4:06   ` Gao, Liming
  1 sibling, 0 replies; 5+ messages in thread
From: Gao, Liming @ 2018-06-14  4:06 UTC (permalink / raw)
  To: Ard Biesheuvel, Chen, Chen A
  Cc: Kinney, Michael D, edk2-devel@lists.01.org, Dong, Eric,
	Zeng, Star

Ard:
  Right. We will prepare the separate patch to clean up source code and remove IPF specific logic. 

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Ard Biesheuvel
> Sent: Wednesday, June 13, 2018 8:40 PM
> To: Chen, Chen A <chen.a.chen@intel.com>
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; edk2-devel@lists.01.org; Dong, Eric <eric.dong@intel.com>; Zeng, Star
> <star.zeng@intel.com>
> Subject: Re: [edk2] [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2.
> 
> On 13 June 2018 at 05:44, chenc2 <chen.a.chen@intel.com> wrote:
> > 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>
> > Signed-off-by: chenc2 <chen.a.chen@intel.com>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> 
> Hello Chen,
> 
> Thanks for doing this work. I suppose this means we can finally get
> rid of the 12 (!) copies of the following code throughout the code
> base:
> 
>   //
>   // NOTE: Some versions of Linux ELILO for Itanium have an incorrect
> magic value
>   //       in the PE/COFF Header.  If the MachineType is Itanium(IA64) and the
>   //       Magic value in the OptionalHeader is
> EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC
>   //       then override the returned value to EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC
>   //
>   if (Hdr.Pe32->FileHeader.Machine == IMAGE_FILE_MACHINE_IA64 &&
> Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
>     return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
>   }
> 
> Thanks,
> Ard.
> 
> 
> > ---
> >  .../BootManagerMenuApp/BootManagerMenuApp.inf      |    2 +-
> >  MdeModulePkg/Application/HelloWorld/HelloWorld.inf |    2 +-
> >  .../MemoryProfileInfo/MemoryProfileInfo.inf        |    2 +-
> >  MdeModulePkg/Application/UiApp/UiApp.inf           |    2 +-
> >  .../Application/VariableInfo/VariableInfo.inf      |    2 +-
> >  .../Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf  |    2 +-
> >  MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf       |    2 +-
> >  MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf          |    2 +-
> >  MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf             |    2 +-
> >  MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf         |    2 +-
> >  MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf       |    2 +-
> >  .../Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf      |    2 +-
> >  MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf   |    2 +-
> >  MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf           |    2 +-
> >  MdeModulePkg/Bus/Pci/EhciPei/EhciPei.inf           |    2 +-
> >  MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf       |    2 +-
> >  .../IncompatiblePciDeviceSupportDxe.inf            |    2 +-
> >  .../Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf        |    4 +-
> >  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf       |    2 +-
> >  .../Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf    |    2 +-
> >  .../Pci/SataControllerDxe/SataControllerDxe.inf    |    2 +-
> >  .../Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf        |    2 +-
> >  .../Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf        |    4 +-
> >  MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf   |    4 +-
> >  MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf   |    4 +-
> >  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf           |    2 +-
> >  MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf           |    2 +-
> >  MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf           |    2 +-
> >  MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf           |    2 +-
> >  MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf    |    2 +-
> >  MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf  |    2 +-
> >  .../Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf       |    2 +-
> >  MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf            |    2 +-
> >  MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf  |    2 +-
> >  MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf                |    2 +-
> >  .../Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf        |    2 +-
> >  .../Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf      |    2 +-
> >  MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf       |    2 +-
> >  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        |    4 +-
> >  MdeModulePkg/Include/Guid/VariableFormat.h         |    5 -
> >  .../BasePlatformHookLibNull.inf                    |    2 +-
> >  .../BaseResetSystemLibNull.inf                     |    2 +-
> >  MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf   |    2 +-
> >  MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf   |    2 +-
> >  .../BootMaintenanceManagerUiLib.inf                |    2 +-
> >  .../Library/BootManagerUiLib/BootManagerUiLib.inf  |    2 +-
> >  .../CpuExceptionHandlerLibNull.inf                 |    2 +-
> >  .../CustomizedDisplayLib/CustomizedDisplayLib.inf  |    4 +-
> >  .../DebugAgentLibNull/DebugAgentLibNull.inf        |    2 +-
> >  .../DeviceManagerUiLib/DeviceManagerUiLib.inf      |    2 +-
> >  .../DisplayUpdateProgressLibGraphics.inf           |    2 +-
> >  .../DisplayUpdateProgressLibText.inf               |    2 +-
> >  .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf     |    2 +-
> >  .../DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf      |    2 +-
> >  .../DxeCapsuleLibNull/DxeCapsuleLibNull.inf        |    2 +-
> >  .../DxeCoreMemoryAllocationLib.inf                 |    2 +-
> >  .../DxeCoreMemoryAllocationProfileLib.inf          |    2 +-
> >  .../DxeCorePerformanceLib.inf                      |    2 +-
> >  .../DxeCrc32GuidedSectionExtractLib.inf            |    4 +-
> >  .../DxeDebugPrintErrorLevelLib.inf                 |    4 +-
> >  MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf       |    4 +-
> >  .../DxeFileExplorerProtocol.inf                    |    4 +-
> >  MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf     |    6 +-
> >  MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf     |    4 +-
> >  MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf       |    6 +-
> >  .../DxePerformanceLib/DxePerformanceLib.inf        |    4 +-
> >  .../DxePrintLibPrint2Protocol.inf                  |    2 +-
> >  .../DxeReportStatusCodeLib.inf                     |    4 +-
> >  .../DxeResetSystemLib/DxeResetSystemLib.inf        |    2 +-
> >  .../DxeSecurityManagementLib.inf                   |    4 +-
> >  MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf   |    4 +-
> >  MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf   |    4 +-
> >  .../Library/FileExplorerLib/FileExplorerLib.inf    |    4 +-
> >  .../FmpAuthenticationLibNull.inf                   |    2 +-
> >  .../LzmaCustomDecompressLib.inf                    |    2 +-
> >  .../OemHookStatusCodeLibNull.inf                   |    4 +-
> >  .../PciHostBridgeLibNull/PciHostBridgeLibNull.inf  |    2 +-
> >  .../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    |    4 +-
> >  .../PlatformHookLibSerialPortPpi.inf               |    4 +-
> >  .../PlatformVarCleanupLib.inf                      |    2 +-
> >  .../RuntimeDxeReportStatusCodeLib.inf              |    4 +-
> >  .../TpmMeasurementLibNull.inf                      |    4 +-
> >  .../UefiBootManagerLib/UefiBootManagerLib.inf      |    2 +-
> >  MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf     |    4 +-
> >  .../UefiHiiServicesLib/UefiHiiServicesLib.inf      |    4 +-
> >  .../UefiMemoryAllocationProfileLib.inf             |    6 +-
> >  MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf   |    2 +-
> >  MdeModulePkg/Logo/Logo.inf                         |    2 +-
> >  MdeModulePkg/MdeModulePkg.dsc                      |   28 +-
> >  .../Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf       |    2 +-
> >  .../Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf   |    2 +-
> >  .../BootGraphicsResourceTableDxe.inf               |    2 +-
> >  .../FirmwarePerformanceDxe.inf                     |    2 +-
> >  .../FirmwarePerformancePei.inf                     |    2 +-
> >  .../Acpi/S3SaveStateDxe/S3SaveStateDxe.inf         |    4 +-
> >  .../Acpi/SmmS3SaveState/SmmS3SaveState.inf         |    2 +-
> >  MdeModulePkg/Universal/BdsDxe/BdsDxe.inf           |    2 +-
> >  .../BootManagerPolicyDxe/BootManagerPolicyDxe.inf  |    2 +-
> >  MdeModulePkg/Universal/CapsulePei/CapsulePei.inf   |    2 +-
> >  .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf        |    4 +-
> >  .../Console/ConPlatformDxe/ConPlatformDxe.inf      |    4 +-
> >  .../Console/ConSplitterDxe/ConSplitterDxe.inf      |    2 +-
> >  .../GraphicsConsoleDxe/GraphicsConsoleDxe.inf      |    2 +-
> >  .../Universal/Console/TerminalDxe/TerminalDxe.inf  |    2 +-
> >  .../Universal/DebugPortDxe/DebugPortDxe.inf        |    2 +-
> >  .../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      |    2 +-
> >  .../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         |    2 +-
> >  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                      |    2 +-
> >  .../Universal/FileExplorerDxe/FileExplorerDxe.inf  |    2 +-
> >  .../Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf    |    2 +-
> >  .../HiiResourcesSampleDxe.inf                      |    2 +-
> >  .../LegacyRegion2Dxe/LegacyRegion2Dxe.inf          |    2 +-
> >  .../Universal/LoadFileOnFv2/LoadFileOnFv2.inf      |    2 +-
> >  .../GenericMemoryTestDxe/GenericMemoryTestDxe.inf  |    2 +-
> >  .../NullMemoryTestDxe/NullMemoryTestDxe.inf        |    2 +-
> >  MdeModulePkg/Universal/Metronome/Metronome.inf     |    2 +-
> >  .../MonotonicCounterRuntimeDxe.inf                 |    2 +-
> >  MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf   |    2 +-
> >  .../Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf        |    2 +-
> >  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf   |    2 +-
> >  .../Universal/Network/IScsiDxe/IScsiDxe.inf        |    4 +-
> >  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        |    2 +-
> >  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf             |    2 +-
> >  MdeModulePkg/Universal/PCD/Pei/Pcd.inf             |    2 +-
> >  .../PcatSingleSegmentPciCfg2Pei.inf                |    2 +-
> >  .../PlatformDriOverrideDxe.inf                     |    2 +-
> >  MdeModulePkg/Universal/PrintDxe/PrintDxe.inf       |    2 +-
> >  .../PropertiesTableAttributesDxe.inf               |    2 +-
> >  .../RegularExpressionDxe/RegularExpressionDxe.inf  |    2 -
> >  .../Pei/ReportStatusCodeRouterPei.inf              |    2 +-
> >  .../ReportStatusCodeRouterRuntimeDxe.inf           |    2 +-
> >  .../SectionExtractionPei/SectionExtractionPei.inf  |    2 +-
> >  .../Universal/SecurityStubDxe/SecurityStubDxe.inf  |    2 +-
> >  .../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         |    2 +-
> >  .../Universal/WatchdogTimerDxe/WatchdogTimer.inf   |    4 +-
> >  186 files changed, 213 insertions(+), 3759 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
> >
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-06-14  4:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-13  3:44 [PATCH 20/37] MdeModulePkg: Removing ipf which is no longer supported from edk2 chenc2
2018-06-13 12:40 ` Ard Biesheuvel
2018-06-14  0:59   ` Zeng, Star
2018-06-14  4:06   ` Gao, Liming
2018-06-14  0:55 ` Zeng, Star

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox