diff --git a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf
index 3dc1bab..8e0d1a5 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 1cfed2d..fff8255 100644
--- a/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
+++ b/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
@@ -6,7 +6,7 @@
 #
 #  It demos how to use EDKII PCD mechanism to make code more flexible.
 #
-#  Copyright (c) 2008 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -35,7 +35,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
index 4bb7a9d..061b6f3 100644
--- a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
+++ b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.inf
@@ -4,7 +4,7 @@
 #  Note that if the feature is not enabled by setting PcdMemoryProfilePropertyMask,
 #  the application will not display memory profile information.
 #
-#  Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Application/UiApp/UiApp.inf b/MdeModulePkg/Application/UiApp/UiApp.inf
index 417f1a3..eef7e1e 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 484ad32..fa2f046 100644
--- a/MdeModulePkg/Application/VariableInfo/VariableInfo.inf
+++ b/MdeModulePkg/Application/VariableInfo/VariableInfo.inf
@@ -6,7 +6,7 @@
 #  Note that if Variable Dxe/Smm driver doesn't enable the feature by setting PcdVariableCollectStatistics
 #  as TRUE, the application will not display variable statistical information.
 #
-#  Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
index 74e6264..a12c9ab 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 d067df0..a58d910 100644
--- a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+++ b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
@@ -5,7 +5,7 @@
 #  in UEFI spec 2.2. It installs Block IO and Disk Info protocol for each ATA device
 #  it enumerates and identifies successfully.
 #
-#  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gAtaBusDriverBinding
 #  COMPONENT_NAME                =  gAtaBusComponentName
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
index 4dbe2f5..66a3d6e 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBusDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This driver enumerates I2C devices on I2C bus and produce I2C IO Protocol on I2C devices.
 #
-#  Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
index 5cd53b2..f2234c0 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
@@ -4,7 +4,7 @@
 #  This driver produce I2C Host Protocol on I2C controller handle, enumerate I2C
 #  devices on I2C bus and produce I2C IO Protocol on I2C devices.
 #
-#  Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
index c9b87eb..3daca22 100644
--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
+++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHostDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This driver produce I2C Host Protocol on I2C controller handle.
 #
-#  Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf b/MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
index b257e99..208947e 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 a0172ea..c7d097f 100644
--- a/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
+++ b/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
@@ -4,7 +4,7 @@
 # Ps2 Keyboard Driver for UEFI. The keyboard type implemented follows IBM
 # compatible PS2 protocol using Scan Code Set 1.
 #
-# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
@@ -27,7 +27,7 @@
   ENTRY_POINT                    = InitializePs2Keyboard
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #  DRIVER_BINDING                = gKeyboardControllerDriver;
 #  COMPONENT_NAME                = gPs2KeyboardComponentName;
 #  COMPONENT_NAME2               = gPs2KeyboardComponentName2;
diff --git a/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf b/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
index 2c7688a..5050688 100644
--- a/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
+++ b/MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf
@@ -3,7 +3,7 @@
 #
 # This dirver provides support for PS2 based mice.
 #
-# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
   ENTRY_POINT                    = InitializePs2Mouse
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #  DRIVER_BINDING                = gPS2MouseDriver;
 #  COMPONENT_NAME                = gPs2MouseComponentName;
 #  COMPONENT_NAME2               = gPs2MouseComponentName2;
diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf b/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
index bc6bd4c..1d3b0be 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 74c13db..e49f218 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 8bcef7b..de5f94e 100644
--- a/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf
+++ b/MdeModulePkg/Bus/Pci/IdeBusPei/IdeBusPei.inf
@@ -4,7 +4,7 @@
 # for Atapi CD ROM device.
 #
 # This module discovers CDROM devices in Legacy and native mode and installs block IO ppis for them.
-# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf b/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe.inf
index fa3e012..987af4c 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 bfb7832..38d7936 100644
--- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
+++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gNvmExpressDriverBinding
 #  COMPONENT_NAME                =  gNvmExpressComponentName
diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf b/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
index faf68c7..cb93db6 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 03fddfe..94f9488 100644
--- a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
+++ b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
@@ -3,7 +3,7 @@
 #
 # Produces the Serial I/O protocol for standard UARTS using Super I/O or PCI I/O.
 #
-# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gSerialControllerDriver
 #  COMPONENT_NAME                =  gPciSioSerialComponentName
diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
index 4fcb967..54de60c 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 154ce45..1246e1d 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
@@ -5,7 +5,7 @@
 #  It will produce EFI_SD_MMC_PASS_THRU_PROTOCOL to allow sending SD/MMC/eMMC cmds
 #  to specified devices from upper layer.
 #
-#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gSdMmcPciHcDxeDriverBinding
 #  COMPONENT_NAME                =  gSdMmcPciHcDxeComponentName
diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf b/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf
index 51675f5..588fba2 100644
--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf
+++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf b/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf
index 900fa01..c1345f6 100644
--- a/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf
+++ b/MdeModulePkg/Bus/Pci/UfsPciHcDxe/UfsPciHcDxe.inf
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gUfsHcDriverBinding
 #  COMPONENT_NAME                =  gUfsHcComponentName
diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf
index 3535da1..c885ca0 100644
--- a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf
+++ b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf b/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
index 5dccd3b..accb0ba 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 95ddea2..7f20fb4 100644
--- a/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/UhciPei/UhciPei.inf
@@ -4,7 +4,7 @@
 # It produces gPeiUsbHostControllerPpiGuid based on gPeiUsbControllerPpiGuid which is used
 # to enable recovery function from USB Drivers.
 #
-# Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf b/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
index 9bdabd1..86a8094 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 f307ea7..2064461 100644
--- a/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
+++ b/MdeModulePkg/Bus/Pci/XhciPei/XhciPei.inf
@@ -4,7 +4,7 @@
 # It produces gPeiUsb2HostControllerPpiGuid based on gPeiUsbControllerPpiGuid
 # which is used to enable recovery function from USB Drivers.
 #
-# Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf b/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
index abcd267..16208fa 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 397d314..1401080 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 b4127b7..770fbbc 100644
--- a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.inf
@@ -1,7 +1,7 @@
 ## @file
 # Description file for the Embedded MMC (eMMC) Peim driver.
 #
-# Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
index 3f27bdb..58e077b 100644
--- a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
+++ b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
@@ -4,7 +4,7 @@
 #  It produces BlockIo, BlockIo2 and StorageSecurity protocols to allow upper layer
 #  access the EMMC device.
 #
-#  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gEmmcDxeDriverBinding
 #  COMPONENT_NAME                =  gEmmcDxeComponentName
diff --git a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
index 1530f1e..3267818 100644
--- a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.inf
@@ -1,7 +1,7 @@
 ## @file
 # Description file for the SD memory card Peim driver.
 #
-# Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
index a763314..c094898 100644
--- a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
+++ b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.inf
@@ -4,7 +4,7 @@
 #  It produces BlockIo and BlockIo2 protocols to allow upper layer
 #  access the SD memory card device.
 #
-#  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gSdDxeDriverBinding
 #  COMPONENT_NAME                =  gSdDxeComponentName
diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
index 28daf67..48a4598 100644
--- a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
+++ b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.inf
@@ -1,7 +1,7 @@
 ## @file
 # Description file for the Universal Flash Storage (UFS) Peim driver.
 #
-# Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf b/MdeModulePkg/Bus/Ufs/UfsPassThruDxe/UfsPassThruDxe.inf
index 93b6424..e550cd0 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 977bef5..c321d39 100644
--- a/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
+++ b/MdeModulePkg/Bus/Usb/UsbBotPei/UsbBotPei.inf
@@ -1,7 +1,7 @@
 ## @file
 # The Usb mass storage device Peim driver is used to support recovery from USB device.
 #
-# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions
@@ -27,7 +27,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
index 30d59ad..2e6236e 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 0d81bf8..5b03fc6 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 41f0d9a..49b5491 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 1fdd434..0ce35b9 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 10e74b9..90da43e 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 5bea024..4ca0bbf 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 69065d1..1037544 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 3029342..fd82657 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 7443648..0000000
--- 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 2fb0195..4e1581a 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 d66c8b9..00e23ac 100644
--- a/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
+++ b/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
@@ -31,7 +31,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Include/Guid/VariableFormat.h b/MdeModulePkg/Include/Guid/VariableFormat.h
index b0c2616..c076cef 100644
--- a/MdeModulePkg/Include/Guid/VariableFormat.h
+++ b/MdeModulePkg/Include/Guid/VariableFormat.h
@@ -2,7 +2,7 @@
   The variable data structures are related to EDK II-specific implementation of UEFI variables.
   VariableFormat.h defines variable data headers and variable storage region headers.
 
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials are licensed and made available under
 the terms and conditions of the BSD License that accompanies this distribution.
 The full text of the license may be found at
@@ -28,13 +28,8 @@
 ///
 /// 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 6d51955..a0a9c87 100644
--- a/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
+++ b/MdeModulePkg/Library/BasePlatformHookLibNull/BasePlatformHookLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null Platform Hook Library instance.
 #
-#  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf b/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
index 96e0ebb..a8e25ec 100644
--- a/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
+++ b/MdeModulePkg/Library/BaseResetSystemLibNull/BaseResetSystemLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null Reset System Library instance that only generates ASSERT() conditions.
 #
-#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf b/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
index 4b493f4..f807cd7 100644
--- a/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
+++ b/MdeModulePkg/Library/BaseSortLib/BaseSortLib.inf
@@ -1,7 +1,7 @@
 ##  @file
 #   Library used for sorting routines.
 #
-#  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved. <BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -23,7 +23,7 @@
   LIBRARY_CLASS                  = SortLib|DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
index a2afc9e..dab9445 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 aad9d76..ff4aaf8 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 f6fc074..8447f63 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 c79c5a7..0bc5844 100644
--- a/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
+++ b/MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 # Null instance of CPU Exception Handler Library with empty functions.
 #
-#  Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf b/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
index 4b1f6b4..0e0bf7e 100644
--- a/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
+++ b/MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
index ce1eab2..c76b8bb 100644
--- a/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
+++ b/MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null instance of Debug Agent Library with empty functions.
 #
-#  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf b/MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
index d493b37..1848e8a 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 ada6076..324ab7d 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 c313443..24d22ea 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 8367264..14629c6 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 342df9e..0f8c633 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 b836607..1d2cf4f 100644
--- a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
+++ b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
@@ -2,7 +2,7 @@
 #  NULL Dxe Capsule library instance.
 #  It can make core modules pass package level build.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
index caba8cd..5e77ae1 100644
--- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
+++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
@@ -4,7 +4,7 @@
 # for memory allocation instead of using UEFI boot services in an indirect way.
 # It is assumed that this library instance must be linked with DxeCore in this package.
 #
-# Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
index a2b5f8c..f8287bf 100644
--- a/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
+++ b/MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationProfileLib.inf
@@ -4,7 +4,7 @@
 # for memory allocation/profile instead of using UEFI boot services or memory profile protocol in an indirect way.
 # It is assumed that this library instance must be linked with DxeCore in this package.
 #
-# Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
index 8fab47f..685f5ee 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 7a8efbf..5626cb0 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 69a41f4..4d20cc5 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 d541acd..c91383a 100644
--- a/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
+++ b/MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This library instance provides DPC service by consuming EFI DPC Protocol.
 #
-#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution.  The full text of the license may be found at
@@ -19,13 +19,13 @@
   FILE_GUID                      = 38897D86-FF36-4472-AE64-1DB9AE715C81
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = DpcLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = DpcLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                    = DpcLibConstructor
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeFileExplorerProtocol/DxeFileExplorerProtocol.inf b/MdeModulePkg/Library/DxeFileExplorerProtocol/DxeFileExplorerProtocol.inf
index 9db58cb..f307aea 100644
--- a/MdeModulePkg/Library/DxeFileExplorerProtocol/DxeFileExplorerProtocol.inf
+++ b/MdeModulePkg/Library/DxeFileExplorerProtocol/DxeFileExplorerProtocol.inf
@@ -20,7 +20,7 @@
   FILE_GUID                      = 6806C45F-13C4-4274-B8A3-055EF641A060
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = FileExplorerLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = FileExplorerLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                    = FileExplorerConstructor
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
index d6d5391..371bd20 100644
--- a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
+++ b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
@@ -21,12 +21,12 @@
   FILE_GUID                      = ABBAB4CD-EA88-45b9-8234-C8A7450531FC
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = HttpLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = HttpLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
index 086c74d..4cab1af 100644
--- a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
+++ b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This library instance provides IP services upon EFI IPv4/IPv6 Protocols.
 #
-#  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution.  The full text of the license may be found at
@@ -20,12 +20,12 @@
   FILE_GUID                      = A302F877-8625-425c-B1EC-7487B62C4FDA
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = IpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = IpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
index c31a04b..e46ef45 100644
--- a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
+++ b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
@@ -21,12 +21,12 @@
   FILE_GUID                      = db6dcef3-9f4e-4340-9351-fc35aa8a5888
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = NetLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = NetLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf b/MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
index d9c7e83..2a6a1b1 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 1cda2dc..986777b 100644
--- a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
+++ b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Library instance that implements Print Library class based on protocol gEfiPrint2ProtocolGuid.
 #
-#  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -20,7 +20,7 @@
   FILE_GUID                      = 55D460DB-8FEA-415a-B95D-70145AE0675C
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = PrintLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = PrintLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                    = PrintLibConstructor
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf b/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
index 962cf8b..d56e79a 100644
--- a/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+++ b/MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
@@ -3,7 +3,7 @@
 #
 #  Retrieve status code and report status code in DXE phase.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -22,12 +22,12 @@
   FILE_GUID                      = EBF144C8-70F5-4e09-ADE2-F41F5C59AFDA
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = ReportStatusCodeLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER SMM_CORE
+  LIBRARY_CLASS                  = ReportStatusCodeLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER SMM_CORE
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf b/MdeModulePkg/Library/DxeResetSystemLib/DxeResetSystemLib.inf
index e25c3e7..7453917 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 41d8ff8..f7ef0b3 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 2dc74a7..fe437cb 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 3e541ee..9c129fb 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 5d9822d..c79fb1d 100644
--- a/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
+++ b/MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf b/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
index f9b87ca..19deece 100644
--- a/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
+++ b/MdeModulePkg/Library/FmpAuthenticationLibNull/FmpAuthenticationLibNull.inf
@@ -3,7 +3,7 @@
 #
 # NULL Instance of FmpAuthentication Library.
 #
-# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf b/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
index 127c7de..df485ac 100644
--- a/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
+++ b/MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
@@ -5,7 +5,7 @@
 #  LZMA SDK 16.04 was placed in the public domain on 2016-10-04.
 #  It was released on the http://www.7-zip.org/sdk.html website.
 #
-#  Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf b/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
index 3455576..a5d1869 100644
--- a/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
+++ b/MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
index 8df1492..abff03e 100644
--- a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
+++ b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null instance of PCI Host Bridge Library with empty functions.
 #
-#  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials are licensed and made available
 #  under the terms and conditions of the BSD License which accompanies this
@@ -27,7 +27,7 @@
 # The following information is for reference only and not required by the build
 # tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSectionExtractLib.inf
index c1d6f27..19b80be 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 12a063f..3c56d8f 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 cad3a12..995642e 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 70c9a88..c1cdd70 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 5b1df7e..0b37fa7 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 5af03f3..2df732b 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 f408d7f..c9b7ba1 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 0feff36..f2e3dad 100644
--- a/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
+++ b/MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
@@ -1,7 +1,7 @@
 ## @file
 # DXE S3 boot script Library.
 #
-# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials are
 # licensed and made available under the terms and conditions of the BSD License
@@ -20,7 +20,7 @@
   FILE_GUID                      = 57F9967B-26CD-4262-837A-55B8AA158254
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = S3BootScriptLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER DXE_SAL_DRIVER UEFI_DRIVER UEFI_APPLICATION
+  LIBRARY_CLASS                  = S3BootScriptLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_DRIVER UEFI_APPLICATION
 
 
   CONSTRUCTOR                    = S3BootScriptLibInitialize
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf b/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
index d577506..3803fcf 100644
--- a/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
+++ b/MdeModulePkg/Library/PlatformHookLibSerialPortPpi/PlatformHookLibSerialPortPpi.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Null Platform Hook Library instance with dependency on gPeiSerialPortPpiGuid
 #
-#  Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -18,13 +18,13 @@
   FILE_GUID                      = 621734D8-8B5E-4c01-B330-9F89A1081710
   MODULE_TYPE                    = PEIM
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = PlatformHookLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER SMM_CORE PEIM SEC PEI_CORE UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = PlatformHookLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER SMM_CORE PEIM SEC PEI_CORE UEFI_APPLICATION UEFI_DRIVER
   MODULE_UNI_FILE                = PlatformHookLibSerialPortPpi.uni
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
index 6e7fcb6..faf7908 100644
--- a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
+++ b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatformVarCleanupLib.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Sample platform variable cleanup library instance.
 #
-#  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions
@@ -21,7 +21,7 @@
   FILE_GUID                     = 9C9623EB-4EF3-44e0-A931-F3A340D1A0F9
   MODULE_TYPE                   = DXE_DRIVER
   VERSION_STRING                = 1.0
-  LIBRARY_CLASS                 = PlatformVarCleanupLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                 = PlatformVarCleanupLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   CONSTRUCTOR                   = PlatformVarCleanupLibConstructor
   DESTRUCTOR                    = PlatformVarCleanupLibDestructor
 
diff --git a/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf b/MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
index 9f03e2a..1c7f7c7 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 fef783a..628bc1d 100644
--- a/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
+++ b/MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Provides NULL TPM measurement function.
 #
-# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
 # which accompanies this distribution. The full text of the license may be found at
@@ -17,13 +17,13 @@
   FILE_GUID                      = 6DFD6E9F-9278-48D8-8F45-B6CFF2C2B69C
   MODULE_TYPE                    = UEFI_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = TpmMeasurementLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = TpmMeasurementLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
   MODULE_UNI_FILE                = TpmMeasurementLibNull.uni
 
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF
+#  VALID_ARCHITECTURES           = IA32 X64
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
index 72c5ca1..228b910 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 7ee6842..810b7cc 100644
--- a/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
+++ b/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
@@ -1,7 +1,7 @@
 ## @file
 #  HII Library implementation using UEFI HII protocols and services.
 #
-#  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -21,10 +21,10 @@
   FILE_GUID                      = 3143687A-7C80-404e-B5FE-2D88980E1B1C
   MODULE_TYPE                    = UEFI_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = HiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = HiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf b/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
index fba1d66..50fc7f7 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 c4954ef..a11542a 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 4c3d5e0..b227c97 100644
--- a/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+++ b/MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
@@ -1,7 +1,7 @@
 ##  @file
 #   Library used for sorting routines.
 #
-#  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved. <BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -23,7 +23,7 @@
   LIBRARY_CLASS                  = SortLib|UEFI_APPLICATION UEFI_DRIVER UEFI_DRIVER DXE_RUNTIME_DRIVER DXE_DRIVER
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources.common]
diff --git a/MdeModulePkg/Logo/Logo.inf b/MdeModulePkg/Logo/Logo.inf
index e2e61c8..5976883 100644
--- a/MdeModulePkg/Logo/Logo.inf
+++ b/MdeModulePkg/Logo/Logo.inf
@@ -1,7 +1,7 @@
 ## @file
 #  The default logo bitmap picture shown on setup screen, which is corresponding to gEfiDefaultBmpLogoGuid.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -24,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 
 [Binaries]
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index e0d8eed..8a81ea1 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
@@ -445,14 +423,14 @@
   MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.inf
   MdeModulePkg/Library/DxeCapsuleLibFmp/DxeRuntimeCapsuleLib.inf
 
-[Components.IA32, Components.X64, Components.IPF, Components.AARCH64]
+[Components.IA32, Components.X64, Components.AARCH64]
   MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
   MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
   MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
   MdeModulePkg/Universal/EbcDxe/EbcDebugger.inf
   MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
 
-[Components.IA32, Components.X64, Components.IPF, Components.ARM, Components.AARCH64]
+[Components.IA32, Components.X64, Components.ARM, Components.AARCH64]
   MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
   MdeModulePkg/Core/Dxe/DxeMain.inf {
     <LibraryClasses>
diff --git a/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf b/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf
index f01a6c8..bf67d17 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 32c6678..55cb6bd 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 080a939..955a339 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 983ce41..ec77cf0 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 1b69e49..a78fdb0 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 36ed80c..744cf8a 100644
--- a/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
+++ b/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf b/MdeModulePkg/Universal/Acpi/SmmS3SaveState/SmmS3SaveState.inf
index 0742da6..bdecccc 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 7030d67..82eb8aa 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 3301472..02c7226 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 02cf90c..a2c027f 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 3849bc8..ad7af5f 100644
--- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
@@ -27,14 +27,14 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
 #
 
 [Sources]
   CapsuleService.c
   CapsuleService.h
 
-[Sources.Ia32, Sources.IPF, Sources.EBC]
+[Sources.Ia32, Sources.EBC, Sources.ARM, Sources.AARCH64]
   SaveLongModeContext.c
   CapsuleReset.c
 
diff --git a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
index bc57e2c..176fd2f 100644
--- a/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
+++ b/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gConPlatformTextInDriverBinding
 #  COMPONENT_NAME                =  gConPlatformComponentName
diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
index a191ebc..c934887 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 bf387cd..1d15eb7 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 0780296..15b4ac1 100644
--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
@@ -5,7 +5,7 @@
 #  protocols based on Serial I/O protocol for serial devices including hotplug serial
 #  devices.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gTerminalDriverBinding
 #  COMPONENT_NAME                =  gTerminalComponentName
diff --git a/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf b/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
index b727cda..2ae8414 100644
--- a/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
+++ b/MdeModulePkg/Universal/DebugPortDxe/DebugPortDxe.inf
@@ -4,7 +4,7 @@
 # This driver binds exclusively to a standard UART serial port on the controller handle,
 # and initializes serial Io interface, publishs Debug Port and Device Path Protocol.
 #
-# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gDebugPortDriverBinding
 #  COMPONENT_NAME                =  gDebugPortComponentName
diff --git a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupportDxe.inf
index 0d37f5f..c81404b 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 db75fc0..0000000
--- 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 a11f780..0000000
--- 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 8ce97f3..0000000
--- 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 44f59e8..0000000
--- 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 1701fbf..0000000
--- a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h
+++ /dev/null
@@ -1,324 +0,0 @@
-/** @file
-  IPF specific types, macros, and definitions for Debug Support Driver.
-
-Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef _PLDEBUG_SUPPORT_H_
-#define _PLDEBUG_SUPPORT_H_
-
-#include <Uefi.h>
-
-#include <Protocol/DebugSupport.h>
-#include <Protocol/LoadedImage.h>
-
-#include <Library/DebugLib.h>
-#include <Library/UefiDriverEntryPoint.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-
-#define DISABLE_INTERRUPTS  0UL
-
-#define EFI_ISA IsaIpf
-
-typedef struct {
-  UINT64  Low;
-  UINT64  High;
-} BUNDLE;
-
-typedef
-VOID
-(*CALLBACK_FUNC) (
-  );
-
-/**
-  IPF specific DebugSupport driver initialization.
-
-  Must be public because it's referenced from DebugSupport.c
-
-  @retval  EFI_SUCCESS     Always.
-
-**/
-EFI_STATUS
-PlInitializeDebugSupportDriver (
-  VOID
-  );
-
-/**
-  Unload handler that is called during UnloadImage() - deallocates pool memory
-  used by the driver.
-
-  Must be public because it's referenced from DebugSuport.c
-
-  @param  ImageHandle    The firmware allocated handle for the EFI image.
-
-  @retval EFI_SUCCESS    Always.
-
-**/
-EFI_STATUS
-EFIAPI
-PlUnloadDebugSupportDriver (
-  IN EFI_HANDLE                   ImageHandle
-  );
-
-/**
-  C callable function to obtain the current value of IVA.
-
-  @return Current value of IVA.
-
-**/
-VOID  *
-GetIva (
-  VOID
-  );
-
-/**
-  C callable function that HookStub will be copied from it's loaded location into the IVT when
-  an IVT entry is hooked.
-
-**/
-VOID
-HookStub (
-  VOID
-  );
-
-/**
-  C callable function to chain an interrupt handler.
-
-**/
-VOID
-ChainHandler (
-  VOID
-  );
-
-/**
-  C callable function to unchain an interrupt handler.
-
-**/
-VOID
-UnchainHandler (
-  VOID
-  );
-
-/**
-  C callable function to enable/disable interrupts.
-
-  @param  NewInterruptState   New Interrupt State.
-
-  @return Previous state of psr.ic.
-
-**/
-UINT64
-ProgramInterruptFlags (
-  IN UINT64                       NewInterruptState
-  );
-
-/**
-  Flushes instruction cache for specified number of bytes.
-
-  @param  StartAddress     Cache Start Address.
-  @param  SizeInBytes      Cache Size.
-
-**/
-VOID
-InstructionCacheFlush (
-  IN VOID    *StartAddress,
-  IN UINTN   SizeInBytes
-  );
-
-/**
-  Returns the maximum value that may be used for the ProcessorIndex parameter in
-  RegisterPeriodicCallback() and RegisterExceptionCallback().
-
-  Hard coded to support only 1 processor for now.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  MaxProcessorIndex     Pointer to a caller-allocated UINTN in which the maximum supported
-                                processor index is returned. Always 0 returned.
-
-  @retval EFI_SUCCESS           Always returned with **MaxProcessorIndex set to 0.
-
-**/
-EFI_STATUS
-EFIAPI
-GetMaximumProcessorIndex (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,
-  OUT UINTN                       *MaxProcessorIndex
-  );
-
-/**
-  Registers a function to be called back periodically in interrupt context.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor the callback function applies to.
-  @param  PeriodicCallback      A pointer to a function of type PERIODIC_CALLBACK that is the main
-                                periodic entry point of the debug agent.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback
-                                function was previously registered.
-  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback
-                                function.
-**/
-EFI_STATUS
-EFIAPI
-RegisterPeriodicCallback (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,
-  IN UINTN                        ProcessorIndex,
-  IN EFI_PERIODIC_CALLBACK        PeriodicCallback
-  );
-
-/**
-  Registers a function to be called when a given processor exception occurs.
-
-  This code executes in boot services context.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor the callback function applies to.
-  @param  ExceptionCallback     A pointer to a function of type EXCEPTION_CALLBACK that is called
-                                when the processor exception specified by ExceptionType occurs.
-  @param  ExceptionType         Specifies which processor exception to hook.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback
-                                function was previously registered.
-  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback
-                                function.
-**/
-EFI_STATUS
-EFIAPI
-RegisterExceptionCallback (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,
-  IN UINTN                        ProcessorIndex,
-  IN EFI_EXCEPTION_CALLBACK       ExceptionCallback,
-  IN EFI_EXCEPTION_TYPE           ExceptionType
-  );
-
-/**
-  Invalidates processor instruction cache for a memory range. Subsequent execution in this range
-  causes a fresh memory fetch to retrieve code to be executed.
-
-  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.
-  @param  ProcessorIndex        Specifies which processor's instruction cache is to be invalidated.
-  @param  Start                 Specifies the physical base of the memory range to be invalidated.
-  @param  Length                Specifies the minimum number of bytes in the processor's instruction
-                                cache to invalidate.
-
-  @retval EFI_SUCCESS           Always returned.
-
-**/
-EFI_STATUS
-EFIAPI
-InvalidateInstructionCache (
-  IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,
-  IN UINTN                        ProcessorIndex,
-  IN VOID                         *Start,
-  IN UINTN                        Length
-  );
-
-/**
-  C routine that is called for all registered exceptions.  This is the main
-  exception dispatcher.
-
-  Must be public because it's referenced from AsmFuncs.s.
-
-  @param  ExceptionType        Specifies which processor exception.
-  @param  Context              System Context.
-**/
-VOID
-CommonHandler (
-  IN EFI_EXCEPTION_TYPE ExceptionType,
-  IN EFI_SYSTEM_CONTEXT Context
-  );
-
-/**
-  This is the worker function that uninstalls and removes all handlers.
-
-  @param  ExceptionType     Specifies which processor exception.
-  @param  NewBundles        New Boundles.
-  @param  NewCallback       A pointer to the new function to be registered.
-
-  @retval EFI_ALEADY_STARTED Ivt already hooked.
-  @retval EFI_SUCCESS        Successfully uninstalled.
-
-**/
-EFI_STATUS
-ManageIvtEntryTable (
-  IN  EFI_EXCEPTION_TYPE    ExceptionType,
-  IN  BUNDLE                NewBundles[4],
-  IN  CALLBACK_FUNC         NewCallback
-  );
-
-/**
-  Saves original IVT contents and inserts a few new bundles which are fixed up
-  to store the ExceptionType and then call the common handler.
-
-  @param  ExceptionType      Specifies which processor exception.
-  @param  NewBundles         New Boundles.
-  @param  NewCallback        A pointer to the new function to be hooked.
-
-**/
-VOID
-HookEntry (
-  IN  EFI_EXCEPTION_TYPE    ExceptionType,
-  IN  BUNDLE                NewBundles[4],
-  IN  CALLBACK_FUNC         NewCallback
-  );
-
-/**
-  Restores original IVT contents when unregistering a callback function.
-
-  @param  ExceptionType     Specifies which processor exception.
-
-**/
-VOID
-UnhookEntry (
-  IN  EFI_EXCEPTION_TYPE    ExceptionType
-  );
-
-/**
-  Sets up cache flush and calls assembly function to chain external interrupt.
-
-  Records new callback in IvtEntryTable.
-
-  @param  NewCallback     A pointer to the interrupt handle.
-
-**/
-VOID
-ChainExternalInterrupt (
-  IN  CALLBACK_FUNC         NewCallback
-  );
-
-/**
-  Sets up cache flush and calls assembly function to restore external interrupt.
-  Removes registered callback from IvtEntryTable.
-
-**/
-VOID
-UnchainExternalInterrupt (
-  VOID
-  );
-
-/**
-  Given an integer number, return the physical address of the entry point in the IFT.
-
-  @param  HandlerIndex       Index of the Handler
-  @param  EntryPoint         IFT Entrypoint
-
-**/
-VOID
-GetHandlerEntryPoint (
-  UINTN                     HandlerIndex,
-  VOID                      **EntryPoint
-  );
-
-#endif
diff --git a/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf b/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
index 37bbe29..6bdbb17 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 e9ddecf..fe2cbad 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 6c00f55..f8566ba 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 46e3912..98c5c91 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 7fea6bd..c8bfc88 100644
--- a/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
+++ b/MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
@@ -1,6 +1,7 @@
 ## @file
 #  UDF/ECMA-167 file system driver.
 #
+#  Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
 #  Copyright (C) 2014-2017 Paulo Alcantara <pcacjr@zytor.com>
 #
 #  This program and the accompanying materials
@@ -23,7 +24,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                = gUdfDriverBinding
 #  COMPONENT_NAME                = gUdfComponentName
diff --git a/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf b/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
index ad763b1..5094260 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 c1c1974..1db6199 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 d84c7ce..e6fcb88 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 f856efe..2da50e2 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 10a6b2c..8f293f5 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 0d931a4..e04ffe2 100644
--- a/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
+++ b/MdeModulePkg/Universal/EbcDxe/EbcDebuggerConfig.inf
@@ -1,7 +1,7 @@
 ## @file
 #  EBC Debugger configuration application.
 #
-#  Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF AARCH64
+#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf b/MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
index 8f128b1..d6ee619 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 4ae24de..0000000
--- 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 f99348f..0000000
--- 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 d90ea82..0000000
--- 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 7f2499b..368b2ac 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 30a765c..dcde58d 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 12b2660..ac66aa3 100644
--- a/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
+++ b/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf
@@ -3,7 +3,7 @@
 #
 # This module installs gEdkiiFaultTolerantWriteGuid PPI to inform the check for FTW last write data has been done.
 #
-# Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf b/MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf
index 8f8b8b4..c988fd5 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 0593ff8..ed5c8cd 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 7287ba5..121cf6d 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 3a34cf2..86a5783 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 a4ded94..102bd1e 100644
--- a/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf
+++ b/MdeModulePkg/Universal/LoadFileOnFv2/LoadFileOnFv2.inf
@@ -5,7 +5,7 @@
 #  version of the module only supports loading of files for the purpose of
 #  booting from the file.
 #
-#  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -29,7 +29,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf b/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
index 975dc4c..39b54ed 100644
--- a/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
+++ b/MdeModulePkg/Universal/MemoryTest/GenericMemoryTestDxe/GenericMemoryTestDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 # This driver first constructs the non-tested memory range, then performs the R/W/V memory test.
 #
-# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials are
 # licensed and made available under the terms and conditions of the BSD License
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf b/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
index a0d2ce7..b7d61b9 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 3a633ed..0f96fe4 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 e44e268..f3baf27 100644
--- a/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
+++ b/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 # This module produces the UEFI boot service GetNextMonotonicCount() and runtime service GetNextHighMonotonicCount().
 #
-# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf b/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
index 85f7982..d06e03f 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 e41bddb..aaced4d 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 8a1f8ba..147902c 100644
--- a/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
+++ b/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This module produces Deferred Procedure Call Protocol.
 #
-#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution.  The full text of the license may be found at
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES      = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES      = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
index c6e7262..c3b8c7d 100644
--- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
+++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
@@ -30,7 +30,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 #  DRIVER_BINDING                =  gIScsiDriverBinding
 #  COMPONENT_NAME                =  gIScsiComponentName
diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
index b2b934a..e405ea6 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 090ab73..18f46cb 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 ad9e7ab..066fc40 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 021d45d..9d9affb 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 5021cbc..b54321c 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 69b6d5d..7f60985 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 121d68e..b5b9e80 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 a36c578..deb6aff 100644
--- a/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
+++ b/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
@@ -4,7 +4,7 @@
 #  This module produces EFI HII Configuration Access Protocol to provide one way to
 #  configurate VALN setting
 #
-#  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -27,7 +27,7 @@
 
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PCD/Dxe/Pcd.inf b/MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
index e6b3e0d..066b86a 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 c2a3ccb..6e28fce 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 27bce7b..fc7d999 100644
--- a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf
+++ b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf
@@ -4,7 +4,7 @@
 #  It installs SingleSegmentPciConfiguration2 PPI to provide read, write and modify access to Pci configuration space in PEI phase.
 #  To follow PI specification, these services also support access to the unaligned Pci address.
 #
-#  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatformDriOverrideDxe.inf
index 5bd9e44..beebcc0 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 19eef5a..9c38a63 100644
--- a/MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
+++ b/MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
@@ -3,7 +3,7 @@
 #
 #  This driver produces Print2 protocols layered on top of the PrintLib from the MdePkg.
 #
-#  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution.  The full text of the license may be found at
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf b/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
index 3f699f6..a8edf85 100644
--- a/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
+++ b/MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf
@@ -4,7 +4,7 @@
 # This module sets EFI_MEMORY_XP for attributes of EfiACPIMemoryNVS and EfiReservedMemoryType
 # in UEFI memory map, if and only of PropertiesTable is published and has BIT0 set.
 #
-# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -28,7 +28,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
index d8a1490..4bf8502e 100644
--- a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
+++ b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
@@ -1,6 +1,7 @@
 ## @file
 #  EFI_REGULAR_EXPRESSION_PROTOCOL Implementation
 #
+#  Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
 #  (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
 #
 #  This program and the accompanying materials are licensed and made available
@@ -78,8 +79,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 a3de382..eaaf0fc 100644
--- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
+++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
@@ -1,7 +1,7 @@
 ## @file
 #  Report Status Code Router PEIM which produces Report Stataus Code Handler PPI and Status Code PPI.
 #
-#  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -25,7 +25,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is only for build)
+#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is only for build)
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
index 9556260..0cec0fc 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 91800ce..fa4882f 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 c5553a3..864ca4f 100644
--- a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
+++ b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
@@ -1,7 +1,7 @@
 ## @file
 #  This driver produces security2 and security architectural protocol based on SecurityManagementLib.
 #
-#  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -24,7 +24,7 @@
 
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf b/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
index 4f847d4..8a96b17 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 0e623ae..9218a40 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 879bc21..90f449f 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 5d96fe3..fc2d4b5 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 928ae15..a0a37a4 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 0785885..85e271a 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 72a440d..565efdc 100644
--- a/MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
+++ b/MdeModulePkg/Universal/Variable/Pei/VariablePei.inf
@@ -3,7 +3,7 @@
 #
 #  This module implements ReadOnly Variable Services required by PEIM and installs PEI ReadOnly Varaiable2 PPI.
 #
-#  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
 #  which accompanies this distribution. The full text of the license may be found at
@@ -26,7 +26,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf b/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
index cd2daf3..d81b2d9 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]
