public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 10/37] EdkCompatibilityPkg: Removing ipf from edk2.
@ 2018-06-13  3:43 chenc2
  0 siblings, 0 replies; only message in thread
From: chenc2 @ 2018-06-13  3:43 UTC (permalink / raw)
  To: edk2-devel; +Cc: chenc2, Liming Gao, Michael D Kinney

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

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

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

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

Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: chenc2 <chen.a.chen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
---
 .../CpuIo2OnCpuIoThunk/CpuIo2OnCpuIoThunk.inf      |    2 +-
 .../DeviceIoOnPciRootBridgeIoThunk.inf             |    2 +-
 .../FrameworkHiiOnUefiHiiThunk.inf                 |    2 +-
 .../Compatibility/Fv2OnFvThunk/Fv2OnFvThunk.inf    |    2 +-
 .../FvFileLoaderOnLoadFileThunk.inf                |    2 +-
 .../Compatibility/FvOnFv2Thunk/FvOnFv2Thunk.inf    |    2 +-
 .../LegacyRegion2OnLegacyRegionThunk.inf           |    2 +-
 .../Library/UefiLanguageLib/UefiLanguageLib.inf    |    4 +-
 .../PciCfg2OnPciCfgThunk/PciCfg2OnPciCfgThunk.inf  |    2 +-
 .../PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf  |    2 +-
 .../PiSmbiosRecordOnDataHubSmbiosRecordThunk.inf   |    4 +-
 .../Compatibility/PrintThunk/PrintThunk.inf        |    2 +-
 .../ReadOnlyVariable2OnReadOnlyVariableThunk.inf   |    2 +-
 .../ReadOnlyVariableOnReadOnlyVariable2Thunk.inf   |    2 +-
 .../Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf    |    2 +-
 .../Compatibility/UcOnUc2Thunk/UcOnUc2Thunk.inf    |    2 +-
 EdkCompatibilityPkg/EdkCompatibilityPkg.dsc        |   36 +-
 .../Cpu/Itanium/CpuIa64Lib/CpuIA64Lib.inf          |   37 -
 .../Cpu/Itanium/CpuIa64Lib/Ipf/CpuIa64.s           |   33 -
 .../Foundation/Efi/Guid/EfiGuidLib.inf             |    3 -
 .../Foundation/Include/Ipf/EfiBind.h               |  299 ----
 .../Foundation/Include/Ipf/EfiPeOptionalHeader.h   |   37 -
 .../Foundation/Include/Ipf/IpfDefines.h            |  556 --------
 .../Foundation/Include/Ipf/IpfMacro.i              |   66 -
 .../Foundation/Include/Ipf/PalApi.h                |  133 --
 .../Foundation/Include/Ipf/SalApi.h                |  724 ----------
 .../Foundation/Include/Ipf/TianoBind.h             |   30 -
 .../Library/CompilerStub/CompilerStubLib.inf       |    4 -
 .../Library/CompilerStub/CompilerStubLib_Edk2.inf  |    7 -
 .../Library/Dxe/EfiDriverLib/EfiDriverLib.inf      |    6 -
 .../Library/Dxe/EfiDriverLib/EfiDriverLib_Edk2.inf |   11 -
 .../Library/Dxe/EfiDriverLib/Ipf/AsmCpuMisc.s      |   44 -
 .../Dxe/EfiDriverLib/Ipf/PerformancePrimitives.s   |   61 -
 .../Foundation/Library/Dxe/Include/Ipf/CpuFuncs.h  |   93 --
 .../Library/Dxe/Include/Ipf/EsalRuntimeLib.h       | 1305 ------------------
 .../Foundation/Library/Dxe/Include/Ipf/ProcDep.h   |  119 --
 .../Library/Dxe/Include/Ipf/SalDriverLib.h         | 1454 --------------------
 .../Include/Common/EdkIIGlueDependencies.h         |   33 +-
 .../Library/EdkIIGlueLib/Include/EdkIIGlueConfig.h |   10 -
 .../Library/EdkIIGlueLib/Include/EdkIIGlueDxe.h    |   15 -
 .../Include/Ipf/EdkIIGlueProcessorBind.h           |   73 -
 .../Include/Library/EdkIIGlueBaseLib.h             | 1279 +----------------
 .../Include/Library/EdkIIGlueDxeRuntimeDriverLib.h |    4 -
 .../EdkIIGlueLib/Include/Pcd/EdkIIGluePcdIoLib.h   |   10 -
 .../BaseCacheMaintenanceLib.inf                    |    8 +-
 .../Library/BaseCacheMaintenanceLib/IpfCache.c     |  245 ----
 .../Library/BaseDebugLibNull/BaseDebugLibNull.inf  |    5 -
 .../BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf      |    7 -
 .../Library/BaseIoLibIntrinsic/IoLibIpf.c          |  490 -------
 .../EdkIIGlueLib/Library/BaseLib/BaseLib.inf       |   38 +-
 .../Library/BaseLib/BaseLibInternals.h             |   38 -
 .../EdkIIGlueLib/Library/BaseLib/Ipf/AccessDbr.s   |  117 --
 .../EdkIIGlueLib/Library/BaseLib/Ipf/AccessEicr.s  |  511 -------
 .../EdkIIGlueLib/Library/BaseLib/Ipf/AccessGcr.s   |  263 ----
 .../EdkIIGlueLib/Library/BaseLib/Ipf/AccessGp.s    |   85 --
 .../EdkIIGlueLib/Library/BaseLib/Ipf/AccessKr.s    |  399 ------
 .../EdkIIGlueLib/Library/BaseLib/Ipf/AccessPmr.s   |  123 --
 .../EdkIIGlueLib/Library/BaseLib/Ipf/AccessPsr.s   |  110 --
 .../EdkIIGlueLib/Library/BaseLib/Ipf/AsmPalCall.s  |  158 ---
 .../Library/BaseLib/Ipf/CpuBreakpoint.c            |  118 --
 .../Library/BaseLib/Ipf/CpuBreakpointMsc.c         |  118 --
 .../EdkIIGlueLib/Library/BaseLib/Ipf/CpuFlushTlb.s |   59 -
 .../EdkIIGlueLib/Library/BaseLib/Ipf/CpuPause.s    |   26 -
 .../EdkIIGlueLib/Library/BaseLib/Ipf/ExecFc.s      |   66 -
 .../Library/BaseLib/Ipf/FlushCacheRange.s          |   95 --
 .../Library/BaseLib/Ipf/GetInterruptState.s        |   27 -
 .../BaseLib/Ipf/InterlockedCompareExchange32.s     |   29 -
 .../BaseLib/Ipf/InterlockedCompareExchange64.s     |   28 -
 .../Library/BaseLib/Ipf/InternalSwitchStack.c      |   68 -
 .../Library/BaseLib/Ipf/PalCallStatic.s            |   48 -
 .../EdkIIGlueLib/Library/BaseLib/Ipf/ReadCpuid.s   |   39 -
 .../EdkIIGlueLib/Library/BaseLib/Ipf/SwitchStack.s |   51 -
 .../Library/BaseLib/Ipf/Synchronization.c          |   83 --
 .../EdkIIGlueLib/Library/BaseLib/Ipf/Unaligned.c   |  249 ----
 .../Library/EdkIIGlueLib/Library/BaseLib/Ipf/asm.h |   33 -
 .../EdkIIGlueLib/Library/BaseLib/Ipf/ia_64gen.h    |  211 ---
 .../EdkIIGlueLib/Library/BaseLib/Ipf/longjmp.s     |  122 --
 .../EdkIIGlueLib/Library/BaseLib/Ipf/setjmp.s      |  109 --
 .../Library/BaseMemoryLib/BaseMemoryLib.inf        |    8 -
 .../Library/BaseMemoryLib/Ipf/CopyMem.c            |   65 -
 .../Library/BaseMemoryLib/Ipf/MemLibGeneric.c      |  261 ----
 .../Library/BaseMemoryLib/Ipf/SetMem.c             |   55 -
 .../Library/BasePciCf8Lib/BasePciCf8Lib.inf        |    6 -
 .../BasePciExpressLib/BasePciExpressLib.inf        |    6 -
 .../Library/BasePciLibCf8/BasePciLibCf8.inf        |    6 -
 .../BasePciLibPciExpress/BasePciLibPciExpress.inf  |    6 -
 .../BasePeCoffGetEntryPointLib.inf                 |    6 -
 .../Library/BasePeCoffLib/BasePeCoffLib.inf        |    6 -
 .../Library/BasePeCoffLib/Ipf/PeCoffLoaderEx.c     |  430 ------
 .../BasePostCodeLibDebug/BasePostCodeLibDebug.inf  |    6 -
 .../BasePostCodeLibPort80.inf                      |    6 -
 .../Library/BasePrintLib/BasePrintLib.inf          |    6 -
 .../BaseTimerLibLocalApic.inf                      |    6 -
 .../BaseTimerLibLocalApic/Ipf/IpfTimerLib.c        |  178 ---
 .../BaseUefiDecompressLib.inf                      |    5 -
 .../EdkIIGlueLib/Library/DxeHobLib/DxeHobLib.inf   |    5 -
 .../Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf        |    5 -
 .../DxeMemoryAllocationLib.inf                     |    5 -
 .../DxePerformanceLib/DxePerformanceLib.inf        |    5 -
 .../DxeReportStatusCodeLib.inf                     |    5 -
 .../DxeServicesTableLib/DxeServicesTableLib.inf    |    5 -
 .../Library/DxeSmbusLib/DxeSmbusLib.inf            |    5 -
 .../EdkDxeRuntimeDriverLib.inf                     |   10 -
 .../EdkDxeRuntimeDriverLib/Ipf/RuntimeLib.c        |  243 ----
 .../EdkDxeRuntimeDriverLib/Ipf/RuntimeService.c    |  557 --------
 .../Library/EdkDxeSalLib/EdkDxeSalLib.inf          |   83 --
 .../Library/EdkDxeSalLib/Ipf/AsmEsalServiceLib.s   |  149 --
 .../Library/EdkDxeSalLib/Ipf/EsalServiceLib.c      |  251 ----
 .../Library/EdkIIGlueLib/Library/HiiLib/HiiLib.inf |    5 -
 .../PeiDxeDebugLibReportStatusCode.inf             |    5 -
 .../PeiDxePostCodeLibReportStatusCode.inf          |    5 -
 .../EdkIIGlueLib/Library/PeiHobLib/PeiHobLib.inf   |    5 -
 .../PeiMemoryAllocationLib.inf                     |    6 -
 .../PeiPerformanceLib/PeiPerformanceLib.inf        |    9 -
 .../PeiReportStatusCodeLib.inf                     |   13 -
 .../PeiResourcePublicationLib.inf                  |    5 -
 .../Library/PeiServicesLib/PeiServicesLib.inf      |    8 -
 .../PeiServicesTablePointerLib.inf                 |    5 -
 .../PeiServicesTablePointerLibKr1/Ipf/ReadKr1.s    |   44 -
 .../PeiServicesTablePointerLibKr1/Ipf/WriteKr1.s   |   45 -
 .../PeiServicesTablePointer.c                      |   74 -
 .../PeiServicesTablePointerLibKr1.inf              |   74 -
 .../PeiServicesTablePointerLibMm7.inf              |    5 -
 .../Library/PeiSmbusLib/PeiSmbusLib.inf            |    5 -
 .../SmmRuntimeDxeReportStatusCodeLib.inf           |    5 -
 .../UefiBootServicesTableLib.inf                   |    5 -
 .../UefiDevicePathLib/UefiDevicePathLib.inf        |    5 -
 .../UefiDriverModelLib/UefiDriverModelLib.inf      |    5 +-
 .../EdkIIGlueLib/Library/UefiLib/UefiLib.inf       |    5 -
 .../UefiRuntimeServicesTableLib.inf                |    5 -
 .../Library/EfiCommonLib/EfiCommonLib.inf          |    6 -
 .../Library/EfiCommonLib/EfiCommonLib_Edk2.inf     |    6 -
 .../Foundation/Library/Pei/Hob/PeiHobLib.inf       |    2 -
 .../Foundation/Library/Pei/PeiLib/Ipf/Asm.h        |   35 -
 .../Foundation/Library/Pei/PeiLib/Ipf/AsmCpuMisc.s |   44 -
 .../Foundation/Library/Pei/PeiLib/Ipf/EfiJump.h    |  112 --
 .../Foundation/Library/Pei/PeiLib/Ipf/HwAccess.s   |   77 --
 .../Foundation/Library/Pei/PeiLib/Ipf/Ia_64Gen.h   |  214 ---
 .../Foundation/Library/Pei/PeiLib/Ipf/Math.c       |  139 --
 .../Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.c        |  268 ----
 .../Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.h        |   87 --
 .../Library/Pei/PeiLib/Ipf/PeiServicePointer.c     |  108 --
 .../Library/Pei/PeiLib/Ipf/PerformancePrimitives.s |   61 -
 .../Foundation/Library/Pei/PeiLib/Ipf/PioFlush.s   |  106 --
 .../Foundation/Library/Pei/PeiLib/Ipf/Processor.c  |  118 --
 .../Foundation/Library/Pei/PeiLib/Ipf/SetJmp.s     |  325 -----
 .../Library/Pei/PeiLib/Ipf/SwitchStack.s           |  122 --
 .../Foundation/Library/Pei/PeiLib/PeiLib.inf       |   15 -
 .../Foundation/Library/Pei/PeiLib/PeiLib_Edk2.inf  |   21 -
 .../RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib.inf     |    7 -
 .../EfiRuntimeLib/EfiRuntimeLib_Edk2.inf           |   12 -
 .../RuntimeDxe/EfiRuntimeLib/Ipf/AsmCpuMisc.s      |   44 -
 .../Library/RuntimeDxe/EfiRuntimeLib/Ipf/EsalLib.s |  149 --
 .../Library/RuntimeDxe/EfiRuntimeLib/Ipf/Fvb.c     |  332 -----
 .../RuntimeDxe/EfiRuntimeLib/Ipf/IpfCpuCache.s     |   88 --
 .../Library/RuntimeDxe/EfiRuntimeLib/Ipf/Lock.c    |  170 ---
 .../RuntimeDxe/EfiRuntimeLib/Ipf/RuntimeLib.c      | 1321 ------------------
 .../Foundation/Protocol/EdkProtocolLib.inf         |    5 -
 158 files changed, 29 insertions(+), 17392 deletions(-)
 delete mode 100644 EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/CpuIA64Lib.inf
 delete mode 100644 EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/Ipf/CpuIa64.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Include/Ipf/EfiBind.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Include/Ipf/EfiPeOptionalHeader.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Include/Ipf/IpfDefines.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Include/Ipf/IpfMacro.i
 delete mode 100644 EdkCompatibilityPkg/Foundation/Include/Ipf/PalApi.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Include/Ipf/SalApi.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Include/Ipf/TianoBind.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Ipf/AsmCpuMisc.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Ipf/PerformancePrimitives.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/CpuFuncs.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/EsalRuntimeLib.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/ProcDep.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/SalDriverLib.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Ipf/EdkIIGlueProcessorBind.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseCacheMaintenanceLib/IpfCache.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/IoLibIpf.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessDbr.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessEicr.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessGcr.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessGp.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessKr.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessPmr.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessPsr.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AsmPalCall.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuBreakpoint.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuBreakpointMsc.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuFlushTlb.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuPause.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ExecFc.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/FlushCacheRange.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/GetInterruptState.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InterlockedCompareExchange32.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InterlockedCompareExchange64.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InternalSwitchStack.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/PalCallStatic.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ReadCpuid.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/SwitchStack.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/Synchronization.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/Unaligned.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/asm.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ia_64gen.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/longjmp.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/setjmp.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/CopyMem.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/MemLibGeneric.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/SetMem.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffLib/Ipf/PeCoffLoaderEx.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/Ipf/IpfTimerLib.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/Ipf/RuntimeLib.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/Ipf/RuntimeService.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/EdkDxeSalLib.inf
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/Ipf/AsmEsalServiceLib.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/Ipf/ReadKr1.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/Ipf/WriteKr1.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointer.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointerLibKr1.inf
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Asm.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/AsmCpuMisc.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/EfiJump.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/HwAccess.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Ia_64Gen.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Math.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.h
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeiServicePointer.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PerformancePrimitives.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PioFlush.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Processor.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/SetJmp.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/SwitchStack.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/AsmCpuMisc.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/EsalLib.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/Fvb.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/IpfCpuCache.s
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/Lock.c
 delete mode 100644 EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/RuntimeLib.c

diff --git a/EdkCompatibilityPkg/Compatibility/CpuIo2OnCpuIoThunk/CpuIo2OnCpuIoThunk.inf b/EdkCompatibilityPkg/Compatibility/CpuIo2OnCpuIoThunk/CpuIo2OnCpuIoThunk.inf
index 63407f6a62..5bf60031e7 100644
--- a/EdkCompatibilityPkg/Compatibility/CpuIo2OnCpuIoThunk/CpuIo2OnCpuIoThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/CpuIo2OnCpuIoThunk/CpuIo2OnCpuIoThunk.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/EdkCompatibilityPkg/Compatibility/DeviceIoOnPciRootBridgeIoThunk/DeviceIoOnPciRootBridgeIoThunk.inf b/EdkCompatibilityPkg/Compatibility/DeviceIoOnPciRootBridgeIoThunk/DeviceIoOnPciRootBridgeIoThunk.inf
index 6faa4a178f..52c0491d7d 100644
--- a/EdkCompatibilityPkg/Compatibility/DeviceIoOnPciRootBridgeIoThunk/DeviceIoOnPciRootBridgeIoThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/DeviceIoOnPciRootBridgeIoThunk/DeviceIoOnPciRootBridgeIoThunk.inf
@@ -32,7 +32,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/FrameworkHiiOnUefiHiiThunk.inf b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/FrameworkHiiOnUefiHiiThunk.inf
index 5e13683087..37b9f74c6b 100644
--- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/FrameworkHiiOnUefiHiiThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/FrameworkHiiOnUefiHiiThunk.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/EdkCompatibilityPkg/Compatibility/Fv2OnFvThunk/Fv2OnFvThunk.inf b/EdkCompatibilityPkg/Compatibility/Fv2OnFvThunk/Fv2OnFvThunk.inf
index 93540e42eb..713a235cee 100644
--- a/EdkCompatibilityPkg/Compatibility/Fv2OnFvThunk/Fv2OnFvThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/Fv2OnFvThunk/Fv2OnFvThunk.inf
@@ -32,7 +32,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/Compatibility/FvFileLoaderOnLoadFileThunk/FvFileLoaderOnLoadFileThunk.inf b/EdkCompatibilityPkg/Compatibility/FvFileLoaderOnLoadFileThunk/FvFileLoaderOnLoadFileThunk.inf
index a0506c15eb..53505b018c 100644
--- a/EdkCompatibilityPkg/Compatibility/FvFileLoaderOnLoadFileThunk/FvFileLoaderOnLoadFileThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/FvFileLoaderOnLoadFileThunk/FvFileLoaderOnLoadFileThunk.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/EdkCompatibilityPkg/Compatibility/FvOnFv2Thunk/FvOnFv2Thunk.inf b/EdkCompatibilityPkg/Compatibility/FvOnFv2Thunk/FvOnFv2Thunk.inf
index 5d1b521e2a..e80592c2c5 100644
--- a/EdkCompatibilityPkg/Compatibility/FvOnFv2Thunk/FvOnFv2Thunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/FvOnFv2Thunk/FvOnFv2Thunk.inf
@@ -32,7 +32,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/Compatibility/LegacyRegion2OnLegacyRegionThunk/LegacyRegion2OnLegacyRegionThunk.inf b/EdkCompatibilityPkg/Compatibility/LegacyRegion2OnLegacyRegionThunk/LegacyRegion2OnLegacyRegionThunk.inf
index ca6668a5b1..7ce2843276 100644
--- a/EdkCompatibilityPkg/Compatibility/LegacyRegion2OnLegacyRegionThunk/LegacyRegion2OnLegacyRegionThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/LegacyRegion2OnLegacyRegionThunk/LegacyRegion2OnLegacyRegionThunk.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/EdkCompatibilityPkg/Compatibility/Library/UefiLanguageLib/UefiLanguageLib.inf b/EdkCompatibilityPkg/Compatibility/Library/UefiLanguageLib/UefiLanguageLib.inf
index a4324734d5..2c0cd59337 100644
--- a/EdkCompatibilityPkg/Compatibility/Library/UefiLanguageLib/UefiLanguageLib.inf
+++ b/EdkCompatibilityPkg/Compatibility/Library/UefiLanguageLib/UefiLanguageLib.inf
@@ -22,10 +22,10 @@
   FILE_GUID                      = 283cad13-a151-4d55-be2d-96ea57392a82 
   MODULE_TYPE                    = UEFI_DRIVER
   VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = LanguageLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER DXE_SAL_DRIVER UEFI_APPLICATION UEFI_DRIVER
+  LIBRARY_CLASS                  = LanguageLib|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/EdkCompatibilityPkg/Compatibility/PciCfg2OnPciCfgThunk/PciCfg2OnPciCfgThunk.inf b/EdkCompatibilityPkg/Compatibility/PciCfg2OnPciCfgThunk/PciCfg2OnPciCfgThunk.inf
index f9f11def5b..a0d029dddb 100644
--- a/EdkCompatibilityPkg/Compatibility/PciCfg2OnPciCfgThunk/PciCfg2OnPciCfgThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/PciCfg2OnPciCfgThunk/PciCfg2OnPciCfgThunk.inf
@@ -81,7 +81,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf b/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf
index 167080562b..6b20c247a8 100644
--- a/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/PciCfgOnPciCfg2Thunk/PciCfgOnPciCfg2Thunk.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
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/PiSmbiosRecordOnDataHubSmbiosRecordThunk.inf b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/PiSmbiosRecordOnDataHubSmbiosRecordThunk.inf
index ad3003988b..bc45779c24 100644
--- a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/PiSmbiosRecordOnDataHubSmbiosRecordThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/PiSmbiosRecordOnDataHubSmbiosRecordThunk.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]
@@ -71,4 +71,4 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport
     
 [Depex]
-  gEfiDataHubProtocolGuid AND gEfiSmbiosProtocolGuid
\ No newline at end of file
+  gEfiDataHubProtocolGuid AND gEfiSmbiosProtocolGuid
diff --git a/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.inf b/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.inf
index 8d4a6f13a0..113ab86301 100644
--- a/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.inf
@@ -32,7 +32,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/Compatibility/ReadOnlyVariable2OnReadOnlyVariableThunk/ReadOnlyVariable2OnReadOnlyVariableThunk.inf b/EdkCompatibilityPkg/Compatibility/ReadOnlyVariable2OnReadOnlyVariableThunk/ReadOnlyVariable2OnReadOnlyVariableThunk.inf
index 79e8d506cb..1c21db5750 100644
--- a/EdkCompatibilityPkg/Compatibility/ReadOnlyVariable2OnReadOnlyVariableThunk/ReadOnlyVariable2OnReadOnlyVariableThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/ReadOnlyVariable2OnReadOnlyVariableThunk/ReadOnlyVariable2OnReadOnlyVariableThunk.inf
@@ -36,7 +36,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/Compatibility/ReadOnlyVariableOnReadOnlyVariable2Thunk/ReadOnlyVariableOnReadOnlyVariable2Thunk.inf b/EdkCompatibilityPkg/Compatibility/ReadOnlyVariableOnReadOnlyVariable2Thunk/ReadOnlyVariableOnReadOnlyVariable2Thunk.inf
index 1126d298e8..dc0ac538ac 100644
--- a/EdkCompatibilityPkg/Compatibility/ReadOnlyVariableOnReadOnlyVariable2Thunk/ReadOnlyVariableOnReadOnlyVariable2Thunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/ReadOnlyVariableOnReadOnlyVariable2Thunk/ReadOnlyVariableOnReadOnlyVariable2Thunk.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/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf b/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf
index c7c4f7e35a..35ee90a347 100644
--- a/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf
@@ -32,7 +32,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/Compatibility/UcOnUc2Thunk/UcOnUc2Thunk.inf b/EdkCompatibilityPkg/Compatibility/UcOnUc2Thunk/UcOnUc2Thunk.inf
index d6c819213e..fafc2d4b72 100644
--- a/EdkCompatibilityPkg/Compatibility/UcOnUc2Thunk/UcOnUc2Thunk.inf
+++ b/EdkCompatibilityPkg/Compatibility/UcOnUc2Thunk/UcOnUc2Thunk.inf
@@ -32,7 +32,7 @@
 #
 # The following information is for reference only and not required by the build tools.
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
+#  VALID_ARCHITECTURES           = IA32 X64 EBC
 #
 
 [Sources]
diff --git a/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc b/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc
index eca611de07..a3d226c4b9 100644
--- a/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc
+++ b/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc
@@ -25,7 +25,7 @@
   PLATFORM_VERSION               = 0.92
   DSC_SPECIFICATION              = 0x00010005
   OUTPUT_DIRECTORY               = Build/EdkCompatibilityPkg
-  SUPPORTED_ARCHITECTURES        = IA32|X64|IPF|EBC
+  SUPPORTED_ARCHITECTURES        = IA32|X64|EBC
   BUILD_TARGETS                  = DEBUG|RELEASE
   SKUID_IDENTIFIER               = DEFAULT
 DEFINE MSFT_MACRO                = /D EFI_SPECIFICATION_VERSION=0x00020000 /D PI_SPECIFICATION_VERSION=0x00009000 /D TIANO_RELEASE_VERSION=0x00080006 /D PCD_EDKII_GLUE_PciExpressBaseAddress=0xE0000000 /D EFI_DEBUG
@@ -100,13 +100,6 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
   GCC:*_*_X64_APP_FLAGS     = -DEFIX64 $(GCC_MACRO)
   GCC:*_*_X64_PP_FLAGS      = -DEFIX64 $(GCC_MACRO)
 
-  GCC:*_*_IPF_CC_FLAGS      = -DEFI64 $(GCC_MACRO)
-  GCC:*_*_IPF_ASM_FLAGS     =
-  GCC:*_*_IPF_VFRPP_FLAGS   = -DEFI64 $(GCC_MACRO)
-  GCC:*_*_IPF_APP_FLAGS     = -DEFI64 $(GCC_MACRO)
-  GCC:*_*_IPF_PP_FLAGS      = -DEFI64 $(GCC_MACRO)
-
-
   INTEL:*_*_IA32_CC_FLAGS    = /D EFI32 $(MSFT_MACRO)
   INTEL:*_*_IA32_ASM_FLAGS   = /DEFI32
   INTEL:*_*_IA32_VFRPP_FLAGS = /D EFI32 $(MSFT_MACRO)
@@ -122,13 +115,6 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
   INTEL:*_*_X64_APP_FLAGS    = /D EFIX64 $(MSFT_MACRO)
   INTEL:*_*_X64_PP_FLAGS     = /D EFIX64 $(MSFT_MACRO)
 
-  INTEL:*_*_IPF_CC_FLAGS     = /D EFI64 $(MSFT_MACRO)
-  INTEL:*_*_IPF_ASM_FLAGS    =
-  INTEL:*_*_IPF_VFRPP_FLAGS  = /D EFI64 $(MSFT_MACRO)
-  INTEL:*_*_IPF_APP_FLAGS    = /D EFI64 $(MSFT_MACRO)
-  INTEL:*_*_IPF_PP_FLAGS     = /D EFI64 $(MSFT_MACRO)
-
-
   MSFT:*_*_IA32_CC_FLAGS    = /D EFI32 $(MSFT_MACRO)
   MSFT:*_*_IA32_ASM_FLAGS   = /DEFI32
   MSFT:*_*_IA32_VFRPP_FLAGS = /D EFI32 $(MSFT_MACRO)
@@ -141,12 +127,6 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
   MSFT:*_*_X64_APP_FLAGS    = /D EFIX64 $(MSFT_MACRO)
   MSFT:*_*_X64_PP_FLAGS     = /D EFIX64 $(MSFT_MACRO)
 
-  MSFT:*_*_IPF_CC_FLAGS     = /Od /Os /D EFI64 $(MSFT_MACRO)
-  MSFT:*_*_IPF_ASM_FLAGS    =
-  MSFT:*_*_IPF_VFRPP_FLAGS  = /D EFI64 $(MSFT_MACRO)
-  MSFT:*_*_IPF_APP_FLAGS    = /D EFI64 $(MSFT_MACRO)
-  MSFT:*_*_IPF_PP_FLAGS     = /D EFI64 $(MSFT_MACRO)
-
 ###################################################################################################
 #
 # Components Section - list of the modules and components that will be processed by compilation
@@ -275,7 +255,7 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
   # }
 
 
-[Components.IA32,Components.X64,Components.IPF]
+[Components.IA32,Components.X64]
   EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
   EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib_Edk2.inf
   
@@ -296,11 +276,6 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
   EdkCompatibilityPkg/Compatibility/BootScriptSaveOnS3SaveStateThunk/BootScriptSaveOnS3SaveStateThunk.inf
   EdkCompatibilityPkg/Compatibility/DxeSmmReadyToLockOnExitPmAuthThunk/DxeSmmReadyToLockOnExitPmAuthThunk.inf
 
-[Components.IPF]
-  EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/CpuIA64Lib.inf
-  EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/EdkDxeSalLib.inf
-  EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointerLibKr1.inf
-
 [Libraries]
   #
   # Libraries common to PEI and DXE
@@ -390,7 +365,7 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
 
   EdkCompatibilityPkg/Foundation/Library/Thunk16/Thunk16Lib_Edk2.inf
 
-[Libraries.IA32,Libraries.X64,Libraries.IPF]
+[Libraries.IA32,Libraries.X64]
   EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
   EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib_Edk2.inf
   
@@ -400,8 +375,3 @@ DEFINE GCC_MACRO                 = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S
   EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxePerformanceLib/DxePerformanceLib.inf # Use IA32/X64 specific AsmReadTsc (). 
   EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiPerformanceLib/PeiPerformanceLib.inf # Use IA32/X64 specific AsmReadTsc ().
 
-[Libraries.IPF]
-  EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/CpuIA64Lib.inf
-  EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/EdkDxeSalLib.inf
-  EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointerLibKr1.inf
-
diff --git a/EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/CpuIA64Lib.inf b/EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/CpuIA64Lib.inf
deleted file mode 100644
index f4e604d30b..0000000000
--- a/EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/CpuIA64Lib.inf
+++ /dev/null
@@ -1,37 +0,0 @@
-#/*++
-#
-#  Copyright (c) 2004 - 2005, 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:
-#
-#     CpuIA64Lib.inf
-#
-#   Abstract:
-#
-#     Component description file for the Cpu IA64 library.
-#
-#--*/
-
-[defines]
-BASE_NAME       = CpuIA64Lib
-COMPONENT_TYPE  = LIBRARY
-
-[sources.common]
-
-[sources.ipf]
-  Ipf/CpuIa64.s
-
-[includes.common]
-  $(EDK_SOURCE)/Foundation/Efi
-  .
-  $(EDK_SOURCE)/Foundation/Cpu/Itanium/Include
-  $(EDK_SOURCE)/Foundation/Include
-
-[nmake.common]
diff --git a/EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/Ipf/CpuIa64.s b/EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/Ipf/CpuIa64.s
deleted file mode 100644
index 75d9f8c706..0000000000
--- a/EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/Ipf/CpuIa64.s
+++ /dev/null
@@ -1,33 +0,0 @@
-//****************************************************************************
-//
-//   Copyright (c) 2004, 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:
-//
-//     CpuIA64.s
-//  
-//   Abstract: 
-//   
-//     Contains basic assembly procedures to support IPF CPU.
-//  
-//****************************************************************************
-
-.file  "CpuIA64.s"
-
-#include  "IpfMacro.i"
-#include  "IpfDefines.h"
-
-
-PROCEDURE_ENTRY (EfiReadTsc)
-  
-  mov r8 = ar.itc   
-  br.ret.dpnt  b0;;
-
-PROCEDURE_EXIT (EfiReadTsc)
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Efi/Guid/EfiGuidLib.inf b/EdkCompatibilityPkg/Foundation/Efi/Guid/EfiGuidLib.inf
index 2b18f106ed..f17d0c462b 100644
--- a/EdkCompatibilityPkg/Foundation/Efi/Guid/EfiGuidLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Efi/Guid/EfiGuidLib.inf
@@ -54,6 +54,3 @@ COMPONENT_TYPE=   LIBRARY
   PcAnsi/PcAnsi.c
   SmBios/SmBios.h
   SmBios/SmBios.c
-[sources.ipf]
-  SalSystemTable/SalSystemTable.h
-  SalSystemTable/SalSystemTable.c
diff --git a/EdkCompatibilityPkg/Foundation/Include/Ipf/EfiBind.h b/EdkCompatibilityPkg/Foundation/Include/Ipf/EfiBind.h
deleted file mode 100644
index 9d6248ce41..0000000000
--- a/EdkCompatibilityPkg/Foundation/Include/Ipf/EfiBind.h
+++ /dev/null
@@ -1,299 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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.             
-
-Module Name:
-
-  EfiBind.h
-
-Abstract:
-
-  Processor or Compiler specific defines and types for Intel Itanium(TM).
-  We are using the ANSI C 2000 _t type definitions for basic types.
-  This it technically a violation of the coding standard, but they
-  are used to make EfiTypes.h portable. Code other than EfiTypes.h
-  should never use any ANSI C 2000 _t integer types.
-
---*/
-
-#ifndef _EFI_BIND_H_
-#define _EFI_BIND_H_
-
-
-#define EFI_DRIVER_ENTRY_POINT(InitFunction)                 
-
-#define EFI_APPLICATION_ENTRY_POINT EFI_DRIVER_ENTRY_POINT
-
-#define ECP_CPU_IPF
-
-
-//
-// Make sure we are useing the correct packing rules per EFI specification
-//
-#pragma pack()
-
-
-#if _MSC_EXTENSIONS 
-
-#if __INTEL_COMPILER
-
-//
-// Disable the extra ";" warning;
-// All places referencing EFI_GUID_STRING MACRO will generate this error.
-//
-#pragma warning ( disable : 424 )
-
-//
-// error #593: variable "Status" was set but never used
-// This error may be flagged if a function only do ASSERT on return status when 
-// EFI_DEBUG is not defined (EDK's ASSERT will be defined as empty statement).
-// To make EdkCompatibilityPkg buildable by ICC with EFI_DEBUG undefined, disable
-// this warning.
-//
-#pragma warning ( disable : 593 )
-
-//
-// Disable ICC's remark #869: "Parameter" was never referenced warning.
-// This is legal ANSI C code so we disable the remark that is turned on with -Wall
-//
-#pragma warning ( disable : 869 )
-
-//
-// Disable ICC's remark #1418: external function definition with no prior declaration.
-// This is legal ANSI C code so we disable the remark that is turned on with /W4
-//
-#pragma warning ( disable : 1418 )
-
-//
-// Disable ICC's remark #1419: external declaration in primary source file
-// This is legal ANSI C code so we disable the remark that is turned on with /W4
-//
-#pragma warning ( disable : 1419 )
-
-//
-// Disable ICC's remark #869: "Parameter" was never referenced warning.
-// This is legal ANSI C code so we disable the remark that is turned on with -Wall
-//
-#pragma warning ( disable : 869 )
-
-#endif
-
-
-    
-//
-// Disable warning that make it impossible to compile at /W4
-// This only works for Microsoft tools. Copied from the 
-// IA-32 version of efibind.h
-//
-
-//
-// Disabling bitfield type checking warnings.
-//
-#pragma warning ( disable : 4214 )
-
-
-// Disabling the unreferenced formal parameter warnings.
-//
-#pragma warning ( disable : 4100 )
-
-//
-// Disable slightly different base types warning as CHAR8 * can not be set
-// to a constant string.
-//
-#pragma warning ( disable : 4057 )
-
-//
-// ASSERT(FALSE) or while (TRUE) are legal constructes so supress this warning
-//
-#pragma warning ( disable : 4127 )
-
-//
-// Can not cast a function pointer to a data pointer. We need to do this on 
-// IPF to get access to the PLABEL.
-//
-#pragma warning ( disable : 4514 )
-
-//
-// Int64ShllMod32 unreferenced inline function
-//
-#pragma warning ( disable : 4054 )
-
-//
-// Unreferenced formal parameter - We are object oriented, so we pass This even
-//  if we  don't need them.
-//
-#pragma warning ( disable : 4100 )
-
-//
-// This warning is caused by empty (after preprocessing) souce file.
-//
-#pragma warning ( disable : 4206 )
-
-//
-// Warning: The result of the unary '&' operator may be unaligned. Ignore it.
-//
-#pragma warning ( disable : 4366 )
-
-#endif
-
-
-#if (__STDC_VERSION__ < 199901L)
-  //
-  // No ANSI C 2000 stdint.h integer width declarations, so define equivalents
-  //
- 
-  #if _MSC_EXTENSIONS 
-    
-
-    //
-    // use Microsoft C complier dependent integer width types 
-    //
-    typedef unsigned __int64    uint64_t;
-    typedef __int64             int64_t;
-    typedef unsigned __int32    uint32_t;
-    typedef __int32             int32_t;
-    typedef unsigned short      uint16_t;
-    typedef short               int16_t;
-    typedef unsigned char       uint8_t;
-    typedef signed char         int8_t;
-  #else
-    #ifdef _EFI_P64 
-      //
-      // P64 - is Intel Itanium(TM) speak for pointers being 64-bit and longs and ints 
-      //  are 32-bits
-      //
-      typedef unsigned long long  uint64_t;
-      typedef long long           int64_t;
-      typedef unsigned int        uint32_t;
-      typedef int                 int32_t;
-      typedef unsigned short      uint16_t;
-      typedef short               int16_t;
-      typedef unsigned char       uint8_t;
-      typedef signed char         int8_t;
-    #else
-      //
-      // Assume LP64 - longs and pointers are 64-bit. Ints are 32-bit.
-      //
-      typedef unsigned long   uint64_t;
-      typedef long            int64_t;
-      typedef unsigned int    uint32_t;
-      typedef int             int32_t;
-      typedef unsigned short  uint16_t;
-      typedef short           int16_t;
-      typedef unsigned char   uint8_t;
-      typedef signed char     int8_t;
-    #endif
-  #endif
-#else
-  //
-  // Use ANSI C 2000 stdint.h integer width declarations
-  //
-  #include "stdint.h"
-#endif
-
-//
-// Native integer size in stdint.h
-//
-typedef uint64_t  uintn_t;
-typedef int64_t   intn_t;
-
-//
-// Processor specific defines
-//
-#define EFI_MAX_BIT  0x8000000000000000
-#define MAX_2_BITS   0xC000000000000000
-
-//
-// Maximum legal Itanium-based address
-//
-#define EFI_MAX_ADDRESS   0xFFFFFFFFFFFFFFFF
-
-//
-//  Bad pointer value to use in check builds.
-//  if you see this value you are using uninitialized or free'ed data
-//
-#define EFI_BAD_POINTER          0xAFAFAFAFAFAFAFAF
-#define EFI_BAD_POINTER_AS_BYTE  0xAF
-
-#define EFI_DEADLOOP()    while(TRUE)
-
-#ifdef __GNUC__
-#define EFI_BREAKPOINT  EcpEfiBreakPoint
-#define MEMORY_FENCE    EcpMemoryFence
-#else
-//
-// Inject a break point in the code to assist debugging.
-//
-#pragma intrinsic (__break)  
-#define EFI_BREAKPOINT()  __break(0)
-#define EFI_DEADLOOP()    while(TRUE)
-
-//
-// Memory Fence forces serialization, and is needed to support out of order
-//  memory transactions. The Memory Fence is mainly used to make sure IO
-//  transactions complete in a deterministic sequence, and to syncronize locks
-//  an other MP code. Intel Itanium(TM) processors require explicit memory fence instructions
-//  after every IO. Need to find a way of doing that in the function _mf.
-//
-void __mfa (void);                       
-#pragma intrinsic (__mfa)  
-#define MEMORY_FENCE()  __mfa()
-#endif
-
-
-//
-// Some compilers don't support the forward reference construct:
-//  typedef struct XXXXX. The forward reference is required for 
-//  ANSI compatibility.
-//
-// The following macro provide a workaround for such cases.
-//
-
-
-#ifdef EFI_NO_INTERFACE_DECL
-  #define EFI_FORWARD_DECLARATION(x)
-#else
-  #define EFI_FORWARD_DECLARATION(x) typedef struct _##x x
-#endif
-
-//
-// Some C compilers optimize the calling conventions to increase performance.
-// _EFIAPI is used to make all public APIs follow the standard C calling 
-// convention.
-//
-
-#if _MSC_EXTENSIONS 
-  #define _EFIAPI __cdecl  
-#else
-  #define _EFIAPI       
-#endif
-
-
-#ifdef _EFI_WINNT
-
-  #define EFI_SUPPRESS_BENIGN_REDEFINITION_OF_TYPE_WARNING()  \
-           warning ( disable : 4142 )
-
-  #define EFI_DEFAULT_BENIGN_REDEFINITION_OF_TYPE_WARNING()  \
-           warning ( default : 4142 )
-#else
-
-  #define EFI_SUPPRESS_BENIGN_REDEFINITION_OF_TYPE_WARNING()  \
-           warning ( disable : 4068 )
-
-  #define EFI_DEFAULT_BENIGN_REDEFINITION_OF_TYPE_WARNING()  \
-           warning ( default : 4068 )
-
-
-#endif
-
-
-#endif
-
diff --git a/EdkCompatibilityPkg/Foundation/Include/Ipf/EfiPeOptionalHeader.h b/EdkCompatibilityPkg/Foundation/Include/Ipf/EfiPeOptionalHeader.h
deleted file mode 100644
index 3019badd59..0000000000
--- a/EdkCompatibilityPkg/Foundation/Include/Ipf/EfiPeOptionalHeader.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  EfiPeOptionalHeader.h
-
-Abstract:
-  Defines the optional header in the PE image per the PE specification.  This
-  file must be included only from within EfiImage.h since 
-  EFI_IMAGE_DATA_DIRECTORY and EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES are defined
-  there.
-
---*/
-
-#ifndef _EFI_PE_OPTIONAL_HEADER_H_
-#define _EFI_PE_OPTIONAL_HEADER_H_
-
-#define EFI_IMAGE_MACHINE_TYPE (EFI_IMAGE_MACHINE_IA64)
-
-#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
-  (((Machine) == EFI_IMAGE_MACHINE_IA64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
-
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) 
-
-#define EFI_IMAGE_NT_OPTIONAL_HDR_MAGIC EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC
-typedef EFI_IMAGE_OPTIONAL_HEADER64 EFI_IMAGE_OPTIONAL_HEADER;
-typedef EFI_IMAGE_NT_HEADERS64      EFI_IMAGE_NT_HEADERS;
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Include/Ipf/IpfDefines.h b/EdkCompatibilityPkg/Foundation/Include/Ipf/IpfDefines.h
deleted file mode 100644
index 9535d58bca..0000000000
--- a/EdkCompatibilityPkg/Foundation/Include/Ipf/IpfDefines.h
+++ /dev/null
@@ -1,556 +0,0 @@
-// ++
-
-// TODO: fix comment to start with /*++
-//
-// Copyright (c) 2004, 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:
-//
-//  IpfDefines.h
-//
-// Abstract:
-//
-//  IPF Processor Defines.
-//  NOTE: This file is included by assembly files as well.
-//
-// --
-//
-#ifndef _IPFDEFINES_H
-#define _IPFDEFINES_H
-
-//
-//  IPI DElivery Methods
-//
-#define IPI_INT_DELIVERY    0x0
-#define IPI_PMI_DELIVERY    0x2
-#define IPI_NMI_DELIVERY    0x4
-#define IPI_INIT_DELIVERY   0x5
-#define IPI_ExtINT_DELIVERY 0x7
-
-//
-// Define Itanium-based system registers.
-//
-// Define Itanium-based system register bit field offsets.
-//
-// Processor Status Register (PSR) Bit positions
-//
-// User / System mask
-//
-#define PSR_RV0 0
-#define PSR_BE  1
-#define PSR_UP  2
-#define PSR_AC  3
-#define PSR_MFL 4
-#define PSR_MFH 5
-
-//
-// PSR bits 6-12 reserved (must be zero)
-//
-#define PSR_MBZ0    6
-#define PSR_MBZ0_V  0x1ffUL L
-
-//
-// System only mask
-//
-#define PSR_IC      13
-#define PSR_IC_MASK (1 << 13)
-#define PSR_I       14
-#define PSR_PK      15
-#define PSR_MBZ1    16
-#define PSR_MBZ1_V  0x1UL L
-#define PSR_DT      17
-#define PSR_DFL     18
-#define PSR_DFH     19
-#define PSR_SP      20
-#define PSR_PP      21
-#define PSR_DI      22
-#define PSR_SI      23
-#define PSR_DB      24
-#define PSR_LP      25
-#define PSR_TB      26
-#define PSR_RT      27
-
-//
-// PSR bits 28-31 reserved (must be zero)
-//
-#define PSR_MBZ2    28
-#define PSR_MBZ2_V  0xfUL L
-
-//
-// Neither mask
-//
-#define PSR_CPL     32
-#define PSR_CPL_LEN 2
-#define PSR_IS      34
-#define PSR_MC      35
-#define PSR_IT      36
-#define PSR_IT_MASK 0x1000000000
-#define PSR_ID      37
-#define PSR_DA      38
-#define PSR_DD      39
-#define PSR_SS      40
-#define PSR_RI      41
-#define PSR_RI_LEN  2
-#define PSR_ED      43
-#define PSR_BN      44
-
-//
-// PSR bits 45-63 reserved (must be zero)
-//
-#define PSR_MBZ3    45
-#define PSR_MBZ3_V  0xfffffUL L
-
-//
-// Floating Point Status Register (FPSR) Bit positions
-//
-//
-// Traps
-//
-#define FPSR_VD 0
-#define FPSR_DD 1
-#define FPSR_ZD 2
-#define FPSR_OD 3
-#define FPSR_UD 4
-#define FPSR_ID 5
-
-//
-// Status Field 0 - Controls
-//
-#define FPSR0_FTZ0  6
-#define FPSR0_WRE0  7
-#define FPSR0_PC0   8
-#define FPSR0_RC0   10
-#define FPSR0_TD0   12
-
-//
-// Status Field 0 - Flags
-//
-#define FPSR0_V0  13
-#define FPSR0_D0  14
-#define FPSR0_Z0  15
-#define FPSR0_O0  16
-#define FPSR0_U0  17
-#define FPSR0_I0  18
-
-//
-// Status Field 1 - Controls
-//
-#define FPSR1_FTZ0  19
-#define FPSR1_WRE0  20
-#define FPSR1_PC0   21
-#define FPSR1_RC0   23
-#define FPSR1_TD0   25
-
-//
-// Status Field 1 - Flags
-//
-#define FPSR1_V0  26
-#define FPSR1_D0  27
-#define FPSR1_Z0  28
-#define FPSR1_O0  29
-#define FPSR1_U0  30
-#define FPSR1_I0  31
-
-//
-// Status Field 2 - Controls
-//
-#define FPSR2_FTZ0  32
-#define FPSR2_WRE0  33
-#define FPSR2_PC0   34
-#define FPSR2_RC0   36
-#define FPSR2_TD0   38
-
-//
-// Status Field 2 - Flags
-//
-#define FPSR2_V0  39
-#define FPSR2_D0  40
-#define FPSR2_Z0  41
-#define FPSR2_O0  42
-#define FPSR2_U0  43
-#define FPSR2_I0  44
-
-//
-// Status Field 3 - Controls
-//
-#define FPSR3_FTZ0  45
-#define FPSR3_WRE0  46
-#define FPSR3_PC0   47
-#define FPSR3_RC0   49
-#define FPSR3_TD0   51
-
-//
-// Status Field 0 - Flags
-//
-#define FPSR3_V0  52
-#define FPSR3_D0  53
-#define FPSR3_Z0  54
-#define FPSR3_O0  55
-#define FPSR3_U0  56
-#define FPSR3_I0  57
-
-//
-// FPSR bits 58-63 Reserved -- Must be zero
-//
-#define FPSR_MBZ0   58
-#define FPSR_MBZ0_V 0x3fUL L
-
-//
-// For setting up FPSR on kernel entry
-// All traps are disabled.
-//
-#define FPSR_FOR_KERNEL     0x3f
-
-#define FP_REG_SIZE         16  // 16 byte spill size
-#define HIGHFP_REGS_LENGTH  (96 * 16)
-
-//
-// Define hardware Task Priority Register (TPR)
-//
-//
-// TPR bit positions
-//
-#define TPR_MIC     4   // Bits 0 - 3 ignored
-#define TPR_MIC_LEN 4
-#define TPR_MMI     16  // Mask Maskable Interrupt
-//
-// Define hardware Interrupt Status Register (ISR)
-//
-//
-// ISR bit positions
-//
-#define ISR_CODE          0
-#define ISR_CODE_LEN      16
-#define ISR_CODE_MASK     0xFFFF
-#define ISR_IA_VECTOR     16
-#define ISR_IA_VECTOR_LEN 8
-#define ISR_MBZ0          24
-#define ISR_MBZ0_V        0xff
-#define ISR_X             32
-#define ISR_W             33
-#define ISR_R             34
-#define ISR_NA            35
-#define ISR_SP            36
-#define ISR_RS            37
-#define ISR_IR            38
-#define ISR_NI            39
-#define ISR_MBZ1          40
-#define ISR_EI            41
-#define ISR_ED            43
-#define ISR_MBZ2          44
-#define ISR_MBZ2_V        0xfffff
-
-//
-// ISR codes
-//
-// For General exceptions: ISR{3:0}
-//
-#define ISR_ILLEGAL_OP  0 //  Illegal operation fault
-#define ISR_PRIV_OP     1 //  Privileged operation fault
-#define ISR_PRIV_REG    2 //  Privileged register fauls
-#define ISR_RESVD_REG   3 //  Reserved register/field flt
-#define ISR_ILLEGAL_ISA 4 // Disabled instruction set transition fault
-//
-// Define hardware Default Control Register (DCR)
-//
-//
-// DCR bit positions
-//
-#define DCR_PP        0
-#define DCR_BE        1
-#define DCR_LC        2
-#define DCR_MBZ0      4
-#define DCR_MBZ0_V    0xf
-#define DCR_DM        8
-#define DCR_DP        9
-#define DCR_DK        10
-#define DCR_DX        11
-#define DCR_DR        12
-#define DCR_DA        13
-#define DCR_DD        14
-#define DCR_DEFER_ALL 0x7f00
-#define DCR_MBZ1      2
-#define DCR_MBZ1_V    0xffffffffffffUL L
-
-//
-// Define hardware RSE Configuration Register
-//
-// RS Configuration (RSC) bit field positions
-//
-#define RSC_MODE        0
-#define RSC_PL          2
-#define RSC_BE          4
-#define RSC_MBZ0        5
-#define RSC_MBZ0_V      0x3ff
-#define RSC_LOADRS      16
-#define RSC_LOADRS_LEN  14
-#define RSC_MBZ1        30
-#define RSC_MBZ1_V      0x3ffffffffUL L
-
-//
-// RSC modes
-//
-#define RSC_MODE_LY (0x0) // Lazy
-#define RSC_MODE_SI (0x1) // Store intensive
-#define RSC_MODE_LI (0x2) // Load intensive
-#define RSC_MODE_EA (0x3) // Eager
-//
-// RSC Endian bit values
-//
-#define RSC_BE_LITTLE 0
-#define RSC_BE_BIG    1
-
-//
-// Define Interruption Function State (IFS) Register
-//
-// IFS bit field positions
-//
-#define IFS_IFM     0
-#define IFS_IFM_LEN 38
-#define IFS_MBZ0    38
-#define IFS_MBZ0_V  0x1ffffff
-#define IFS_V       63
-#define IFS_V_LEN   1
-
-//
-// IFS is valid when IFS_V = IFS_VALID
-//
-#define IFS_VALID 1
-
-//
-// Define Page Table Address (PTA)
-//
-#define PTA_VE        0
-#define PTA_VF        8
-#define PTA_SIZE      2
-#define PTA_SIZE_LEN  6
-#define PTA_BASE      15
-
-//
-// Define Region Register (RR)
-//
-//
-// RR bit field positions
-//
-#define RR_VE       0
-#define RR_MBZ0     1
-#define RR_PS       2
-#define RR_PS_LEN   6
-#define RR_RID      8
-#define RR_RID_LEN  24
-#define RR_MBZ1     32
-
-//
-// SAL uses region register 0 and RID of 1000
-//
-#define SAL_RID     0x1000
-#define SAL_RR_REG  0x0
-#define SAL_TR      0x0
-
-//
-// Total number of region registers
-//
-#define RR_SIZE 8
-
-//
-// Define Protection Key Register (PKR)
-//
-// PKR bit field positions
-//
-#define PKR_V       0
-#define PKR_WD      1
-#define PKR_RD      2
-#define PKR_XD      3
-#define PKR_MBZ0    4
-#define PKR_KEY     8
-#define PKR_KEY_LEN 24
-#define PKR_MBZ1    32
-
-#define PKR_VALID   (1 << PKR_V)
-
-//
-// Number of protection key registers
-//
-#define PKRNUM  8
-
-//
-// Define Interruption TLB Insertion register (ITIR)
-//
-//
-// Define Translation Insertion Format (TR)
-//
-// PTE0 bit field positions
-//
-#define PTE0_P    0
-#define PTE0_MBZ0 1
-#define PTE0_MA   2
-#define PTE0_A    5
-#define PTE0_D    6
-#define PTE0_PL   7
-#define PTE0_AR   9
-#define PTE0_PPN  12
-#define PTE0_MBZ1 48
-#define PTE0_ED   52
-#define PTE0_IGN0 53
-
-//
-// ITIR bit field positions
-//
-#define ITIR_MBZ0     0
-#define ITIR_PS       2
-#define ITIR_PS_LEN   6
-#define ITIR_KEY      8
-#define ITIR_KEY_LEN  24
-#define ITIR_MBZ1     32
-#define ITIR_MBZ1_LEN 16
-#define ITIR_PPN      48
-#define ITIR_PPN_LEN  15
-#define ITIR_MBZ2     63
-
-#define ATTR_IPAGE    0x661 // Access Rights = RWX (bits 11-9=011), PL 0(8-7=0)
-#define ATTR_DEF_BITS 0x661 // Access Rights = RWX (bits 11-9=010), PL 0(8-7=0)
-// Dirty (bit 6=1), Accessed (bit 5=1),
-// MA WB (bits 4-2=000), Present (bit 0=1)
-//
-// Memory access rights
-//
-#define AR_UR_KR      0x0 // user/kernel read
-#define AR_URX_KRX    0x1 // user/kernel read and execute
-#define AR_URW_KRW    0x2 // user/kernel read & write
-#define AR_URWX_KRWX  0x3 // user/kernel read,write&execute
-#define AR_UR_KRW     0x4 // user read/kernel read,write
-#define AR_URX_KRWX   0x5 // user read/execute, kernel all
-#define AR_URWX_KRW   0x6 // user all, kernel read & write
-#define AR_UX_KRX     0x7 // user execute only, kernel read and execute
-//
-// Memory attribute values
-//
-//
-// The next 4 are all cached, non-sequential & speculative, coherent
-//
-#define MA_WBU  0x0 // Write back, unordered
-//
-// The next 3 are all non-cached, sequential & non-speculative
-//
-#define MA_UC   0x4 // Non-coalescing, sequential & non-speculative
-#define MA_UCE  0x5 // Non-coalescing, sequential, non-speculative
-// & fetchadd exported
-//
-#define MA_WC   0x6 // Non-cached, Coalescing,  non-seq., spec.
-#define MA_NAT  0xf // NaT page
-//
-// Definition of the offset of TRAP/INTERRUPT/FAULT handlers from the
-// base of IVA (Interruption Vector Address)
-//
-#define IVT_SIZE          0x8000
-#define EXTRA_ALIGNMENT   0x1000
-
-#define OFF_VHPTFLT       0x0000  // VHPT Translation fault
-#define OFF_ITLBFLT       0x0400  // Instruction TLB fault
-#define OFF_DTLBFLT       0x0800  // Data TLB fault
-#define OFF_ALTITLBFLT    0x0C00  // Alternate ITLB fault
-#define OFF_ALTDTLBFLT    0x1000  // Alternate DTLB fault
-#define OFF_NESTEDTLBFLT  0x1400  // Nested TLB fault
-#define OFF_IKEYMISSFLT   0x1800  // Inst Key Miss fault
-#define OFF_DKEYMISSFLT   0x1C00  // Data Key Miss fault
-#define OFF_DIRTYBITFLT   0x2000  // Dirty-Bit fault
-#define OFF_IACCESSBITFLT 0x2400  // Inst Access-Bit fault
-#define OFF_DACCESSBITFLT 0x2800  // Data Access-Bit fault
-#define OFF_BREAKFLT      0x2C00  // Break Inst fault
-#define OFF_EXTINT        0x3000  // External Interrupt
-//
-//  Offset 0x3400 to 0x0x4C00 are reserved
-//
-#define OFF_PAGENOTPFLT   0x5000  // Page Not Present fault
-#define OFF_KEYPERMFLT    0x5100  // Key Permission fault
-#define OFF_IACCESSRTFLT  0x5200  // Inst Access-Rights flt
-#define OFF_DACCESSRTFLT  0x5300  // Data Access-Rights fault
-#define OFF_GPFLT         0x5400  // General Exception fault
-#define OFF_FPDISFLT      0x5500  // Disable-FP fault
-#define OFF_NATFLT        0x5600  // NAT Consumption fault
-#define OFF_SPECLNFLT     0x5700  // Speculation fault
-#define OFF_DBGFLT        0x5900  // Debug fault
-#define OFF_ALIGNFLT      0x5A00  // Unaligned Reference fault
-#define OFF_LOCKDREFFLT   0x5B00  // Locked Data Reference fault
-#define OFF_FPFLT         0x5C00  // Floating Point fault
-#define OFF_FPTRAP        0x5D00  // Floating Point Trap
-#define OFF_LOPRIVTRAP    0x5E00  // Lower-Privilege Transfer Trap
-#define OFF_TAKENBRTRAP   0x5F00  // Taken Branch Trap
-#define OFF_SSTEPTRAP     0x6000  // Single Step Trap
-//
-// Offset 0x6100 to 0x6800 are reserved
-//
-#define OFF_IA32EXCEPTN   0x6900  // iA32 Exception
-#define OFF_IA32INTERCEPT 0x6A00  // iA32 Intercept
-#define OFF_IA32INT       0x6B00  // iA32 Interrupt
-#define NUMBER_OF_VECTORS 0x100
-//
-// Privilege levels
-//
-#define PL_KERNEL 0
-#define PL_USER   3
-
-//
-// Instruction set (IS) bits
-//
-#define IS_IA64 0
-#define IS_IA   1
-
-//
-// RSC while in kernel: enabled, little endian, PL = 0, eager mode
-//
-#define RSC_KERNEL  ((RSC_MODE_EA << RSC_MODE) | (RSC_BE_LITTLE << RSC_BE))
-
-//
-// Lazy RSC in kernel: enabled, little endian, pl = 0, lazy mode
-//
-#define RSC_KERNEL_LAZ  ((RSC_MODE_LY << RSC_MODE) | (RSC_BE_LITTLE << RSC_BE))
-
-//
-// RSE disabled: disabled, PL = 0, little endian, eager mode
-//
-#define RSC_KERNEL_DISABLED   ((RSC_MODE_LY << RSC_MODE) | (RSC_BE_LITTLE << RSC_BE))
-
-#define NAT_BITS_PER_RNAT_REG 63
-
-//
-// Macros for generating PTE0 and PTE1 value
-//
-#define PTE0(ed, ppn12_47, ar, pl, d, a, ma, p) \
-                ( ( ed << PTE0_ED )               |  \
-                  ( ppn12_47 << PTE0_PPN )        |  \
-                  ( ar << PTE0_AR )               |  \
-                  ( pl << PTE0_PL )               |  \
-                  ( d << PTE0_D )                 |  \
-                  ( a << PTE0_A )                 |  \
-                  ( ma << PTE0_MA )               |  \
-                  ( p << PTE0_P )                    \
-                )
-
-#define ITIR(ppn48_63, key, ps)            \
-                ( ( ps << ITIR_PS )       |  \
-                  ( key << ITIR_KEY )     |  \
-                  ( ppn48_63 << ITIR_PPN )         \
-    )
-
-//
-// Macro to generate mask value from bit position. The result is a
-// 64-bit.
-//
-#define BITMASK(bp, value)      (value << bp)
-
-#define BUNDLE_SIZE             16
-#define SPURIOUS_INT            0xF
-
-#define FAST_DISABLE_INTERRUPTS rsm BITMASK (PSR_I, 1);;
-
-#define FAST_ENABLE_INTERRUPTS  ssm BITMASK (PSR_I, 1);;
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Include/Ipf/IpfMacro.i b/EdkCompatibilityPkg/Foundation/Include/Ipf/IpfMacro.i
deleted file mode 100644
index c6a5a68823..0000000000
--- a/EdkCompatibilityPkg/Foundation/Include/Ipf/IpfMacro.i
+++ /dev/null
@@ -1,66 +0,0 @@
-//++
-// Copyright (c) 2004, 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:
-//
-//  IpfMacro.i
-//
-// Abstract:
-//
-//  Contains the macros needed for calling procedures in Itanium-based assembly code.
-//
-//
-// Revision History:
-//
-//--
-
-#ifndef  _IA64PROC_I
-#define  _IA64PROC_I
-
-
-#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;;
-
-
-#define INTERRUPT_HANDLER_BEGIN(name) \
-PROCEDURE_ENTRY(name##HandlerBegin) \
-;; \
-PROCEDURE_EXIT(name##HandlerBegin)
-
-#define INTERRUPT_HANDLER_END(name) \
-PROCEDURE_ENTRY(name##HandlerEnd) \
-;; \
-PROCEDURE_EXIT(name##HandlerEnd) 
-
-
-#define INTERRUPT_HANDLER_BLOCK_BEGIN \
-INTERRUPT_HANDLER_BEGIN(First)
-
-#define INTERRUPT_HANDLER_BLOCK_END \
-INTERRUPT_HANDLER_END(Last)
-
-
-
-#endif  // _IA64PROC_I
diff --git a/EdkCompatibilityPkg/Foundation/Include/Ipf/PalApi.h b/EdkCompatibilityPkg/Foundation/Include/Ipf/PalApi.h
deleted file mode 100644
index 80306c8d1e..0000000000
--- a/EdkCompatibilityPkg/Foundation/Include/Ipf/PalApi.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  PalApi.h
-
-Abstract:
-
-  Main PAL API's defined in PAL specification. 
-
-
-Revision History:
-
---*/
-
-#ifndef _PALPROC_H
-#define _PALPROC_H
-
-#include "Tiano.h"
-
-#define PAL_CACHE_FLUSH       0x0001
-#define PAL_CACHE_INFO        0x0002
-#define PAL_CACHE_INIT        0x0003
-#define PAL_CACHE_SUMMARY     0x0004
-#define PAL_MEM_ATTRIB        0x0005
-#define PAL_PTCE_INFO         0x0006
-#define PAL_VM_INFO           0x0007
-#define PAL_VM_SUMMARY        0x0008
-#define PAL_BUS_GET_FEATURES  0x0009
-#define PAL_BUS_SET_FEATURES  0x000a
-#define PAL_DEBUG_INFO        0x000b
-#define PAL_FIXED_ADDR        0x000c
-#define PAL_FREQ_BASE         0x000d
-#define PAL_FREQ_RATIOS       0x000e
-#define PAL_PERF_MON_INFO     0x000f
-#define PAL_PLATFORM_ADDR     0x0010
-#define PAL_PROC_GET_FEATURES 0x0011
-#define PAL_PROC_SET_FEATURES 0x0012
-#define PAL_RSE_INFO          0x0013
-#define PAL_VERSION           0x0014
-
-#define PAL_MC_CLEAR_LOG      0x0015
-#define PAL_MC_DRAIN          0x0016
-#define PAL_MC_EXPECTED       0x0017
-#define PAL_MC_DYNAMIC_STATE  0x0018
-#define PAL_MC_ERROR_INFO     0x0019
-#define PAL_MC_RESUME         0x001a
-#define PAL_MC_REGISTER_MEM   0x001b
-#define PAL_HALT              0x001c
-#define PAL_HALT_LIGHT        0x001d
-#define PAL_COPY_INFO         0x001e
-#define PAL_SHUTDOWN          0x002c
-#define PAL_AUTH              0x0209
-#define PAL_SINGL_DISPERSAL   0x0226  // dec. 550
-#define PAL_HALT_INFO         0x0101
-#define PAL_CACHE_LINE_INIT   0x001f
-#define PAL_PMI_ENTRYPOINT    0x0020
-#define PAL_ENTER_IA_32_ENV   0x0021
-#define PAL_VM_PAGE_SIZE      0x0022
-#define PAL_MEM_FOR_TEST      0x0025
-#define PAL_CACHE_PROT_INFO   0x0026
-
-#define PAL_COPY_PAL          0x0100
-#define PAL_CACHE_READ        0x0103
-#define PAL_CACHE_WRITE       0x0104
-#define PAL_TEST_PROC         0x0102
-
-#define PAL_DEBUG_FEATURE     0x0063  // vp1
-typedef UINT64  EFI_PAL_STATUS;
-
-//
-//  Return values from PAL
-//
-typedef struct {
-  EFI_PAL_STATUS  Status; // register r8
-  UINT64          r9;
-  UINT64          r10;
-  UINT64          r11;
-} PAL_RETURN_REGS;
-
-//
-// PAL equates for other parameters.
-//
-#define PAL_SUCCESS             0x0
-#define PAL_CALL_ERROR          0xfffffffffffffffd
-#define PAL_CALL_UNIMPLEMENTED  0xffffffffffffffff
-#define PAL_CACHE_TYPE_I        0x1
-#define PAL_CACHE_TYPE_D        0x2
-#define PAL_CACHE_TYPE_I_AND_D  0x3
-#define PAL_CACHE_NO_INT        0x0
-#define PAL_CACHE_INT           0x2
-//
-// #define PAL_CACHE_PLAT_ACK                              0x4
-//
-#define PAL_CACHE_NO_PLAT_ACK               0x0
-#define PAL_CACHE_INVALIDATE                0x1
-#define PAL_CACHE_NO_INVALIDATE             0x0
-#define PAL_CACHE_ALL_LEVELS                - 0x1
-
-#define PAL_FEATURE_ENABLE                  0x1
-#define PAL_ENABLE_BERR_BIT                 63
-#define PAL_ENABLE_MCA_BINIT_BIT            61
-#define PAL_ENABLE_CMCI_MCA_BIT             60
-#define PAL_CACHE_DISABLE_BIT               59
-#define PAL_DISABLE_COHERENCY_BIT           58
-
-#define PAL_DIS_BUS_DATA_ERR_CHECK_BIT      63
-#define PAL_DIS_BUS_ADDR_ERR_CHECK_BIT      61
-#define PAL_DIS_BUS_INIT_EVENT_SIGNAL_BIT   60
-#define PAL_DIS_BUS_REQ_ERR_SIGNAL_BIT      58
-#define PAL_DIS_BUS_REQ_INT_ERR_SIGNAL_BIT  57
-#define PAL_DIS_BUS_REQ_ERR_CHECK_BIT       56
-#define PAL_DIS_BUS_RESP_ERR_CHECK_BIT      55
-
-#define PAL_COPY_BSP_TOKEN                  0x0
-#define PAL_COPY_AP_TOKEN                   0x1
-
-#define PAL_CODE_TOKEN                      0x0
-#define PAL_IA32EMU_CODE_TOKEN              0x1
-
-#define PAL_INTERRUPT_BLOCK_TOKEN           0x0
-#define PAL_IO_BLOCK_TOKEN                  0x1
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Include/Ipf/SalApi.h b/EdkCompatibilityPkg/Foundation/Include/Ipf/SalApi.h
deleted file mode 100644
index dfb0bc204f..0000000000
--- a/EdkCompatibilityPkg/Foundation/Include/Ipf/SalApi.h
+++ /dev/null
@@ -1,724 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  SalApi.h
-
-Abstract:
-
-  Main SAL API's defined in SAL 3.0 specification. 
-
-
-Revision History:
-
---*/
-
-#ifndef _SAL_API_H_
-#define _SAL_API_H_
-
-typedef UINTN EFI_SAL_STATUS;
-
-//
-// EFI_SAL_STATUS defines
-//
-#define EFI_SAL_SUCCESS               ((EFI_SAL_STATUS) 0)
-#define EFI_SAL_MORE_RECORDS          ((EFI_SAL_STATUS) 3)
-#define EFI_SAL_NOT_IMPLEMENTED       ((EFI_SAL_STATUS) - 1)
-#define EFI_SAL_INVALID_ARGUMENT      ((EFI_SAL_STATUS) - 2)
-#define EFI_SAL_ERROR                 ((EFI_SAL_STATUS) - 3)
-#define EFI_SAL_VIRTUAL_ADDRESS_ERROR ((EFI_SAL_STATUS) - 4)
-#define EFI_SAL_NO_INFORMATION        ((EFI_SAL_STATUS) - 5)
-#define EFI_SAL_NOT_ENOUGH_SCRATCH    ((EFI_SAL_STATUS) - 9)
-
-//
-//  Delivery Mode of IPF CPU.
-//
-typedef enum {
-  INT,
-  MPreserved1,
-  PMI,
-  MPreserved2,
-  NMI,
-  INIT,
-  MPreserved3,
-  ExtINT
-} EFI_DELIVERY_MODE;
-
-//
-//  Return values from SAL
-//
-typedef struct {
-  EFI_SAL_STATUS  Status; // register r8
-  UINTN           r9;
-  UINTN           r10;
-  UINTN           r11;
-} SAL_RETURN_REGS;
-
-typedef SAL_RETURN_REGS (EFIAPI *SAL_PROC)
-  (
-    IN UINT64 FunctionId,
-    IN UINT64 Arg2,
-    IN UINT64 Arg3,
-    IN UINT64 Arg4,
-    IN UINT64 Arg5,
-    IN UINT64 Arg6,
-    IN UINT64 Arg7,
-    IN UINT64 Arg8
-  );
-
-//
-// SAL Procedure FunctionId definition
-//
-#define EFI_SAL_SET_VECTORS             0x01000000
-#define EFI_SAL_GET_STATE_INFO          0x01000001
-#define EFI_SAL_GET_STATE_INFO_SIZE     0x01000002
-#define EFI_SAL_CLEAR_STATE_INFO        0x01000003
-#define EFI_SAL_MC_RENDEZ               0x01000004
-#define EFI_SAL_MC_SET_PARAMS           0x01000005
-#define EFI_SAL_REGISTER_PHYSICAL_ADDR  0x01000006
-#define EFI_SAL_CACHE_FLUSH             0x01000008
-#define EFI_SAL_CACHE_INIT              0x01000009
-#define EFI_SAL_PCI_CONFIG_READ         0x01000010
-#define EFI_SAL_PCI_CONFIG_WRITE        0x01000011
-#define EFI_SAL_FREQ_BASE               0x01000012
-#define EFI_SAL_UPDATE_PAL              0x01000020
-
-#define EFI_SAL_FUNCTION_ID_MASK        0x0000ffff
-#define EFI_SAL_MAX_SAL_FUNCTION_ID     0x00000021
-
-//
-// SAL Procedure parameter definitions
-// Not much point in using typedefs or enums because all params
-// are UINT64 and the entry point is common
-//
-// EFI_SAL_SET_VECTORS
-//
-#define EFI_SAL_SET_MCA_VECTOR          0x0
-#define EFI_SAL_SET_INIT_VECTOR         0x1
-#define EFI_SAL_SET_BOOT_RENDEZ_VECTOR  0x2
-
-typedef struct {
-  UINT64  Length : 32;
-  UINT64  ChecksumValid : 1;
-  UINT64  Reserved1 : 7;
-  UINT64  ByteChecksum : 8;
-  UINT64  Reserved2 : 16;
-} SAL_SET_VECTORS_CS_N;
-
-//
-// EFI_SAL_GET_STATE_INFO, EFI_SAL_GET_STATE_INFO_SIZE,
-// EFI_SAL_CLEAR_STATE_INFO
-//
-#define EFI_SAL_MCA_STATE_INFO  0x0
-#define EFI_SAL_INIT_STATE_INFO 0x1
-#define EFI_SAL_CMC_STATE_INFO  0x2
-#define EFI_SAL_CP_STATE_INFO   0x3
-
-//
-// EFI_SAL_MC_SET_PARAMS
-//
-#define EFI_SAL_MC_SET_RENDEZ_PARAM 0x1
-#define EFI_SAL_MC_SET_WAKEUP_PARAM 0x2
-#define EFI_SAL_MC_SET_CPE_PARAM    0x3
-
-#define EFI_SAL_MC_SET_INTR_PARAM   0x1
-#define EFI_SAL_MC_SET_MEM_PARAM    0x2
-
-//
-// EFI_SAL_REGISTER_PAL_PHYSICAL_ADDR
-//
-#define EFI_SAL_REGISTER_PAL_ADDR 0x0
-
-//
-// EFI_SAL_CACHE_FLUSH
-//
-#define EFI_SAL_FLUSH_I_CACHE       0x01
-#define EFI_SAL_FLUSH_D_CACHE       0x02
-#define EFI_SAL_FLUSH_BOTH_CACHE    0x03
-#define EFI_SAL_FLUSH_MAKE_COHERENT 0x04
-
-//
-// EFI_SAL_PCI_CONFIG_READ, EFI_SAL_PCI_CONFIG_WRITE
-//
-#define EFI_SAL_PCI_CONFIG_ONE_BYTE   0x1
-#define EFI_SAL_PCI_CONFIG_TWO_BYTES  0x2
-#define EFI_SAL_PCI_CONFIG_FOUR_BYTES 0x4
-
-typedef struct {
-  UINT64  Register : 8;
-  UINT64  Function : 3;
-  UINT64  Device : 5;
-  UINT64  Bus : 8;
-  UINT64  Segment : 8;
-  UINT64  Reserved : 32;
-} SAL_PCI_ADDRESS;
-
-//
-// EFI_SAL_FREQ_BASE
-//
-#define EFI_SAL_CPU_INPUT_FREQ_BASE     0x0
-#define EFI_SAL_PLATFORM_IT_FREQ_BASE   0x1
-#define EFI_SAL_PLATFORM_RTC_FREQ_BASE  0x2
-
-//
-// EFI_SAL_UPDATE_PAL
-//
-#define EFI_SAL_UPDATE_BAD_PAL_VERSION  ((UINT64) -1)
-#define EFI_SAL_UPDATE_PAL_AUTH_FAIL    ((UINT64) -2)
-#define EFI_SAL_UPDATE_PAL_BAD_TYPE     ((UINT64) -3)
-#define EFI_SAL_UPDATE_PAL_READONLY     ((UINT64) -4)
-#define EFI_SAL_UPDATE_PAL_WRITE_FAIL   ((UINT64) -10)
-#define EFI_SAL_UPDATE_PAL_ERASE_FAIL   ((UINT64) -11)
-#define EFI_SAL_UPDATE_PAL_READ_FAIL    ((UINT64) -12)
-#define EFI_SAL_UPDATE_PAL_CANT_FIT     ((UINT64) -13)
-
-typedef struct {
-  UINT32  Size;
-  UINT32  MmddyyyyDate;
-  UINT16  Version;
-  UINT8   Type;
-  UINT8   Reserved[5];
-  UINT64  FwVendorId;
-} SAL_UPDATE_PAL_DATA_BLOCK;
-
-typedef struct _SAL_UPDATE_PAL_INFO_BLOCK {
-  struct _SAL_UPDATE_PAL_INFO_BLOCK *Next;
-  struct SAL_UPDATE_PAL_DATA_BLOCK  *DataBlock;
-  UINT8                             StoreChecksum;
-  UINT8                             Reserved[15];
-} SAL_UPDATE_PAL_INFO_BLOCK;
-
-//
-// SAL System Table Definitions
-//
-#pragma pack(1)
-typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT16  SalRevision;
-  UINT16  EntryCount;
-  UINT8   CheckSum;
-  UINT8   Reserved[7];
-  UINT16  SalAVersion;
-  UINT16  SalBVersion;
-  UINT8   OemId[32];
-  UINT8   ProductId[32];
-  UINT8   Reserved2[8];
-} SAL_SYSTEM_TABLE_HEADER;
-#pragma pack()
-
-#define EFI_SAL_ST_HEADER_SIGNATURE "SST_"
-#define EFI_SAL_REVISION            0x0300
-//
-// SAL System Types
-//
-#define EFI_SAL_ST_ENTRY_POINT        0
-#define EFI_SAL_ST_MEMORY_DESCRIPTOR  1
-#define EFI_SAL_ST_PLATFORM_FEATURES  2
-#define EFI_SAL_ST_TR_USAGE           3
-#define EFI_SAL_ST_PTC                4
-#define EFI_SAL_ST_AP_WAKEUP          5
-
-#pragma pack(1)
-typedef struct {
-  UINT8   Type; //  Type == 0
-  UINT8   Reserved[7];
-  UINT64  PalProcEntry;
-  UINT64  SalProcEntry;
-  UINT64  SalGlobalDataPointer;
-  UINT64  Reserved2[2];
-} SAL_ST_ENTRY_POINT_DESCRIPTOR;
-
-//
-// Not needed for Itanium-based OS boot
-//
-typedef struct {
-  UINT8   Type; //  Type == 1
-  UINT8   NeedVirtualRegistration;
-  UINT8   MemoryAttributes;
-  UINT8   PageAccessRights;
-  UINT8   SupportedAttributes;
-  UINT8   Reserved;
-  UINT8   MemoryType;
-  UINT8   MemoryUsage;
-  UINT64  PhysicalMemoryAddress;
-  UINT32  Length;
-  UINT32  Reserved1;
-  UINT64  OemReserved;
-} SAL_ST_MEMORY_DESCRIPTOR_ENTRY;
-
-#pragma pack()
-//
-// Memory Attributes
-//
-#define SAL_MDT_ATTRIB_WB 0x00
-//
-// #define SAL_MDT_ATTRIB_UC   0x02
-//
-#define SAL_MDT_ATTRIB_UC   0x04
-#define SAL_MDT_ATTRIB_UCE  0x05
-#define SAL_MDT_ATTRIB_WC   0x06
-
-//
-// Supported memory Attributes
-//
-#define SAL_MDT_SUPPORT_WB  0x1
-#define SAL_MDT_SUPPORT_UC  0x2
-#define SAL_MDT_SUPPORT_UCE 0x4
-#define SAL_MDT_SUPPORT_WC  0x8
-
-//
-// Virtual address registration
-//
-#define SAL_MDT_NO_VA   0x00
-#define SAL_MDT_NEED_VA 0x01
-//
-// MemoryType info
-//
-#define SAL_REGULAR_MEMORY  0x0000
-#define SAL_MMIO_MAPPING    0x0001
-#define SAL_SAPIC_IPI_BLOCK 0x0002
-#define SAL_IO_PORT_MAPPING 0x0003
-#define SAL_FIRMWARE_MEMORY 0x0004
-#define SAL_BLACK_HOLE      0x000A
-//
-// Memory Usage info
-//
-#define SAL_MDT_USAGE_UNSPECIFIED 0x00
-#define SAL_PAL_CODE              0x01
-#define SAL_BOOTSERVICE_CODE      0x02
-#define SAL_BOOTSERVICE_DATA      0x03
-#define SAL_RUNTIMESERVICE_CODE   0x04
-#define SAL_RUNTIMESERVICE_DATA   0x05
-#define SAL_IA32_OPTIONROM        0x06
-#define SAL_IA32_SYSTEMROM        0x07
-#define SAL_PMI_CODE              0x0a
-#define SAL_PMI_DATA              0x0b
-
-#pragma pack(1)
-typedef struct {
-  UINT8 Type;                     // Type == 2
-  UINT8 PlatformFeatures;
-  UINT8 Reserved[14];
-} SAL_ST_PLATFORM_FEATURES;
-#pragma pack()
-
-#define SAL_PLAT_FEAT_BUS_LOCK      0x01
-#define SAL_PLAT_FEAT_PLAT_IPI_HINT 0x02
-#define SAL_PLAT_FEAT_PROC_IPI_HINT 0x04
-
-#pragma pack(1)
-typedef struct {
-  UINT8   Type;                   // Type == 3
-  UINT8   TRType;
-  UINT8   TRNumber;
-  UINT8   Reserved[5];
-  UINT64  VirtualAddress;
-  UINT64  EncodedPageSize;
-  UINT64  Reserved1;
-} SAL_ST_TR_DECRIPTOR;
-#pragma pack()
-
-#define EFI_SAL_ST_TR_USAGE_INSTRUCTION 00
-#define EFI_SAL_ST_TR_USAGE_DATA        01
-
-#pragma pack(1)
-typedef struct {
-  UINT64  NumberOfProcessors;
-  UINT64  LocalIDRegister;
-} SAL_COHERENCE_DOMAIN_INFO;
-#pragma pack()
-
-#pragma pack(1)
-typedef struct {
-  UINT8                     Type; // Type == 4
-  UINT8                     Reserved[3];
-  UINT32                    NumberOfDomains;
-  SAL_COHERENCE_DOMAIN_INFO *DomainInformation;
-} SAL_ST_CACHE_COHERENCE_DECRIPTOR;
-#pragma pack()
-
-#pragma pack(1)
-typedef struct {
-  UINT8   Type;                   // Type == 5
-  UINT8   WakeUpType;
-  UINT8   Reserved[6];
-  UINT64  ExternalInterruptVector;
-} SAL_ST_AP_WAKEUP_DECRIPTOR;
-#pragma pack()
-//
-// FIT Entry
-//
-#define EFI_SAL_FIT_ENTRY_PTR   (0x100000000 - 32)  // 4GB - 24
-#define EFI_SAL_FIT_PALA_ENTRY  (0x100000000 - 48)  // 4GB - 32
-#define EFI_SAL_FIT_PALB_TYPE   01
-
-typedef struct {
-  UINT64  Address;
-  UINT8   Size[3];
-  UINT8   Reserved;
-  UINT16  Revision;
-  UINT8   Type : 7;
-  UINT8   CheckSumValid : 1;
-  UINT8   CheckSum;
-} EFI_SAL_FIT_ENTRY;
-
-//
-//  SAL Common Record Header
-//
-typedef struct {
-  UINT16  Length;
-  UINT8   Data[1024];
-} SAL_OEM_DATA;
-
-typedef struct {
-  UINT8 Seconds;
-  UINT8 Minutes;
-  UINT8 Hours;
-  UINT8 Reserved;
-  UINT8 Day;
-  UINT8 Month;
-  UINT8 Year;
-  UINT8 Century;
-} SAL_TIME_STAMP;
-
-typedef struct {
-  UINT64          RecordId;
-  UINT16          Revision;
-  UINT8           ErrorSeverity;
-  UINT8           ValidationBits;
-  UINT32          RecordLength;
-  SAL_TIME_STAMP  TimeStamp;
-  UINT8           OemPlatformId[16];
-} SAL_RECORD_HEADER;
-
-typedef struct {
-  EFI_GUID  Guid;
-  UINT16    Revision;
-  UINT8     ErrorRecoveryInfo;
-  UINT8     Reserved;
-  UINT32    SectionLength;
-} SAL_SEC_HEADER;
-
-//
-// SAL Processor Record
-//
-#define SAL_PROCESSOR_ERROR_RECORD_INFO \
-  { \
-    0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \
-  }
-
-#define CHECK_INFO_VALID_BIT_MASK   0x1
-#define REQUESTOR_ID_VALID_BIT_MASK 0x2
-#define RESPONDER_ID_VALID_BIT_MASK 0x4
-#define TARGER_ID_VALID_BIT_MASK    0x8
-#define PRECISE_IP_VALID_BIT_MASK   0x10
-
-typedef struct {
-  UINT64  InfoValid : 1;
-  UINT64  ReqValid : 1;
-  UINT64  RespValid : 1;
-  UINT64  TargetValid : 1;
-  UINT64  IpValid : 1;
-  UINT64  Reserved : 59;
-  UINT64  Info;
-  UINT64  Req;
-  UINT64  Resp;
-  UINT64  Target;
-  UINT64  Ip;
-} MOD_ERROR_INFO;
-
-typedef struct {
-  UINT8 CpuidInfo[40];
-  UINT8 Reserved;
-} CPUID_INFO;
-
-typedef struct {
-  UINT64  FrLow;
-  UINT64  FrHigh;
-} FR_STRUCT;
-
-#define MIN_STATE_VALID_BIT_MASK  0x1
-#define BR_VALID_BIT_MASK         0x2
-#define CR_VALID_BIT_MASK         0x4
-#define AR_VALID_BIT_MASK         0x8
-#define RR_VALID_BIT_MASK         0x10
-#define FR_VALID_BIT_MASK         0x20
-
-typedef struct {
-  UINT64    ValidFieldBits;
-  UINT8     MinStateInfo[1024];
-  UINT64    Br[8];
-  UINT64    Cr[128];
-  UINT64    Ar[128];
-  UINT64    Rr[8];
-  FR_STRUCT Fr[128];
-} PSI_STATIC_STRUCT;
-
-#define PROC_ERROR_MAP_VALID_BIT_MASK       0x1
-#define PROC_STATE_PARAMETER_VALID_BIT_MASK 0x2
-#define PROC_CR_LID_VALID_BIT_MASK          0x4
-#define PROC_STATIC_STRUCT_VALID_BIT_MASK   0x8
-#define CPU_INFO_VALID_BIT_MASK             0x1000000
-
-typedef struct {
-  SAL_SEC_HEADER    SectionHeader;
-  UINT64            ValidationBits;
-  UINT64            ProcErrorMap;
-  UINT64            ProcStateParameter;
-  UINT64            ProcCrLid;
-  MOD_ERROR_INFO    CacheError[15];
-  MOD_ERROR_INFO    TlbError[15];
-  MOD_ERROR_INFO    BusError[15];
-  MOD_ERROR_INFO    RegFileCheck[15];
-  MOD_ERROR_INFO    MsCheck[15];
-  CPUID_INFO        CpuInfo;
-  PSI_STATIC_STRUCT PsiValidData;
-} SAL_PROCESSOR_ERROR_RECORD;
-
-//
-//  Sal Platform memory Error Record
-//
-#define SAL_MEMORY_ERROR_RECORD_INFO \
-  { \
-    0xe429faf2, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \
-  }
-
-#define MEMORY_ERROR_STATUS_VALID_BIT_MASK                0x1
-#define MEMORY_PHYSICAL_ADDRESS_VALID_BIT_MASK            0x2
-#define MEMORY_ADDR_BIT_MASK                              0x4
-#define MEMORY_NODE_VALID_BIT_MASK                        0x8
-#define MEMORY_CARD_VALID_BIT_MASK                        0x10
-#define MEMORY_MODULE_VALID_BIT_MASK                      0x20
-#define MEMORY_BANK_VALID_BIT_MASK                        0x40
-#define MEMORY_DEVICE_VALID_BIT_MASK                      0x80
-#define MEMORY_ROW_VALID_BIT_MASK                         0x100
-#define MEMORY_COLUMN_VALID_BIT_MASK                      0x200
-#define MEMORY_BIT_POSITION_VALID_BIT_MASK                0x400
-#define MEMORY_PLATFORM_REQUESTOR_ID_VALID_BIT_MASK       0x800
-#define MEMORY_PLATFORM_RESPONDER_ID_VALID_BIT_MASK       0x1000
-#define MEMORY_PLATFORM_TARGET_VALID_BIT_MASK             0x2000
-#define MEMORY_PLATFORM_BUS_SPECIFIC_DATA_VALID_BIT_MASK  0x4000
-#define MEMORY_PLATFORM_OEM_ID_VALID_BIT_MASK             0x8000
-#define MEMORY_PLATFORM_OEM_DATA_STRUCT_VALID_BIT_MASK    0x10000
-
-typedef struct {
-  SAL_SEC_HEADER  SectionHeader;
-  UINT64          ValidationBits;
-  UINT64          MemErrorStatus;
-  UINT64          MemPhysicalAddress;
-  UINT64          MemPhysicalAddressMask;
-  UINT16          MemNode;
-  UINT16          MemCard;
-  UINT16          MemModule;
-  UINT16          MemBank;
-  UINT16          MemDevice;
-  UINT16          MemRow;
-  UINT16          MemColumn;
-  UINT16          MemBitPosition;
-  UINT64          ModRequestorId;
-  UINT64          ModResponderId;
-  UINT64          ModTargetId;
-  UINT64          BusSpecificData;
-  UINT8           MemPlatformOemId[16];
-} SAL_MEMORY_ERROR_RECORD;
-
-//
-//  PCI BUS Errors
-//
-#define SAL_PCI_BUS_ERROR_RECORD_INFO \
-  { \
-    0xe429faf4, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \
-  }
-
-#define PCI_BUS_ERROR_STATUS_VALID_BIT_MASK     0x1
-#define PCI_BUS_ERROR_TYPE_VALID_BIT_MASK       0x2
-#define PCI_BUS_ID_VALID_BIT_MASK               0x4
-#define PCI_BUS_ADDRESS_VALID_BIT_MASK          0x8
-#define PCI_BUS_DATA_VALID_BIT_MASK             0x10
-#define PCI_BUS_CMD_VALID_BIT_MASK              0x20
-#define PCI_BUS_REQUESTOR_ID_VALID_BIT_MASK     0x40
-#define PCI_BUS_RESPONDER_ID_VALID_BIT_MASK     0x80
-#define PCI_BUS_TARGET_VALID_BIT_MASK           0x100
-#define PCI_BUS_OEM_ID_VALID_BIT_MASK           0x200
-#define PCI_BUS_OEM_DATA_STRUCT_VALID_BIT_MASK  0x400
-
-typedef enum {
-  Unknown,
-  DataParityError,
-  SystemError,
-  MasterAbort,
-  BusTimeout,
-  MasterDataParityError,
-  AddressParityError,
-  CommandParityError
-} PCI_BUS_ERROR_TYPE;
-
-typedef struct {
-  UINT8 BusNumber;
-  UINT8 SegmentNumber;
-} PCI_BUS_ID;
-
-typedef struct {
-  SAL_SEC_HEADER  SectionHeader;
-  UINT64          ValidationBits;
-  UINT64          PciBusErrorStatus;
-  UINT16          PciBusErrorType;
-  PCI_BUS_ID      PciBusId;
-  UINT32          Reserved;
-  UINT64          PciBusAddress;
-  UINT64          PciBusData;
-  UINT64          PciBusCommand;
-  UINT64          PciBusRequestorId;
-  UINT64          PciBusResponderId;
-  UINT64          PciBusTargetId;
-  UINT8           PciBusOemId[16];
-} SAL_PCI_BUS_ERROR_RECORD;
-
-//
-//  PCI Component Errors
-//
-#define SAL_PCI_COMP_ERROR_RECORD_INFO \
-  { \
-    0xe429faf6, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \
-  }
-
-#define PCI_COMP_ERROR_STATUS_VALID_BIT_MASK    0x1
-#define PCI_COMP_INFO_VALID_BIT_MASK            0x2
-#define PCI_COMP_MEM_NUM_VALID_BIT_MASK         0x4
-#define PCI_COMP_IO_NUM_VALID_BIT_MASK          0x8
-#define PCI_COMP_REG_DATA_PAIR_VALID_BIT_MASK   0x10
-#define PCI_COMP_OEM_DATA_STRUCT_VALID_BIT_MASK 0x20
-
-typedef struct {
-  UINT16  VendorId;
-  UINT16  DeviceId;
-  UINT8   ClassCode[3];
-  UINT8   FunctionNumber;
-  UINT8   DeviceNumber;
-  UINT8   BusNumber;
-  UINT8   SegmentNumber;
-  UINT8   Reserved[5];
-} PCI_COMP_INFO;
-
-typedef struct {
-  SAL_SEC_HEADER  SectionHeader;
-  UINT64          ValidationBits;
-  UINT64          PciComponentErrorStatus;
-  PCI_COMP_INFO   PciComponentInfo;
-  UINT32          PciComponentMemNum;
-  UINT32          PciComponentIoNum;
-  UINT8           PciBusOemId[16];
-} SAL_PCI_COMPONENT_ERROR_RECORD;
-
-//
-//  Sal Device Errors Info.
-//
-#define SAL_DEVICE_ERROR_RECORD_INFO \
-  { \
-    0xe429faf3, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \
-  }
-
-#define SEL_RECORD_ID_VALID_BIT_MASK      0x1;
-#define SEL_RECORD_TYPE_VALID_BIT_MASK    0x2;
-#define SEL_GENERATOR_ID_VALID_BIT_MASK   0x4;
-#define SEL_EVM_REV_VALID_BIT_MASK        0x8;
-#define SEL_SENSOR_TYPE_VALID_BIT_MASK    0x10;
-#define SEL_SENSOR_NUM_VALID_BIT_MASK     0x20;
-#define SEL_EVENT_DIR_TYPE_VALID_BIT_MASK 0x40;
-#define SEL_EVENT_DATA1_VALID_BIT_MASK    0x80;
-#define SEL_EVENT_DATA2_VALID_BIT_MASK    0x100;
-#define SEL_EVENT_DATA3_VALID_BIT_MASK    0x200;
-
-typedef struct {
-  SAL_SEC_HEADER  SectionHeader;
-  UINT64          ValidationBits;
-  UINT16          SelRecordId;
-  UINT8           SelRecordType;
-  UINT32          TimeStamp;
-  UINT16          GeneratorId;
-  UINT8           EvmRevision;
-  UINT8           SensorType;
-  UINT8           SensorNum;
-  UINT8           EventDirType;
-  UINT8           Data1;
-  UINT8           Data2;
-  UINT8           Data3;
-} SAL_DEVICE_ERROR_RECORD;
-
-//
-//  Sal SMBIOS Device Errors Info.
-//
-#define SAL_SMBIOS_ERROR_RECORD_INFO \
-  { \
-    0xe429faf5, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \
-  }
-
-#define SMBIOS_EVENT_TYPE_VALID_BIT_MASK  0x1
-#define SMBIOS_LENGTH_VALID_BIT_MASK      0x2
-#define SMBIOS_TIME_STAMP_VALID_BIT_MASK  0x4
-#define SMBIOS_DATA_VALID_BIT_MASK        0x8
-
-typedef struct {
-  SAL_SEC_HEADER  SectionHeader;
-  UINT64          ValidationBits;
-  UINT8           SmbiosEventType;
-  UINT8           SmbiosLength;
-  UINT8           SmbiosBcdTimeStamp[6];
-} SAL_SMBIOS_DEVICE_ERROR_RECORD;
-
-//
-//  Sal Platform Specific Errors Info.
-//
-#define SAL_PLATFORM_ERROR_RECORD_INFO \
-  { \
-    0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} \
-  }
-
-#define PLATFORM_ERROR_STATUS_VALID_BIT_MASK    0x1
-#define PLATFORM_REQUESTOR_ID_VALID_BIT_MASK    0x2
-#define PLATFORM_RESPONDER_ID_VALID_BIT_MASK    0x4
-#define PLATFORM_TARGET_VALID_BIT_MASK          0x8
-#define PLATFORM_SPECIFIC_DATA_VALID_BIT_MASK   0x10
-#define PLATFORM_OEM_ID_VALID_BIT_MASK          0x20
-#define PLATFORM_OEM_DATA_STRUCT_VALID_BIT_MASK 0x40
-#define PLATFORM_OEM_DEVICE_PATH_VALID_BIT_MASK 0x80
-
-typedef struct {
-  SAL_SEC_HEADER  SectionHeader;
-  UINT64          ValidationBits;
-  UINT64          PlatformErrorStatus;
-  UINT64          PlatformRequestorId;
-  UINT64          PlatformResponderId;
-  UINT64          PlatformTargetId;
-  UINT64          PlatformBusSpecificData;
-  UINT8           OemComponentId[16];
-} SAL_PLATFORM_SPECIFIC_ERROR_RECORD;
-
-//
-// Union of all the possible Sal Record Types
-//
-typedef union {
-  SAL_RECORD_HEADER                   *RecordHeader;
-  SAL_PROCESSOR_ERROR_RECORD          *SalProcessorRecord;
-  SAL_PCI_BUS_ERROR_RECORD            *SalPciBusRecord;
-  SAL_PCI_COMPONENT_ERROR_RECORD      *SalPciComponentRecord;
-  SAL_DEVICE_ERROR_RECORD             *ImpiRecord;
-  SAL_SMBIOS_DEVICE_ERROR_RECORD      *SmbiosRecord;
-  SAL_PLATFORM_SPECIFIC_ERROR_RECORD  *PlatformRecord;
-  SAL_MEMORY_ERROR_RECORD             *MemoryRecord;
-  UINT8                               *Raw;
-} SAL_ERROR_RECORDS_POINTERS;
-
-#pragma pack()
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Include/Ipf/TianoBind.h b/EdkCompatibilityPkg/Foundation/Include/Ipf/TianoBind.h
deleted file mode 100644
index ab84a90e00..0000000000
--- a/EdkCompatibilityPkg/Foundation/Include/Ipf/TianoBind.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  TianoBind.h
-
-Abstract:
-
-  Tiano's Processor or Compiler specific defines and types for Intel?Itanium(TM) 
-  besides EfiBind.h.
-
---*/
-
-#ifndef _TIANO_BIND_H_
-#define _TIANO_BIND_H_
-
-#include <EfiBind.h>
-
-#define EFI_DXE_ENTRY_POINT(InitFunction)
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib.inf b/EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib.inf
index afc72f1679..4c1eb7633b 100644
--- a/EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib.inf
@@ -41,10 +41,6 @@ COMPONENT_TYPE  = LIBRARY
   memcpy.c           | GCC
   memset.c           | GCC
   
-[sources.Ipf]  
-  memcpy.c
-  memset.c
-  
 [sources.ARM]
   Dummy.c
 
diff --git a/EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib_Edk2.inf b/EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib_Edk2.inf
index bbe3f33d5d..4554514663 100644
--- a/EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib_Edk2.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/CompilerStub/CompilerStubLib_Edk2.inf
@@ -39,13 +39,6 @@ COMPONENT_TYPE  = LIBRARY
 #  x64/memcpy.asm
 #  x64/memset.asm
   
-[sources.Ipf]  
-  memcpy.c | MSFT
-  memset.c | MSFT
-  memcpy.c | INTEL
-  memset.c | INTEL
-  memcpy.c | GCC
-
 [sources.ebc] 
   memcpy.c
   memset.c
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib.inf b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib.inf
index 885e52cb20..c5aadc3683 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib.inf
@@ -49,9 +49,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   X64/PerformancePrimitives.c
 
-[sources.ipf]
-  Ipf/PerformancePrimitives.s
-
 [sources.ebc]
   Ebc/PerformancePrimitives.c
 
@@ -89,9 +86,6 @@ COMPONENT_TYPE  = LIBRARY
 [libraries.x64]
   CpuIA32Lib
 
-[libraries.ipf]
-  CpuIA64Lib
-
 [libraries.ARM]
   CompilerIntrinsicsLib
 
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib_Edk2.inf b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib_Edk2.inf
index c6520a5f46..12164218e2 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib_Edk2.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiDriverLib_Edk2.inf
@@ -49,14 +49,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   X64/PerformancePrimitives.c
 
-[sources.ipf]
-  Ipf/PerformancePrimitives.s
-  #
-  # Only for CYGWINGCC IPF tool chain, EFI_BREAKPOINT and MEMORY_FENCE
-  # is defined as two functions EcpEfiBreakPoint and EcpMemoryFence.
-  #
-  Ipf/AsmCpuMisc.s | GCC
-
 [sources.ebc]
   Ebc/PerformancePrimitives.c
 
@@ -87,7 +79,4 @@ COMPONENT_TYPE  = LIBRARY
 [libraries.x64]
   CpuIA32Lib
 
-[libraries.ipf]
-  CpuIA64Lib
-
 [nmake.common]
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Ipf/AsmCpuMisc.s b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Ipf/AsmCpuMisc.s
deleted file mode 100644
index 81837472bf..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Ipf/AsmCpuMisc.s
+++ /dev/null
@@ -1,44 +0,0 @@
-/// @file
-///   Contains an implementation of EcpEfiBreakPoint and EcpMemoryFence on Itanium-based
-///   architecture.
-///
-/// Copyright (c) 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.
-///
-/// Module Name:  AsmCpuMisc.s
-///
-///
-
-
-.text
-.proc EcpEfiBreakPoint
-.type EcpEfiBreakPoint, @function
-
-EcpEfiBreakPoint::
-        break.i 0;;
-        br.ret.dpnt    b0;;
-
-.endp EcpEfiBreakPoint
-
-.proc EcpMemoryFence
-.type EcpMemoryFence, @function
-
-EcpMemoryFence::
-        mf;;    // memory access ordering
-
-        // do we need the mf.a also here?
-        mf.a    // wait for any IO to complete?
-        
-        // not sure if we need serialization here, just put it, in case...
-        
-        srlz.d;;
-        srlz.i;;
-        
-        br.ret.dpnt    b0;;
-.endp EcpMemoryFence
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Ipf/PerformancePrimitives.s b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Ipf/PerformancePrimitives.s
deleted file mode 100644
index d5b0a1af02..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Ipf/PerformancePrimitives.s
+++ /dev/null
@@ -1,61 +0,0 @@
-//++
-// Copyright (c) 2004, 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:
-//
-//    PerformancePrimitives.s
-//
-//  Abstract:
-//
-//
-// Revision History:
-//
-//--
-
-.file  "PerformancePrimitives.s"
-
-#include  "IpfMacro.i"
-
-//-----------------------------------------------------------------------------
-//++
-// GetTimerValue
-//
-// Implementation of CPU-based time service
-//
-// On Entry :
-//    EFI_STATUS
-//    GetTimerValue (
-//      OUT UINT64    *TimerValue
-//    )
-//
-// Return Value: 
-//        r8  = Status
-//        r9  = 0
-//        r10 = 0
-//        r11 = 0
-// 
-// As per static calling conventions. 
-// 
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (GetTimerValue)
-
-      NESTED_SETUP (1,8,0,0)
-      mov               r8 = ar.itc;;
-      st8               [r32]= r8
-      mov               r8 = r0
-      mov               r9 = r0
-      mov               r10 = r0
-      mov               r11 = r0
-      NESTED_RETURN
-
-PROCEDURE_EXIT (GetTimerValue)
-//---------------------------------------------------------------------------
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/CpuFuncs.h b/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/CpuFuncs.h
deleted file mode 100644
index 456569c83a..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/CpuFuncs.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  CpuFuncs.h
-
-Abstract:
-
---*/
-
-#ifndef _CPU_FUNCS_H
-#define _CPU_FUNCS_H
-
-#define EFI_CPUID_SIGNATURE           0x0
-#define EFI_CPUID_VERSION_INFO        0x1
-#define EFI_CPUID_CACHE_INFO          0x2
-#define EFI_CPUID_SERIAL_NUMBER       0x3
-#define EFI_CPUID_EXTENDED_FUNCTION   0x80000000
-#define EFI_CPUID_EXTENDED_CPU_SIG    0x80000001
-#define EFI_CPUID_BRAND_STRING1       0x80000002
-#define EFI_CPUID_BRAND_STRING2       0x80000003
-#define EFI_CPUID_BRAND_STRING3       0x80000004
-
-#define EFI_MSR_IA32_APIC_BASE        0x1B
-#define EFI_MSR_EBC_HARD_POWERON      0x2A
-#define EFI_MSR_EBC_SOFT_POWERON      0x2B
-#define EFI_MSR_EBC_FREQUENCY_ID      0x2C
-#define EFI_MSR_IA32_BIOS_UPDT_TRIG   0x79
-#define EFI_MSR_IA32_BIOS_SIGN_ID     0x8B
-#define EFI_APIC_GLOBAL_ENABLE        0x800
-
-#define EFI_CACHE_VARIABLE_MTRR_BASE  0x200
-#define EFI_CACHE_VARIABLE_MTRR_END   0x20F
-#define EFI_CACHE_IA32_MTRR_DEF_TYPE  0x2FF
-#define EFI_CACHE_VALID_ADDRESS       0xFFFFFF000
-#define EFI_CACHE_MTRR_VALID          0x800
-#define EFI_CACHE_FIXED_MTRR_VALID    0x400
-#define EFI_MSR_VALID_MASK            0xFFFFFFFFF
-
-#define EFI_IA32_MTRR_FIX64K_00000    0x250
-#define EFI_IA32_MTRR_FIX16K_80000    0x258
-#define EFI_IA32_MTRR_FIX16K_A0000    0x259
-#define EFI_IA32_MTRR_FIX4K_C0000     0x268
-#define EFI_IA32_MTRR_FIX4K_C8000     0x269
-#define EFI_IA32_MTRR_FIX4K_D0000     0x26A
-#define EFI_IA32_MTRR_FIX4K_D8000     0x26B
-#define EFI_IA32_MTRR_FIX4K_E0000     0x26C
-#define EFI_IA32_MTRR_FIX4K_E8000     0x26D
-#define EFI_IA32_MTRR_FIX4K_F0000     0x26E
-#define EFI_IA32_MTRR_FIX4K_F8000     0x26F
-
-#define EFI_IA32_MCG_CAP              0x179
-#define EFI_IA32_MCG_CTL              0x17B
-#define EFI_IA32_MC0_CTL              0x400
-#define EFI_IA32_MC0_STATUS           0x401
-
-#define EFI_CACHE_UNCACHEABLE         0
-#define EFI_CACHE_WRITECOMBINING      1
-#define EFI_CACHE_WRITETHROUGH        4
-#define EFI_CACHE_WRITEPROTECTED      5
-#define EFI_CACHE_WRITEBACK           6
-
-UINT64
-EfiReadTsc (
-  VOID
-  )
-/*++                   
-                                                                                                       
-Routine Description:                                                
-
-  Read Time stamp.
-  
-Arguments:                
-
-  None                 
-  
-Returns:                                                            
-
-   Return the read data                                                
-   
---*/
-;
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/EsalRuntimeLib.h b/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/EsalRuntimeLib.h
deleted file mode 100644
index 85a2cb5746..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/EsalRuntimeLib.h
+++ /dev/null
@@ -1,1305 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  EsalRuntimeLib.h
-  
-Abstract:
-
-  SAL Driver Lib
-
-Revision History
-
---*/
-
-#ifndef _ESAL_RUNTIME_LIB_H_
-#define _ESAL_RUNTIME_LIB_H_
-
-#include "SalApi.h"
-#include "EfiFirmwareVolumeHeader.h"
-
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalBootService)
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalGuid)
-#include EFI_PROTOCOL_DEFINITION (FirmwareVolumeBlock)
-
-VOID
-EsalRuntimeLibVirtualNotify (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-EsalInitializeRuntimeDriverLib (
-  IN EFI_HANDLE           ImageHandle,
-  IN EFI_SYSTEM_TABLE     *SystemTable
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ImageHandle - Image Handle
-  SystemTable - the System Table 
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-SAL_RETURN_REGS
-CallEsalService (
-  IN  EFI_GUID                                       *ClassGuid,
-  IN   UINT64                                        FunctionId,
-  IN  UINT64                                         Arg2,
-  IN  UINT64                                         Arg3,
-  IN  UINT64                                         Arg4,
-  IN  UINT64                                         Arg5,
-  IN  UINT64                                         Arg6,
-  IN  UINT64                                         Arg7,
-  IN  UINT64                                         Arg8
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ClassGuid   - TODO: add argument description
-  FunctionId  - TODO: add argument description
-  Arg2        - TODO: add argument description
-  Arg3        - TODO: add argument description
-  Arg4        - TODO: add argument description
-  Arg5        - TODO: add argument description
-  Arg6        - TODO: add argument description
-  Arg7        - TODO: add argument description
-  Arg8        - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-//  Assembly Functions
-//
-
-SAL_RETURN_REGS
-EsalGetEntryPoint (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalSetPhysicalEntryPoint (
-  IN  UINT64  EntryPoint,
-  IN  UINT64  Gp
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  EntryPoint  - TODO: add argument description
-  Gp          - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalSetVirtualEntryPoint (
-  IN  UINT64  EntryPoint,
-  IN  UINT64  Gp
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  EntryPoint  - TODO: add argument description
-  Gp          - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalSetPhysicalModuleGlobal (
-  IN  VOID    *Global
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Global  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalSetVirtualModuleGlobal (
-  IN  VOID    *Global
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Global  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalGetModuleGlobal (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-GetIrrData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-GetPsrData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-GetProcIdData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-VOID
-SwitchCpuStack (
-  IN  UINT64  NewBsp,
-  IN  UINT64  OldBsp
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  NewBsp  - TODO: add argument description
-  OldBsp  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-//  PAL PROC Class
-//
-
-SAL_RETURN_REGS
-SalPalProc (
-  IN  UINT64            Arg1,
-  IN  UINT64            Arg2,
-  IN  UINT64            Arg3,
-  IN  UINT64            Arg4
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Arg1  - TODO: add argument description
-  Arg2  - TODO: add argument description
-  Arg3  - TODO: add argument description
-  Arg4  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-SalRegisterNewPalEntry (
-  IN  BOOLEAN                     PhysicalPalAddress,
-  IN  EFI_PHYSICAL_ADDRESS        NewPalAddress
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  PhysicalPalAddress  - TODO: add argument description
-  NewPalAddress       - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-SalGetPalEntryPointer (
-  IN  BOOLEAN                     PhysicalPalAddress
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  PhysicalPalAddress  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-//  SAL BASE Class
-//
-
-SAL_RETURN_REGS
-SalProcSetVectors (
-  IN  UINT64                      SalVectorType,
-  IN  UINT64                      PhyAddr1,
-  IN  UINT64                      Gp1,
-  IN  UINT64                      LengthCs1,
-  IN  UINT64                      PhyAddr2,
-  IN  UINT64                      Gp2,
-  IN  UINT64                      LengthCs2
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  SalVectorType - TODO: add argument description
-  PhyAddr1      - TODO: add argument description
-  Gp1           - TODO: add argument description
-  LengthCs1     - TODO: add argument description
-  PhyAddr2      - TODO: add argument description
-  Gp2           - TODO: add argument description
-  LengthCs2     - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-SalProcMcRendez (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-SalProcMcSetParams (
-  IN  UINT64                      ParamType,
-  IN  UINT64                      IntOrMem,
-  IN  UINT64                      IntOrMemVal,
-  IN  UINT64                      Timeout,
-  IN  UINT64                      McaOpt
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ParamType   - TODO: add argument description
-  IntOrMem    - TODO: add argument description
-  IntOrMemVal - TODO: add argument description
-  Timeout     - TODO: add argument description
-  McaOpt      - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalProcGetVectors (
-  IN  UINT64                      VectorType
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  VectorType  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalProcMcGetParams (
-  IN  UINT64                      ParamInfoType
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ParamInfoType - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalProcMcGetMcParams (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalProcGetMcCheckinFlags (
-  IN  UINT64                      ProcessorUnit
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ProcessorUnit - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-//  Sal Base Class enums
-//
-
-typedef enum {
-  McaVector,
-  BspInitVector,
-  BootRendezVector,
-  ApInitVector
-} ESAL_GET_VECTOR_TYPE;
-
-SAL_RETURN_REGS
-SalInitializeThreshold (
-  IN  VOID                        *ThresholdStruct,
-  IN  UINT64                      Count,
-  IN  UINT64                      Duration
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ThresholdStruct - TODO: add argument description
-  Count           - TODO: add argument description
-  Duration        - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-SalBumpThresholdCount (
-  IN  VOID                        *ThresholdStruct,
-  IN  UINT64                      Count,
-  IN  UINT64                      Duration
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ThresholdStruct - TODO: add argument description
-  Count           - TODO: add argument description
-  Duration        - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-SalGetThresholdCount (
-  IN  VOID                        *ThresholdStruct,
-  IN  UINT64                      Count,
-  IN  UINT64                      Duration
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ThresholdStruct - TODO: add argument description
-  Count           - TODO: add argument description
-  Duration        - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-//  Common Lib Function
-//
-
-EFI_STATUS
-RegisterEsalFunction (
-  IN  UINT64                                    FunctionId,
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  SAL_INTERNAL_EXTENDED_SAL_PROC            Function,
-  IN  VOID                                      *ModuleGlobal
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  FunctionId    - TODO: add argument description
-  ClassGuid     - TODO: add argument description
-  Function      - TODO: add argument description
-  ModuleGlobal  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-RegisterEsalClass (
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  VOID                                      *ModuleGlobal,
-  ...
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ClassGuid     - TODO: add argument description
-  ModuleGlobal  - TODO: add argument description
-  ...           - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-//  MP Class Functions
-//
-SAL_RETURN_REGS
-LibMpAddCpuData (
-  IN    UINT64      CpuGlobalId,
-  IN    BOOLEAN     Enabled,
-  IN    UINT64      PalCompatability
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  CpuGlobalId       - TODO: add argument description
-  Enabled           - TODO: add argument description
-  PalCompatability  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpRemoveCpuData (
-  IN    UINT64      CpuGlobalId
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  CpuGlobalId - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpModifyCpuData (
-  IN    UINT64      CpuGlobalId,
-  IN    BOOLEAN     Enabled,
-  IN    UINT64      PalCompatability
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  CpuGlobalId       - TODO: add argument description
-  Enabled           - TODO: add argument description
-  PalCompatability  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpGetCpuDataByID (
-  IN    UINT64      CpuGlobalId,
-  IN    BOOLEAN     IndexByEnabledCpu
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  CpuGlobalId       - TODO: add argument description
-  IndexByEnabledCpu - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpGetCpuDataByIndex (
-  IN    UINT64      Index,
-  IN    BOOLEAN     IndexByEnabledCpu
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Index             - TODO: add argument description
-  IndexByEnabledCpu - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpSendIpi (
-  IN  UINT64                ProcessorNumber,
-  IN  UINT64                VectorNumber,
-  IN  EFI_DELIVERY_MODE     DeliveryMode,
-  IN  BOOLEAN               IRFlag
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  ProcessorNumber - TODO: add argument description
-  VectorNumber    - TODO: add argument description
-  DeliveryMode    - TODO: add argument description
-  IRFlag          - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpCurrentProcessor (
-  IN    BOOLEAN     IndexByEnabledCpu
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  IndexByEnabledCpu - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibGetNumProcessors (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  None
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpSaveMinStatePointer (
-  IN    UINT64                CpuGlobalId,
-  IN    EFI_PHYSICAL_ADDRESS  MinStatePointer
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  CpuGlobalId     - TODO: add argument description
-  MinStatePointer - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpRestoreMinStatePointer (
-  IN    UINT64                CpuGlobalId
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  CpuGlobalId - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-//  MCA Class Functions
-//
-
-EFI_STATUS
-LibMcaGetStateInfo (
-  IN  UINT64                                      CpuId,
-  OUT EFI_PHYSICAL_ADDRESS                        *StateBufferPointer,
-  OUT UINT64                                      *RequiredStateBufferSize
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  CpuId                   - TODO: add argument description
-  StateBufferPointer      - TODO: add argument description
-  RequiredStateBufferSize - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-LibMcaRegisterCpu (
-  IN  UINT64                                      CpuId,
-  IN  EFI_PHYSICAL_ADDRESS                        StateBufferAddress
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  CpuId               - TODO: add argument description
-  StateBufferAddress  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-// FVB Variables Class
-//
-EFI_STATUS
-EsalReadBlock (
-  IN UINTN                                        Instance,
-  IN EFI_LBA                                      Lba,
-  IN UINTN                                        Offset,
-  IN OUT UINTN                                    *NumBytes,
-  IN UINT8                                        *Buffer
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Instance  - TODO: add argument description
-  Lba       - TODO: add argument description
-  Offset    - TODO: add argument description
-  NumBytes  - TODO: add argument description
-  Buffer    - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-EsalWriteBlock (
-  IN UINTN                                        Instance,
-  IN EFI_LBA                                      Lba,
-  IN UINTN                                        Offset,
-  IN OUT UINTN                                    *NumBytes,
-  IN UINT8                                        *Buffer
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Instance  - TODO: add argument description
-  Lba       - TODO: add argument description
-  Offset    - TODO: add argument description
-  NumBytes  - TODO: add argument description
-  Buffer    - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-EsalEraseBlock (
-  IN UINTN                                Instance,
-  IN UINTN                                Lba
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Instance  - TODO: add argument description
-  Lba       - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-EsalGetVolumeAttributes (
-  IN UINTN                                Instance,
-  OUT EFI_FVB_ATTRIBUTES                  *Attributes
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Instance    - TODO: add argument description
-  Attributes  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-EsalSetVolumeAttributes (
-  IN UINTN                                Instance,
-  IN EFI_FVB_ATTRIBUTES                   Attributes
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Instance    - TODO: add argument description
-  Attributes  - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-EsalGetPhysicalAddress (
-  IN UINTN                                Instance,
-  OUT EFI_PHYSICAL_ADDRESS                *Address
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Instance  - TODO: add argument description
-  Address   - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-EsalGetBlockSize (
-  IN UINTN                                Instance,
-  IN EFI_LBA                              Lba,
-  OUT UINTN                               *BlockSize,
-  OUT UINTN                               *NumOfBlocks
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  Instance    - TODO: add argument description
-  Lba         - TODO: add argument description
-  BlockSize   - TODO: add argument description
-  NumOfBlocks - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-//
-// SAL ELOG Functions
-//
-EFI_STATUS
-LibSalGetStateInfo (
-  IN  UINT64                                      McaType,
-  IN  UINT8                                       *McaBuffer,
-  OUT UINTN                                       *Size
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  McaType   - TODO: add argument description
-  McaBuffer - TODO: add argument description
-  Size      - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-LibSalGetStateInfoSize (
-  IN  UINT64                                      McaType,
-  OUT UINTN                                       *Size
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  McaType - TODO: add argument description
-  Size    - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-LibSalClearStateInfo (
-  IN  UINT64                                      McaType
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  McaType - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-LibEsalGetStateBuffer (
-  IN  UINT64                                      McaType,
-  OUT UINT8                                       **McaBuffer,
-  OUT UINTN                                       *Index
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  McaType   - TODO: add argument description
-  McaBuffer - TODO: add argument description
-  Index     - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-EFI_STATUS
-LibEsalSaveStateBuffer (
-  IN  UINT64                                      McaType
-  )
-/*++
-
-Routine Description:
-
-  TODO: Add function description
-
-Arguments:
-
-  McaType - TODO: add argument description
-
-Returns:
-
-  TODO: add return values
-
---*/
-;
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/ProcDep.h b/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/ProcDep.h
deleted file mode 100644
index ab86b6073d..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/ProcDep.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  ProcDep.h
-
-Abstract:
-
-  IPF specific Runtime Lib code. IPF has a SAL API that does not
-  exit on IA-32. Thus
-
---*/
-
-#ifndef _PROC_DEP_H_
-#define _PROC_DEP_H_
-
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalGuid)
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalBootService)
-#include "SalApi.h"
-
-EFI_STATUS
-RegisterEsalFunction (
-  IN  UINT64                                    FunctionId,
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  SAL_INTERNAL_EXTENDED_SAL_PROC            Function,
-  IN  VOID                                      *ModuleGlobal
-  )
-/*++
-
-Routine Description:
-
-  Register ESAL Class Function and it's asociated global.
-  This function is boot service only!
-
-Arguments:
-  FunctionId    - ID of function to register
-  ClassGuid     - GUID of function class 
-  Function      - Function to register under ClassGuid/FunctionId pair
-  ModuleGlobal  - Module global for Function.
-
-Returns: 
-  EFI_SUCCESS - If ClassGuid/FunctionId Function was registered.
-
---*/
-;
-
-EFI_STATUS
-RegisterEsalClass (
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  VOID                                      *ModuleGlobal,
-  ...
-  )
-/*++
-
-Routine Description:
-
-  Register ESAL Class and it's asociated global.
-  This function is boot service only!
-
-Arguments:
-  ClassGuid     - GUID of function class 
-  ModuleGlobal  - Module global for Function.
-  ..            - SAL_INTERNAL_EXTENDED_SAL_PROC and FunctionId pairs. NULL 
-                  indicates the end of the list.
-
-Returns: 
-  EFI_SUCCESS - All members of ClassGuid registered
-
---*/
-;
-
-SAL_RETURN_REGS
-EfiCallEsalService (
-  IN  EFI_GUID                                      *ClassGuid,
-  IN  UINT64                                        FunctionId,
-  IN  UINT64                                        Arg2,
-  IN  UINT64                                        Arg3,
-  IN  UINT64                                        Arg4,
-  IN  UINT64                                        Arg5,
-  IN  UINT64                                        Arg6,
-  IN  UINT64                                        Arg7,
-  IN  UINT64                                        Arg8
-  )
-/*++
-
-Routine Description:
-
-  Call module that is not linked direclty to this module. This code is IP 
-  relative and hides the binding issues of virtual or physical calling. The
-  function that gets dispatched has extra arguments that include the registered
-  module global and a boolean flag to indicate if the system is in virutal mode.
-
-Arguments:
-  ClassGuid   - GUID of function
-  FunctionId  - Function in ClassGuid to call
-  Arg2        - Argument 2 ClassGuid/FunctionId defined
-  Arg3        - Argument 3 ClassGuid/FunctionId defined
-  Arg4        - Argument 4 ClassGuid/FunctionId defined
-  Arg5        - Argument 5 ClassGuid/FunctionId defined
-  Arg6        - Argument 6 ClassGuid/FunctionId defined
-  Arg7        - Argument 7 ClassGuid/FunctionId defined
-  Arg8        - Argument 8 ClassGuid/FunctionId defined
-
-Returns: 
-  Status of ClassGuid/FuncitonId
-
---*/
-;
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/SalDriverLib.h b/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/SalDriverLib.h
deleted file mode 100644
index 15926dc4ce..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Ipf/SalDriverLib.h
+++ /dev/null
@@ -1,1454 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  SalDriverLib.h
-  
-Abstract:
-
-  SAL Driver Lib
-
-Revision History
-
---*/
-
-#ifndef _SAL_DRIVER_LIB_H_
-#define _SAL_DRIVER_LIB_H_
-
-#include "Tiano.h"
-#include "EfiDriverLib.h"
-#include "SalApi.h"
-
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalBootService)
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalGuid)
-
-//
-//  Assembly Functions
-//
-SAL_RETURN_REGS
-LibGetEsalPhyData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get Esal global data in physical mode.
-
-Arguments:
-
-  None
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibGetEsalVirtData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get Esal global data in virtual mode.
-
-Arguments:
-
-  None
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibSetEsalPhyData (
-  IN  VOID                        *Ptr,
-  IN  UINT64                      GP
-  )
-/*++
-
-Routine Description:
-
-  Set Esal global data in physical mode.
-
-Arguments:
-
-  Ptr            - Pointer to the data
-  GP             - Global pointer
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibSetEsalVirtData (
-  IN  VOID                        *Ptr,
-  IN  UINT64                      GP
-  )
-/*++
-
-Routine Description:
-
-  Set Esal global data in virtual mode.
-
-Arguments:
-
-  Ptr            - Pointer to the data
-  GP             - Global pointer
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibGetGlobalPhyData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get Esal global data in physical mode.
-
-Arguments:
-
-  None
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibGetGlobalVirtData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get Esal global data in virtual mode.
-
-Arguments:
-
-  None
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibSetGlobalPhyData (
-  IN  VOID                        *Ptr,
-  IN  UINT64                      GP
-  )
-/*++
-
-Routine Description:
-
-  Set Esal global data in physical mode.
-
-Arguments:
-
-  Ptr            - Pointer to the data
-  GP             - Global pointer
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibSetGlobalVirtData (
-  IN  VOID                        *Ptr,
-  IN  UINT64                      GP
-  )
-/*++
-
-Routine Description:
-
-  Set Esal global data in virtual mode.
-
-Arguments:
-
-  Ptr            - Pointer to the data
-  GP             - Global pointer
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-GetIrrData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get interrupt request register.
-
-Arguments:
-
-  None
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-VOID
-PrepareApsForHandOverToOS (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Prepare AP info for hand over to OS.
-
-Arguments:
-
-  None
-
-Returns:
-
-  None
-
---*/
-;
-
-VOID
-HandOverApsToOS (
-  IN UINT64  a1,
-  IN UINT64  a2,
-  IN UINT64  a3
-  )
-/*++
-
-Routine Description:
-
-  Hand over AP info to OS.
-
-Arguments:
-
-  a1    - Address to call into
-  
-  a2    - GP
-  
-  a3    - Undefined
-
-Returns:
-
-  None
-
---*/
-;
-
-SAL_RETURN_REGS
-GetPsrData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get PSR register.
-
-Arguments:
-
-  None
-
-Returns:
-
-  Output regs.
-
---*/
-;
-
-SAL_RETURN_REGS
-GetProcIdData (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get LID
-
-Arguments:
-
-  None
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-VOID
-SwitchCpuStack (
-  IN  UINT64  NewBsp,
-  IN  UINT64  OldBsp
-  )
-/*++
-
-Routine Description:
-
-  Switch BSP
-
-Arguments:
-
-  NewBsp    - New BSP index
-  OldBsp    - Old BSP index
-
-Returns:
-
-  None
-
---*/
-;
-
-//
-//  SAL Reset Class
-//
-VOID
-SalResetSystem (
-  IN EFI_RESET_TYPE                ResetType,
-  IN EFI_STATUS                    ResetStatus,
-  IN UINTN                         DataSize,
-  IN CHAR16                        *ResetData
-  )
-/*++
-
-Routine Description:
-
-  Reset system
-
-Arguments:
-
-  ResetType     - Reset type
-  ResetStatus   - Reset status
-  DataSize      - Size of ResetData
-  ResetData     - Description string
-
-Returns:
-
-  None
-
---*/
-;
-
-//
-//  PAL PROC Class
-//
-SAL_RETURN_REGS
-SalPalProc (
-  IN  UINT64            Arg1,
-  IN  UINT64            Arg2,
-  IN  UINT64            Arg3,
-  IN  UINT64            Arg4
-  )
-/*++
-
-Routine Description:
-
-  Call pal proc.
-
-Arguments:
-
-  Arg1          - Pal call index
-  Arg2          - First arg
-  Arg3          - Second arg
-  Arg4          - Third arg
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-SalRegisterNewPalEntry (
-  IN  BOOLEAN                     PhysicalPalAddress,
-  IN  EFI_PHYSICAL_ADDRESS        NewPalAddress
-  )
-/*++
-
-Routine Description:
-
-  Register Pal entry.
-
-Arguments:
-
-  PhysicalPalAddress      - The address is physical or virtual
-  NewPalAddress           - New Pal entry address
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-SalGetPalEntryPointer (
-  IN  BOOLEAN                     PhysicalPalAddress
-  )
-/*++
-
-Routine Description:
-
-  Get Pal entry.
-
-Arguments:
-
-  PhysicalPalAddress      - The address is physical or virtual
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-//
-//  SAL MTC Class
-//
-EFI_STATUS
-SalGetNextHighMonotonicCount (
-  OUT UINT32                      *HighCount
-  )
-/*++
-
-Routine Description:
-
-  Get next high 32 bits of monotonic count.
-
-Arguments:
-
-  HighCount     - High 32 bits of monotonic count.
-
-Returns:
-
-  Status code
-
---*/
-;
-
-//
-//  SAL BASE Class
-//
-SAL_RETURN_REGS
-SalProcSetVectors (
-  IN  UINT64                      SalVectorType,
-  IN  UINT64                      PhyAddr1,
-  IN  UINT64                      Gp1,
-  IN  UINT64                      LengthCs1,
-  IN  UINT64                      PhyAddr2,
-  IN  UINT64                      Gp2,
-  IN  UINT64                      LengthCs2
-  )
-/*++
-
-Routine Description:
-
-  Set vectors.
-
-Arguments:
-
-  SalVectorType     - Vector type
-  PhyAddr1          - OS MCA entry point
-  Gp1               - GP for OS MCA entry
-  LengthCs1         - Length of OS MCA 
-  PhyAddr2          - OS INIT entry point
-  Gp2               - GP for OS Init entry
-  LengthCs2         - Length of OS INIT
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-SalProcMcRendez (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Mc rendezvous function.
-
-Arguments:
-
-  None
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-SalProcMcSetParams (
-  IN  UINT64                      ParamType,
-  IN  UINT64                      IntOrMem,
-  IN  UINT64                      IntOrMemVal,
-  IN  UINT64                      Timeout,
-  IN  UINT64                      McaOpt
-  )
-/*++
-
-Routine Description:
-
-  Set MCA parameters.
-
-Arguments:
-
-  ParamType     - Parameter type
-  IntOrMem      - Interrupt or memory address
-  IntOrMemVal   - Interrupt number or memory address value
-  Timeout       - Time out value
-  McaOpt        - Option for MCA
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalProcGetVectors (
-  IN  UINT64                      VectorType
-  )
-/*++
-
-Routine Description:
-
-  Get OS MCA vector.
-
-Arguments:
-
-  VectorType      - Vector type
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalProcMcGetParams (
-  IN  UINT64                      ParamInfoType
-  )
-/*++
-
-Routine Description:
-
-  Get MCA parameter.
-
-Arguments:
-
-  ParamInfoType     - Parameter info type
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalProcMcGetMcParams (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get MCA parameter.
-
-Arguments:
-
-  
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-EsalProcGetMcCheckinFlags (
-  IN  UINT64                      ProcessorUnit
-  )
-/*++
-
-Routine Description:
-
-  Get process status.
-
-Arguments:
-
-  ProcessorUnit     - Processor Index
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-//
-//  Sal Base Class enums
-//
-typedef enum {
-  McaVector,
-  BspInitVector,
-  BootRendezVector,
-  ApInitVector
-} ESAL_GET_VECTOR_TYPE;
-
-//
-//  Sal RTC Class
-//
-EFI_STATUS
-SalGetTime (
-  OUT EFI_TIME                     *Time,
-  OUT EFI_TIME_CAPABILITIES        *Capabilities
-  )
-/*++
-
-Routine Description:
-
-  Returns the current time and date information, and the time-keeping 
-  capabilities of the hardware platform.
-
-Arguments:
-
-  Time          - A pointer to storage to receive a snapshot of the current time.
-  Capabilities  - An optional pointer to a buffer to receive the real time clock device's
-                  capabilities.
-
-Returns:
-
-  Status code
-
---*/
-;
-
-EFI_STATUS
-SalSetTime (
-  OUT EFI_TIME                    *Time
-  )
-/*++
-
-Routine Description:
-
-  Sets the current local time and date information.
-
-Arguments:
-
-  Time  - A pointer to the current time.
-
-Returns:
-
-  Status code
-
---*/
-;
-
-EFI_STATUS
-SalGetWakeupTime (
-  OUT BOOLEAN                      *Enabled,
-  OUT BOOLEAN                      *Pending,
-  OUT EFI_TIME                     *Time
-  )
-/*++
-
-Routine Description:
-
-  Returns the current wakeup alarm clock setting.
-
-Arguments:
-
-  Enabled - Indicates if the alarm is currently enabled or disabled.
-  Pending - Indicates if the alarm signal is pending and requires acknowledgement.
-  Time    - The current alarm setting.
-
-Returns:
-
-  Status code
-
---*/
-;
-
-EFI_STATUS
-SalSetWakeupTime (
-  IN BOOLEAN                      Enable,
-  IN EFI_TIME                     *Time
-  )
-/*++
-
-Routine Description:
-
-  Sets the system wakeup alarm clock time.
-
-Arguments:
-
-  Enable  - Enable or disable the wakeup alarm.
-  Time    - If Enable is TRUE, the time to set the wakeup alarm for.
-            If Enable is FALSE, then this parameter is optional, and may be NULL.
-
-Returns:
-
-  Status code
-
---*/
-;
-
-SAL_RETURN_REGS
-SalInitializeThreshold (
-  IN  VOID                        *ThresholdStruct,
-  IN  UINT64                      Count,
-  IN  UINT64                      Duration
-  )
-/*++
-
-Routine Description:
-
-  Init threshold structure.
-
-Arguments:
-
-  ThresholdStruct     - Threshold structure
-  Count               - Threshold count
-  Duration            - Duration
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-SalBumpThresholdCount (
-  IN  VOID                        *ThresholdStruct,
-  IN  UINT64                      Count,
-  IN  UINT64                      Duration
-  )
-/*++
-
-Routine Description:
-
-  Bump threshold count.
-
-Arguments:
-
-  ThresholdStruct     - Threshold structure
-  Count               - Threshold count
-  Duration            - Duration
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-SalGetThresholdCount (
-  IN  VOID                        *ThresholdStruct,
-  IN  UINT64                      Count,
-  IN  UINT64                      Duration
-  )
-/*++
-
-Routine Description:
-
-  Get threshold structure.
-
-Arguments:
-
-  ThresholdStruct     - Threshold structure
-  Count               - Threshold count
-  Duration            - Duration
-
-Returns:
-
-  Output regs
-
---*/
-;
-
-//
-//  Common Lib Function
-//
-EFI_STATUS
-RegisterEsalFunction (
-  IN  UINT64                                    FunctionId,
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  SAL_INTERNAL_EXTENDED_SAL_PROC            Function,
-  IN  VOID                                      *ModuleGlobal
-  )
-/*++
-
-Routine Description:
-
-  Register ESAL Class Function and it's asociated global.
-  This function is boot service only!
-
-Arguments:
-  FunctionId    - ID of function to register
-  ClassGuid     - GUID of function class 
-  Function      - Function to register under ClassGuid/FunctionId pair
-  ModuleGlobal  - Module global for Function.
-
-Returns: 
-  EFI_SUCCESS - If ClassGuid/FunctionId Function was registered.
-
---*/
-;
-
-EFI_STATUS
-EfiInitializeSalDriverLib (
-  IN  BOOLEAN   Runtime
-  )
-/*++
-
-Routine Description:
-
-  Initialize Sal driver lib.
-
-Arguments:
-  Runtime     - At runtime or not?
-
-Returns: 
-  Status code
-
---*/
-;
-
-//
-// MCA PMI INIT Registeration Functions.
-//
-EFI_STATUS
-LibRegisterMcaFunction (
-  IN  EFI_SAL_MCA_HANDLER                   McaHandler,
-  IN  VOID                                  *ModuleGlobal,
-  IN  BOOLEAN                               MakeFirst,
-  IN  BOOLEAN                               MakeLast
-  )
-/*++
-
-Routine Description:
-
-  Register MCA handler.
-
-Arguments:
-  McaHandler      - MCA handler
-  ModuleGlobal    - Module global for function
-  MakeFirst       - Make it as first?
-  MakeLast        - Make it as last?
-
-Returns: 
-  Status code
-
---*/
-;
-
-EFI_STATUS
-LibRegisterPmiFunction (
-  IN  EFI_SAL_PMI_HANDLER                   PmiHandler,
-  IN  VOID                                  *ModuleGlobal,
-  IN  BOOLEAN                               MakeFirst,
-  IN  BOOLEAN                               MakeLast
-  )
-/*++
-
-Routine Description:
-
-  Register PMI handler.
-
-Arguments:
-  PmiHandler      - PMI handler
-  ModuleGlobal    - Module global for function
-  MakeFirst       - Make it as first?
-  MakeLast        - Make it as last?
-
-Returns: 
-  Status code
-
---*/
-;
-
-EFI_STATUS
-LibRegisterInitFunction (
-  IN  EFI_SAL_INIT_HANDLER                  InitHandler,
-  IN  VOID                                  *ModuleGlobal,
-  IN  BOOLEAN                               MakeFirst,
-  IN  BOOLEAN                               MakeLast
-  )
-/*++
-
-Routine Description:
-
-  Register INIT handler.
-
-Arguments:
-  InitHandler     - INIT handler
-  ModuleGlobal    - Module global for function
-  MakeFirst       - Make it as first?
-  MakeLast        - Make it as last?
-
-Returns: 
-  Status code
-
---*/
-;
-
-//
-//  Base IO Class Functions
-//
-EFI_STATUS
-ESalIoRead (
-  IN     EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN     UINT64                     Address,
-  IN     UINTN                      Count,
-  IN OUT VOID                       *Buffer
-  )
-/*++
-
-Routine Description:
-
-  Io read operation.
-
-Arguments:
-
-  Width   - Width of read operation
-  Address - Start IO address to read
-  Count   - Read count
-  Buffer  - Buffer to store result
-
-Returns:
-
-  Status code
-
---*/
-;
-
-EFI_STATUS
-ESalIoWrite (
-  IN     EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN     UINT64                     Address,
-  IN     UINTN                      Count,
-  IN OUT VOID                       *Buffer
-  )
-/*++
-
-Routine Description:
-
-  Io write operation.
-
-Arguments:
-
-  Width   - Width of write operation
-  Address - Start IO address to write
-  Count   - Write count
-  Buffer  - Buffer to write to the address
-
-Returns:
-
-  Status code
-
---*/
-;
-
-EFI_STATUS
-ESalMemRead (
-  IN     EFI_CPU_IO_PROTOCOL_WIDTH   Width,
-  IN     UINT64                      Address,
-  IN     UINTN                       Count,
-  IN  OUT VOID                       *Buffer
-  )
-/*++
-
-Routine Description:
-  Perform a Memory mapped IO read into Buffer.
-
-Arguments:
-  Width   - Width of each read transaction.
-  Address - Memory mapped IO address to read
-  Count   - Number of Width quanta to read
-  Buffer  - Buffer to read data into. size is Width * Count
-
-Returns: 
-  Status code
-
---*/
-;
-
-EFI_STATUS
-ESalMemWrite (
-  IN     EFI_CPU_IO_PROTOCOL_WIDTH   Width,
-  IN     UINT64                      Address,
-  IN     UINTN                       Count,
-  IN OUT VOID                        *Buffer
-  )
-/*++
-
-Routine Description:
-  Perform a memory mapped IO write into Buffer.
-
-Arguments:
-  Width   - Width of write transaction, and repeat operation to use
-  Address - IO address to write
-  Count   - Number of times to write the IO address.
-  Buffer  - Buffer to write data from. size is Width * Count
-
-Returns: 
-  Status code
-
---*/
-;
-
-//
-//  PCI Class Functions
-//
-SAL_RETURN_REGS
-SalPCIConfigRead (
-  IN  UINT64              Address,
-  IN  UINT64              Size
-  )
-/*++
-
-Routine Description:
-  Pci config space read.
-
-Arguments:
-  Address - PCI address to read
-  Size    - Size to read
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-SalPCIConfigWrite (
-  IN  UINT64              Address,
-  IN  UINT64              Size,
-  IN  UINT64              Value
-  )
-/*++
-
-Routine Description:
-  Pci config space write.
-
-Arguments:
-  Address - PCI address to write
-  Size    - Size to write
-  Value   - Value to write
-
-Returns: 
-  Output regs
-
---*/
-;
-
-//
-//  MP Class Functions
-//
-SAL_RETURN_REGS
-LibMPAddCpuData (
-  IN    UINT64      CpuGlobalId,
-  IN    BOOLEAN     Enabled,
-  IN    UINT64      PalCompatability
-  )
-/*++
-
-Routine Description:
-  Add CPU data.
-
-Arguments:
-  CpuGlobalId         - CPU ID
-  Enabled             - Enabled or not
-  PalCompatability    - Pal compatability
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMPRemoveCpuData (
-  IN    UINT64      CpuGlobalId
-  )
-/*++
-
-Routine Description:
-  Remove CPU data.
-
-Arguments:
-  CpuGlobalId         - CPU ID
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMPModifyCpuData (
-  IN    UINT64      CpuGlobalId,
-  IN    BOOLEAN     Enabled,
-  IN    UINT64      PalCompatability
-  )
-/*++
-
-Routine Description:
-  Modify CPU data.
-
-Arguments:
-  CpuGlobalId         - CPU ID
-  Enabled             - Enabled or not
-  PalCompatability    - Pal compatability
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMPGetCpuDataByID (
-  IN    UINT64      CpuGlobalId,
-  IN    BOOLEAN     IndexByEnabledCpu
-  )
-/*++
-
-Routine Description:
-  Get CPU data.
-
-Arguments:
-  CpuGlobalId         - CPU ID
-  IndexByEnabledCpu   - Whether indexed by enabled CPU
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMPGetCpuDataByIndex (
-  IN    UINT64      Index,
-  IN    BOOLEAN     IndexByEnabledCpu
-  )
-/*++
-
-Routine Description:
-  Get CPU data.
-
-Arguments:
-  Index               - CPU index
-  IndexByEnabledCpu   - Whether indexed by enabled CPU
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMPSendIpi (
-  IN  UINT64                ProcessorNumber,
-  IN  UINT64                VectorNumber,
-  IN  EFI_DELIVERY_MODE     DeliveryMode,
-  IN  BOOLEAN               IRFlag
-  )
-/*++
-
-Routine Description:
-  Send IPI.
-
-Arguments:
-  ProcessorNumber         - Processor number
-  VectorNumber            - Vector number
-  DeliveryMode            - Delivery mode
-  IRFlag                  - Interrupt Redirection flag
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpCurrentProcessor (
-  IN    BOOLEAN     IndexByEnabledCpu
-  )
-/*++
-
-Routine Description:
-  Get current processor index.
-
-Arguments:
-  IndexByEnabledCpu       - Whether indexed by enabled CPU
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibGetNumProcessors (
-  VOID
-  )
-/*++
-
-Routine Description:
-  Get number of processors.
-
-Arguments:
-  None
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpSaveMinStatePointer (
-  IN    UINT64                CpuGlobalId,
-  IN    EFI_PHYSICAL_ADDRESS  MinStatePointer
-  )
-/*++
-
-Routine Description:
-  Register pointer to save min state.
-
-Arguments:
-  CpuGlobalId       - CPU global ID
-  MinStatePointer   - Pointer to save min state
-
-Returns: 
-  Output regs
-
---*/
-;
-
-SAL_RETURN_REGS
-LibMpRestoreMinStatePointer (
-  IN    UINT64                CpuGlobalId
-  )
-/*++
-
-Routine Description:
-  Restore pointer to save min state.
-
-Arguments:
-  CpuGlobalId       - CPU global ID
-
-Returns: 
-  Output regs
-
---*/
-;
-
-//
-//  MCA Class Functions
-//
-EFI_STATUS
-LibMcaGetStateInfo (
-  IN  UINT64                                      CpuId,
-  OUT EFI_PHYSICAL_ADDRESS                        *StateBufferPointer,
-  OUT UINT64                                      *RequiredStateBufferSize
-  )
-/*++
-
-Routine Description:
-  MCA get state info.
-
-Arguments:
-  CpuId                   - CPU ID
-  StateBufferPointer      - Pointer of state buffer
-  RequiredStateBufferSize - Size of required state buffer
-
-Returns: 
-  Status code
-
---*/
-;
-
-EFI_STATUS
-LibMcaRegisterCpu (
-  IN  UINT64                                      CpuId,
-  IN  EFI_PHYSICAL_ADDRESS                        StateBufferAddress
-  )
-/*++
-
-Routine Description:
-  MCA register CPU state info.
-
-Arguments:
-  CpuId                   - CPU ID
-  StateBufferAddress      - Pointer of state buffer
-
-Returns: 
-  Status code
-
---*/
-;
-
-//
-// SAL ELOG Functions
-//
-EFI_STATUS
-LibSalGetStateInfo (
-  IN  UINT64                                      McaType,
-  IN  UINT8                                       *McaBuffer,
-  OUT UINTN                                       *Size
-  )
-/*++
-
-Routine Description:
-  Get state info.
-
-Arguments:
-  McaType                 - MCA type
-  McaBuffer               - Info buffer provided by caller
-  Size                    - Size of info
-
-Returns: 
-  Status code
-
---*/
-;
-
-EFI_STATUS
-LibSalGetStateInfoSize (
-  IN  UINT64                                      McaType,
-  OUT UINTN                                       *Size
-  )
-/*++
-
-Routine Description:
-  Get state info size.
-
-Arguments:
-  McaType                   - MCA type
-  Size                      - Size required
-
-Returns: 
-  Status code
-
---*/
-;
-
-EFI_STATUS
-LibSalClearStateInfo (
-  IN  UINT64                                      McaType
-  )
-/*++
-
-Routine Description:
-  Clear state info.
-
-Arguments:
-  McaType                   - MCA type
-
-Returns: 
-  Status code
-
---*/
-;
-
-EFI_STATUS
-LibEsalGetStateBuffer (
-  IN  UINT64                                      McaType,
-  OUT UINT8                                       **McaBuffer,
-  OUT UINTN                                       *Index
-  )
-/*++
-
-Routine Description:
-  Get state buffer.
-
-Arguments:
-  McaType                   - MCA type
-  McaBuffer                 - MCA buffer
-  Index                     - CPU index
-
-Returns: 
-  Status code
-
---*/
-;
-
-EFI_STATUS
-LibEsalSaveStateBuffer (
-  IN  UINT64                                      McaType
-  )
-/*++
-
-Routine Description:
-  Save state buffer.
-
-Arguments:
-  McaType                   - MCA type
-
-Returns: 
-  Status code
-
---*/
-;
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Common/EdkIIGlueDependencies.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Common/EdkIIGlueDependencies.h
index b5f8230be9..b9f84ba233 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Common/EdkIIGlueDependencies.h
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Common/EdkIIGlueDependencies.h
@@ -113,11 +113,6 @@ Abstract:
   #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
   #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__
   #endif
-#ifdef MDE_CPU_IPF // IPF
-  #ifndef __EDKII_GLUE_EDK_DXE_SAL_LIB__
-  #define __EDKII_GLUE_EDK_DXE_SAL_LIB__
-  #endif
-#endif // IPF
 #endif
 
 //
@@ -266,15 +261,10 @@ Abstract:
   #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
   #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
   #endif
-#elif defined(MDE_CPU_IPF)
-  #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
-  #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
-  #endif
 #endif  
   //
   //  If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
-  //  __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
-  //  replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
+  //  can be replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
   //
 #endif
 
@@ -406,15 +396,10 @@ Abstract:
   #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
   #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
   #endif
-#elif defined(MDE_CPU_IPF)
-  #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
-  #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
-  #endif
 #endif  
   //
   //  If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
-  //  __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
-  //  replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
+  //  can be replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
   //
 #endif
 
@@ -435,15 +420,10 @@ Abstract:
   #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
   #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
   #endif
-#elif defined(MDE_CPU_IPF)
-  #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
-  #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
-  #endif
 #endif  
   //
   //  If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
-  //  __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
-  //  replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
+  //  can be replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
   //
 #endif
 
@@ -458,15 +438,10 @@ Abstract:
   #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
   #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__
   #endif
-#elif defined(MDE_CPU_IPF)
-  #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
-  #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__
-  #endif
 #endif  
   //
   //  If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or
-  //  __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be
-  //  replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
+  //  can be replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__
   //
 #endif
 
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/EdkIIGlueConfig.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/EdkIIGlueConfig.h
index f81abace89..10ec9328d4 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/EdkIIGlueConfig.h
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/EdkIIGlueConfig.h
@@ -148,14 +148,4 @@ Abstract:
                                                      | REPORT_STATUS_CODE_PROPERTY_DEBUG_CODE_ENABLED   \
                                                   )
 
-//
-// for IPF only
-// The base address of IPF IO Block
-//
-#ifdef MDE_CPU_IPF
-#ifndef EDKII_GLUE_IoBlockBaseAddressForIpf
-#define EDKII_GLUE_IoBlockBaseAddressForIpf     0x0ffffc000000
-#endif
-#endif
-
 #endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/EdkIIGlueDxe.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/EdkIIGlueDxe.h
index 0e1e340ec9..6c8736f367 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/EdkIIGlueDxe.h
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/EdkIIGlueDxe.h
@@ -47,13 +47,6 @@ Abstract:
 #include "EfiStatusCode.h"
 #include "EfiPerf.h"
 
-//
-// IPF only
-//
-#ifdef MDE_CPU_IPF
-#include "SalApi.h"
-#endif
-
 //
 // GUID definitions
 //
@@ -229,14 +222,6 @@ Abstract:
 #include EFI_ARCH_PROTOCOL_DEFINITION (VariableWrite)
 #include EFI_ARCH_PROTOCOL_DEFINITION (WatchdogTimer)
 
-//
-// IPF only
-//
-#ifdef MDE_CPU_IPF
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalGuid)
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalBootService)
-#endif
-
 //
 // EDK Library headers used by EDKII Glue Libraries
 //
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Ipf/EdkIIGlueProcessorBind.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Ipf/EdkIIGlueProcessorBind.h
deleted file mode 100644
index 5fa054fc8b..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Ipf/EdkIIGlueProcessorBind.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  EdkIIGlueProcessorBind.h
-  
-Abstract: 
-
-  Processor specific definitions
-
---*/
-
-#ifndef __EDKII_GLUE_PROCESSOR_BIND_H__
-#define __EDKII_GLUE_PROCESSOR_BIND_H__
-
-//
-// The Microsoft* C compiler can removed references to unreferenced data items
-//  if the /OPT:REF linker option is used. We defined a macro as this is a 
-//  a non standard extension
-//
-#if defined(_MSC_EXTENSIONS)
-  #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)
-#else
-  #define GLOBAL_REMOVE_IF_UNREFERENCED
-#endif
-
-#if !defined(MDE_CPU_IPF)
-  #define MDE_CPU_IPF
-#endif
-
-//
-// IPF Specific Functions
-//
-typedef struct {
-  UINT64                    Status;
-  UINT64                    r9;
-  UINT64                    r10;
-  UINT64                    r11;
-} PAL_CALL_RETURN;
-
-
-#define EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_LO 0x4871260ec1a74056
-#define EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_HI 0x116e5ba645e631a0
-
-#define EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO 0x4d02efdb7e97a470
-#define EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI 0x96a27bd29061ce8f 
-
-#define EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO 0x4370c6414ecb6c53 
-#define EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI 0x78836e490e3bb28c
-
-#define EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_LO 0x408b75e8899afd18
-#define EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_HI 0x54f4cd7e2e6e1aa4
-
-#define EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_LO  0x46f58ce17d019990
-#define EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_HI  0xa06a6798513c76a7
-
-//
-// Per the Itanium Software Conventions and Runtime Architecture Guide,
-// section 3.3.4, IPF stack must always be 16-byte aligned.
-//
-#define CPU_STACK_ALIGNMENT   16
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueBaseLib.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueBaseLib.h
index 8d4017a17e..df656d1670 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueBaseLib.h
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueBaseLib.h
@@ -89,53 +89,6 @@ typedef struct {
 
 #define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
 
-#elif defined (MDE_CPU_IPF)
-//
-// IPF context buffer used by SetJump() and LongJump()
-//
-typedef struct {
-  UINT64                            F2[2];
-  UINT64                            F3[2];
-  UINT64                            F4[2];
-  UINT64                            F5[2];
-  UINT64                            F16[2];
-  UINT64                            F17[2];
-  UINT64                            F18[2];
-  UINT64                            F19[2];
-  UINT64                            F20[2];
-  UINT64                            F21[2];
-  UINT64                            F22[2];
-  UINT64                            F23[2];
-  UINT64                            F24[2];
-  UINT64                            F25[2];
-  UINT64                            F26[2];
-  UINT64                            F27[2];
-  UINT64                            F28[2];
-  UINT64                            F29[2];
-  UINT64                            F30[2];
-  UINT64                            F31[2];
-  UINT64                            R4;
-  UINT64                            R5;
-  UINT64                            R6;
-  UINT64                            R7;
-  UINT64                            SP;
-  UINT64                            BR0;
-  UINT64                            BR1;
-  UINT64                            BR2;
-  UINT64                            BR3;
-  UINT64                            BR4;
-  UINT64                            BR5;
-  UINT64                            InitialUNAT;
-  UINT64                            AfterSpillUNAT;
-  UINT64                            PFS;
-  UINT64                            BSP;
-  UINT64                            Predicates;
-  UINT64                            LoopCount;
-  UINT64                            FPSR;
-} BASE_LIBRARY_JUMP_BUFFER;
-
-#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 0x10
-
 #elif defined (MDE_CPU_X64)
 //
 // X64 context buffer used by SetJump() and LongJump()
@@ -3693,1237 +3646,7 @@ CpuDeadLoop (
   VOID
   );
 
-
-#if defined (MDE_CPU_IPF)
-
-/**
-  Flush a range of  cache lines in the cache coherency domain of the calling
-  CPU.
-
-  Invalidates the  cache lines specified by Address and Length. If Address is
-  not aligned on a cache line boundary, then entire cache line containing
-  Address is invalidated. If Address + Length is not aligned on a cache line
-  boundary, then the entire instruction cache line containing Address + Length
-  -1 is invalidated. This function may choose to invalidate the entire
-  instruction cache if that is more efficient than invalidating the specified
-  range. If Length is 0, the no instruction cache lines are invalidated.
-  Address is returned. This function is only available on IPF.
-
-  If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
-
-  @param  Address The base address of the instruction lines to invalidate. If
-                  the CPU is in a physical addressing mode, then Address is a
-                  physical address. If the CPU is in a virtual addressing mode,
-                  then Address is a virtual address.
-
-  @param  Length  The number of bytes to invalidate from the instruction cache.
-
-  @return Address
-
-**/
-VOID *
-EFIAPI
-AsmFlushCacheRange (
-  IN      VOID                      *Address,
-  IN      UINTN                     Length
-  );
-
-
-/**
-  Executes a FC instruction
-  Executes a FC instruction on the cache line specified by Address.
-  The cache line size affected is at least 32-bytes (aligned on a 32-byte boundary).
-  An implementation may flush a larger region.  This function is only available on IPF.
-
-  @param Address  The Address of cache line to be flushed.
-
-  @return The address of FC instruction executed.
-
-**/
-UINT64
-EFIAPI
-AsmFc (
-  IN  UINT64  Address
-  );
-
-
-/**
-  Executes a FC.I instruction.
-  Executes a FC.I instruction on the cache line specified by Address.
-  The cache line size affected is at least 32-bytes (aligned on a 32-byte boundary).
-  An implementation may flush a larger region.  This function is only available on IPF.
-
-  @param Address  The Address of cache line to be flushed.
-
-  @return The address of FC.I instruction executed.
-
-**/
-UINT64
-EFIAPI
-AsmFci (
-  IN  UINT64  Address
-  );
-
-
-/**
-  Reads the current value of a Processor Identifier Register (CPUID).
-  The Index of largest implemented CPUID (One less than the number of implemented CPUID
-  registers) is determined by CPUID [3] bits {7:0}.
-  No parameter checking is performed on Index.  If the Index value is beyond the
-  implemented CPUID register range, a Reserved Register/Field fault may occur.  The caller
-  must either guarantee that Index is valid, or the caller must set up fault handlers to
-  catch the faults.  This function is only available on IPF.
-
-  @param Index   The 8-bit Processor Identifier Register index to read.
-
-  @return The current value of Processor Identifier Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadCpuid (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Reads the current value of 64-bit Processor Status Register (PSR).
-  This function is only available on IPF.
-
-  @return The current value of PSR.
-
-**/
-UINT64
-EFIAPI
-AsmReadPsr (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Processor Status Register (PSR).
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of PSR must be 0 or a Reserved Register/Field fault may occur.  The caller must either guarantee that Value is valid, or the caller must set up fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to PSR.
-
-  @return The 64-bit value written to the PSR.
-
-**/
-UINT64
-EFIAPI
-AsmWritePsr (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #0 (KR0).
-  This function is only available on IPF.
-
-  @return The current value of KR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr0 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #1 (KR1).
-  This function is only available on IPF.
-
-  @return The current value of KR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr1 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #2 (KR2).
-  This function is only available on IPF.
-
-  @return The current value of KR2.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr2 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #3 (KR3).
-  This function is only available on IPF.
-
-  @return The current value of KR3.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr3 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #4 (KR4).
-  This function is only available on IPF.
-
-  @return The current value of KR4.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr4 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #5 (KR5).
-  This function is only available on IPF.
-
-  @return The current value of KR5.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr5 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #6 (KR6).
-  This function is only available on IPF.
-
-  @return The current value of KR6.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr6 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #7 (KR7).
-  This function is only available on IPF.
-
-  @return The current value of KR7.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr7 (
-  VOID
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #0 (KR0).
-  This function is only available on IPF.
-
-  @param  Value 	The 64-bit value to write to KR0.
-
-  @return The 64-bit value written to the KR0.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr0 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #1 (KR1).
-  This function is only available on IPF.
-
-  @param  Value 	The 64-bit value to write to KR1.
-
-  @return The 64-bit value written to the KR1.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr1 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #2 (KR2).
-  This function is only available on IPF.
-
-  @param  Value 	The 64-bit value to write to KR2.
-
-  @return The 64-bit value written to the KR2.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr2 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #3 (KR3).
-  This function is only available on IPF.
-
-  @param  Value 	The 64-bit value to write to KR3.
-
-  @return The 64-bit value written to the KR3.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr3 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #4 (KR4).
-  This function is only available on IPF.
-
-  @param  Value 	The 64-bit value to write to KR4.
-
-  @return The 64-bit value written to the KR4.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr4 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #5 (KR5).
-  This function is only available on IPF.
-
-  @param  Value 	The 64-bit value to write to KR5.
-
-  @return The 64-bit value written to the KR5.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr5 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #6 (KR6).
-  This function is only available on IPF.
-
-  @param  Value 	The 64-bit value to write to KR6.
-
-  @return The 64-bit value written to the KR6.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr6 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #7 (KR7).
-  This function is only available on IPF.
-
-  @param  Value 	The 64-bit value to write to KR7.
-
-  @return The 64-bit value written to the KR7.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr7 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of Interval Timer Counter Register (ITC).
-  This function is only available on IPF.
-
-  @return The current value of ITC.
-
-**/
-UINT64
-EFIAPI
-AsmReadItc (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Interval Timer Vector Register (ITV).
-  This function is only available on IPF.
-
-  @return The current value of ITV.
-
-**/
-UINT64
-EFIAPI
-AsmReadItv (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Interval Timer Match Register (ITM).
-  This function is only available on IPF.
-
-  @return The current value of ITM.
-**/
-UINT64
-EFIAPI
-AsmReadItm (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Interval Timer Counter Register (ITC).
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to ITC.
-
-  @return The 64-bit value written to the ITC.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItc (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Interval Timer Match Register (ITM).
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to ITM.
-
-  @return The 64-bit value written to the ITM.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItm (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Interval Timer Vector Register (ITV).
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of ITV must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to ITV.
-
-  @return The 64-bit value written to the ITV.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItv (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of Default Control Register (DCR).
-  This function is only available on IPF.
-
-  @return The current value of DCR.
-
-**/
-UINT64
-EFIAPI
-AsmReadDcr (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Interruption Vector Address Register (IVA).
-  This function is only available on IPF.
-
-  @return The current value of IVA.
-**/
-UINT64
-EFIAPI
-AsmReadIva (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Page Table Address Register (PTA).
-  This function is only available on IPF.
-
-  @return The current value of PTA.
-
-**/
-UINT64
-EFIAPI
-AsmReadPta (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Default Control Register (DCR).
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of DCR must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to DCR.
-
-  @return The 64-bit value written to the DCR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteDcr (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Interruption Vector Address Register (IVA).
-  The size of vector table is 32 K bytes and is 32 K bytes aligned
-  the low 15 bits of Value is ignored when written.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to IVA.
-
-  @return The 64-bit value written to the IVA.
-
-**/
-UINT64
-EFIAPI
-AsmWriteIva (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Page Table Address Register (PTA).
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of DCR must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to PTA.
-
-  @return The 64-bit value written to the PTA.
-**/
-UINT64
-EFIAPI
-AsmWritePta (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of Local Interrupt ID Register (LID).
-  This function is only available on IPF.
-
-  @return The current value of LID.
-
-**/
-UINT64
-EFIAPI
-AsmReadLid (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Vector Register (IVR).
-  This function is only available on IPF.
-
-  @return The current value of IVR.
-
-**/
-UINT64
-EFIAPI
-AsmReadIvr (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Task Priority Register (TPR).
-  This function is only available on IPF.
-
-  @return The current value of TPR.
-
-**/
-UINT64
-EFIAPI
-AsmReadTpr (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Request Register #0 (IRR0).
-  This function is only available on IPF.
-
-  @return The current value of IRR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr0 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Request Register #1 (IRR1).
-  This function is only available on IPF.
-
-  @return The current value of IRR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr1 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Request Register #2 (IRR2).
-  This function is only available on IPF.
-
-  @return The current value of IRR2.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr2 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Request Register #3 (IRR3).
-  This function is only available on IPF.
-
-  @return The current value of IRR3.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr3 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Performance Monitor Vector Register (PMV).
-  This function is only available on IPF.
-
-  @return The current value of PMV.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmv (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Corrected Machine Check Vector Register (CMCV).
-  This function is only available on IPF.
-
-  @return The current value of CMCV.
-
-**/
-UINT64
-EFIAPI
-AsmReadCmcv (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Local Redirection Register #0 (LRR0).
-  This function is only available on IPF.
-
-  @return The current value of LRR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadLrr0 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Local Redirection Register #1 (LRR1).
-  This function is only available on IPF.
-
-  @return The current value of LRR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadLrr1 (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Page Local Interrupt ID Register (LID).
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of LID must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to LID.
-
-  @return The 64-bit value written to the LID.
-
-**/
-UINT64
-EFIAPI
-AsmWriteLid (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Task Priority Register (TPR).
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of TPR must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to TPR.
-
-  @return The 64-bit value written to the TPR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteTpr (
-  IN UINT64  Value
-  );
-
-
-/**
-  Performs a write operation on End OF External Interrupt Register (EOI).
-  Writes a value of 0 to the EOI Register.  This function is only available on IPF.
-
-**/
-VOID
-EFIAPI
-AsmWriteEoi (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Performance Monitor Vector Register (PMV).
-  No parameter checking is performed on Value.  All bits of Value corresponding
-  to reserved fields of PMV must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to PMV.
-
-  @return The 64-bit value written to the PMV.
-
-**/
-UINT64
-EFIAPI
-AsmWritePmv (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Corrected Machine Check Vector Register (CMCV).
-  No parameter checking is performed on Value.  All bits of Value corresponding
-  to reserved fields of CMCV must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to CMCV.
-
-  @return The 64-bit value written to the CMCV.
-
-**/
-UINT64
-EFIAPI
-AsmWriteCmcv (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Local Redirection Register #0 (LRR0).
-  No parameter checking is performed on Value.  All bits of Value corresponding
-  to reserved fields of LRR0 must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to LRR0.
-
-  @return The 64-bit value written to the LRR0.
-
-**/
-UINT64
-EFIAPI
-AsmWriteLrr0 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Local Redirection Register #1 (LRR1).
-  No parameter checking is performed on Value.  All bits of Value corresponding
-  to reserved fields of LRR1 must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must
-  set up fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Value		The 64-bit value to write to LRR1.
-
-  @return The 64-bit value written to the LRR1.
-
-**/
-UINT64
-EFIAPI
-AsmWriteLrr1 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of Instruction Breakpoint Register (IBR).
-  
-  The Instruction Breakpoint Registers are used in pairs.  The even numbered
-  registers contain breakpoint addresses, and the odd numbered registers contain
-  breakpoint mask conditions.  At least 4 instruction registers pairs are implemented
-  on all processor models.   Implemented registers are contiguous starting with
-  register 0.  No parameter checking is performed on Index, and if the Index value
-  is beyond the implemented IBR register range, a Reserved Register/Field fault may
-  occur.  The caller must either guarantee that Index is valid, or the caller must
-  set up fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Index		The 8-bit Instruction Breakpoint Register index to read.
-
-  @return The current value of Instruction Breakpoint Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadIbr (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Reads the current value of Data Breakpoint Register (DBR).
-
-  The Data Breakpoint Registers are used in pairs.  The even numbered registers
-  contain breakpoint addresses, and odd numbered registers contain breakpoint
-  mask conditions.  At least 4 data registers pairs are implemented on all processor
-  models.  Implemented registers are contiguous starting with register 0.
-  No parameter checking is performed on Index.  If the Index value is beyond
-  the implemented DBR register range, a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Index is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Index		The 8-bit Data Breakpoint Register index to read.
-
-  @return The current value of Data Breakpoint Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadDbr (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Reads the current value of Performance Monitor Configuration Register (PMC).
-
-  All processor implementations provide at least 4 performance counters
-  (PMC/PMD [4]...PMC/PMD [7] pairs), and 4 performance monitor counter overflow
-  status registers (PMC [0]... PMC [3]).  Processor implementations may provide
-  additional implementation-dependent PMC and PMD to increase the number of
-  'generic' performance counters (PMC/PMD pairs).  The remainder of PMC and PMD
-  register set is implementation dependent.  No parameter checking is performed
-  on Index.  If the Index value is beyond the implemented PMC register range,
-  zero value will be returned.
-  This function is only available on IPF.
-
-  @param Index		The 8-bit Performance Monitor Configuration Register index to read.
-
-  @return The current value of Performance Monitor Configuration Register
-  specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmc (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Reads the current value of Performance Monitor Data Register (PMD).
-
-  All processor implementations provide at least 4 performance counters
-  (PMC/PMD [4]...PMC/PMD [7] pairs), and 4 performance monitor counter
-  overflow status registers (PMC [0]... PMC [3]).  Processor implementations may
-  provide additional implementation-dependent PMC and PMD to increase the number
-  of 'generic' performance counters (PMC/PMD pairs).  The remainder of PMC and PMD
-  register set is implementation dependent.  No parameter checking is performed
-  on Index.  If the Index value is beyond the implemented PMD register range,
-  zero value will be returned.
-  This function is only available on IPF.
-
-  @param Index		The 8-bit Performance Monitor Data Register index to read.
-
-  @return The current value of Performance Monitor Data Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmd (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Writes the current value of 64-bit Instruction Breakpoint Register (IBR).
-
-  Writes current value of Instruction Breakpoint Register specified by Index.
-  The Instruction Breakpoint Registers are used in pairs.  The even numbered
-  registers contain breakpoint addresses, and odd numbered registers contain
-  breakpoint mask conditions.  At least 4 instruction registers pairs are implemented
-  on all processor models.  Implemented registers are contiguous starting with
-  register 0.  No parameter checking is performed on Index.  If the Index value
-  is beyond the implemented IBR register range, a Reserved Register/Field fault may
-  occur.  The caller must either guarantee that Index is valid, or the caller must
-  set up fault handlers to catch the faults.
-  This function is only available on IPF.
-
-  @param Index		The 8-bit Instruction Breakpoint Register index to write.
-  @param Value		The 64-bit value to write to IBR.
-
-  @return The 64-bit value written to the IBR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteIbr (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Data Breakpoint Register (DBR).
-
-  Writes current value of Data Breakpoint Register specified by Index.
-  The Data Breakpoint Registers are used in pairs.  The even numbered registers
-  contain breakpoint addresses, and odd numbered registers contain breakpoint
-  mask conditions.  At least 4 data registers pairs are implemented on all processor
-  models.  Implemented registers are contiguous starting with register 0.  No parameter
-  checking is performed on Index.  If the Index value is beyond the implemented
-  DBR register range, a Reserved Register/Field fault may occur.  The caller must
-  either guarantee that Index is valid, or the caller must set up fault handlers to
-  catch the faults.
-  This function is only available on IPF.
-
-  @param Index		The 8-bit Data Breakpoint Register index to write.
-  @param Value		The 64-bit value to write to DBR.
-
-  @return The 64-bit value written to the DBR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteDbr (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Performance Monitor Configuration Register (PMC).
-
-  Writes current value of Performance Monitor Configuration Register specified by Index.
-  All processor implementations provide at least 4 performance counters
-  (PMC/PMD [4]...PMC/PMD [7] pairs), and 4 performance monitor counter overflow status
-  registers (PMC [0]... PMC [3]).  Processor implementations may provide additional
-  implementation-dependent PMC and PMD to increase the number of 'generic' performance
-  counters (PMC/PMD pairs).  The remainder of PMC and PMD register set is implementation
-  dependent.  No parameter checking is performed on Index.  If the Index value is
-  beyond the implemented PMC register range, the write is ignored.
-  This function is only available on IPF.
-
-  @param Index		The 8-bit Performance Monitor Configuration Register index to write.
-  @param Value		The 64-bit value to write to PMC.
-
-  @return The 64-bit value written to the PMC.
-
-**/
-UINT64
-EFIAPI
-AsmWritePmc (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Performance Monitor Data Register (PMD).
-
-  Writes current value of Performance Monitor Data Register specified by Index.
-  All processor implementations provide at least 4 performance counters
-  (PMC/PMD [4]...PMC/PMD [7] pairs), and 4 performance monitor counter overflow
-  status registers (PMC [0]... PMC [3]).  Processor implementations may provide
-  additional implementation-dependent PMC and PMD to increase the number of 'generic'
-  performance counters (PMC/PMD pairs).  The remainder of PMC and PMD register set
-  is implementation dependent.  No parameter checking is performed on Index.  If the
-  Index value is beyond the implemented PMD register range, the write is ignored.
-  This function is only available on IPF.
-
-  @param Index		The 8-bit Performance Monitor Data Register index to write.
-  @param Value		The 64-bit value to write to PMD.
-
-  @return The 64-bit value written to the PMD.
-
-**/
-UINT64
-EFIAPI
-AsmWritePmd (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of 64-bit Global Pointer (GP).
-
-  Reads and returns the current value of GP.
-  This function is only available on IPF.
-
-  @return The current value of GP.
-
-**/
-UINT64
-EFIAPI
-AsmReadGp (
-  VOID
-  );
-
-
-/**
-  Write the current value of 64-bit Global Pointer (GP).
-
-  Writes the current value of GP. The 64-bit value written to the GP is returned.
-  No parameter checking is performed on Value.
-  This function is only available on IPF.
-
-  @param Value  The 64-bit value to write to GP.
-
-  @return The 64-bit value written to the GP.
-
-**/
-UINT64
-EFIAPI
-AsmWriteGp (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of 64-bit Stack Pointer (SP).
-
-  Reads and returns the current value of SP.
-  This function is only available on IPF.
-
-  @return The current value of SP.
-
-**/
-UINT64
-EFIAPI
-AsmReadSp (
-  VOID
-  );
-
-
-/**
-  Determines if the CPU is currently executing in virtual, physical, or mixed mode.
-
-  Determines the current execution mode of the CPU.
-  If the CPU is in virtual mode(PSR.RT=1, PSR.DT=1, PSR.IT=1), then 1 is returned.
-  If the CPU is in physical mode(PSR.RT=0, PSR.DT=0, PSR.IT=0), then 0 is returned.
-  If the CPU is not in physical mode or virtual mode, then it is in mixed mode,
-  and -1 is returned.
-  This function is only available on IPF.
-
-  @return  1  The CPU is in virtual mode.
-  @return  0  The CPU is in physical mode.
-  @return -1  The CPU is in mixed mode.
-
-**/
-INT64
-EFIAPI
-AsmCpuVirtual (
-  VOID
-  );
-
-
-/**
-  Makes a PAL procedure call.
-
-  This is a wrapper function to make a PAL procedure call.  Based on the Index
-  value this API will make static or stacked PAL call.  The following table
-  describes the usage of PAL Procedure Index Assignment. Architected procedures
-  may be designated as required or optional.  If a PAL procedure is specified
-  as optional, a unique return code of 0xFFFFFFFFFFFFFFFF is returned in the
-  Status field of the PAL_CALL_RETURN structure.
-  This indicates that the procedure is not present in this PAL implementation.
-  It is the caller's responsibility to check for this return code after calling
-  any optional PAL procedure.
-  No parameter checking is performed on the 5 input parameters, but there are
-  some common rules that the caller should follow when making a PAL call.  Any
-  address passed to PAL as buffers for return parameters must be 8-byte aligned.
-  Unaligned addresses may cause undefined results.  For those parameters defined
-  as reserved or some fields defined as reserved must be zero filled or the invalid
-  argument return value may be returned or undefined result may occur during the
-  execution of the procedure.  If the PalEntryPoint  does not point to a valid
-  PAL entry point then the system behavior is undefined.  This function is only
-  available on IPF.
-
-  @param PalEntryPoint	The PAL procedure calls entry point.
-  @param Index			    The PAL procedure Index number.
-  @param Arg2			      The 2nd parameter for PAL procedure calls.
-  @param Arg3			      The 3rd parameter for PAL procedure calls.
-  @param Arg4			      The 4th parameter for PAL procedure calls.
-
-  @return structure returned from the PAL Call procedure, including the status and return value.
-
-**/
-PAL_CALL_RETURN
-EFIAPI
-AsmPalCall (
-  IN UINT64  PalEntryPoint,
-  IN UINT64  Index,
-  IN UINT64  Arg2,
-  IN UINT64  Arg3,
-  IN UINT64  Arg4
-  );
-
-
-/**
-  Transfers control to a function starting with a new stack.
-
-  Transfers control to the function specified by EntryPoint using the new stack
-  specified by NewStack and passing in the parameters specified by Context1 and
-  Context2. Context1 and Context2 are optional and may be NULL. The function
-  EntryPoint must never return.
-
-  If EntryPoint is NULL, then ASSERT().
-  If NewStack is NULL, then ASSERT().
-
-  @param  EntryPoint  A pointer to function to call with the new stack.
-  @param  Context1    A pointer to the context to pass into the EntryPoint
-                      function.
-  @param  Context2    A pointer to the context to pass into the EntryPoint
-                      function.
-  @param  NewStack    A pointer to the new stack to use for the EntryPoint
-                      function.
-  @param  NewBsp      A pointer to the new memory location for RSE backing
-                      store.
-
-**/
-VOID
-EFIAPI
-AsmSwitchStackAndBackingStore (
-  IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
-  IN      VOID                      *Context1,  OPTIONAL
-  IN      VOID                      *Context2,  OPTIONAL
-  IN      VOID                      *NewStack,
-  IN      VOID                      *NewBsp
-  );
-
-
-//
-// Bugbug: This call should be removed after
-//         the PalCall Instance issue has been fixed.
-//
-/**
-  Performs a PAL call using static calling convention.
-
-  An internal function to perform a PAL call using static calling convention.
-
-  @param  PalEntryPoint The entry point address of PAL. The address in ar.kr5
-                        would be used if this parameter were NULL on input.
-  @param  Arg1          The first argument of a PAL call.
-  @param  Arg1          The second argument of a PAL call.
-  @param  Arg1          The third argument of a PAL call.
-  @param  Arg1          The fourth argument of a PAL call.
-
-  @return The values returned in r8, r9, r10 and r11.
-
-**/
-PAL_CALL_RETURN
-PalCallStatic (
-  IN      CONST VOID                *PalEntryPoint,
-  IN      UINT64                    Arg1,
-  IN      UINT64                    Arg2,
-  IN      UINT64                    Arg3,
-  IN      UINT64                    Arg4
-  );
-
-
-#elif defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
+#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
 //
 // IA32 and X64 Specific Functions
 //
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueDxeRuntimeDriverLib.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueDxeRuntimeDriverLib.h
index 83bca6497e..9c56c4ae47 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueDxeRuntimeDriverLib.h
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Library/EdkIIGlueDxeRuntimeDriverLib.h
@@ -23,10 +23,6 @@ Abstract:
 #ifndef __EDKII_GLUE_DXE_RUNTIME_DRIVER_LIB_H__
 #define __EDKII_GLUE_DXE_RUNTIME_DRIVER_LIB_H__
 
-#ifdef MDE_CPU_IPF
-#include "EdkIIGlueEdkDxeSalLib.h"
-#endif
-
 #if (EFI_SPECIFICATION_VERSION < 0x00020000)
 
 typedef struct {
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Pcd/EdkIIGluePcdIoLib.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Pcd/EdkIIGluePcdIoLib.h
index 2c29c54ce3..6fa165d298 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Pcd/EdkIIGluePcdIoLib.h
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Pcd/EdkIIGluePcdIoLib.h
@@ -28,15 +28,5 @@ Abstract:
 // Override these through compiler option "/D" in PlatformTools.env if needed
 //
 
-
-//
-// IoBlockBaseAddressForIpf Pcd
-//
-#ifdef MDE_CPU_IPF
-#ifndef __EDKII_GLUE_PCD_PcdIoBlockBaseAddressForIpf__
-#define __EDKII_GLUE_PCD_PcdIoBlockBaseAddressForIpf__   EDKII_GLUE_IoBlockBaseAddressForIpf
-#endif
-#endif
-
 #include "Pcd/EdkIIGluePcd.h"
 #endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
index 13494492e1..a64ddd3bfd 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
@@ -31,9 +31,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   X86Cache.c 
 
-[sources.ipf]
-  IpfCache.c
-
 [sources.ebc]
   EbcCache.c
 
@@ -71,11 +68,8 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D MDE_CPU_EBC
-  
\ No newline at end of file
+
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseCacheMaintenanceLib/IpfCache.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseCacheMaintenanceLib/IpfCache.c
deleted file mode 100644
index c872ce7c0e..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseCacheMaintenanceLib/IpfCache.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  x86Cache.c
-  
-Abstract: 
-
-  Cache Maintenance Functions.
-
---*/
-
-#include "EdkIIGlueBase.h"
-
-/**
-  Invalidates the entire instruction cache in cache coherency domain of the
-  calling CPU.
-
-  Invalidates the entire instruction cache in cache coherency domain of the
-  calling CPU.
-
-**/
-VOID
-EFIAPI
-GlueInvalidateInstructionCache (
-  VOID
-  )
-{
-  PalCallStatic (NULL, 1, 1, 1, 0);
-}
-
-/**
-  Invalidates a range of instruction cache lines in the cache coherency domain
-  of the calling CPU.
-
-  Invalidates the instruction cache lines specified by Address and Length. If
-  Address is not aligned on a cache line boundary, then entire instruction
-  cache line containing Address is invalidated. If Address + Length is not
-  aligned on a cache line boundary, then the entire instruction cache line
-  containing Address + Length -1 is invalidated. This function may choose to
-  invalidate the entire instruction cache if that is more efficient than
-  invalidating the specified range. If Length is 0, the no instruction cache
-  lines are invalidated. Address is returned.
-
-  If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
-
-  @param  Address The base address of the instruction cache lines to
-                  invalidate. If the CPU is in a physical addressing mode, then
-                  Address is a physical address. If the CPU is in a virtual
-                  addressing mode, then Address is a virtual address.
-
-  @param  Length  The number of bytes to invalidate from the instruction cache.
-
-  @return Address
-
-**/
-VOID *
-EFIAPI
-InvalidateInstructionCacheRange (
-  IN      VOID                      *Address,
-  IN      UINTN                     Length
-  )
-{
-  return AsmFlushCacheRange (Address, Length);
-}
-
-/**
-  Writes Back and Invalidates the entire data cache in cache coherency domain
-  of the calling CPU.
-
-  Writes Back and Invalidates the entire data cache in cache coherency domain
-  of the calling CPU. This function guarantees that all dirty cache lines are
-  written back to system memory, and also invalidates all the data cache lines
-  in the cache coherency domain of the calling CPU.
-
-**/
-VOID
-EFIAPI
-WriteBackInvalidateDataCache (
-  VOID
-  )
-{
-  PalCallStatic (NULL, 1, 2, 1, 0);
-}
-
-/**
-  Writes Back and Invalidates a range of data cache lines in the cache
-  coherency domain of the calling CPU.
-
-  Writes Back and Invalidate the data cache lines specified by Address and
-  Length. If Address is not aligned on a cache line boundary, then entire data
-  cache line containing Address is written back and invalidated. If Address +
-  Length is not aligned on a cache line boundary, then the entire data cache
-  line containing Address + Length -1 is written back and invalidated. This
-  function may choose to write back and invalidate the entire data cache if
-  that is more efficient than writing back and invalidating the specified
-  range. If Length is 0, the no data cache lines are written back and
-  invalidated. Address is returned.
-
-  If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
-
-  @param  Address The base address of the data cache lines to write back and
-                  invalidate. If the CPU is in a physical addressing mode, then
-                  Address is a physical address. If the CPU is in a virtual
-                  addressing mode, then Address is a virtual address.
-  @param  Length  The number of bytes to write back and invalidate from the
-                  data cache.
-
-  @return Address
-
-**/
-VOID *
-EFIAPI
-WriteBackInvalidateDataCacheRange (
-  IN      VOID                      *Address,
-  IN      UINTN                     Length
-  )
-{
-  ASSERT (Length <= MAX_ADDRESS - (UINTN)Address + 1);
-
-  return AsmFlushCacheRange (Address, Length);
-}
-
-/**
-  Writes Back the entire data cache in cache coherency domain of the calling
-  CPU.
-
-  Writes Back the entire data cache in cache coherency domain of the calling
-  CPU. This function guarantees that all dirty cache lines are written back to
-  system memory. This function may also invalidate all the data cache lines in
-  the cache coherency domain of the calling CPU.
-
-**/
-VOID
-EFIAPI
-WriteBackDataCache (
-  VOID
-  )
-{
-  PalCallStatic (NULL, 1, 2, 0, 0);
-}
-
-/**
-  Writes Back a range of data cache lines in the cache coherency domain of the
-  calling CPU.
-
-  Writes Back the data cache lines specified by Address and Length. If Address
-  is not aligned on a cache line boundary, then entire data cache line
-  containing Address is written back. If Address + Length is not aligned on a
-  cache line boundary, then the entire data cache line containing Address +
-  Length -1 is written back. This function may choose to write back the entire
-  data cache if that is more efficient than writing back the specified range.
-  If Length is 0, the no data cache lines are written back. This function may
-  also invalidate all the data cache lines in the specified range of the cache
-  coherency domain of the calling CPU. Address is returned.
-
-  If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
-
-  @param  Address The base address of the data cache lines to write back. If
-                  the CPU is in a physical addressing mode, then Address is a
-                  physical address. If the CPU is in a virtual addressing
-                  mode, then Address is a virtual address.
-  @param  Length  The number of bytes to write back from the data cache.
-
-  @return Address
-
-**/
-VOID *
-EFIAPI
-WriteBackDataCacheRange (
-  IN      VOID                      *Address,
-  IN      UINTN                     Length
-  )
-{
-  ASSERT (Length <= MAX_ADDRESS - (UINTN)Address + 1);
-
-  return AsmFlushCacheRange (Address, Length);
-}
-
-/**
-  Invalidates the entire data cache in cache coherency domain of the calling
-  CPU.
-
-  Invalidates the entire data cache in cache coherency domain of the calling
-  CPU. This function must be used with care because dirty cache lines are not
-  written back to system memory. It is typically used for cache diagnostics. If
-  the CPU does not support invalidation of the entire data cache, then a write
-  back and invalidate operation should be performed on the entire data cache.
-
-**/
-VOID
-EFIAPI
-InvalidateDataCache (
-  VOID
-  )
-{
-  WriteBackInvalidateDataCache ();
-}
-
-/**
-  Invalidates a range of data cache lines in the cache coherency domain of the
-  calling CPU.
-
-  Invalidates the data cache lines specified by Address and Length. If Address
-  is not aligned on a cache line boundary, then entire data cache line
-  containing Address is invalidated. If Address + Length is not aligned on a
-  cache line boundary, then the entire data cache line containing Address +
-  Length -1 is invalidated. This function must never invalidate any cache lines
-  outside the specified range. If Length is 0, the no data cache lines are
-  invalidated. Address is returned. This function must be used with care
-  because dirty cache lines are not written back to system memory. It is
-  typically used for cache diagnostics. If the CPU does not support
-  invalidation of a data cache range, then a write back and invalidate
-  operation should be performed on the data cache range.
-
-  If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
-
-  @param  Address The base address of the data cache lines to invalidate. If
-                  the CPU is in a physical addressing mode, then Address is a
-                  physical address. If the CPU is in a virtual addressing mode,
-                  then Address is a virtual address.
-  @param  Length  The number of bytes to invalidate from the data cache.
-
-  @return Address
-
-**/
-VOID *
-EFIAPI
-InvalidateDataCacheRange (
-  IN      VOID                      *Address,
-  IN      UINTN                     Length
-  )
-{
-  return AsmFlushCacheRange (Address, Length);
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseDebugLibNull/BaseDebugLibNull.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseDebugLibNull/BaseDebugLibNull.inf
index 5ed0563f15..cb851117c9 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseDebugLibNull/BaseDebugLibNull.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseDebugLibNull/BaseDebugLibNull.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
 
 [includes.common]
@@ -70,9 +68,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
index ef93846589..ad4bff4af8 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
@@ -39,10 +39,6 @@ COMPONENT_TYPE  = LIBRARY
   IoLibIcc.c    | INTEL
   IoLib.c
 
-[sources.ipf]
-  IoLibIpf.c
-  IoHighLevel.c
-
 [sources.ebc]
 # doesn't support EBC
 
@@ -80,9 +76,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/IoLibIpf.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/IoLibIpf.c
deleted file mode 100644
index d52781a633..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseIoLibIntrinsic/IoLibIpf.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  IoLibIpf.c
-  
-Abstract: 
-
-
---*/
-
-#include "EdkIIGlueBase.h"
-
-#define  BIT63    0x8000000000000000UL
-
-#define MAP_PORT_BASE_TO_MEM(_Port) \
-    ((((_Port) & 0xfffc) << 10) | ((_Port) & 0x0fff))
-
-/**
-  Reads a 8-bit I/O port.
-
-  Reads the 8-bit I/O port specified by Port. The 8-bit read value is returned.
-  This function must guarantee that all I/O read and write operations are
-  serialized.
-
-  @param  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT8
-EFIAPI
-IoRead8 (
-  IN  UINT64                 Port
-  )
-{
-  UINT64           Address;
-
-  //
-  // Add the 64MB aligned IO Port space to the IO address
-  //
-  Address = MAP_PORT_BASE_TO_MEM (Port);
-  Address += PcdGet64(PcdIoBlockBaseAddressForIpf);
-
-  return MmioRead8 (Address);
-}
-
-/**
-  Reads a 16-bit I/O port.
-
-  Reads the 16-bit I/O port specified by Port. The 16-bit read value is returned.
-  This function must guarantee that all I/O read and write operations are
-  serialized.
-
-  @param  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT16
-EFIAPI
-IoRead16 (
-  IN  UINT64                 Port
-  )
-{
-  UINT64           Address;
-
-  //
-  // Add the 64MB aligned IO Port space to the IO address
-  //
-  Address = MAP_PORT_BASE_TO_MEM (Port);
-  Address += PcdGet64(PcdIoBlockBaseAddressForIpf);
-
-  return MmioRead16 (Address);
-}
-
-/**
-  Reads a 32-bit I/O port.
-
-  Reads the 32-bit I/O port specified by Port. The 32-bit read value is returned.
-  This function must guarantee that all I/O read and write operations are
-  serialized.
-
-  @param  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT32
-EFIAPI
-IoRead32 (
-  IN  UINT64                 Port
-  )
-{
-  UINT64           Address;
-
-  //
-  // Add the 64MB aligned IO Port space to the IO address
-  //
-  Address = MAP_PORT_BASE_TO_MEM (Port);
-  Address += PcdGet64(PcdIoBlockBaseAddressForIpf);
-
-  return MmioRead32 (Address);
-}
-
-/**
-  Reads a 64-bit I/O port.
-
-  Reads the 64-bit I/O port specified by Port. The 64-bit read value is returned.
-  This function must guarantee that all I/O read and write operations are
-  serialized.
-
-  If 64-bit I/O port operations are not supported, then ASSERT().
-
-  @param  Port  The I/O port to read.
-
-  @return The value read.
-
-**/
-UINT64
-EFIAPI
-IoRead64 (
-  IN      UINTN                     Port
-  )
-{
-  ASSERT (FALSE);
-  return 0;
-}
-
-/**
-  Writes a 8-bit I/O port.
-
-  Writes the 8-bit I/O port specified by Port with the value specified by Value
-  and returns Value. This function must guarantee that all I/O read and write
-  operations are serialized.
-
-  @param  Port  The I/O port to write.
-  @param  Value The value to write to the I/O port.
-
-  @return The value written the I/O port.
-
-**/
-UINT8
-EFIAPI
-IoWrite8 (
-  IN  UINT64                 Port,
-  IN  UINT8                  Data
-  )
-{
-  UINT64           Address;
-
-  //
-  // Add the 64MB aligned IO Port space to the IO address
-  //
-  Address = MAP_PORT_BASE_TO_MEM (Port);
-  Address += PcdGet64(PcdIoBlockBaseAddressForIpf);
-
-  return MmioWrite8 (Address, Data);
-}
-
-/**
-  Writes a 16-bit I/O port.
-
-  Writes the 16-bit I/O port specified by Port with the value specified by Value
-  and returns Value. This function must guarantee that all I/O read and write
-  operations are serialized.
-
-  @param  Port  The I/O port to write.
-  @param  Value The value to write to the I/O port.
-
-  @return The value written the I/O port.
-
-**/
-UINT16
-EFIAPI
-IoWrite16 (
-  IN  UINT64                 Port,
-  IN  UINT16                 Data
-  )
-{
-  UINT64           Address;
-
-  //
-  // Add the 64MB aligned IO Port space to the IO address
-  //
-  Address = MAP_PORT_BASE_TO_MEM (Port);
-  Address += PcdGet64(PcdIoBlockBaseAddressForIpf);
-
-  return MmioWrite16 (Address, Data);
-}
-
-/**
-  Writes a 32-bit I/O port.
-
-  Writes the 32-bit I/O port specified by Port with the value specified by Value
-  and returns Value. This function must guarantee that all I/O read and write
-  operations are serialized.
-
-  @param  Port  The I/O port to write.
-  @param  Value The value to write to the I/O port.
-
-  @return The value written the I/O port.
-
-**/
-UINT32
-EFIAPI
-IoWrite32 (
-  IN  UINT64                 Port,
-  IN  UINT32                 Data
-  )
-{
-  UINT64           Address;
-
-  //
-  // Add the 64MB aligned IO Port space to the IO address
-  //
-  Address = MAP_PORT_BASE_TO_MEM (Port);
-  Address += PcdGet64(PcdIoBlockBaseAddressForIpf);
-
-  return MmioWrite32 (Address, Data);
-}
-
-/**
-  Writes a 64-bit I/O port.
-
-  Writes the 64-bit I/O port specified by Port with the value specified by Value
-  and returns Value. This function must guarantee that all I/O read and write
-  operations are serialized.
-
-  If 64-bit I/O port operations are not supported, then ASSERT().
-
-  @param  Port  The I/O port to write.
-  @param  Value The value to write to the I/O port.
-
-  @return The value written the I/O port.
-
-**/
-UINT64
-EFIAPI
-IoWrite64 (
-  IN      UINTN                     Port,
-  IN      UINT64                    Value
-  )
-{
-  ASSERT (FALSE);
-  return 0;
-}
-
-/**
-  Reads a 8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address. The 8-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT8
-EFIAPI
-MmioRead8 (
-  IN  UINT64                 Address
-  )
-{
-  UINT8            Data;
-
-  Address |= BIT63;
-
-  MemoryFence ();
-  Data = *((volatile UINT8 *) Address);
-  MemoryFence ();
-
-  return Data;
-}
-
-/**
-  Reads a 16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address. The 16-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT16
-EFIAPI
-MmioRead16 (
-  IN  UINT64                 Address
-  )
-{
-  UINT16           Data;
-
-  Address |= BIT63;
-
-  MemoryFence ();
-  Data = *((volatile UINT16 *) Address);
-  MemoryFence ();
-
-  return Data;
-}
-
-/**
-  Reads a 32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address. The 32-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT32
-EFIAPI
-MmioRead32 (
-  IN  UINT64                 Address
-  )
-{
-  UINT32           Data;
-
-  Address |= BIT63;
-
-  MemoryFence ();
-  Data = *((volatile UINT32 *) Address);
-  MemoryFence ();
-
-  return Data;
-}
-
-/**
-  Reads a 64-bit MMIO register.
-
-  Reads the 64-bit MMIO register specified by Address. The 64-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT64
-EFIAPI
-MmioRead64 (
-  IN  UINT64                 Address
-  )
-{
-  UINT64           Data;
-
-  Address |= BIT63;
-
-  MemoryFence ();
-  Data = *((volatile UINT64 *) Address);
-  MemoryFence ();
-
-  return Data;
-
-}
-
-/**
-  Writes a 8-bit MMIO register.
-
-  Writes the 8-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  @param  Address The MMIO register to write.
-  @param  Data    The value to write to the MMIO register.
-
-  @return The value written the memory address.
-
-**/
-UINT8
-EFIAPI
-MmioWrite8 (
-  IN  UINT64                 Address,
-  IN  UINT8                  Data
-  )
-{
-  Address |= BIT63;
-
-  MemoryFence ();
-  *((volatile UINT8 *) Address) = Data;
-  MemoryFence ();
-
-  return Data;
-}
-
-/**
-  Writes a 16-bit MMIO register.
-
-  Writes the 16-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  @param  Address The MMIO register to write.
-  @param  Data    The value to write to the MMIO register.
-
-  @return The value written the memory address.
-
-**/
-UINT16
-EFIAPI
-MmioWrite16 (
-  IN  UINT64                 Address,
-  IN  UINT16                 Data
-  )
-{
-  Address |= BIT63;
-
-  MemoryFence ();
-  *((volatile UINT16 *) Address) = Data;
-  MemoryFence ();
-
-  return Data;
-}
-
-/**
-  Writes a 32-bit MMIO register.
-
-  Writes the 32-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  @param  Address The MMIO register to write.
-  @param  Data    The value to write to the MMIO register.
-
-  @return The value written the memory address.
-
-**/
-UINT32
-EFIAPI
-MmioWrite32 (
-  IN  UINT64                 Address,
-  IN  UINT32                 Data
-  )
-{
-  Address |= BIT63;
-
-  MemoryFence ();
-  *((volatile UINT32 *) Address) = Data;
-  MemoryFence ();
-
-  return Data;
-}
-
-/**
-  Writes a 64-bit MMIO register.
-
-  Writes the 64-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  @param  Address The MMIO register to write.
-  @param  Data    The value to write to the MMIO register.
-
-  @return The value written the memory address.
-
-**/
-UINT64
-EFIAPI
-MmioWrite64 (
-  IN  UINT64                 Address,
-  IN  UINT64                 Data
-  )
-{
-  Address |= BIT63;
-
-  MemoryFence ();
-  *((volatile UINT64 *) Address) = Data;
-  MemoryFence ();
-
-  return Data;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/BaseLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/BaseLib.inf
index c7a4b718e1..b28ea3e063 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/BaseLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/BaseLib.inf
@@ -560,39 +560,6 @@ COMPONENT_TYPE  = LIBRARY
   SynchronizationGcc.c  | GCC 
   ChkStkGcc.c  | GCC 
 
-[Sources.IPF]
-  Ipf/asm.h
-  Ipf/ia_64gen.h
-  Ipf/PalCallStatic.s
-  Ipf/setjmp.s
-  Ipf/longjmp.s
-  Ipf/SwitchStack.s
-  Ipf/Unaligned.c
-  Ipf/InterlockedCompareExchange32.s
-  Ipf/InterlockedCompareExchange64.s
-  Ipf/Synchronization.c
-  Ipf/CpuPause.s
-  Ipf/CpuFlushTlb.s
-  Ipf/GetInterruptState.s
-  Ipf/InternalSwitchStack.c
-  Ipf/FlushCacheRange.s
-  Ipf/AccessDbr.s
-  Ipf/AccessEicr.s
-  Ipf/AccessGcr.s
-  Ipf/AccessKr.s
-  Ipf/AccessPmr.s
-  Ipf/AccessPsr.s
-  Ipf/AsmPalCall.s
-  Ipf/ExecFc.s
-  Ipf/ReadCpuid.s
-  Ipf/AccessGp.s
-  Math64.c
-  Ipf/CpuBreakpoint.c      | INTEL
-  Ipf/CpuBreakpointMsc.c   | MSFT
-  Synchronization.c     | INTEL 
-  SynchronizationMsc.c  | MSFT 
-  SynchronizationGcc.c  | GCC 
-
 [sources.ebc]
   Math64.c
   Unaligned.c
@@ -648,11 +615,8 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D MDE_CPU_EBC
-  
\ No newline at end of file
+
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/BaseLibInternals.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/BaseLibInternals.h
index 6c9e77cfdd..72fb6d0fae 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/BaseLibInternals.h
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/BaseLibInternals.h
@@ -831,44 +831,6 @@ InternalX86DisablePaging64 (
   IN      UINT32                    NewStack
   );
 
-
-#elif defined (MDE_CPU_IPF)
-//
-//
-// IPF specific functions
-//
-
-/**
-  Transfers control to a function starting with a new stack.
-
-  Transfers control to the function specified by EntryPoint using the new stack
-  specified by NewStack and passing in the parameters specified by Context1 and
-  Context2. Context1 and Context2 are optional and may be NULL. The function
-  EntryPoint must never return.
-
-  If EntryPoint is NULL, then ASSERT().
-  If NewStack is NULL, then ASSERT().
-
-  @param  EntryPoint  A pointer to function to call with the new stack.
-  @param  Context1    A pointer to the context to pass into the EntryPoint
-                      function.
-  @param  Context2    A pointer to the context to pass into the EntryPoint
-                      function.
-  @param  NewStack    A pointer to the new stack to use for the EntryPoint
-                      function.
-  @param  NewBsp      A pointer to the new memory location for RSE backing
-                      store.
-
-**/
-VOID
-EFIAPI
-AsmSwitchStackAndBackingStore (
-  IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
-  IN      VOID                      *Context1,  OPTIONAL
-  IN      VOID                      *Context2,  OPTIONAL
-  IN      VOID                      *NewStack,
-  IN      VOID                      *NewBsp
-  );
 #else
 
 #endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessDbr.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessDbr.s
deleted file mode 100644
index d7855874e4..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessDbr.s
+++ /dev/null
@@ -1,117 +0,0 @@
-/// 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: AccessDbr.s
-///
-///
-///  IPF specific Debug Breakpoint Registers accessing functions
-///
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadDbr
-//
-// This routine is used to Reads the current value of Data Breakpoint Register (DBR).
-//
-// Arguments :
-//
-// On Entry : The 8-bit DBR index to read.
-//
-// Return Value: The current value of DBR by Index.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadDbr, @function
-.proc   AsmReadDbr
-.regstk 1, 0, 0, 0
-
-AsmReadDbr::
-        mov             r8 = dbr[in0];;
-        br.ret.dpnt     b0;;
-.endp   AsmReadDbr
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteDbr
-//
-// This routine is used to write the current value to Data Breakpoint Register (DBR).
-//
-// Arguments :
-//
-// On Entry : The 8-bit DBR index to read.
-//            The value should be written to DBR
-//
-// Return Value: The value written to DBR.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteDbr, @function
-.proc   AsmWriteDbr
-.regstk 2, 0, 0, 0
-
-AsmWriteDbr::
-        mov             dbr[in0] = in1
-        mov             r8 = in1;;
-        srlz.d;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteDbr
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadIbr
-//
-// This routine is used to Reads the current value of Instruction Breakpoint Register (IBR).
-//
-// Arguments :
-//
-// On Entry : The 8-bit IBR index.
-//
-// Return Value: The current value of IBR by Index.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadIbr, @function
-.proc   AsmReadIbr
-.regstk 1, 0, 0, 0
-
-AsmReadIbr::
-        mov             r8 = ibr[in0];;
-        br.ret.dpnt     b0;;
-.endp   AsmReadIbr
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteIbr
-//
-// This routine is used to write the current value to Instruction Breakpoint Register (IBR).
-//
-// Arguments :
-//
-// On Entry : The 8-bit IBR index.
-//            The value should be written to IBR
-//
-// Return Value: The value written to IBR.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteIbr, @function
-.proc   AsmWriteIbr
-.regstk 2, 0, 0, 0
-
-AsmWriteIbr::
-        mov             ibr[in0] = in1
-        mov             r8 = in1;;
-        srlz.i;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteIbr
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessEicr.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessEicr.s
deleted file mode 100644
index fbb6fc6d1e..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessEicr.s
+++ /dev/null
@@ -1,511 +0,0 @@
-/// 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: AccessEicr.s
-///
-///
-///  IPF specific External Interrupt Control Registers accessing functions
-///
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadLid
-//
-// This routine is used to read the value of Local Interrupt ID Register (LID).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of LID.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadLid, @function
-.proc   AsmReadLid
-
-AsmReadLid::
-         mov            r8 = cr.lid;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadLid
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteLid
-//
-// This routine is used to write the value to Local Interrupt ID Register (LID).
-//
-// Arguments :
-//
-// On Entry :  The value need to be written to LID.
-//
-// Return Value: The value written to LID.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteLid, @function
-.proc   AsmWriteLid
-.regstk 1, 0, 0, 0
-
-AsmWriteLid::
-         mov            cr.lid = in0
-         mov            r8 = in0;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteLid
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadIvr
-//
-// This routine is used to read the value of External Interrupt Vector Register (IVR).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of IVR.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadIvr, @function
-.proc   AsmReadIvr
-
-AsmReadIvr::
-         mov            r8 = cr.ivr;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadIvr
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadTpr
-//
-// This routine is used to read the value of Task Priority Register (TPR).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of TPR.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadTpr, @function
-.proc   AsmReadTpr
-
-AsmReadTpr::
-         mov            r8 = cr.tpr;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadTpr
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteTpr
-//
-// This routine is used to write the value to Task Priority Register (TPR).
-//
-// Arguments :
-//
-// On Entry :  The value need to be written to TPR.
-//
-// Return Value: The value written to TPR.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteTpr, @function
-.proc   AsmWriteTpr
-.regstk 1, 0, 0, 0
-
-AsmWriteTpr::
-         mov            cr.tpr = in0
-         mov            r8 = in0;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteTpr
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteEoi
-//
-// This routine is used to write the value to End of External Interrupt Register (EOI).
-//
-// Arguments :
-//
-// On Entry :  The value need to be written to EOI.
-//
-// Return Value: The value written to EOI.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteEoi, @function
-.proc   AsmWriteEoi
-
-AsmWriteEoi::
-         mov            cr.eoi = r0;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteEoi
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadIrr0
-//
-// This routine is used to Read the value of External Interrupt Request Register 0 (IRR0).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of IRR0.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadIrr0, @function
-.proc   AsmReadIrr0
-
-AsmReadIrr0::
-         mov            r8 = cr.irr0;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadIrr0
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadIrr1
-//
-// This routine is used to Read the value of External Interrupt Request Register 1 (IRR1).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of IRR1.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadIrr1, @function
-.proc   AsmReadIrr1
-
-AsmReadIrr1::
-         mov            r8 = cr.irr1;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadIrr1
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadIrr2
-//
-// This routine is used to Read the value of External Interrupt Request Register 2 (IRR2).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of IRR2.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadIrr2, @function
-.proc   AsmReadIrr2
-
-AsmReadIrr2::
-         mov            r8 = cr.irr2;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadIrr2
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadIrr3
-//
-// This routine is used to Read the value of External Interrupt Request Register 3 (IRR3).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of IRR3.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadIrr3, @function
-.proc   AsmReadIrr3
-
-AsmReadIrr3::
-         mov            r8 = cr.irr3;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadIrr3
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadItv
-//
-// This routine is used to Read the value of Interval Timer Vector Register (ITV).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of ITV.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadItv, @function
-.proc   AsmReadItv
-
-AsmReadItv::
-         mov            r8 = cr.itv;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadItv
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteItv
-//
-// This routine is used to write the value to Interval Timer Vector Register (ITV).
-//
-// Arguments :
-//
-// On Entry : The value need to be written to ITV
-//
-// Return Value: The value written to ITV.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteItv, @function
-.proc   AsmWriteItv
-.regstk 1, 0, 0, 0
-
-AsmWriteItv::
-         mov            cr.itv = in0
-         mov            r8 = in0;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteItv
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadPmv
-//
-// This routine is used to Read the value of Performance Monitoring Vector Register (PMV).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of PMV.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadPmv, @function
-.proc   AsmReadPmv
-
-AsmReadPmv::
-         mov            r8 = cr.pmv;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadPmv
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWritePmv
-//
-// This routine is used to write the value to Performance Monitoring Vector Register (PMV).
-//
-// Arguments :
-//
-// On Entry : The value need to be written to PMV
-//
-// Return Value: The value written to PMV.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWritePmv, @function
-.proc   AsmWritePmv
-.regstk 1, 0, 0, 0
-
-AsmWritePmv::
-         mov            cr.pmv = in0
-         mov            r8 = in0;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWritePmv
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadCmcv
-//
-// This routine is used to Read the value of Corrected Machine Check Vector Register (CMCV).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of CMCV.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadCmcv, @function
-.proc   AsmReadCmcv
-
-AsmReadCmcv::
-         mov            r8 = cr.cmcv;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadCmcv
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteCmcv
-//
-// This routine is used to write the value to Corrected Machine Check Vector Register (CMCV).
-//
-// Arguments :
-//
-// On Entry : The value need to be written to CMCV
-//
-// Return Value: The value written to CMCV.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteCmcv, @function
-.proc   AsmWriteCmcv
-.regstk 1, 0, 0, 0
-
-AsmWriteCmcv::
-         mov            cr.cmcv = in0
-         mov            r8 = in0;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteCmcv
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadLrr0
-//
-// This routine is used to read the value of Local Redirection Register 0 (LRR0).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of LRR0.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadLrr0, @function
-.proc   AsmReadLrr0
-
-AsmReadLrr0::
-         mov            r8 = cr.lrr0;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadLrr0
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteLrr0
-//
-// This routine is used to write the value to Local Redirection Register 0 (LRR0).
-//
-// Arguments :
-//
-// On Entry :  The value need to be written to LRR0.
-//
-// Return Value: The value written to LRR0.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteLrr0, @function
-.proc   AsmWriteLrr0
-.regstk 1, 0, 0, 0
-
-AsmWriteLrr0::
-         mov            cr.lrr0 = in0
-         mov            r8 = in0;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteLrr0
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadLrr1
-//
-// This routine is used to read the value of Local Redirection Register 1 (LRR1).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of LRR1.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadLrr1, @function
-.proc   AsmReadLrr1
-
-AsmReadLrr1::
-         mov            r8 = cr.lrr1;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadLrr1
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteLrr1
-//
-// This routine is used to write the value to Local Redirection Register 1 (LRR1).
-//
-// Arguments :
-//
-// On Entry :  The value need to be written to LRR1.
-//
-// Return Value: The value written to LRR1.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteLrr1, @function
-.proc   AsmWriteLrr1
-.regstk 1, 0, 0, 0
-
-AsmWriteLrr1::
-         mov            cr.lrr1 = in0
-         mov            r8 = in0;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteLrr1
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessGcr.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessGcr.s
deleted file mode 100644
index 2cfefe70e2..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessGcr.s
+++ /dev/null
@@ -1,263 +0,0 @@
-/// 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: AccessGcr.s
-///
-///
-///  IPF specific Global Control Registers accessing functions
-///
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadDcr
-//
-// This routine is used to Read the value of Default Control Register (DCR).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of DCR.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadDcr, @function
-.proc   AsmReadDcr
-
-AsmReadDcr::
-         mov            r8 = cr.dcr;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadDcr
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteDcr
-//
-// This routine is used to write the value to Default Control Register (DCR).
-//
-// Arguments :
-//
-// On Entry : The value need to be written to DCR
-//
-// Return Value: The value written to DCR.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteDcr, @function
-.proc   AsmWriteDcr
-.regstk 1, 0, 0, 0
-
-AsmWriteDcr::
-         mov            cr.dcr = in0
-         mov            r8 = in0;;
-         srlz.i;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteDcr
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadItc
-//
-// This routine is used to Read the value of Interval Timer Counter Register (ITC).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of ITC.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadItc, @function
-.proc   AsmReadItc
-
-AsmReadItc::
-         mov            r8 = ar.itc;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadItc
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteItc
-//
-// This routine is used to write the value to Interval Timer Counter Register (ITC).
-//
-// Arguments :
-//
-// On Entry : The value need to be written to the ITC
-//
-// Return Value: The value written to the ITC.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteItc, @function
-.proc   AsmWriteItc
-.regstk 1, 0, 0, 0
-
-AsmWriteItc::
-         mov            ar.itc = in0
-         mov            r8 = in0;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteItc
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadItm
-//
-// This routine is used to Read the value of Interval Timer Match Register (ITM).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of ITM.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadItm, @function
-.proc   AsmReadItm
-
-AsmReadItm::
-         mov            r8 = cr.itm;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadItm
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteItm
-//
-// This routine is used to write the value to Interval Timer Match Register (ITM).
-//
-// Arguments :
-//
-// On Entry : The value need to be written to ITM
-//
-// Return Value: The value written to ITM.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteItm, @function
-.proc   AsmWriteItm
-.regstk 1, 0, 0, 0
-
-AsmWriteItm::
-         mov            cr.itm = in0
-         mov            r8 = in0;;
-         srlz.d;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteItm
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadIva
-//
-// This routine is used to read the value of Interruption Vector Address Register (IVA).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of IVA.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadIva, @function
-.proc   AsmReadIva
-
-AsmReadIva::
-         mov            r8 = cr.iva;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadIva
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteIva
-//
-// This routine is used to write the value to Interruption Vector Address Register (IVA).
-//
-// Arguments :
-//
-// On Entry : The value need to be written to IVA
-//
-// Return Value: The value written to IVA.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteIva, @function
-.proc   AsmWriteIva
-.regstk 1, 0, 0, 0
-
-AsmWriteIva::
-         mov            cr.iva = in0
-         mov            r8 = in0;;
-         br.ret.dpnt    b0;;
-.endp    AsmWriteIva
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadPta
-//
-// This routine is used to read the value of Page Table Address Register (PTA).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current value of PTA.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadPta, @function
-.proc   AsmReadPta
-
-AsmReadPta::
-         mov            r8 = cr.pta;;
-         br.ret.dpnt    b0;;
-.endp    AsmReadPta
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWritePta
-//
-// This routine is used to write the value to Page Table Address Register (PTA)).
-//
-// Arguments :
-//
-// On Entry : The value need to be written to PTA
-//
-// Return Value: The value written to PTA.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWritePta, @function
-.proc   AsmWritePta
-.regstk 1, 0, 0, 0
-
-AsmWritePta::
-         mov            cr.pta = in0
-         mov            r8 = in0;;
-         srlz.i;;
-         srlz.d;;
-         br.ret.dpnt    b0;;
-.endp    AsmWritePta
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessGp.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessGp.s
deleted file mode 100644
index b2787d0e17..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessGp.s
+++ /dev/null
@@ -1,85 +0,0 @@
-/// 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: AccessGp.s
-///
-///
-///  IPF specific Global Pointer and Stack Pointer accessing functions
-///
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadGp
-//
-// This routine is used to read the current value of 64-bit Global Pointer (GP).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current GP value.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadGp, @function
-.proc   AsmReadGp
-
-AsmReadGp::
-        mov             r8 = gp;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadGp
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteGp
-//
-// This routine is used to write the current value of 64-bit Global Pointer (GP).
-//
-// Arguments :
-//
-// On Entry : The value need to be written.
-//
-// Return Value: The value have been written.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteGp, @function
-.proc   AsmWriteGp
-.regstk 1, 0, 0, 0
-
-AsmWriteGp::
-        mov             gp = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteGp
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadSp
-//
-// This routine is used to read the current value of 64-bit Stack Pointer (SP).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current SP value.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadSp, @function
-.proc   AsmReadSp
-
-AsmReadSp::
-        mov             r8 = sp;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadSp
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessKr.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessKr.s
deleted file mode 100644
index 80b9ee457a..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessKr.s
+++ /dev/null
@@ -1,399 +0,0 @@
-/// 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: AccessKr.s
-///
-///
-///  IPF specific AsmReadKrX() and AsmWriteKrX functions, 'X' is from '0' to '7'
-///
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr0
-//
-// This routine is used to get KR0.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value store in KR0.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadKr0, @function
-.proc   AsmReadKr0
-
-AsmReadKr0::
-        mov             r8 = ar.k0;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadKr0
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr0
-//
-// This routine is used to Write KR0.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value written to the KR0.
-//
-//--
-//----------------------------------------------------------------------------------
-
-.text
-.type   AsmWriteKr0, @function
-.proc   AsmWriteKr0
-.regstk 1, 0, 0, 0
-
-AsmWriteKr0::
-        mov             ar.k0 = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteKr0
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr1
-//
-// This routine is used to get KR1.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value store in KR1.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadKr1, @function
-.proc   AsmReadKr1
-
-AsmReadKr1::
-        mov             r8 = ar.k1;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadKr1
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr1
-//
-// This routine is used to Write KR1.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value written to the KR1.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteKr1, @function
-.proc   AsmWriteKr1
-
-AsmWriteKr1::
-        mov             ar.k1 = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteKr1
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr2
-//
-// This routine is used to get KR2.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value store in KR2.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadKr2, @function
-.proc   AsmReadKr2
-
-AsmReadKr2::
-        mov             r8 = ar.k2;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadKr2
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr2
-//
-// This routine is used to Write KR2.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value written to the KR2.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteKr2, @function
-.proc   AsmWriteKr2
-
-AsmWriteKr2::
-        mov             ar.k2 = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteKr2
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr3
-//
-// This routine is used to get KR3.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value store in KR3.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadKr3, @function
-.proc   AsmReadKr3
-
-AsmReadKr3::
-        mov             r8 = ar.k3;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadKr3
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr3
-//
-// This routine is used to Write KR3.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value written to the KR3.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteKr3, @function
-.proc   AsmWriteKr3
-
-AsmWriteKr3::
-        mov             ar.k3 = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteKr3
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr4
-//
-// This routine is used to get KR4.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value store in KR4.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadKr4, @function
-.proc   AsmReadKr4
-
-AsmReadKr4::
-        mov             r8 = ar.k4;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadKr4
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr4
-//
-// This routine is used to Write KR4.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value written to the KR4.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteKr4, @function
-.proc   AsmWriteKr4
-
-AsmWriteKr4::
-        mov             ar.k4 = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteKr4
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr5
-//
-// This routine is used to get KR5.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value store in KR5.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadKr5, @function
-.proc   AsmReadKr5
-
-AsmReadKr5::
-        mov             r8 = ar.k5;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadKr5
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr5
-//
-// This routine is used to Write KR5.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value written to the KR5.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteKr5, @function
-.proc   AsmWriteKr5
-
-AsmWriteKr5::
-        mov             ar.k5 = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteKr5
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr6
-//
-// This routine is used to get KR6.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value store in KR6.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadKr6, @function
-.proc   AsmReadKr6
-
-AsmReadKr6::
-        mov             r8 = ar.k6;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadKr6
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr6
-//
-// This routine is used to write KR6.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value written to the KR6.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteKr6, @function
-.proc   AsmWriteKr6
-
-AsmWriteKr6::
-        mov             ar.k6 = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteKr6
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr7
-//
-// This routine is used to get KR7.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value store in KR7.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadKr7, @function
-.proc   AsmReadKr7
-
-AsmReadKr7::
-        mov             r8 = ar.k7;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadKr7
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr7
-//
-// This routine is used to write KR7.
-//
-// Arguments :
-//
-// On Entry :  None.
-//
-// Return Value: The value written to the KR7.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWriteKr7, @function
-.proc   AsmWriteKr7
-
-AsmWriteKr7::
-        mov             ar.k7 = in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmWriteKr7
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessPmr.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessPmr.s
deleted file mode 100644
index 1d657738bc..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessPmr.s
+++ /dev/null
@@ -1,123 +0,0 @@
-/// 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: AccessPmr.s
-///
-///
-///  IPF specific Performance Monitor Configuration/Data Registers accessing functions
-///
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadPmc
-//
-// This routine is used to Reads the current value of Performance Monitor Configuration Register (PMC).
-//
-// Arguments :
-//
-// On Entry : The 8-bit PMC index.
-//
-// Return Value: The current value of PMC by Index.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadPmc, @function
-.proc   AsmReadPmc
-.regstk 1, 0, 0, 0
-
-AsmReadPmc::
-        srlz.i;;
-        srlz.d;;
-        mov             r8 = pmc[in0];;
-        br.ret.dpnt     b0;;
-.endp   AsmReadPmc
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWritePmc
-//
-// This routine is used to write the current value to a Performance Monitor Configuration Register (PMC).
-//
-// Arguments :
-//
-// On Entry : The 8-bit PMC index.
-//            The value should be written to PMC
-//
-// Return Value: The value written to PMC.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWritePmc, @function
-.proc   AsmWritePmc
-.regstk 2, 0, 0, 0
-
-AsmWritePmc::
-        mov             pmc[in0] = in1
-        mov             r8 = in1;;
-        srlz.i;;
-        srlz.d;;
-        br.ret.dpnt     b0;;
-.endp   AsmWritePmc
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadPmd
-//
-// This routine is used to Reads the current value of Performance Monitor Data Register (PMD).
-//
-// Arguments :
-//
-// On Entry : The 8-bit PMD index.
-//
-// Return Value: The current value of PMD by Index.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadPmd, @function
-.proc   AsmReadPmd
-.regstk 1, 0, 0, 0
-
-AsmReadPmd::
-        srlz.i;;
-        srlz.d;;
-        mov             r8 = pmd[in0];;
-        br.ret.dpnt     b0;;
-.endp   AsmReadPmd
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWritePmd
-//
-// This routine is used to write the current value to Performance Monitor Data Register (PMD).
-//
-// Arguments :
-//
-// On Entry : The 8-bit PMD index.
-//            The value should be written to PMD
-//
-// Return Value: The value written to PMD.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWritePmd, @function
-.proc   AsmWritePmd
-.regstk 2, 0, 0, 0
-
-AsmWritePmd::
-        mov             pmd[in0] = in1
-        mov             r8 = in1;;
-        srlz.i;;
-        srlz.d;;
-        br.ret.dpnt     b0;;
-.endp   AsmWritePmd
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessPsr.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessPsr.s
deleted file mode 100644
index cbd188abd1..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AccessPsr.s
+++ /dev/null
@@ -1,110 +0,0 @@
-/// 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.
-///
-/// Module Name: AccessPsr.s
-///
-///
-///  IPF specific Processor Status Register accessing functions
-///
-
-#define CpuModeMask           0x0000001008020000
-
-#define CpuInVirtualMode             0x1
-#define CpuInPhysicalMode            0x0
-#define CpuInMixMode                 (0x0 - 0x1)
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadPsr
-//
-// This routine is used to read the current value of Processor Status Register (PSR).
-//
-// Arguments :
-//
-// On Entry :
-//
-// Return Value: The current PSR value.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadPsr, @function
-.proc   AsmReadPsr
-
-AsmReadPsr::
-        mov             r8 = psr;;
-        br.ret.dpnt     b0;;
-.endp   AsmReadPsr
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWritePsr
-//
-// This routine is used to write the value of Processor Status Register (PSR).
-//
-// Arguments :
-//
-// On Entry : The value need to be written.
-//
-// Return Value: The value have been written.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmWritePsr, @function
-.proc   AsmWritePsr
-.regstk 1, 0, 0, 0
-
-AsmWritePsr::
-        mov             psr.l = in0
-        mov             r8 = in0;;
-        srlz.d;;
-        srlz.i;;
-        br.ret.dpnt     b0;;
-.endp   AsmWritePsr
-
-//---------------------------------------------------------------------------------
-//++
-// AsmCpuVirtual
-//
-// This routine is used to determines if the CPU is currently executing
-// in virtual, physical, or mixed mode.
-//
-// If the CPU is in virtual mode(PSR.RT=1, PSR.DT=1, PSR.IT=1), then 1 is returned.
-// If the CPU is in physical mode(PSR.RT=0, PSR.DT=0, PSR.IT=0), then 0 is returned.
-// If the CPU is not in physical mode or virtual mode, then it is in mixed mode,
-// and -1 is returned.
-//
-// Arguments:
-//
-// On Entry: None
-//
-// Return Value: The CPU mode flag
-//               return  1  The CPU is in virtual mode.
-//               return  0  The CPU is in physical mode.
-//               return -1  The CPU is in mixed mode.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmCpuVirtual, @function
-.proc   AsmCpuVirtual
-
-AsmCpuVirtual::
-        mov            r29 = psr
-        movl           r30 = CpuModeMask;;
-        and            r28 = r30, r29;;
-        cmp.eq         p6, p7 = r30, r28;;
-(p6)    mov            r8 = CpuInVirtualMode;;
-(p6)    br.ret.dpnt    b0;;
-(p7)    cmp.eq         p6, p7 = 0x0, r28;;
-(p6)    mov            r8 = CpuInPhysicalMode;;
-(p7)    mov            r8 = CpuInMixMode;;
-        br.ret.dpnt    b0;;
-.endp   AsmCpuVirtual
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AsmPalCall.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AsmPalCall.s
deleted file mode 100644
index 3e6fdc86ba..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/AsmPalCall.s
+++ /dev/null
@@ -1,158 +0,0 @@
-/// 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:  AsmPalCall.s
-///
-///
-///   Contains an implementation of CallPalProcStacked on Itanium-based
-///   architecture.
-///
-
-
-
-//-----------------------------------------------------------------------------
-//++
-//  AsmPalCall
-//
-//  Makes a PAL procedure call.
-//  This is function to make a PAL procedure call.  Based on the Index
-//  value this API will make static or stacked PAL call.  The following table
-//  describes the usage of PAL Procedure Index Assignment. Architected procedures
-//  may be designated as required or optional.  If a PAL procedure is specified
-//  as optional, a unique return code of 0xFFFFFFFFFFFFFFFF is returned in the
-//  Status field of the PAL_CALL_RETURN structure.
-//  This indicates that the procedure is not present in this PAL implementation.
-//  It is the caller's responsibility to check for this return code after calling
-//  any optional PAL procedure.
-//  No parameter checking is performed on the 5 input parameters, but there are
-//  some common rules that the caller should follow when making a PAL call.  Any
-//  address passed to PAL as buffers for return parameters must be 8-byte aligned.
-//  Unaligned addresses may cause undefined results.  For those parameters defined
-//  as reserved or some fields defined as reserved must be zero filled or the invalid
-//  argument return value may be returned or undefined result may occur during the
-//  execution of the procedure.  If the PalEntryPoint  does not point to a valid
-//  PAL entry point then the system behavior is undefined.  This function is only
-//  available on IPF.
-//
-//  On Entry :
-//           in0:  PAL_PROC entrypoint
-//           in1-in4 : PAL_PROC arguments
-//
-//  Return Value:
-//
-//  As per stacked calling conventions.
-//
-//--
-//---------------------------------------------------------------------------
-
-//
-// PAL function calls
-//
-#define PAL_MC_CLEAR_LOG               0x0015
-#define PAL_MC_DYNAMIC_STATE           0x0018
-#define PAL_MC_ERROR_INFO              0x0019
-#define PAL_MC_RESUME                  0x001a
-
-
-.text
-.proc AsmPalCall
-.type AsmPalCall, @function
-
-AsmPalCall::
-         alloc          loc1 = ar.pfs,5,8,4,0
-         mov            loc0 = b0
-         mov            loc3 = b5
-         mov            loc4 = r2
-         mov            loc7 = r1
-         mov            r2 = psr;;
-         mov            r28 = in1
-         mov            loc5 = r2;;
-
-         movl           loc6 = 0x100;;
-         cmp.ge         p6,p7 = r28,loc6;;
-
-(p6)     movl           loc6 = 0x1FF;;
-(p7)     br.dpnt.few PalCallStatic;;                  // 0 ~ 255 make a static Pal Call
-(p6)     cmp.le         p6,p7 = r28,loc6;;
-(p6)     br.dpnt.few PalCallStacked;;                 // 256 ~ 511 make a stacked Pal Call
-(p7)     movl           loc6 = 0x300;;
-(p7)     cmp.ge         p6,p7 = r28,loc6;;
-(p7)     br.dpnt.few PalCallStatic;;                  // 512 ~ 767 make a static Pal Call
-(p6)     movl           loc6 = 0x3FF;;
-(p6)     cmp.le         p6,p7 = r28,loc6;;
-(p6)     br.dpnt.few PalCallStacked;;                 // 768 ~ 1023 make a stacked Pal Call
-
-(p7)     mov            r8 = 0xFFFFFFFFFFFFFFFF;;     // > 1024 return invalid
-(p7)     br.dpnt.few    ComeBackFromPALCall;;
-
-PalCallStatic:
-         movl           loc6 = PAL_MC_CLEAR_LOG;;
-         cmp.eq         p6,p7 = r28,loc6;;
-
-(p7)     movl           loc6 = PAL_MC_DYNAMIC_STATE;;
-(p7)     cmp.eq         p6,p7 = r28,loc6;;
-
-(p7)     movl           loc6 = PAL_MC_ERROR_INFO;;
-(p7)     cmp.eq         p6,p7 = r28,loc6;;
-
-(p7)     movl           loc6 = PAL_MC_RESUME;;
-(p7)     cmp.eq         p6,p7 = r28,loc6 ;;
-
-         mov            loc6 = 0x1;;
-(p7)     dep            r2 = loc6,r2,13,1;;           // psr.ic = 1
-
-// p6 will be true, if it is one of the MCHK calls. There has been lots of debate
-// on psr.ic for these values. For now, do not do any thing to psr.ic
-
-         dep            r2 = r0,r2,14,1;;             // psr.i = 0
-
-         mov            psr.l = r2
-         srlz.d                                       // Needs data serailization.
-         srlz.i                                       // Needs instruction serailization.
-
-StaticGetPALLocalIP:
-         mov            loc2 = ip;;
-         add            loc2 = ComeBackFromPALCall - StaticGetPALLocalIP,loc2;;
-         mov            b0 = loc2                     // return address after Pal call
-
-         mov            r29 = in2
-         mov            r30 = in3
-         mov            r31 = in4
-         mov            b5 = in0;;                    // get the PalProcEntrypt from input
-         br.sptk        b5;;                          // Take the plunge.
-
-PalCallStacked:
-         dep            r2 = r0,r2,14,1;;             // psr.i = 0
-         mov            psr.l = r2;;
-         srlz.d                                       // Needs data serailization.
-         srlz.i                                       // Needs instruction serailization.
-
-StackedGetPALLocalIP:
-         mov            out0 = in1
-         mov            out1 = in2
-         mov            out2 = in3
-         mov            out3 = in4
-         mov            b5 =  in0 ;;                  // get the PalProcEntrypt from input
-         br.call.dpnt   b0 = b5 ;;                    // Take the plunge.
-
-ComeBackFromPALCall:
-         mov            psr.l = loc5 ;;
-         srlz.d                                       // Needs data serailization.
-         srlz.i                                       // Needs instruction serailization.
-
-         mov            b5 = loc3
-         mov            r2 = loc4
-         mov            r1 = loc7
-
-         mov            b0 = loc0
-         mov            ar.pfs = loc1;;
-         br.ret.dpnt    b0;;
-
-.endp AsmPalCall
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuBreakpoint.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuBreakpoint.c
deleted file mode 100644
index b99faa91d0..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuBreakpoint.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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.  
-
-
-Module Name:
-
-  CpuBreakpint.c
-  
-Abstract: 
-
---*/
-
-#include "BaseLibInternals.h"
-
-/**
-  Generates a breakpoint on the CPU.
-
-  Generates a breakpoint on the CPU. The breakpoint must be implemented such
-  that code can resume normal execution after the breakpoint.
-
-**/
-VOID
-EFIAPI
-CpuBreakpoint (
-  VOID
-  )
-{
-  __break (0);
-}
-
-/**
-  Used to serialize load and store operations.
-
-  All loads and stores that proceed calls to this function are guaranteed to be
-  globally visible when this function returns.
-
-**/
-VOID
-EFIAPI
-MemoryFence (
-  VOID
-  )
-{
-  __mfa ();
-}
-
-/**
-  Disables CPU interrupts.
-
-  Disables CPU interrupts.
-
-**/
-VOID
-EFIAPI
-DisableInterrupts (
-  VOID
-  )
-{
-  _disable ();
-}
-
-/**
-  Enables CPU interrupts.
-
-  Enables CPU interrupts.
-
-**/
-VOID
-EFIAPI
-EnableInterrupts (
-  VOID
-  )
-{
-  _enable ();
-}
-
-/**
-  Enables CPU interrupts for the smallest window required to capture any
-  pending interrupts.
-
-  Enables CPU interrupts for the smallest window required to capture any
-  pending interrupts.
-
-**/
-VOID
-EFIAPI
-EnableDisableInterrupts (
-  VOID
-  )
-{
-  EnableInterrupts ();
-  DisableInterrupts ();
-}
-
-/**
-  Places the CPU in a sleep state until an interrupt is received.
-
-  Places the CPU in a sleep state until an interrupt is received. If interrupts
-  are disabled prior to calling this function, then the CPU will be placed in a
-  sleep state indefinitely.
-
-**/
-VOID
-EFIAPI
-CpuSleep (
-  VOID
-  )
-{
-  PalCallStatic (NULL, 29, 0, 0, 0);
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuBreakpointMsc.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuBreakpointMsc.c
deleted file mode 100644
index 4171185088..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuBreakpointMsc.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/** @file
-  Base Library CPU functions for Itanium
-
-  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.
-
-**/
-
-
-#include "BaseLibInternals.h"
-
-#pragma intrinsic (_enable)
-#pragma intrinsic (_disable)
-#pragma intrinsic (__break)
-#pragma intrinsic (__mfa)
-
-/**
-  Generates a breakpoint on the CPU.
-
-  Generates a breakpoint on the CPU. The breakpoint must be implemented such
-  that code can resume normal execution after the breakpoint.
-
-**/
-VOID
-EFIAPI
-CpuBreakpoint (
-  VOID
-  )
-{
-  __break (0);
-}
-
-/**
-  Used to serialize load and store operations.
-
-  All loads and stores that proceed calls to this function are guaranteed to be
-  globally visible when this function returns.
-
-**/
-VOID
-EFIAPI
-MemoryFence (
-  VOID
-  )
-{
-  __mfa ();
-}
-
-/**
-  Disables CPU interrupts.
-
-  Disables CPU interrupts.
-
-**/
-VOID
-EFIAPI
-DisableInterrupts (
-  VOID
-  )
-{
-  _disable ();
-}
-
-/**
-  Enables CPU interrupts.
-
-  Enables CPU interrupts.
-
-**/
-VOID
-EFIAPI
-EnableInterrupts (
-  VOID
-  )
-{
-  _enable ();
-}
-
-/**
-  Enables CPU interrupts for the smallest window required to capture any
-  pending interrupts.
-
-  Enables CPU interrupts for the smallest window required to capture any
-  pending interrupts.
-
-**/
-VOID
-EFIAPI
-EnableDisableInterrupts (
-  VOID
-  )
-{
-  EnableInterrupts ();
-  DisableInterrupts ();
-}
-
-/**
-  Places the CPU in a sleep state until an interrupt is received.
-
-  Places the CPU in a sleep state until an interrupt is received. If interrupts
-  are disabled prior to calling this function, then the CPU will be placed in a
-  sleep state indefinitely.
-
-**/
-VOID
-EFIAPI
-CpuSleep (
-  VOID
-  )
-{
-  PalCallStatic (NULL, 29, 0, 0, 0);
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuFlushTlb.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuFlushTlb.s
deleted file mode 100644
index 1b66ca65a9..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuFlushTlb.s
+++ /dev/null
@@ -1,59 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   CpuFlushTlb.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.globl PalCallStatic
-.type   PalCallStatic, @function
-
-.proc   CpuFlushTlb
-.type   CpuFlushTlb, @function
-CpuFlushTlb::
-        alloc               loc0 = ar.pfs, 0, 3, 5, 0
-        mov                 out0 = 0
-        mov                 out1 = 6
-        mov                 out2 = 0
-        mov                 out3 = 0
-        mov                 loc1 = b0
-        mov                 out4 = 0
-        brl.call.sptk       b0  = PalCallStatic
-        mov                 loc2 = psr              // save PSR
-        mov                 ar.pfs = loc0
-        extr.u              r14 = r10, 32, 32       // r14 <- count1
-        rsm                 1 << 14                 // Disable interrupts
-        extr.u              r15 = r11, 32, 32       // r15 <- stride1
-        extr.u              r10 = r10, 0, 32        // r10 <- count2
-        add                 r10 = -1, r10
-        extr.u              r11 = r11, 0, 32        // r11 <- stride2
-        br.cond.sptk        LoopPredicate
-LoopOuter:
-        mov                 ar.lc = r10             // LC <- count2
-        mov                 ar.ec = r0              // EC <- 0
-Loop:
-        ptc.e               r9
-        add                 r9 = r11, r9            // r9 += stride2
-        br.ctop.sptk        Loop
-        add                 r9 = r15, r9            // r9 += stride1
-LoopPredicate:
-        cmp.ne              p6 = r0, r14            // count1 == 0?
-        add                 r14 = -1, r14
-(p6)    br.cond.sptk        LoopOuter
-        mov                 psr.l = loc2
-        mov                 b0  = loc1
-        br.ret.sptk.many    b0
-.endp
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuPause.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuPause.s
deleted file mode 100644
index abbcb10c73..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/CpuPause.s
+++ /dev/null
@@ -1,26 +0,0 @@
-/// Copyright (c) 2004 - 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.    
-///
-/// Module Name:
-///
-///   CpuPause.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.proc   CpuPause
-.type   CpuPause, @function
-CpuPause::
-        hint.i              @pause
-        br.ret.sptk.many    b0
-.endp
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ExecFc.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ExecFc.s
deleted file mode 100644
index 7f555ee7d1..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ExecFc.s
+++ /dev/null
@@ -1,66 +0,0 @@
-/// 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: ExecFc.s
-///
-///
-///  IPF specific AsmFc() and AsmFci () functions
-///
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmFc
-//
-// This routine is used to execute a FC instruction on the specific address.
-//
-// Arguments :
-//
-// On Entry :  The specific address need to execute FC instruction.
-//
-// Return Value: The specific address have been execute FC instruction.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmFc, @function
-.proc   AsmFc
-.regstk 1, 0, 0, 0
-
-AsmFc::
-        fc              in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmFc
-
-
-//---------------------------------------------------------------------------------
-//++
-// AsmFci
-//
-// This routine is used to execute a FC.i instruction on the specific address.
-//
-// Arguments :
-//
-// On Entry :  The specific address need to execute FC.i instruction.
-//
-// Return Value: The specific address have been execute FC.i instruction.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmFci, @function
-.proc   AsmFci
-.regstk 1, 0, 0, 0
-
-AsmFci::
-        fc.i            in0
-        mov             r8 = in0;;
-        br.ret.dpnt     b0;;
-.endp   AsmFci
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/FlushCacheRange.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/FlushCacheRange.s
deleted file mode 100644
index 38531bc1e2..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/FlushCacheRange.s
+++ /dev/null
@@ -1,95 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   FlushCacheRange.s
-///
-/// Abstract:
-///
-///
-
-.file  "IpfCpuCache.s"
-
-#include  "IpfMacro.i"
-#include  "IpfDefines.h"
-
-//
-//  Invalidates a range of instruction cache lines in the cache coherency domain
-//  of the calling CPU.
-//
-//  Invalidates the instruction cache lines specified by Address and Length. If
-//  Address is not aligned on a cache line boundary, then entire instruction
-//  cache line containing Address is invalidated. If Address + Length is not
-//  aligned on a cache line boundary, then the entire instruction cache line
-//  containing Address + Length -1 is invalidated. This function may choose to
-//  invalidate the entire instruction cache if that is more efficient than
-//  invalidating the specified range. If Length is 0, the no instruction cache
-//  lines are invalidated. Address is returned. 
-//  This function is only available on IPF.
-//
-//  If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
-//
-//  @param  Address The base address of the instruction cache lines to
-//                  invalidate. If the CPU is in a physical addressing mode, then
-//                  Address is a physical address. If the CPU is in a virtual
-//                  addressing mode, then Address is a virtual address.
-//
-//  @param  Length  The number of bytes to invalidate from the instruction cache.
-//
-//  @return Address
-//  
-//  VOID *
-//  EFIAPI
-//  AsmFlushCacheRange (
-//    IN      VOID                      *Address,
-//    IN      UINTN                     Length
-//    );
-//
-PROCEDURE_ENTRY (AsmFlushCacheRange)
-
-      NESTED_SETUP (5,8,0,0)
-            
-      mov         loc2 = ar.lc
-      
-      mov         loc3 = in0                  // Start address.
-      mov         loc4 = in1;;                // Length in bytes.
-      
-      cmp.eq  p6,p7 = loc4, r0;;               // If Length is zero then don't flush any cache
-      (p6)  br.spnt.many DoneFlushingC;;         
-      
-      add         loc4 = loc4,loc3 
-      mov         loc5 = 1;;
-      sub         loc4 = loc4, loc5 ;; // the End address to flush
-                                         
-      dep         loc3 = r0,loc3,0,5          
-      dep         loc4 = r0,loc4,0,5;;         
-      shr         loc3 = loc3,5             
-      shr         loc4 = loc4,5;;    // 32 byte cache line
-      
-      sub         loc4 = loc4,loc3;; // total flush count, It should be add 1 but 
-                                     // the br.cloop will first execute one time 
-      mov         loc3 = in0                  
-      mov         loc5 = 32      
-      mov         ar.lc = loc4;;
-
-StillFlushingC:
-      fc          loc3;; 
-      sync.i;;
-      srlz.i;;
-      add         loc3 = loc5,loc3;;
-      br.cloop.sptk.few StillFlushingC;;
-
-DoneFlushingC:      
-      mov         ar.lc = loc2     
-      mov          r8   = in0       // return *Address
-      NESTED_RETURN
-
-PROCEDURE_EXIT (AsmFlushCacheRange)
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/GetInterruptState.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/GetInterruptState.s
deleted file mode 100644
index 8716cc5178..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/GetInterruptState.s
+++ /dev/null
@@ -1,27 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   GetInterruptState.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.proc   GlueGetInterruptState
-.type   GlueGetInterruptState, @function
-GlueGetInterruptState::
-        mov                 r8  = psr
-        extr.u              r8  = r8, 14, 1
-        br.ret.sptk.many    b0
-.endp   GlueGetInterruptState
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InterlockedCompareExchange32.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InterlockedCompareExchange32.s
deleted file mode 100644
index 5572282070..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InterlockedCompareExchange32.s
+++ /dev/null
@@ -1,29 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   InterlockedCompareExchange32.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.proc   InternalSyncCompareExchange32
-.type   InternalSyncCompareExchange32, @function
-InternalSyncCompareExchange32::
-        zxt4                r33 = r33
-        mov                 ar.ccv = r33
-        cmpxchg4.rel        r8  = [r32], r34
-        mf
-        br.ret.sptk.many    b0
-.endp   InternalSyncCompareExchange32
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InterlockedCompareExchange64.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InterlockedCompareExchange64.s
deleted file mode 100644
index ce4f3b7c11..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InterlockedCompareExchange64.s
+++ /dev/null
@@ -1,28 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   InterlockedCompareExchange64.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.proc   InternalSyncCompareExchange64
-.type   InternalSyncCompareExchange64, @function
-InternalSyncCompareExchange64::
-        mov                 ar.ccv = r33
-        cmpxchg8.rel        r8  = [r32], r34
-        mf
-        br.ret.sptk.many    b0
-.endp   InternalSyncCompareExchange64
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InternalSwitchStack.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InternalSwitchStack.c
deleted file mode 100644
index 3ed934a669..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/InternalSwitchStack.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
-  SwitchStack() function for IPF.
-
-  Copyright (c) 2007, 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:  InternalSwitchStack.c
-
-**/
-
-#include <BaseLibInternals.h>
-
-/**
-  Transfers control to a function starting with a new stack.
-
-  Transfers control to the function specified by EntryPoint using the
-  new stack specified by NewStack and passing in the parameters specified
-  by Context1 and Context2.  Context1 and Context2 are optional and may
-  be NULL.  The function EntryPoint must never return.
-  Marker will be ignored on IA-32, x64, and EBC.
-  IPF CPUs expect one additional parameter of type VOID * that specifies
-  the new backing store pointer.
-
-  If EntryPoint is NULL, then ASSERT().
-  If NewStack is NULL, then ASSERT().
-
-  @param  EntryPoint  A pointer to function to call with the new stack.
-  @param  Context1    A pointer to the context to pass into the EntryPoint
-                      function.
-  @param  Context2    A pointer to the context to pass into the EntryPoint
-                      function.
-  @param  NewStack    A pointer to the new stack to use for the EntryPoint
-                      function.
-  @param  Marker      VA_LIST marker for the variable argument list.
-
-**/
-VOID
-EFIAPI
-InternalSwitchStack (
-  IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
-  IN      VOID                      *Context1,   OPTIONAL
-  IN      VOID                      *Context2,   OPTIONAL
-  IN      VOID                      *NewStack,
-  IN      VA_LIST                   Marker
-  )
-
-{
-  VOID                      *NewBsp;
-
-  //
-  // Get new backing store pointer from variable list
-  //
-  NewBsp   = VA_ARG (Marker, VOID *);
-
-  //
-  // Stack should be aligned with CPU_STACK_ALIGNMENT
-  //
-  ASSERT (((UINTN)NewStack & (CPU_STACK_ALIGNMENT - 1)) == 0);
-  ASSERT (((UINTN)NewBsp & (CPU_STACK_ALIGNMENT - 1)) == 0);
-
-  AsmSwitchStackAndBackingStore (EntryPoint, Context1, Context2, NewStack, NewBsp);
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/PalCallStatic.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/PalCallStatic.s
deleted file mode 100644
index 98fdd9e995..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/PalCallStatic.s
+++ /dev/null
@@ -1,48 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   PalCallStatic.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.proc   PalCallStatic
-.type   PalCallStatic, @function
-.regstk 5, 0, 0, 0
-PalCallStatic::
-        cmp.eq              p15 = in0, r0
-        mov                 r31 = in4
-        mov                 r8  = ip
-
-(p15)   mov                 in0 = ar.k5
-        add                 r8  = (_PalProcReturn - PalCallStatic), r8
-        mov                 r30 = in3
-
-        mov                 in4 = psr
-        mov                 in3 = b0
-        mov                 b7  = in0
-
-        rsm                 1 << 14                 // Disable interrupts
-        mov                 r29 = in2
-        mov                 r28 = in1
-
-        mov                 b0  = r8
-        br.cond.sptk.many   b7
-
-_PalProcReturn:
-        mov                 psr.l = in4
-        mov                 b0  = in3
-        br.ret.sptk.many    b0
-.endp   PalCallStatic
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ReadCpuid.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ReadCpuid.s
deleted file mode 100644
index ff610c546c..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ReadCpuid.s
+++ /dev/null
@@ -1,39 +0,0 @@
-/// 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: ReadCpuid.s
-///
-///
-///  IPF specific AsmReadCpuid()function
-///
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadCpuid
-//
-// This routine is used to Reads the current value of Processor Identifier Register (CPUID).
-//
-// Arguments :
-//
-// On Entry : The 8-bit Processor Identifier Register index to read.
-//
-// Return Value: The current value of Processor Identifier Register specified by Index.
-//
-//--
-//----------------------------------------------------------------------------------
-.text
-.type   AsmReadCpuid, @function
-.proc   AsmReadCpuid
-.regstk 1, 0, 0, 0
-
-AsmReadCpuid::
-        mov             r8 = cpuid[in0];;
-        br.ret.dpnt     b0;;
-.endp    AsmReadCpuid
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/SwitchStack.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/SwitchStack.s
deleted file mode 100644
index f04cdbbd99..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/SwitchStack.s
+++ /dev/null
@@ -1,51 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   SwitchStack.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.proc   AsmSwitchStackAndBackingStore
-.type   AsmSwitchStackAndBackingStore, @function
-.regstk 5, 0, 0, 0
-AsmSwitchStackAndBackingStore::
-        mov                 r14 = ar.rsc
-        movl                r2  = ~((((1 << 14) - 1) << 16) | 3)
-
-        mov                 r17 = in1
-        mov                 r18 = in2
-        and                 r2  = r14, r2
-
-        mov                 ar.rsc = r2
-        mov                 sp  = in3
-        mov                 r19 = in4
-
-        ld8.nt1             r16 = [in0], 8
-        ld8.nta             gp  = [in0]
-        mov                 r3  = -1
-
-        loadrs
-        mov                 ar.bspstore = r19
-        mov                 b7  = r16
-
-        alloc               r2  = ar.pfs, 0, 0, 2, 0
-        mov                 out0 = r17
-        mov                 out1 = r18
-
-        mov                 ar.rnat = r3
-        mov                 ar.rsc = r14
-        br.call.sptk.many   b0  = b7
-.endp   AsmSwitchStackAndBackingStore
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/Synchronization.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/Synchronization.c
deleted file mode 100644
index dce24695e3..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/Synchronization.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  Synchronization.c
-  
-Abstract: 
-
---*/
-
-#include "BaseLibInternals.h"
-
-/**
-  Performs an atomic increment of an 32-bit unsigned integer.
-
-  Performs an atomic increment of the 32-bit unsigned integer specified by
-  Value and returns the incremented value. The increment operation must be
-  performed using MP safe mechanisms. The state of the return value is not
-  guaranteed to be MP safe.
-
-  @param  Value A pointer to the 32-bit value to increment.
-
-  @return The incremented value.
-
-**/
-UINT32
-EFIAPI
-InternalSyncIncrement (
-  IN      volatile UINT32           *Value
-  )
-{
-  UINT32                            OriginalValue;
-
-  do {
-    OriginalValue = *Value;
-  } while (OriginalValue != InternalSyncCompareExchange32 (
-                              Value,
-                              OriginalValue,
-                              OriginalValue + 1
-                              ));
-  return OriginalValue + 1;
-}
-
-/**
-  Performs an atomic decrement of an 32-bit unsigned integer.
-
-  Performs an atomic decrement of the 32-bit unsigned integer specified by
-  Value and returns the decrement value. The decrement operation must be
-  performed using MP safe mechanisms. The state of the return value is not
-  guaranteed to be MP safe.
-
-  @param  Value A pointer to the 32-bit value to decrement.
-
-  @return The decrement value.
-
-**/
-UINT32
-EFIAPI
-InternalSyncDecrement (
-  IN      volatile UINT32           *Value
-  )
-{
-  UINT32                            OriginalValue;
-
-  do {
-    OriginalValue = *Value;
-  } while (OriginalValue != InternalSyncCompareExchange32 (
-                              Value,
-                              OriginalValue,
-                              OriginalValue - 1
-                              ));
-  return OriginalValue - 1;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/Unaligned.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/Unaligned.c
deleted file mode 100644
index 14512dc91f..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/Unaligned.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  Unaligned.c
-  
-Abstract: 
-
---*/
-
-#include "BaseLibInternals.h"
-
-/**
-  Reads a 16-bit value from memory that may be unaligned.
-
-  This function returns the 16-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 16-bit value that may be unaligned.
-
-  @return *Uint16
-
-**/
-UINT16
-EFIAPI
-ReadUnaligned16 (
-  IN      CONST UINT16              *Buffer
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  return (UINT16)(((UINT8*)Buffer)[0] | (((UINT8*)Buffer)[1] << 8));
-}
-
-/**
-  Writes a 16-bit value to memory that may be unaligned.
-
-  This function writes the 16-bit value specified by Value to Buffer. Value is
-  returned. The function guarantees that the write operation does not produce
-  an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 16-bit value that may be unaligned.
-  @param  Value   16-bit value to write to Buffer.
-
-  @return Value
-
-**/
-UINT16
-EFIAPI
-WriteUnaligned16 (
-  OUT     UINT16                    *Buffer,
-  IN      UINT16                    Value
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  ((UINT8*)Buffer)[0] = (UINT8)Value;
-  ((UINT8*)Buffer)[1] = (UINT8)(Value >> 8);
-
-  return Value;
-}
-
-/**
-  Reads a 24-bit value from memory that may be unaligned.
-
-  This function returns the 24-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 24-bit value that may be unaligned.
-
-  @return The value read.
-
-**/
-UINT32
-EFIAPI
-ReadUnaligned24 (
-  IN      CONST UINT32              *Buffer
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  return (UINT32)(
-            ReadUnaligned16 ((UINT16*)Buffer) |
-            (((UINT8*)Buffer)[2] << 16)
-            );
-}
-
-/**
-  Writes a 24-bit value to memory that may be unaligned.
-
-  This function writes the 24-bit value specified by Value to Buffer. Value is
-  returned. The function guarantees that the write operation does not produce
-  an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 24-bit value that may be unaligned.
-  @param  Value   24-bit value to write to Buffer.
-
-  @return The value written.
-
-**/
-UINT32
-EFIAPI
-WriteUnaligned24 (
-  OUT     UINT32                    *Buffer,
-  IN      UINT32                    Value
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  WriteUnaligned16 ((UINT16*)Buffer, (UINT16)Value);
-  *(UINT8*)((UINT16*)Buffer + 1) = (UINT8)(Value >> 16);
-  return Value;
-}
-
-/**
-  Reads a 32-bit value from memory that may be unaligned.
-
-  This function returns the 32-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 32-bit value that may be unaligned.
-
-  @return *Uint32
-
-**/
-UINT32
-EFIAPI
-ReadUnaligned32 (
-  IN      CONST UINT32              *Buffer
-  )
-{
-  UINT16  LowerBytes;
-  UINT16  HigherBytes;
-
-  ASSERT (Buffer != NULL);
-
-  LowerBytes  = ReadUnaligned16 ((UINT16*) Buffer);
-  HigherBytes = ReadUnaligned16 ((UINT16*) Buffer + 1);
-
-  return (UINT32) (LowerBytes | (HigherBytes << 16));
-}
-
-/**
-  Writes a 32-bit value to memory that may be unaligned.
-
-  This function writes the 32-bit value specified by Value to Buffer. Value is
-  returned. The function guarantees that the write operation does not produce
-  an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 32-bit value that may be unaligned.
-  @param  Value   32-bit value to write to Buffer.
-
-  @return Value
-
-**/
-UINT32
-EFIAPI
-WriteUnaligned32 (
-  OUT     UINT32                    *Buffer,
-  IN      UINT32                    Value
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  WriteUnaligned16 ((UINT16*)Buffer, (UINT16)Value);
-  WriteUnaligned16 ((UINT16*)Buffer + 1, (UINT16)(Value >> 16));
-  return Value;
-}
-
-/**
-  Reads a 64-bit value from memory that may be unaligned.
-
-  This function returns the 64-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
-
-  @return *Uint64
-
-**/
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  IN      CONST UINT64              *Buffer
-  )
-{
-  UINT32  LowerBytes;
-  UINT32  HigherBytes;
-
-  ASSERT (Buffer != NULL);
-
-  LowerBytes  = ReadUnaligned32 ((UINT32*) Buffer);
-  HigherBytes = ReadUnaligned32 ((UINT32*) Buffer + 1);
-
-  return (UINT64) (LowerBytes | LShiftU64 (HigherBytes, 32));
-}
-
-/**
-  Writes a 64-bit value to memory that may be unaligned.
-
-  This function writes the 64-bit value specified by Value to Buffer. Value is
-  returned. The function guarantees that the write operation does not produce
-  an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
-  @param  Value   64-bit value to write to Buffer.
-
-  @return Value
-
-**/
-UINT64
-EFIAPI
-WriteUnaligned64 (
-  OUT     UINT64                    *Buffer,
-  IN      UINT64                    Value
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  WriteUnaligned32 ((UINT32*)Buffer, (UINT32)Value);
-  WriteUnaligned32 ((UINT32*)Buffer + 1, (UINT32)RShiftU64 (Value, 32));
-  return Value;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/asm.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/asm.h
deleted file mode 100644
index 53ea80907b..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/asm.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  asm.h
-  
-Abstract: 
-
---*/
-
-#ifndef _ASM_H
-#define _ASM_H
-
-#define TRUE  1
-#define FALSE 0
-#define PROCEDURE_ENTRY(name)   .##text;            \
-  .##type name, @function; \
-  .##proc name; \
-  name::
-
-#define PROCEDURE_EXIT(name)  .##endp name
-
-#endif // _ASM_H
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ia_64gen.h b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ia_64gen.h
deleted file mode 100644
index 92f0733256..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/ia_64gen.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  asm.h
-  
-Abstract: 
-
---*/
-
-#ifndef _IA64GEN_H
-#define _IA64GEN_H
-
-#define TT_UNAT           0
-#define C_PSR             0
-#define J_UNAT            0
-#define T_TYPE            0
-#define T_IPSR            0x8
-#define T_ISR             0x10
-#define T_IIP             0x18
-#define T_IFA             0x20
-#define T_IIPA            0x28
-#define T_IFS             0x30
-#define T_IIM             0x38
-#define T_RSC             0x40
-#define T_BSP             0x48
-#define T_BSPSTORE        0x50
-#define T_RNAT            0x58
-#define T_PFS             0x60
-#define T_KBSPSTORE       0x68
-#define T_UNAT            0x70
-#define T_CCV             0x78
-#define T_DCR             0x80
-#define T_PREDS           0x88
-#define T_NATS            0x90
-#define T_R1              0x98
-#define T_GP              0x98
-#define T_R2              0xa0
-#define T_R3              0xa8
-#define T_R4              0xb0
-#define T_R5              0xb8
-#define T_R6              0xc0
-#define T_R7              0xc8
-#define T_R8              0xd0
-#define T_R9              0xd8
-#define T_R10             0xe0
-#define T_R11             0xe8
-#define T_R12             0xf0
-#define T_SP              0xf0
-#define T_R13             0xf8
-#define T_R14             0x100
-#define T_R15             0x108
-#define T_R16             0x110
-#define T_R17             0x118
-#define T_R18             0x120
-#define T_R19             0x128
-#define T_R20             0x130
-#define T_R21             0x138
-#define T_R22             0x140
-#define T_R23             0x148
-#define T_R24             0x150
-#define T_R25             0x158
-#define T_R26             0x160
-#define T_R27             0x168
-#define T_R28             0x170
-#define T_R29             0x178
-#define T_R30             0x180
-#define T_R31             0x188
-#define T_F2              0x1f0
-#define T_F3              0x200
-#define T_F4              0x210
-#define T_F5              0x220
-#define T_F6              0x230
-#define T_F7              0x240
-#define T_F8              0x250
-#define T_F9              0x260
-#define T_F10             0x270
-#define T_F11             0x280
-#define T_F12             0x290
-#define T_F13             0x2a0
-#define T_F14             0x2b0
-#define T_F15             0x2c0
-#define T_F16             0x2d0
-#define T_F17             0x2e0
-#define T_F18             0x2f0
-#define T_F19             0x300
-#define T_F20             0x310
-#define T_F21             0x320
-#define T_F22             0x330
-#define T_F23             0x340
-#define T_F24             0x350
-#define T_F25             0x360
-#define T_F26             0x370
-#define T_F27             0x380
-#define T_F28             0x390
-#define T_F29             0x3a0
-#define T_F30             0x3b0
-#define T_F31             0x3c0
-#define T_FPSR            0x1e0
-#define T_B0              0x190
-#define T_B1              0x198
-#define T_B2              0x1a0
-#define T_B3              0x1a8
-#define T_B4              0x1b0
-#define T_B5              0x1b8
-#define T_B6              0x1c0
-#define T_B7              0x1c8
-#define T_EC              0x1d0
-#define T_LC              0x1d8
-#define J_NATS            0x8
-#define J_PFS             0x10
-#define J_BSP             0x18
-#define J_RNAT            0x20
-#define J_PREDS           0x28
-#define J_LC              0x30
-#define J_R4              0x38
-#define J_R5              0x40
-#define J_R6              0x48
-#define J_R7              0x50
-#define J_SP              0x58
-#define J_F2              0x60
-#define J_F3              0x70
-#define J_F4              0x80
-#define J_F5              0x90
-#define J_F16             0xa0
-#define J_F17             0xb0
-#define J_F18             0xc0
-#define J_F19             0xd0
-#define J_F20             0xe0
-#define J_F21             0xf0
-#define J_F22             0x100
-#define J_F23             0x110
-#define J_F24             0x120
-#define J_F25             0x130
-#define J_F26             0x140
-#define J_F27             0x150
-#define J_F28             0x160
-#define J_F29             0x170
-#define J_F30             0x180
-#define J_F31             0x190
-#define J_FPSR            0x1a0
-#define J_B0              0x1a8
-#define J_B1              0x1b0
-#define J_B2              0x1b8
-#define J_B3              0x1c0
-#define J_B4              0x1c8
-#define J_B5              0x1d0
-#define TRAP_FRAME_LENGTH 0x3d0
-#define C_UNAT            0x28
-#define C_NATS            0x30
-#define C_PFS             0x8
-#define C_BSPSTORE        0x10
-#define C_RNAT            0x18
-#define C_RSC             0x20
-#define C_PREDS           0x38
-#define C_LC              0x40
-#define C_DCR             0x48
-#define C_R1              0x50
-#define C_GP              0x50
-#define C_R4              0x58
-#define C_R5              0x60
-#define C_R6              0x68
-#define C_R7              0x70
-#define C_SP              0x78
-#define C_R13             0x80
-#define C_F2              0x90
-#define C_F3              0xa0
-#define C_F4              0xb0
-#define C_F5              0xc0
-#define C_F16             0xd0
-#define C_F17             0xe0
-#define C_F18             0xf0
-#define C_F19             0x100
-#define C_F20             0x110
-#define C_F21             0x120
-#define C_F22             0x130
-#define C_F23             0x140
-#define C_F24             0x150
-#define C_F25             0x160
-#define C_F26             0x170
-#define C_F27             0x180
-#define C_F28             0x190
-#define C_F29             0x1a0
-#define C_F30             0x1b0
-#define C_F31             0x1c0
-#define C_FPSR            0x1d0
-#define C_B0              0x1d8
-#define C_B1              0x1e0
-#define C_B2              0x1e8
-#define C_B3              0x1f0
-#define C_B4              0x1f8
-#define C_B5              0x200
-#define TT_R2             0x8
-#define TT_R3             0x10
-#define TT_R8             0x18
-#define TT_R9             0x20
-#define TT_R10            0x28
-#define TT_R11            0x30
-#define TT_R14            0x38
-
-#endif _IA64GEN_H
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/longjmp.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/longjmp.s
deleted file mode 100644
index 9da5095872..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/longjmp.s
+++ /dev/null
@@ -1,122 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   longjmp.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.proc   InternalLongJump
-.type   InternalLongJump, @function
-.regstk 2, 0, 0, 0
-InternalLongJump::
-        add                 r10 = 0x10*20 + 8*14, in0
-        movl                r2  = ~((((1 << 14) - 1) << 16) | 3)
-
-        ld8.nt1             r14 = [r10], -8*2       // BSP, skip PFS
-        mov                 r15 = ar.bspstore       // BSPSTORE
-
-        ld8.nt1             r17 = [r10], -8         // UNAT after spill
-        mov                 r16 = ar.rsc            // RSC
-        cmp.leu             p6  = r14, r15
-
-        ld8.nt1             r18 = [r10], -8         // UNAT
-        ld8.nt1             r25 = [r10], -8         // b5
-        and                 r2  = r16, r2
-
-        ldf.fill.nt1        f2  = [in0], 0x10
-        ld8.nt1             r24 = [r10], -8         // b4
-        mov                 b5  = r25
-
-        mov                 ar.rsc = r2
-        ld8.nt1             r23 = [r10], -8         // b3
-        mov                 b4  = r24
-
-        ldf.fill.nt1        f3  = [in0], 0x10
-        mov                 ar.unat = r17
-(p6)    br.spnt.many        _skip_flushrs
-
-        flushrs
-        mov                 r15 = ar.bsp            // New BSPSTORE
-
-_skip_flushrs:
-        mov                 r31 = ar.rnat           // RNAT
-        loadrs
-
-        ldf.fill.nt1        f4  = [in0], 0x10
-        ld8.nt1             r22 = [r10], -8
-        dep                 r2  = -1, r14, 3, 6
-
-        ldf.fill.nt1        f5  = [in0], 0x10
-        ld8.nt1             r21 = [r10], -8
-        cmp.ltu             p6  = r2, r15
-
-        ld8.nt1             r20 = [r10], -0x10      // skip sp
-(p6)    ld8.nta             r31 = [r2]
-        mov                 b3  = r23
-
-        ldf.fill.nt1        f16 = [in0], 0x10
-        ld8.fill.nt1        r7  = [r10], -8
-        mov                 b2  = r22
-
-        ldf.fill.nt1        f17 = [in0], 0x10
-        ld8.fill.nt1        r6  = [r10], -8
-        mov                 b1  = r21
-
-        ldf.fill.nt1        f18 = [in0], 0x10
-        ld8.fill.nt1        r5  = [r10], -8
-        mov                 b0  = r20
-
-        ldf.fill.nt1        f19 = [in0], 0x10
-        ld8.fill.nt1        r4  = [r10], 8*13
-
-        ldf.fill.nt1        f20 = [in0], 0x10
-        ld8.nt1             r19 = [r10], 0x10       // PFS
-
-        ldf.fill.nt1        f21 = [in0], 0x10
-        ld8.nt1             r26 = [r10], 8          // Predicate
-        mov                 ar.pfs = r19
-
-        ldf.fill.nt1        f22 = [in0], 0x10
-        ld8.nt1             r27 = [r10], 8          // LC
-        mov                 pr  = r26, -1
-
-        ldf.fill.nt1        f23 = [in0], 0x10
-        ld8.nt1             r28 = [r10], -17*8 - 0x10
-        mov                 ar.lc = r27
-
-        ldf.fill.nt1        f24 = [in0], 0x10
-        ldf.fill.nt1        f25 = [in0], 0x10
-        mov                 r8  = in1
-
-        ldf.fill.nt1        f26 = [in0], 0x10
-        ldf.fill.nt1        f31 = [r10], -0x10
-
-        ldf.fill.nt1        f27 = [in0], 0x10
-        ldf.fill.nt1        f30 = [r10], -0x10
-
-        ldf.fill.nt1        f28 = [in0]
-        ldf.fill.nt1        f29 = [r10], 0x10*3 + 8*4
-
-        ld8.fill.nt1        sp  = [r10]
-        mov                 ar.unat = r18
-
-        mov                 ar.bspstore = r14
-        mov                 ar.rnat = r31
-
-        invala
-        mov                 ar.rsc = r16
-        br.ret.sptk         b0
-.endp
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/setjmp.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/setjmp.s
deleted file mode 100644
index ead46e0a26..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ipf/setjmp.s
+++ /dev/null
@@ -1,109 +0,0 @@
-/// Copyright (c) 2004, 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:
-///
-///   setjmp.s
-///
-/// Abstract:
-///
-///
-
-.auto
-.text
-
-.globl InternalAssertJumpBuffer
-.type   InternalAssertJumpBuffer, @function
-
-.proc   SetJump
-.type   SetJump, @function
-SetJump::
-        alloc               loc0 = ar.pfs, 1, 2, 1, 0
-        mov                 loc1 = b0
-        mov                 out0 = in0
-
-        brl.call.sptk.many  b0  = InternalAssertJumpBuffer
-
-        mov                 r14 = ar.unat
-        mov                 r15 = ar.bsp
-        add                 r10 = 0x10*20, in0
-
-        stf.spill.nta       [in0] = f2, 0x10
-        st8.spill.nta       [r10] = r4, 8
-        mov                 r21 = b1
-
-        stf.spill.nta       [in0] = f3, 0x10
-        st8.spill.nta       [r10] = r5, 8
-        mov                 r22 = b2
-
-        stf.spill.nta       [in0] = f4, 0x10
-        st8.spill.nta       [r10] = r6, 8
-        mov                 r23 = b3
-
-        stf.spill.nta       [in0] = f5, 0x10
-        st8.spill.nta       [r10] = r7, 8
-        mov                 r24 = b4
-
-        stf.spill.nta       [in0] = f16, 0x10
-        st8.spill.nta       [r10] = sp, 8
-        mov                 r25 = b5
-
-        stf.spill.nta       [in0] = f17, 0x10
-        st8.nta             [r10] = loc1, 8
-        mov                 r16 = pr
-
-        stf.spill.nta       [in0] = f18, 0x10
-        st8.nta             [r10] = r21, 8
-        mov                 r17 = ar.lc
-
-        stf.spill.nta       [in0] = f19, 0x10
-        st8.nta             [r10] = r22, 8
-
-        stf.spill.nta       [in0] = f20, 0x10
-        st8.nta             [r10] = r23, 8
-
-        stf.spill.nta       [in0] = f21, 0x10
-        st8.nta             [r10] = r24, 8
-
-        stf.spill.nta       [in0] = f22, 0x10
-        st8.nta             [r10] = r25, 8
-
-        stf.spill.nta       [in0] = f23, 0x10
-        mov                 r18 = ar.unat
-
-        stf.spill.nta       [in0] = f24, 0x10
-        st8.nta             [r10] = r14, 8          // UNAT
-
-        stf.spill.nta       [in0] = f25, 0x10
-        st8.nta             [r10] = r18, 8          // UNAT after spill
-
-        stf.spill.nta       [in0] = f26, 0x10
-        st8.nta             [r10] = loc0, 8         // PFS
-
-        stf.spill.nta       [in0] = f27, 0x10
-        st8.nta             [r10] = r15, 8          // BSP
-        mov                 r8  = 0
-
-        stf.spill.nta       [in0] = f28, 0x10
-        mov                 r19 = ar.fpsr
-
-        stf.spill.nta       [in0] = f29, 0x10
-        st8.nta             [r10] = r16, 8          // PR
-        mov                 ar.pfs = loc0
-
-        stf.spill.nta       [in0] = f30, 0x10
-        st8.nta             [r10] = r17, 8          // LC
-        mov                 b0  = loc1
-
-        stf.spill.nta       [in0] = f31, 0x10
-        st8.nta             [r10] = r19             // FPSR
-
-        mov                 ar.unat = r14
-        br.ret.sptk         b0
-.endp   SetJump
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/BaseMemoryLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/BaseMemoryLib.inf
index 3a7dbce365..e5b58c52cf 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/BaseMemoryLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/BaseMemoryLib.inf
@@ -101,11 +101,6 @@ COMPONENT_TYPE  = LIBRARY
   CopyMemWrapper.c
   MemLibGuid.c
 
-[sources.ipf]
-  Ipf/CopyMem.c
-  Ipf/MemLibGeneric.c
-  Ipf/SetMem.c
-
 [sources.ebc]
   Ebc/CopyMem.c
   Ebc/MemLibGeneric.c
@@ -145,9 +140,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/CopyMem.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/CopyMem.c
deleted file mode 100644
index bd65b2c1cf..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/CopyMem.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  CopyMem.c
-  
-Abstract: 
-
-  Internal CopyMem
-
---*/
-
-#include "BaseMemoryLibInternal.h"
-
-/**
-  Copy Length bytes from Source to Destination.
-
-  @param  Destination Target of copy
-  @param  Source Place to copy from
-  @param  Length Number of bytes to copy
-
-  @return Destination
-
-**/
-VOID *
-EFIAPI
-InternalMemCopyMem (
-  OUT     VOID                      *Destination,
-  IN      CONST VOID                *Source,
-  IN      UINTN                     Length
-  )
-{
-  //
-  // Declare the local variables that actually move the data elements as
-  // volatile to prevent the optimizer from replacing this function with
-  // the intrinsic memcpy()
-  //
-  volatile UINT8                    *Destination8;
-  CONST UINT8                       *Source8;
-
-  if (Source > Destination) {
-    Destination8 = (UINT8*)Destination;
-    Source8 = (CONST UINT8*)Source;
-    while (Length-- != 0) {
-      *(Destination8++) = *(Source8++);
-    }
-  } else if (Source < Destination) {
-    Destination8 = (UINT8*)Destination + Length;
-    Source8 = (CONST UINT8*)Source + Length;
-    while (Length-- != 0) {
-      *(--Destination8) = *(--Source8);
-    }
-  }
-  return Destination;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/MemLibGeneric.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/MemLibGeneric.c
deleted file mode 100644
index 3a1d09d61d..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/MemLibGeneric.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  MemLibGeneric.c
-  
-Abstract: 
-
-  Architecture Independent Base Memory Library Implementation.
-
---*/
-
-#include "BaseMemoryLibInternal.h"
-
-/**
-  Fills a target buffer with a 16-bit value, and returns the target buffer.
-
-  @param  Buffer  Pointer to the target buffer to fill.
-  @param  Length  Number of bytes in Buffer to fill.
-  @param  Value   Value with which to fill Length bytes of Buffer.
-
-  @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemSetMem16 (
-  OUT     VOID                      *Buffer,
-  IN      UINTN                     Length,
-  IN      UINT16                    Value
-  )
-{
-  do {
-    ((UINT16*)Buffer)[--Length] = Value;
-  } while (Length != 0);
-  return Buffer;
-}
-
-/**
-  Fills a target buffer with a 32-bit value, and returns the target buffer.
-
-  @param  Buffer  Pointer to the target buffer to fill.
-  @param  Length  Number of bytes in Buffer to fill.
-  @param  Value   Value with which to fill Length bytes of Buffer.
-
-  @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemSetMem32 (
-  OUT     VOID                      *Buffer,
-  IN      UINTN                     Length,
-  IN      UINT32                    Value
-  )
-{
-  do {
-    ((UINT32*)Buffer)[--Length] = Value;
-  } while (Length != 0);
-  return Buffer;
-}
-
-/**
-  Fills a target buffer with a 64-bit value, and returns the target buffer.
-
-  @param  Buffer  Pointer to the target buffer to fill.
-  @param  Length  Number of bytes in Buffer to fill.
-  @param  Value   Value with which to fill Length bytes of Buffer.
-
-  @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemSetMem64 (
-  OUT     VOID                      *Buffer,
-  IN      UINTN                     Length,
-  IN      UINT64                    Value
-  )
-{
-  do {
-    ((UINT64*)Buffer)[--Length] = Value;
-  } while (Length != 0);
-  return Buffer;
-}
-
-/**
-  Set Buffer to 0 for Size bytes.
-
-  @param  Buffer Memory to set.
-  @param  Size Number of bytes to set
-
-  @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemZeroMem (
-  OUT     VOID                      *Buffer,
-  IN      UINTN                     Length
-  )
-{
-  return InternalMemSetMem (Buffer, Length, 0);
-}
-
-/**
-  Compares two memory buffers of a given length.
-
-  @param  DestinationBuffer First memory buffer
-  @param  SourceBuffer      Second memory buffer
-  @param  Length            Length of DestinationBuffer and SourceBuffer memory
-                            regions to compare. Must be non-zero.
-
-  @retval 0     if MemOne == MemTwo
-
-**/
-INTN
-EFIAPI
-InternalMemCompareMem (
-  IN      CONST VOID                *DestinationBuffer,
-  IN      CONST VOID                *SourceBuffer,
-  IN      UINTN                     Length
-  )
-{
-  while ((--Length != 0) &&
-         (*(INT8*)DestinationBuffer == *(INT8*)SourceBuffer)) {
-    DestinationBuffer = (INT8*)DestinationBuffer + 1;
-    SourceBuffer = (INT8*)SourceBuffer + 1;
-  }
-  return (INTN)*(UINT8*)DestinationBuffer - (INTN)*(UINT8*)SourceBuffer;
-}
-
-/**
-  Scans a target buffer for an 8-bit value, and returns a pointer to the
-  matching 8-bit value in the target buffer.
-
-  @param  Buffer  Pointer to the target buffer to scan.
-  @param  Length  Number of bytes in Buffer to scan. Must be non-zero.
-  @param  Value   Value to search for in the target buffer.
-
-  @return Pointer to the first occurrence or NULL if not found.
-
-**/
-CONST VOID *
-EFIAPI
-InternalMemScanMem8 (
-  IN      CONST VOID                *Buffer,
-  IN      UINTN                     Length,
-  IN      UINT8                     Value
-  )
-{
-  CONST UINT8                       *Pointer;
-
-  Pointer = (CONST UINT8*)Buffer;
-  do {
-    if (*(Pointer++) == Value) {
-      return Pointer;
-    }
-  } while (--Length != 0);
-  return NULL;
-}
-
-/**
-  Scans a target buffer for a 16-bit value, and returns a pointer to the
-  matching 16-bit value in the target buffer.
-
-  @param  Buffer  Pointer to the target buffer to scan.
-  @param  Length  Number of bytes in Buffer to scan. Must be non-zero.
-  @param  Value   Value to search for in the target buffer.
-
-  @return Pointer to the first occurrence or NULL if not found.
-
-**/
-CONST VOID *
-EFIAPI
-InternalMemScanMem16 (
-  IN      CONST VOID                *Buffer,
-  IN      UINTN                     Length,
-  IN      UINT16                    Value
-  )
-{
-  CONST UINT16                      *Pointer;
-
-  Pointer = (CONST UINT16*)Buffer;
-  do {
-    if (*(Pointer++) == Value) {
-      return Pointer;
-    }
-  } while (--Length != 0);
-  return NULL;
-}
-
-/**
-  Scans a target buffer for a 32-bit value, and returns a pointer to the
-  matching 32-bit value in the target buffer.
-
-  @param  Buffer  Pointer to the target buffer to scan.
-  @param  Length  Number of bytes in Buffer to scan. Must be non-zero.
-  @param  Value   Value to search for in the target buffer.
-
-  @return Pointer to the first occurrence or NULL if not found.
-
-**/
-CONST VOID *
-EFIAPI
-InternalMemScanMem32 (
-  IN      CONST VOID                *Buffer,
-  IN      UINTN                     Length,
-  IN      UINT32                    Value
-  )
-{
-  CONST UINT32                      *Pointer;
-
-  Pointer = (CONST UINT32*)Buffer;
-  do {
-    if (*(Pointer++) == Value) {
-      return Pointer;
-    }
-  } while (--Length != 0);
-  return NULL;
-}
-
-/**
-  Scans a target buffer for a 64-bit value, and returns a pointer to the
-  matching 64-bit value in the target buffer.
-
-  @param  Buffer  Pointer to the target buffer to scan.
-  @param  Length  Number of bytes in Buffer to scan. Must be non-zero.
-  @param  Value   Value to search for in the target buffer.
-
-  @return Pointer to the first occurrence or NULL if not found.
-
-**/
-CONST VOID *
-EFIAPI
-InternalMemScanMem64 (
-  IN      CONST VOID                *Buffer,
-  IN      UINTN                     Length,
-  IN      UINT64                    Value
-  )
-{
-  CONST UINT64                      *Pointer;
-
-  Pointer = (CONST UINT64*)Buffer;
-  do {
-    if (*(Pointer++) == Value) {
-      return Pointer;
-    }
-  } while (--Length != 0);
-  return NULL;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/SetMem.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/SetMem.c
deleted file mode 100644
index 4a1ff171f3..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseMemoryLib/Ipf/SetMem.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  SetMem.c
-  
-Abstract: 
-
-  Internal SetMem
-
---*/
-
-#include "BaseMemoryLibInternal.h"
-
-/**
-  Set Buffer to Value for Size bytes.
-
-  @param  Buffer Memory to set.
-  @param  Size Number of bytes to set
-  @param  Value Value of the set operation.
-
-  @return Buffer
-
-**/
-VOID *
-EFIAPI
-InternalMemSetMem (
-  IN      VOID                      *Buffer,
-  IN      UINTN                     Size,
-  IN      UINT8                     Value
-  )
-{
-  //
-  // Declare the local variables that actually move the data elements as
-  // volatile to prevent the optimizer from replacing this function with
-  // the intrinsic memset()
-  //
-  volatile UINT8                    *Pointer;
-
-  Pointer = (UINT8*)Buffer;
-  while (Size-- != 0) {
-    *(Pointer++) = Value;
-  }
-  return Buffer;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciCf8Lib/BasePciCf8Lib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciCf8Lib/BasePciCf8Lib.inf
index 71033306db..c1feab302a 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciCf8Lib/BasePciCf8Lib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciCf8Lib/BasePciCf8Lib.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -75,9 +72,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciExpressLib/BasePciExpressLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciExpressLib/BasePciExpressLib.inf
index a2218ef15f..8e8296c50e 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciExpressLib/BasePciExpressLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciExpressLib/BasePciExpressLib.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -74,9 +71,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciLibCf8/BasePciLibCf8.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciLibCf8/BasePciLibCf8.inf
index b02eccbc75..2f242f0c0d 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciLibCf8/BasePciLibCf8.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciLibCf8/BasePciLibCf8.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -72,9 +69,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf
index 8e6103fb77..54c054b457 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -72,9 +69,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
index c2f46fd3ba..7ed4b65db8 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -75,9 +72,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffLib/BasePeCoffLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffLib/BasePeCoffLib.inf
index d3390b9c92..bd96f388bb 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffLib/BasePeCoffLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffLib/BasePeCoffLib.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   X64/PeCoffLoaderEx.c
 
-[sources.ipf]
-  Ipf/PeCoffLoaderEx.c
-
 [sources.ebc]
   Ebc/PeCoffLoaderEx.c
 
@@ -74,9 +71,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffLib/Ipf/PeCoffLoaderEx.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffLib/Ipf/PeCoffLoaderEx.c
deleted file mode 100644
index f9b264c8e5..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePeCoffLib/Ipf/PeCoffLoaderEx.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  PeCoffLoaderEx.c
-  
-Abstract: 
-
-  IA-32 Specific relocation fixups.
-
---*/
-
-#include "BasePeCoffLibInternals.h"
-
-#define EFI_IMAGE_MACHINE_IPF EFI_IMAGE_MACHINE_IA64
-
-#define EXT_IMM64(Value, Address, Size, InstPos, ValPos)  \
-    Value |= (((UINT64)((*(Address) >> InstPos) & (((UINT64)1 << Size) - 1))) << ValPos)
-
-#define INS_IMM64(Value, Address, Size, InstPos, ValPos)  \
-    *(UINT32*)Address = (*(UINT32*)Address & ~(((1 << Size) - 1) << InstPos)) | \
-          ((UINT32)((((UINT64)Value >> ValPos) & (((UINT64)1 << Size) - 1))) << InstPos)
-
-#define IMM64_IMM7B_INST_WORD_X         3
-#define IMM64_IMM7B_SIZE_X              7
-#define IMM64_IMM7B_INST_WORD_POS_X     4
-#define IMM64_IMM7B_VAL_POS_X           0
-
-#define IMM64_IMM9D_INST_WORD_X         3
-#define IMM64_IMM9D_SIZE_X              9
-#define IMM64_IMM9D_INST_WORD_POS_X     18
-#define IMM64_IMM9D_VAL_POS_X           7
-
-#define IMM64_IMM5C_INST_WORD_X         3
-#define IMM64_IMM5C_SIZE_X              5
-#define IMM64_IMM5C_INST_WORD_POS_X     13
-#define IMM64_IMM5C_VAL_POS_X           16
-
-#define IMM64_IC_INST_WORD_X            3
-#define IMM64_IC_SIZE_X                 1
-#define IMM64_IC_INST_WORD_POS_X        12
-#define IMM64_IC_VAL_POS_X              21
-
-#define IMM64_IMM41a_INST_WORD_X        1
-#define IMM64_IMM41a_SIZE_X             10
-#define IMM64_IMM41a_INST_WORD_POS_X    14
-#define IMM64_IMM41a_VAL_POS_X          22
-
-#define IMM64_IMM41b_INST_WORD_X        1
-#define IMM64_IMM41b_SIZE_X             8
-#define IMM64_IMM41b_INST_WORD_POS_X    24
-#define IMM64_IMM41b_VAL_POS_X          32
-
-#define IMM64_IMM41c_INST_WORD_X        2
-#define IMM64_IMM41c_SIZE_X             23
-#define IMM64_IMM41c_INST_WORD_POS_X    0
-#define IMM64_IMM41c_VAL_POS_X          40
-
-#define IMM64_SIGN_INST_WORD_X          3
-#define IMM64_SIGN_SIZE_X               1
-#define IMM64_SIGN_INST_WORD_POS_X      27
-#define IMM64_SIGN_VAL_POS_X            63
-
-/**
-  Performs an Itanium-based specific relocation fixup.
-
-  @param  Reloc       Pointer to the relocation record.
-  @param  Fixup       Pointer to the address to fix up.
-  @param  FixupData   Pointer to a buffer to log the fixups.
-  @param  Adjust      The offset to adjust the fixup.
-
-  @return Status code.
-
-**/
-RETURN_STATUS
-GluePeCoffLoaderRelocateImageEx (
-  IN UINT16      *Reloc,
-  IN OUT CHAR8   *Fixup,
-  IN OUT CHAR8   **FixupData,
-  IN UINT64      Adjust
-  )
-{
-  UINT64      *F64;
-  UINT64      FixupVal;
-
-  switch ((*Reloc) >> 12) {
-    case EFI_IMAGE_REL_BASED_IA64_IMM64:
-
-      //
-      // Align it to bundle address before fixing up the
-      // 64-bit immediate value of the movl instruction.
-      //
-
-      Fixup = (CHAR8 *)((UINTN) Fixup & (UINTN) ~(15));
-      FixupVal = (UINT64)0;
-
-      //
-      // Extract the lower 32 bits of IMM64 from bundle
-      //
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IMM7B_INST_WORD_X,
-                IMM64_IMM7B_SIZE_X,
-                IMM64_IMM7B_INST_WORD_POS_X,
-                IMM64_IMM7B_VAL_POS_X
-                );
-
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IMM9D_INST_WORD_X,
-                IMM64_IMM9D_SIZE_X,
-                IMM64_IMM9D_INST_WORD_POS_X,
-                IMM64_IMM9D_VAL_POS_X
-                );
-
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IMM5C_INST_WORD_X,
-                IMM64_IMM5C_SIZE_X,
-                IMM64_IMM5C_INST_WORD_POS_X,
-                IMM64_IMM5C_VAL_POS_X
-                );
-
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IC_INST_WORD_X,
-                IMM64_IC_SIZE_X,
-                IMM64_IC_INST_WORD_POS_X,
-                IMM64_IC_VAL_POS_X
-                );
-
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IMM41a_INST_WORD_X,
-                IMM64_IMM41a_SIZE_X,
-                IMM64_IMM41a_INST_WORD_POS_X,
-                IMM64_IMM41a_VAL_POS_X
-                );
-
-      //
-      // Update 64-bit address
-      //
-      FixupVal += Adjust;
-
-      //
-      // Insert IMM64 into bundle
-      //
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM7B_INST_WORD_X),
-                IMM64_IMM7B_SIZE_X,
-                IMM64_IMM7B_INST_WORD_POS_X,
-                IMM64_IMM7B_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM9D_INST_WORD_X),
-                IMM64_IMM9D_SIZE_X,
-                IMM64_IMM9D_INST_WORD_POS_X,
-                IMM64_IMM9D_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM5C_INST_WORD_X),
-                IMM64_IMM5C_SIZE_X,
-                IMM64_IMM5C_INST_WORD_POS_X,
-                IMM64_IMM5C_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IC_INST_WORD_X),
-                IMM64_IC_SIZE_X,
-                IMM64_IC_INST_WORD_POS_X,
-                IMM64_IC_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM41a_INST_WORD_X),
-                IMM64_IMM41a_SIZE_X,
-                IMM64_IMM41a_INST_WORD_POS_X,
-                IMM64_IMM41a_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM41b_INST_WORD_X),
-                IMM64_IMM41b_SIZE_X,
-                IMM64_IMM41b_INST_WORD_POS_X,
-                IMM64_IMM41b_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM41c_INST_WORD_X),
-                IMM64_IMM41c_SIZE_X,
-                IMM64_IMM41c_INST_WORD_POS_X,
-                IMM64_IMM41c_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_SIGN_INST_WORD_X),
-                IMM64_SIGN_SIZE_X,
-                IMM64_SIGN_INST_WORD_POS_X,
-                IMM64_SIGN_VAL_POS_X
-                );
-
-      F64 = (UINT64 *) Fixup;
-      if (*FixupData != NULL) {
-        *FixupData = ALIGN_POINTER(*FixupData, sizeof(UINT64));
-        *(UINT64 *)(*FixupData) = *F64;
-        *FixupData = *FixupData + sizeof(UINT64);
-      }
-      break;
-
-    default:
-      return RETURN_UNSUPPORTED;
-  }
-
-  return RETURN_SUCCESS;
-}
-
-/**
-  Returns TRUE if the machine type of PE/COFF image is supported. Supported
-  does not mean the image can be executed it means the PE/COFF loader supports
-  loading and relocating of the image type. It's up to the caller to support
-  the entry point.
-
-  This function implies the basic PE/COFF loader/relocator supports IA32, EBC,
-  & X64 images. Calling the entry point in a correct mannor is up to the
-  consumer of this library. This version also supports the special relocations
-  for Itanium.
-
-  @param  Machine   Machine type from the PE Header.
-
-  @return TRUE if this PE/COFF loader can load the image
-
-**/
-BOOLEAN
-PeCoffLoaderImageFormatSupported (
-  IN  UINT16  Machine
-  )
-{
-  if ((Machine == EFI_IMAGE_MACHINE_IPF) || (Machine == EFI_IMAGE_MACHINE_IA32) ||
-      (Machine ==  EFI_IMAGE_MACHINE_EBC) || (Machine == EFI_IMAGE_MACHINE_X64)) {
-    return TRUE;
-  }
-
-  return FALSE;
-}
-
-
-/**
-  ImageRead function that operates on a memory buffer whos base is passed into
-  FileHandle.
-
-  @param  Reloc             Ponter to baes of the input stream
-  @param  Fixup             Offset to the start of the buffer
-  @param  FixupData         Number of bytes to copy into the buffer
-  @param  Adjust            Location to place results of read
-
-  @retval RETURN_SUCCESS    Data is read from FileOffset from the Handle into
-                            the buffer.
-**/
-RETURN_STATUS
-GluePeHotRelocateImageEx (
-  IN UINT16      *Reloc,
-  IN OUT CHAR8   *Fixup,
-  IN OUT CHAR8   **FixupData,
-  IN UINT64      Adjust
-  )
-{
-  UINT64  *F64;
-  UINT64  FixupVal;
-
-  switch ((*Reloc) >> 12) {
-  case EFI_IMAGE_REL_BASED_DIR64:
-    F64         = (UINT64 *) Fixup;
-    *FixupData  = ALIGN_POINTER (*FixupData, sizeof (UINT64));
-    if (*(UINT64 *) (*FixupData) == *F64) {
-      *F64 = *F64 + (UINT64) Adjust;
-    }
-
-    *FixupData = *FixupData + sizeof (UINT64);
-    break;
-
-  case EFI_IMAGE_REL_BASED_IA64_IMM64:
-    F64         = (UINT64 *) Fixup;
-    *FixupData  = ALIGN_POINTER (*FixupData, sizeof (UINT64));
-    if (*(UINT64 *) (*FixupData) == *F64) {
-      //
-      // Align it to bundle address before fixing up the
-      // 64-bit immediate value of the movl instruction.
-      //
-      //
-      Fixup     = (CHAR8 *) ((UINT64) Fixup & (UINT64)~(15));
-      FixupVal  = (UINT64) 0;
-
-      //
-      // Extract the lower 32 bits of IMM64 from bundle
-      //
-      EXT_IMM64 (
-        FixupVal,
-        (UINT32 *) Fixup + IMM64_IMM7B_INST_WORD_X,
-        IMM64_IMM7B_SIZE_X,
-        IMM64_IMM7B_INST_WORD_POS_X,
-        IMM64_IMM7B_VAL_POS_X
-        );
-
-      EXT_IMM64 (
-        FixupVal,
-        (UINT32 *) Fixup + IMM64_IMM9D_INST_WORD_X,
-        IMM64_IMM9D_SIZE_X,
-        IMM64_IMM9D_INST_WORD_POS_X,
-        IMM64_IMM9D_VAL_POS_X
-        );
-
-      EXT_IMM64 (
-        FixupVal,
-        (UINT32 *) Fixup + IMM64_IMM5C_INST_WORD_X,
-        IMM64_IMM5C_SIZE_X,
-        IMM64_IMM5C_INST_WORD_POS_X,
-        IMM64_IMM5C_VAL_POS_X
-        );
-
-      EXT_IMM64 (
-        FixupVal,
-        (UINT32 *) Fixup + IMM64_IC_INST_WORD_X,
-        IMM64_IC_SIZE_X,
-        IMM64_IC_INST_WORD_POS_X,
-        IMM64_IC_VAL_POS_X
-        );
-
-      EXT_IMM64 (
-        FixupVal,
-        (UINT32 *) Fixup + IMM64_IMM41a_INST_WORD_X,
-        IMM64_IMM41a_SIZE_X,
-        IMM64_IMM41a_INST_WORD_POS_X,
-        IMM64_IMM41a_VAL_POS_X
-        );
-
-      //
-      // Update 64-bit address
-      //
-      FixupVal += Adjust;
-
-      //
-      // Insert IMM64 into bundle
-      //
-      INS_IMM64 (
-        FixupVal,
-        ((UINT32 *) Fixup + IMM64_IMM7B_INST_WORD_X),
-        IMM64_IMM7B_SIZE_X,
-        IMM64_IMM7B_INST_WORD_POS_X,
-        IMM64_IMM7B_VAL_POS_X
-        );
-
-      INS_IMM64 (
-        FixupVal,
-        ((UINT32 *) Fixup + IMM64_IMM9D_INST_WORD_X),
-        IMM64_IMM9D_SIZE_X,
-        IMM64_IMM9D_INST_WORD_POS_X,
-        IMM64_IMM9D_VAL_POS_X
-        );
-
-      INS_IMM64 (
-        FixupVal,
-        ((UINT32 *) Fixup + IMM64_IMM5C_INST_WORD_X),
-        IMM64_IMM5C_SIZE_X,
-        IMM64_IMM5C_INST_WORD_POS_X,
-        IMM64_IMM5C_VAL_POS_X
-        );
-
-      INS_IMM64 (
-        FixupVal,
-        ((UINT32 *) Fixup + IMM64_IC_INST_WORD_X),
-        IMM64_IC_SIZE_X,
-        IMM64_IC_INST_WORD_POS_X,
-        IMM64_IC_VAL_POS_X
-        );
-
-      INS_IMM64 (
-        FixupVal,
-        ((UINT32 *) Fixup + IMM64_IMM41a_INST_WORD_X),
-        IMM64_IMM41a_SIZE_X,
-        IMM64_IMM41a_INST_WORD_POS_X,
-        IMM64_IMM41a_VAL_POS_X
-        );
-
-      INS_IMM64 (
-        FixupVal,
-        ((UINT32 *) Fixup + IMM64_IMM41b_INST_WORD_X),
-        IMM64_IMM41b_SIZE_X,
-        IMM64_IMM41b_INST_WORD_POS_X,
-        IMM64_IMM41b_VAL_POS_X
-        );
-
-      INS_IMM64 (
-        FixupVal,
-        ((UINT32 *) Fixup + IMM64_IMM41c_INST_WORD_X),
-        IMM64_IMM41c_SIZE_X,
-        IMM64_IMM41c_INST_WORD_POS_X,
-        IMM64_IMM41c_VAL_POS_X
-        );
-
-      INS_IMM64 (
-        FixupVal,
-        ((UINT32 *) Fixup + IMM64_SIGN_INST_WORD_X),
-        IMM64_SIGN_SIZE_X,
-        IMM64_SIGN_INST_WORD_POS_X,
-        IMM64_SIGN_VAL_POS_X
-        );
-
-      *(UINT64 *) (*FixupData) = *F64;
-    }
-
-    *FixupData = *FixupData + sizeof (UINT64);
-    break;
-
-  default:
-    DEBUG ((EFI_D_ERROR, "PeHotRelocateEx:unknown fixed type\n"));
-    return RETURN_UNSUPPORTED;
-  }
-
-  return RETURN_SUCCESS;
-}
-
-
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.inf
index d7e762382c..a67529f5a3 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.inf
@@ -30,9 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -72,9 +69,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.inf
index 5aa9cad78d..895c44e8ff 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.inf
@@ -30,9 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -75,9 +72,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePrintLib/BasePrintLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePrintLib/BasePrintLib.inf
index 1494a1d8e3..ae6c258c6d 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePrintLib/BasePrintLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BasePrintLib/BasePrintLib.inf
@@ -31,9 +31,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -73,9 +70,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/BaseTimerLibLocalApic.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/BaseTimerLibLocalApic.inf
index 526fe058fb..d12395cb84 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/BaseTimerLibLocalApic.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/BaseTimerLibLocalApic.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
   X86TimerLib.c
   X64/X86LocalApicTimerInitialize.asm
 
-[sources.ipf]
-  Ipf/IpfTimerLib.c
-
 [sources.ebc]
   Ebc/EbcTimerLib.c
 
@@ -76,9 +73,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/Ipf/IpfTimerLib.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/Ipf/IpfTimerLib.c
deleted file mode 100644
index a68439eef3..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseTimerLibLocalApic/Ipf/IpfTimerLib.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  IpfTimerLib.c
-  
-Abstract: 
-
-  Timer Library functions built upon local APIC on IA32/x64.
-
-  @bug Should use PCD to retrieve all the constants including index of
-  the IA32_APIC_BASE MSR, the offsets of InitialCount, CorrentCount
-  and DivideConfiguration.
-
---*/
-
-#include "EdkIIGlueBase.h"
-
-
-/**
-  Performs a delay measured as number of ticks.
-
-  An internal function to perform a delay measured as number of ticks. It's
-  invoked by MicroSecondDelay() and NanoSecondDelay().
-
-  @param  Delay Number of ticks to delay.
-
-**/
-STATIC
-VOID
-InternalIpfDelay (
-  IN      INT64                     Delay
-  )
-{
-  INT64                             Ticks;
-
-  //
-  // The target timer count is calculated here
-  //
-  Ticks = (INT64)AsmReadItc () + Delay;
-
-  //
-  // Wait until time out
-  // Delay > 2^63 could not be handled by this function
-  // Timer wrap-arounds are handled correctly by this function
-  //
-  while (Ticks - (INT64)AsmReadItc() >= 0);
-}
-
-/**
-  Stalls the CPU for at least the given number of microseconds.
-
-  Stalls the CPU for the number of microseconds specified by MicroSeconds.
-
-  @param  MicroSeconds  The minimum number of microseconds to delay.
-
-  @return MicroSeconds
-
-**/
-UINTN
-EFIAPI
-MicroSecondDelay (
-  IN      UINTN                     MicroSeconds
-  )
-{
-  InternalIpfDelay (
-    GetPerformanceCounterProperties (NULL, NULL) *
-    MicroSeconds /
-    1000000
-    );
-  return MicroSeconds;
-}
-
-/**
-  Stalls the CPU for at least the given number of nanoseconds.
-
-  Stalls the CPU for the number of nanoseconds specified by NanoSeconds.
-
-  @param  NanoSeconds The minimum number of nanoseconds to delay.
-
-  @return NanoSeconds
-
-**/
-UINTN
-EFIAPI
-NanoSecondDelay (
-  IN      UINTN                     NanoSeconds
-  )
-{
-  InternalIpfDelay (
-    GetPerformanceCounterProperties (NULL, NULL) *
-    NanoSeconds /
-    1000000000
-    );
-  return NanoSeconds;
-}
-
-/**
-  Retrieves the current value of a 64-bit free running performance counter.
-
-  Retrieves the current value of a 64-bit free running performance counter. The
-  counter can either count up by 1 or count down by 1. If the physical
-  performance counter counts by a larger increment, then the counter values
-  must be translated. The properties of the counter can be retrieved from
-  GetPerformanceCounterProperties().
-
-  @return The current value of the free running performance counter.
-
-**/
-UINT64
-EFIAPI
-GetPerformanceCounter (
-  VOID
-  )
-{
-  return AsmReadItc ();
-}
-
-/**
-  Retrieves the 64-bit frequency in Hz and the range of performance counter
-  values.
-
-  If StartValue is not NULL, then the value that the performance counter starts
-  with immediately after is it rolls over is returned in StartValue. If
-  EndValue is not NULL, then the value that the performance counter end with
-  immediately before it rolls over is returned in EndValue. The 64-bit
-  frequency of the performance counter in Hz is always returned. If StartValue
-  is less than EndValue, then the performance counter counts up. If StartValue
-  is greater than EndValue, then the performance counter counts down. For
-  example, a 64-bit free running counter that counts up would have a StartValue
-  of 0 and an EndValue of 0xFFFFFFFFFFFFFFFF. A 24-bit free running counter
-  that counts down would have a StartValue of 0xFFFFFF and an EndValue of 0.
-
-  @param  StartValue  The value the performance counter starts with when it
-                      rolls over.
-  @param  EndValue    The value that the performance counter ends with before
-                      it rolls over.
-
-  @return The frequency in Hz.
-
-**/
-UINT64
-EFIAPI
-GetPerformanceCounterProperties (
-  OUT      UINT64                    *StartValue,  OPTIONAL
-  OUT      UINT64                    *EndValue     OPTIONAL
-  )
-{
-  PAL_CALL_RETURN                   PalRet;
-  UINT64                            BaseFrequence;
-
-  PalRet = PalCallStatic (NULL, 13, 0, 0, 0);
-  ASSERT (PalRet.Status == 0);
-  BaseFrequence = PalRet.r9;
-
-  PalRet = PalCallStatic (NULL, 14, 0, 0, 0);
-  ASSERT (PalRet.Status == 0);
-
-  if (StartValue != NULL) {
-    *StartValue = 0;
-  }
-
-  if (EndValue != NULL) {
-    *EndValue = (UINT64)(-1);
-  }
-
-  return BaseFrequence * (PalRet.r11 >> 32) / (UINT32)PalRet.r11;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf
index a135ae61b1..833df3944b 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -69,9 +67,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeHobLib/DxeHobLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeHobLib/DxeHobLib.inf
index 9141bfcad3..3dec10e2a2 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeHobLib/DxeHobLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeHobLib/DxeHobLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -75,9 +73,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf
index feb1de8742..4530110f28 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeIoLibCpuIo/DxeIoLibCpuIo.inf
@@ -31,8 +31,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -71,9 +69,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeMemoryAllocationLib/DxeMemoryAllocationLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeMemoryAllocationLib/DxeMemoryAllocationLib.inf
index ac8ce0efd6..7f22aec51a 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeMemoryAllocationLib/DxeMemoryAllocationLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeMemoryAllocationLib/DxeMemoryAllocationLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -72,9 +70,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxePerformanceLib/DxePerformanceLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxePerformanceLib/DxePerformanceLib.inf
index aad357b1c8..5fdd68a231 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxePerformanceLib/DxePerformanceLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxePerformanceLib/DxePerformanceLib.inf
@@ -31,8 +31,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -76,9 +74,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
index cc82863210..65528803f8 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -88,9 +86,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeServicesTableLib/DxeServicesTableLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeServicesTableLib/DxeServicesTableLib.inf
index c449ca77ad..39edd7f396 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeServicesTableLib/DxeServicesTableLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeServicesTableLib/DxeServicesTableLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -70,9 +68,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeSmbusLib/DxeSmbusLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeSmbusLib/DxeSmbusLib.inf
index 11c87cb9d8..40248552e9 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeSmbusLib/DxeSmbusLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/DxeSmbusLib/DxeSmbusLib.inf
@@ -31,8 +31,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -73,9 +71,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/EdkDxeRuntimeDriverLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/EdkDxeRuntimeDriverLib.inf
index 7a2e1365c4..d473500674 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/EdkDxeRuntimeDriverLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/EdkDxeRuntimeDriverLib.inf
@@ -35,10 +35,6 @@ COMPONENT_TYPE  = LIBRARY
   Common/RuntimeLib.c
   Common/RuntimeService.c
 
-[sources.ipf]
-  Ipf/RuntimeLib.c
-  Ipf/RuntimeService.c
-
 [sources.ebc]
   Common/RuntimeLib.c
   Common/RuntimeService.c
@@ -74,9 +70,6 @@ COMPONENT_TYPE  = LIBRARY
               
 [libraries.x64]
 
-[libraries.ipf]
-  EdkIIGlueEdkDxeSalLib
-
 [nmake.common]
   C_FLAGS = $(C_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   LIB_STD_FLAGS = $(LIB_STD_FLAGS) /IGNORE:4006 /IGNORE:4221
@@ -87,9 +80,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/Ipf/RuntimeLib.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/Ipf/RuntimeLib.c
deleted file mode 100644
index e0f4deb6ce..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/Ipf/RuntimeLib.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials                          
-are licensed and made available under the terms and conditions of the BSD License         
-which accompanies this distribution.  The full text of the license may be found at        
-http://opensource.org/licenses/bsd-license.php                                            
-                                                                                          
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.           
-
-
-Module Name:
-
-  RuntimeLib.c
-
-Abstract:
-
-  Runtime lib
-
---*/
-
-#include "../RuntimeLibInternal.h"
-
-//
-// Driver Lib Module Globals
-//
-static EFI_EVENT      mEfiVirtualNotifyEvent;
-EFI_RUNTIME_SERVICES  *mRTEdkDxeRuntimeDriverLib;
-
-VOID
-EFIAPI
-RuntimeDriverExitBootServices (
-  IN EFI_EVENT        Event,
-  IN VOID             *Context
-  )
-/*++
-
-Routine Description:
-
-  Set AtRuntime flag as TRUE after ExitBootServices
-
-Arguments:
-
-  Event   - The Event that is being processed
-  
-  Context - Event Context
-
-Returns: 
-
-  None
-
---*/
-{
-  if (EfiAtRuntime()) {
-    return;
-  }
-}
-
-STATIC
-VOID
-EFIAPI
-RuntimeLibVirtualNotifyEvent (
-  IN EFI_EVENT        Event,
-  IN VOID             *Context
-  )
-/*++
-
-Routine Description:
-
-  Fixup internal data so that EFI can be call in virtual mode.
-  Call the passed in Child Notify event and convert any pointers in 
-  lib to virtual mode.
-
-Arguments:
-
-  Event   - The Event that is being processed
-  
-  Context - Event Context
-
-Returns: 
-
-  None
-
---*/
-{
-  UINTN             Index;
-  EFI_EVENT_NOTIFY  ChildNotifyEventHandler;
-
-  for (Index = 0; _gDriverSetVirtualAddressMapEvent[Index] != NULL; Index++) {
-    ChildNotifyEventHandler = _gDriverSetVirtualAddressMapEvent[Index];
-    ChildNotifyEventHandler (Event, NULL);
-  }
-
-  //
-  // Update global for Runtime Services Table
-  //
-  EfiConvertPointer (0, (VOID **) &mRTEdkDxeRuntimeDriverLib);
-}
-
-EFI_STATUS
-EFIAPI
-RuntimeDriverLibConstruct (
-  IN EFI_HANDLE           ImageHandle,
-  IN EFI_SYSTEM_TABLE     *SystemTable
-  )
-/*++
-
-Routine Description:
-
-  Intialize runtime Driver Lib if it has not yet been initialized. 
-
-Arguments:
-
-  ImageHandle     - The firmware allocated handle for the EFI image.
-  
-  SystemTable     - A pointer to the EFI System Table.
-
-  GoVirtualChildEvent - Caller can register a virtual notification event.
-
-Returns: 
-
-  EFI_STATUS always returns EFI_SUCCESS except EFI_ALREADY_STARTED if already started.
-
---*/
-{
-  EFI_STATUS  Status;
-
-  mRTEdkDxeRuntimeDriverLib = SystemTable->RuntimeServices;
-
-  //
-  // Register SetVirtualAddressMap () notify function
-  //
-  if (_gDriverSetVirtualAddressMapEvent[0] != NULL) {
-    Status = gBS->CreateEvent (
-                    EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE,
-                    EFI_TPL_NOTIFY,
-                    RuntimeLibVirtualNotifyEvent,
-                    NULL,
-                    &mEfiVirtualNotifyEvent
-                    );
-    ASSERT_EFI_ERROR (Status);
-  }
-
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-EFIAPI
-RuntimeDriverLibDeconstruct (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
-  )
-/*++
-
-Routine Description:
-
-  This routine will free some resources which have been allocated in
-  EfiInitializeRuntimeDriverLib(). If a runtime driver exits with an error, 
-  it must call this routine to free the allocated resource before the exiting.
-
-Arguments:
-
-  None
-
-Returns: 
-
-  EFI_SUCCESS     - Shotdown the Runtime Driver Lib successfully
-  EFI_UNSUPPORTED - Runtime Driver lib was not initialized at all
-
---*/
-{
-  EFI_STATUS  Status;
-
-  //
-  // Close SetVirtualAddressMap () notify function
-  //
-  if (_gDriverSetVirtualAddressMapEvent[0] != NULL) {
-    Status = gBS->CloseEvent (mEfiVirtualNotifyEvent);
-    ASSERT_EFI_ERROR (Status);
-  }
-
-  return EFI_SUCCESS;
-}
-
-BOOLEAN
-EFIAPI
-EfiAtRuntime (
-  VOID
-  )
-/*++
-
-Routine Description:
-  Return TRUE if ExitBootService () has been called
-
-Arguments:
-  NONE
-
-Returns: 
-  TRUE - If ExitBootService () has been called
-
---*/
-{
-  EFI_GUID Guid;
-  SAL_RETURN_REGS ReturnReg;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (&Guid, IsEfiRuntime, 0, 0, 0, 0, 0, 0, 0);
-
-  return (BOOLEAN) (ReturnReg.r9 == 1);
-}
-
-BOOLEAN
-EFIAPI
-EfiGoneVirtual (
-  VOID
-  )
-/*++
-
-Routine Description:
-  Return TRUE if SetVirtualAddressMap () has been called
-
-Arguments:
-  NONE
-
-Returns: 
-  TRUE - If SetVirtualAddressMap () has been called
-
---*/
-{
-  EFI_GUID Guid;
-  SAL_RETURN_REGS ReturnReg;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (&Guid, IsVirtual, 0, 0, 0, 0, 0, 0, 0);
-
-  return (BOOLEAN) (ReturnReg.r9 == 1);
-}
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/Ipf/RuntimeService.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/Ipf/RuntimeService.c
deleted file mode 100644
index a270fc5508..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeRuntimeDriverLib/Ipf/RuntimeService.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials                          
-are licensed and made available under the terms and conditions of the BSD License         
-which accompanies this distribution.  The full text of the license may be found at        
-http://opensource.org/licenses/bsd-license.php                                            
-                                                                                          
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.           
-
-
-Module Name:
-
-  RuntimeService.c
-
-Abstract:
-
-  Runtime Lib
-
---*/
-
-#include "../RuntimeLibInternal.h"
-
-VOID
-EFIAPI
-EfiResetSystem (
-  IN EFI_RESET_TYPE               ResetType,
-  IN EFI_STATUS                   ResetStatus,
-  IN UINTN                        DataSize,
-  IN CHAR16                       *ResetData
-  )
-/*++
-
-Routine Description:
-
-  Resets the entire platform.
-
-Arguments:
-
-  ResetType   - The type of reset to perform.
-  ResetStatus - The status code for the reset.
-  DataSize    - The size, in bytes, of ResetData.
-  ResetData   - A data buffer that includes a Null-terminated Unicode string, optionally
-                followed by additional binary data.
-
-Returns:
-
-  None
-
---*/
-{
-  EFI_GUID Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID_HI;
-
-  EfiCallEsalService (
-    &Guid,
-    ResetSystem,
-    (UINT64) ResetType,
-    (UINT64) ResetStatus,
-    (UINT64) DataSize,
-    (UINT64) ResetData,
-    0,
-    0,
-    0
-    );
-}
-
-
-//
-// The following functions hide the mRTEdkDxeRuntimeDriverLib local global from the call to
-// runtime service in the EFI system table.
-//
-EFI_STATUS
-EFIAPI
-EfiGetTime (
-  OUT EFI_TIME                    *Time,
-  OUT EFI_TIME_CAPABILITIES       *Capabilities
-  )
-/*++
-
-Routine Description:
-
-  Returns the current time and date information, and the time-keeping 
-  capabilities of the hardware platform.
-
-Arguments:
-
-  Time          - A pointer to storage to receive a snapshot of the current time.
-  Capabilities  - An optional pointer to a buffer to receive the real time clock device's
-                  capabilities.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (&Guid, GetTime, (UINT64) Time, (UINT64) Capabilities, 0, 0, 0, 0, 0);
-  return ReturnReg.Status;
-}
-
-EFI_STATUS
-EFIAPI
-EfiSetTime (
-  IN EFI_TIME                   *Time
-  )
-/*++
-
-Routine Description:
-
-  Sets the current local time and date information.
-
-Arguments:
-
-  Time  - A pointer to the current time.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (&Guid, SetTime, (UINT64) Time, 0, 0, 0, 0, 0, 0);
-  return ReturnReg.Status;
-}
-
-EFI_STATUS
-EFIAPI
-EfiGetWakeupTime (
-  OUT BOOLEAN                     *Enabled,
-  OUT BOOLEAN                     *Pending,
-  OUT EFI_TIME                    *Time
-  )
-/*++
-
-Routine Description:
-
-  Returns the current wakeup alarm clock setting.
-
-Arguments:
-
-  Enabled - Indicates if the alarm is currently enabled or disabled.
-  Pending - Indicates if the alarm signal is pending and requires acknowledgement.
-  Time    - The current alarm setting.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (&Guid, GetWakeupTime, (UINT64) Enabled, (UINT64) Pending, (UINT64) Time, 0, 0, 0, 0);
-  return ReturnReg.Status;
-}
-
-EFI_STATUS
-EFIAPI
-EfiSetWakeupTime (
-  IN BOOLEAN                      Enable,
-  IN EFI_TIME                     *Time
-  )
-/*++
-
-Routine Description:
-
-  Sets the system wakeup alarm clock time.
-
-Arguments:
-
-  Enable  - Enable or disable the wakeup alarm.
-  Time    - If Enable is TRUE, the time to set the wakeup alarm for.
-            If Enable is FALSE, then this parameter is optional, and may be NULL.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (&Guid, SetWakeupTime, (UINT64) Enable, (UINT64) Time, 0, 0, 0, 0, 0);
-  return ReturnReg.Status;
-}
-
-EFI_STATUS
-EFIAPI
-EfiGetVariable (
-  IN CHAR16                       *VariableName,
-  IN EFI_GUID                     * VendorGuid,
-  OUT UINT32                      *Attributes OPTIONAL,
-  IN OUT UINTN                    *DataSize,
-  OUT VOID                        *Data
-  )
-/*++
-
-Routine Description:
-
-  Returns the value of a variable.
-
-Arguments:
-
-  VariableName  - A Null-terminated Unicode string that is the name of the
-                  vendor's variable.
-  VendorGuid    - A unique identifier for the vendor.
-  Attributes    - If not NULL, a pointer to the memory location to return the
-                  attributes bitmask for the variable.
-  DataSize      - On input, the size in bytes of the return Data buffer.
-                  On output the size of data returned in Data.
-  Data          - The buffer to return the contents of the variable.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                EsalGetVariable,
-                (UINT64) VariableName,
-                (UINT64) VendorGuid,
-                (UINT64) Attributes,
-                (UINT64) DataSize,
-                (UINT64) Data,
-                0,
-                0
-                );
-  return (EFI_STATUS) ReturnReg.Status;
-}
-
-EFI_STATUS
-EFIAPI
-EfiGetNextVariableName (
-  IN OUT UINTN                    *VariableNameSize,
-  IN OUT CHAR16                   *VariableName,
-  IN OUT EFI_GUID                 *VendorGuid
-  )
-/*++
-
-Routine Description:
-
-  Enumerates the current variable names.
-
-Arguments:
-
-  VariableNameSize  - The size of the VariableName buffer.
-  VariableName      - On input, supplies the last VariableName that was returned
-                      by GetNextVariableName(). 
-                      On output, returns the Nullterminated Unicode string of the
-                      current variable.
-  VendorGuid        - On input, supplies the last VendorGuid that was returned by
-                      GetNextVariableName(). 
-                      On output, returns the VendorGuid of the current variable.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                EsalGetNextVariableName,
-                (UINT64) VariableNameSize,
-                (UINT64) VariableName,
-                (UINT64) VendorGuid,
-                0,
-                0,
-                0,
-                0
-                );
-  return (EFI_STATUS) ReturnReg.Status;
-}
-
-EFI_STATUS
-EFIAPI
-EfiSetVariable (
-  IN CHAR16                       *VariableName,
-  IN EFI_GUID                     *VendorGuid,
-  IN UINT32                       Attributes,
-  IN UINTN                        DataSize,
-  IN VOID                         *Data
-  )
-/*++
-
-Routine Description:
-
-  Sets the value of a variable.
-
-Arguments:
-
-  VariableName  - A Null-terminated Unicode string that is the name of the
-                  vendor's variable.
-  VendorGuid    - A unique identifier for the vendor.
-  Attributes    - Attributes bitmask to set for the variable.
-  DataSize      - The size in bytes of the Data buffer.
-  Data          - The contents for the variable.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                EsalSetVariable,
-                (UINT64) VariableName,
-                (UINT64) VendorGuid,
-                (UINT64) Attributes,
-                (UINT64) DataSize,
-                (UINT64) Data,
-                0,
-                0
-                );
-  return (EFI_STATUS) ReturnReg.Status;
-}
-
-EFI_STATUS
-EFIAPI
-EfiGetNextHighMonotonicCount (
-  OUT UINT32                      *HighCount
-  )
-/*++
-
-Routine Description:
-
-  Returns the next high 32 bits of the platform's monotonic counter.
-
-Arguments:
-
-  HighCount - Pointer to returned value.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (&Guid, GetNextHighMonotonicCount, (UINT64) HighCount, 0, 0, 0, 0, 0, 0);
-  return (EFI_STATUS) ReturnReg.Status;
-}
-
-EFI_STATUS
-EFIAPI
-EfiConvertPointer (
-  IN UINTN                  DebugDisposition,
-  IN OUT VOID               **Address
-  )
-/*++
-
-Routine Description:
-
-  Determines the new virtual address that is to be used on subsequent memory accesses.
-
-Arguments:
-
-  DebugDisposition  - Supplies type information for the pointer being converted.
-  Address           - A pointer to a pointer that is to be fixed to be the value needed
-                      for the new virtual address mappings being applied.
-
-Returns:
-
-  Status code
-
---*/
-{
-  return mRTEdkDxeRuntimeDriverLib->ConvertPointer (DebugDisposition, Address);
-}
-
-EFI_STATUS
-EFIAPI
-EfiConvertList (
-  IN UINTN                DebugDisposition,
-  IN OUT LIST_ENTRY       *ListHead
-  )
-/*++
-
-Routine Description:
-
-  Conver the standard Lib double linked list to a virtual mapping.
-
-Arguments:
-
-  DebugDisposition - Argument to EfiConvertPointer (EFI 1.0 API)
-
-  ListHead         - Head of linked list to convert
-
-Returns: 
-
-  EFI_SUCCESS
-
---*/
-{
-  LIST_ENTRY  *Link;
-  LIST_ENTRY  *NextLink;
-
-  //
-  // Convert all the ForwardLink & BackLink pointers in the list
-  //
-  Link = ListHead;
-  do {
-    NextLink = Link->ForwardLink;
-
-    EfiConvertPointer (
-      Link->ForwardLink == ListHead ? DebugDisposition : 0,
-      (VOID **) &Link->ForwardLink
-      );
-
-    EfiConvertPointer (
-      Link->BackLink == ListHead ? DebugDisposition : 0,
-      (VOID **) &Link->BackLink
-      );
-
-    Link = NextLink;
-  } while (Link != ListHead);
-  return EFI_SUCCESS;
-}
-
-
-/**
-  Change the runtime addressing mode of EFI firmware from physical to virtual.
-
-  @param  MemoryMapSize         The size in bytes of VirtualMap.
-  @param  DescriptorSize        The size in bytes of an entry in the VirtualMap.
-  @param  DescriptorVersion     The version of the structure entries in VirtualMap.
-  @param  VirtualMap            An array of memory descriptors which contain new virtual
-                                address mapping information for all runtime ranges. Type
-                                EFI_MEMORY_DESCRIPTOR is defined in the
-                                GetMemoryMap() function description.
-
-  @retval EFI_SUCCESS           The virtual address map has been applied.
-  @retval EFI_UNSUPPORTED       EFI firmware is not at runtime, or the EFI firmware is already in
-                                virtual address mapped mode.
-  @retval EFI_INVALID_PARAMETER DescriptorSize or DescriptorVersion is
-                                invalid.
-  @retval EFI_NO_MAPPING        A virtual address was not supplied for a range in the memory
-                                map that requires a mapping.
-  @retval EFI_NOT_FOUND         A virtual address was supplied for an address that is not found
-                                in the memory map.
-**/
-EFI_STATUS
-EFIAPI
-EfiSetVirtualAddressMap (
-  IN UINTN                          MemoryMapSize,
-  IN UINTN                          DescriptorSize,
-  IN UINT32                         DescriptorVersion,
-  IN CONST EFI_MEMORY_DESCRIPTOR    *VirtualMap
-  )
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID        Guid;
-
-  *((UINT64 *) &Guid) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_LO;
-  *(((UINT64 *)&Guid) + 1) = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID_HI;
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                SetVirtualAddress,
-                (UINT64) MemoryMapSize,
-                (UINT64) DescriptorSize,
-                (UINT64) DescriptorVersion,
-                (UINT64) VirtualMap,
-                0,
-                0,
-                0
-                );
-
-  return ReturnReg.Status;
-}
-
-
-EFI_STATUS
-EFIAPI
-EfiUpdateCapsule (
-  IN UEFI_CAPSULE_HEADER  **CapsuleHeaderArray,
-  IN UINTN                CapsuleCount,
-  IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
-  )
-{
-  return EFI_UNSUPPORTED;
-}
-
-EFI_STATUS
-EFIAPI
-EfiQueryCapsuleCapabilities (
-  IN UEFI_CAPSULE_HEADER  **CapsuleHeaderArray,
-  IN UINTN                CapsuleCount,
-  OUT UINT64              *MaximumCapsuleSize,
-  OUT EFI_RESET_TYPE    *ResetType
-  )
-{
-  return EFI_UNSUPPORTED;
-}
-
-
-EFI_STATUS
-EFIAPI
-EfiQueryVariableInfo (
-  IN UINT32       Attributes,
-  OUT UINT64      *MaximumVariableStorageSize,
-  OUT  UINT64     *RemainingVariableStorageSize,
-  OUT UINT64      *MaximumVariableSize
-  )
-{
-  return EFI_UNSUPPORTED;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/EdkDxeSalLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/EdkDxeSalLib.inf
deleted file mode 100644
index 370082d2bd..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/EdkDxeSalLib.inf
+++ /dev/null
@@ -1,83 +0,0 @@
-#/*++
-#
-# Copyright (c) 2004 - 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:
-#
-#   EdkDxeSalLib.inf
-#
-#  Abstract:
-#
-#    SAL library for BS/RT drivers
-#
-#--*/
-
-[defines]
-BASE_NAME       = EdkIIGlueEdkDxeSalLib
-COMPONENT_TYPE  = LIBRARY
-
-[sources.common]
-
-[sources.ia32]
-
-[sources.x64]
-
-[sources.ipf]
-  Ipf/EsalServiceLib.c
-  Ipf/AsmEsalServiceLib.s
-
-[sources.ebc]
-  
-
-[includes.common]
-  .
-  ../../Include
-  ../../include/Library
-  $(EDK_SOURCE)/Foundation
-  $(EDK_SOURCE)/Foundation/Framework
-  $(EDK_SOURCE)/Foundation/Efi
-  $(EDK_SOURCE)/Foundation/Include
-  $(EDK_SOURCE)/Foundation/Efi/Include
-  $(EDK_SOURCE)/Foundation/Framework/Include
-  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
-  $(EDK_SOURCE)/Foundation/Core/Dxe
-  $(EDK_SOURCE)/Foundation/Library/Dxe/Include
-  $(EDK_SOURCE)/Foundation/Cpu/Pentium/Include
-  $(EDK_SOURCE)/Foundation/Framework/Guid/DataHubRecords
-  $(EDK_SOURCE)/Foundation/Framework/Guid/StatusCodeDataTypeId
-
-[libraries.common]
-
-[libraries.ia32]
-              
-[libraries.x64]
-
-[libraries.ipf]
-  EdkIIGlueBaseLib
-  EdkIIGlueUefiBootServicesTableLib
-  EdkProtocolLib
-
-[nmake.common]
-  C_FLAGS = $(C_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
-  LIB_STD_FLAGS = $(LIB_STD_FLAGS) /IGNORE:4006 /IGNORE:4221
-
-[nmake.ia32]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IA32
-
-[nmake.x64]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
-
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
-[nmake.ebc]
-  EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
-  EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
-  EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D MDE_CPU_EBC
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/Ipf/AsmEsalServiceLib.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/Ipf/AsmEsalServiceLib.s
deleted file mode 100644
index 43b9ae2bdf..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/Ipf/AsmEsalServiceLib.s
+++ /dev/null
@@ -1,149 +0,0 @@
-//++
-// 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:
-//
-//    EsalLib.s
-//
-//  Abstract:
-//
-//
-// Revision History:
-//
-//--
-
-.file  "EsalLib.s"
-
-#include  "IpfMacro.i"
-
-//
-// Exports
-//
-.globl GetEsalEntryPoint
-
-
-//-----------------------------------------------------------------------------
-//++
-// GetEsalEntryPoint
-//
-// Return Esal global and PSR register.
-//
-// On Entry :
-//
-//
-// Return Value:
-//        r8  = EFI_SAL_SUCCESS
-//        r9  = Physical Plabel
-//        r10 = Virtual Plabel
-//        r11 = psr
-// 
-// As per static calling conventions. 
-// 
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (GetEsalEntryPoint)
-
-      NESTED_SETUP (0,8,0,0)
-
-EsalCalcStart:
-      mov   r8  = ip;;
-      add   r8  = (EsalEntryPoint - EsalCalcStart), r8;;
-      mov   r9  = r8;;
-      add   r10 = 0x10, r8;;
-      mov   r11 = psr;;
-      mov   r8  = r0;;
-
-      NESTED_RETURN
-
-PROCEDURE_EXIT (GetEsalEntryPoint)
-
-
-
-
-
-//-----------------------------------------------------------------------------
-//++
-// SetEsalPhysicalEntryPoint
-//
-// Set the dispatcher entry point
-//
-// On Entry:
-//  in0 = Physical address of Esal Dispatcher
-//  in1 = Physical GP
-//
-// Return Value: 
-//   r8 = EFI_SAL_SUCCESS
-// 
-// As per static calling conventions. 
-// 
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (SetEsalPhysicalEntryPoint)
-
-      NESTED_SETUP (2,8,0,0)
-
-EsalCalcStart1:
-      mov   r8   = ip;;
-      add   r8   = (EsalEntryPoint - EsalCalcStart1), r8;;
-      st8   [r8] = in0;;
-      add   r8   = 0x08, r8;;
-      st8   [r8] = in1;;
-      mov   r8   = r0;;
-
-      NESTED_RETURN
-
-PROCEDURE_EXIT (SetEsalPhysicalEntryPoint)
-
-
-//-----------------------------------------------------------------------------
-//++
-// SetEsalVirtualEntryPoint
-//
-// Register physical address of Esal globals.
-//
-// On Entry :
-//  in0 = Virtual address of Esal Dispatcher
-//  in1 = Virtual GP
-//
-// Return Value: 
-//  r8 = EFI_SAL_ERROR
-// 
-// As per static calling conventions. 
-// 
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (SetEsalVirtualEntryPoint)
-
-      NESTED_SETUP (2,8,0,0)
-
-EsalCalcStart2:
-      mov   r8   = ip;;
-      add   r8   = (EsalEntryPoint - EsalCalcStart2), r8;;
-      add   r8   = 0x10, r8;;
-      st8   [r8] = in0;;
-      add   r8   = 0x08, r8;;
-      st8   [r8] = in1;;
-      mov   r8   = r0;;
-
-      NESTED_RETURN
-
-PROCEDURE_EXIT (SetEsalVirtualEntryPoint)
-
-
-
-
-.align 32
-EsalEntryPoint: 
-    data8 0   // Physical Entry
-    data8 0   //         GP
-    data8 0   // Virtual Entry
-    data8 0   //         GP
-
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c
deleted file mode 100644
index c347bf2948..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/EdkDxeSalLib/Ipf/EsalServiceLib.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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.           
-
-
-Module Name:
-
-  EsalServiceLib.c
-
-Abstract:
-
---*/
-
-#include <Ipf/IpfDefines.h>
-
-#include "EdkIIGlueDxe.h"
-
-EXTENDED_SAL_BOOT_SERVICE_PROTOCOL  *mEsalBootService = NULL;
-EFI_PLABEL                          mPlabel;
-
-STATIC
-EFI_STATUS
-EFIAPI
-DxeSalLibInitialize (
-  VOID
-  )
-{
-  EFI_PLABEL  *Plabel;
-  EFI_STATUS  Status;
-
-  if (mEsalBootService != NULL) {
-    return EFI_SUCCESS;
-  }
-
-  //
-  // The protocol contains a function pointer, which is an indirect procedure call.
-  // An indirect procedure call goes through a plabel, and pointer to a function is
-  // a pointer to a plabel. To implement indirect procedure calls that can work in
-  // both physical and virtual mode, two plabels are required (one physical and one
-  // virtual). So lets grap the physical PLABEL for the EsalEntryPoint and store it
-  // away. We cache it in a module global, so we can register the vitrual version.
-  //
-  Status = gBS->LocateProtocol (&gEfiExtendedSalBootServiceProtocolGuid, NULL, (VOID **) &mEsalBootService);
-  if (EFI_ERROR (Status)) {
-    mEsalBootService = NULL;
-    return EFI_SUCCESS;
-  }
-
-  Plabel              = (EFI_PLABEL *) (UINTN) mEsalBootService->ExtendedSalProc;
-
-  mPlabel.EntryPoint  = Plabel->EntryPoint;
-  mPlabel.GP          = Plabel->GP;
-  SetEsalPhysicalEntryPoint (mPlabel.EntryPoint, mPlabel.GP);
-
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-EFIAPI
-RegisterEsalFunction (
-  IN  UINT64                                    FunctionId,
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  SAL_INTERNAL_EXTENDED_SAL_PROC            Function,
-  IN  VOID                                      *ModuleGlobal
-  )
-/*++
-
-Routine Description:
-
-  Register ESAL Class Function and it's asociated global.
-  This function is boot service only!
-
-Arguments:
-  FunctionId    - ID of function to register
-  ClassGuid     - GUID of function class
-  Function      - Function to register under ClassGuid/FunctionId pair
-  ModuleGlobal  - Module global for Function.
-
-Returns:
-  EFI_SUCCESS - If ClassGuid/FunctionId Function was registered.
-
---*/
-{
-  DxeSalLibInitialize ();
-  return mEsalBootService->AddExtendedSalProc (
-                            mEsalBootService,
-                            ClassGuid,
-                            FunctionId,
-                            Function,
-                            ModuleGlobal
-                            );
-}
-
-EFI_STATUS
-EFIAPI
-RegisterEsalClass (
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  VOID                                      *ModuleGlobal,
-  ...
-  )
-/*++
-
-Routine Description:
-
-  Register ESAL Class and it's asociated global.
-  This function is boot service only!
-
-Arguments:
-  ClassGuid     - GUID of function class
-  ModuleGlobal  - Module global for Function.
-  ...           - SAL_INTERNAL_EXTENDED_SAL_PROC and FunctionId pairs. NULL
-                  indicates the end of the list.
-
-Returns:
-  EFI_SUCCESS - All members of ClassGuid registered
-
---*/
-{
-  VA_LIST                         Args;
-  EFI_STATUS                      Status;
-  SAL_INTERNAL_EXTENDED_SAL_PROC  Function;
-  UINT64                          FunctionId;
-  EFI_HANDLE                      NewHandle;
-
-  VA_START (Args, ModuleGlobal);
-
-  Status = EFI_SUCCESS;
-  while (!EFI_ERROR (Status)) {
-    Function = (SAL_INTERNAL_EXTENDED_SAL_PROC) VA_ARG (Args, SAL_INTERNAL_EXTENDED_SAL_PROC);
-    if (Function == NULL) {
-      break;
-    }
-
-    FunctionId  = VA_ARG (Args, UINT64);
-
-    Status      = RegisterEsalFunction (FunctionId, ClassGuid, Function, ModuleGlobal);
-  }
-
-  VA_END (Args);
-
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  NewHandle = NULL;
-  return gBS->InstallProtocolInterface (
-                &NewHandle,
-                ClassGuid,
-                EFI_NATIVE_INTERFACE,
-                NULL
-                );
-}
-
-SAL_RETURN_REGS
-EFIAPI
-EfiCallEsalService (
-  IN  EFI_GUID                                      *ClassGuid,
-  IN  UINT64                                        FunctionId,
-  IN  UINT64                                        Arg2,
-  IN  UINT64                                        Arg3,
-  IN  UINT64                                        Arg4,
-  IN  UINT64                                        Arg5,
-  IN  UINT64                                        Arg6,
-  IN  UINT64                                        Arg7,
-  IN  UINT64                                        Arg8
-  )
-/*++
-
-Routine Description:
-
-  Call module that is not linked direclty to this module. This code is IP
-  relative and hides the binding issues of virtual or physical calling. The
-  function that gets dispatched has extra arguments that include the registered
-  module global and a boolean flag to indicate if the system is in virutal mode.
-
-Arguments:
-  ClassGuid   - GUID of function
-  FunctionId  - Function in ClassGuid to call
-  Arg2        - Argument 2 ClassGuid/FunctionId defined
-  Arg3        - Argument 3 ClassGuid/FunctionId defined
-  Arg4        - Argument 4 ClassGuid/FunctionId defined
-  Arg5        - Argument 5 ClassGuid/FunctionId defined
-  Arg6        - Argument 6 ClassGuid/FunctionId defined
-  Arg7        - Argument 7 ClassGuid/FunctionId defined
-  Arg8        - Argument 8 ClassGuid/FunctionId defined
-
-Returns:
-  Status of ClassGuid/FuncitonId
-
---*/
-{
-  SAL_RETURN_REGS       ReturnReg;
-  SAL_EXTENDED_SAL_PROC EsalProc;
-
-  ReturnReg = GetEsalEntryPoint ();
-  if (ReturnReg.Status != EFI_SAL_SUCCESS) {
-    return ReturnReg;
-  }
-
-  //
-  // Look at the physical mode ESAL entry point to determine of the ESAL entry point has been initialized
-  //
-  if (*(UINT64 *)ReturnReg.r9 == 0 && *(UINT64 *)(ReturnReg.r9 + 8) == 0) {
-    //
-    // Both the function ponter and the GP value are zero, so attempt to initialize the ESAL Entry Point
-    //
-    DxeSalLibInitialize ();
-    ReturnReg = GetEsalEntryPoint ();
-    if (ReturnReg.Status != EFI_SAL_SUCCESS) {
-      return ReturnReg;
-    }
-    if (*(UINT64 *)ReturnReg.r9 == 0 && *(UINT64 *)(ReturnReg.r9 + 8) == 0) {
-      //
-      // The ESAL Entry Point could not be initialized
-      //
-      ReturnReg.Status = EFI_SAL_ERROR;
-      return ReturnReg;
-    }
-  }
-
-  if (ReturnReg.r11 & PSR_IT_MASK) {
-    //
-    // Virtual mode plabel to entry point
-    //
-    EsalProc = (SAL_EXTENDED_SAL_PROC) ReturnReg.r10;
-  } else {
-    //
-    // Physical mode plabel to entry point
-    //
-    EsalProc = (SAL_EXTENDED_SAL_PROC) ReturnReg.r9;
-  }
-
-  return EsalProc (
-          ClassGuid,
-          FunctionId,
-          Arg2,
-          Arg3,
-          Arg4,
-          Arg5,
-          Arg6,
-          Arg7,
-          Arg8
-          );
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/HiiLib/HiiLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/HiiLib/HiiLib.inf
index 4fc4f8a949..bfbf242ee8 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/HiiLib/HiiLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/HiiLib/HiiLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -70,9 +68,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
index be7e735a9b..de1ea0af82 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -80,9 +78,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiDxePostCodeLibReportStatusCode/PeiDxePostCodeLibReportStatusCode.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiDxePostCodeLibReportStatusCode/PeiDxePostCodeLibReportStatusCode.inf
index 1ce741e5b5..df726dd0de 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiDxePostCodeLibReportStatusCode/PeiDxePostCodeLibReportStatusCode.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiDxePostCodeLibReportStatusCode/PeiDxePostCodeLibReportStatusCode.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -74,9 +72,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiHobLib/PeiHobLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiHobLib/PeiHobLib.inf
index ef411c2069..fb7ea3b4b2 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiHobLib/PeiHobLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiHobLib/PeiHobLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -74,9 +72,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
index 8abf04e552..0c4707bc88 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -78,9 +75,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiPerformanceLib/PeiPerformanceLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiPerformanceLib/PeiPerformanceLib.inf
index f5261623f7..ccff3ac1d3 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiPerformanceLib/PeiPerformanceLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiPerformanceLib/PeiPerformanceLib.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -68,9 +65,6 @@ COMPONENT_TYPE  = LIBRARY
 [libraries.x64]
 
 
-[libraries.ipf]
-
-
 [libraries.ebc]
   
 
@@ -84,9 +78,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
index 376d703cfc..4f589b8201 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
@@ -32,9 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   
 
-[sources.ipf]
-  
-
 [sources.ebc]
   
 
@@ -79,13 +76,6 @@ COMPONENT_TYPE  = LIBRARY
 # to replace EdkIIGluePeiServicesTablePointerLibMm7
 #
 
-[libraries.ipf]
-  EdkIIGluePeiServicesTablePointerLibKr1
-#
-# If necessary, EdkIIGluePeiServicesTablePointerLib can be used
-# to replace EdkIIGluePeiServicesTablePointerLibKr1
-#
-
 [libraries.ebc]
   
 
@@ -99,9 +89,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiResourcePublicationLib/PeiResourcePublicationLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiResourcePublicationLib/PeiResourcePublicationLib.inf
index c3dfa84525..53c3012397 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiResourcePublicationLib/PeiResourcePublicationLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiResourcePublicationLib/PeiResourcePublicationLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -72,9 +70,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesLib/PeiServicesLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesLib/PeiServicesLib.inf
index 761bff6265..b9ce5eccbc 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesLib/PeiServicesLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesLib/PeiServicesLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -65,9 +63,6 @@ COMPONENT_TYPE  = LIBRARY
 [libraries.x64]
   EdkIIGluePeiServicesTablePointerLibMm7
     
-[libraries.ipf]
-  EdkIIGluePeiServicesTablePointerLibKr1
-
 [nmake.common]
   C_FLAGS = $(C_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   LIB_STD_FLAGS = $(LIB_STD_FLAGS) /IGNORE:4006 /IGNORE:4221
@@ -78,9 +73,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
index d433d953b7..47e9d30c6c 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -70,9 +68,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/Ipf/ReadKr1.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/Ipf/ReadKr1.s
deleted file mode 100644
index 4683e7d373..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/Ipf/ReadKr1.s
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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:
-//
-//   ReadKr1.s
-//
-// Abstract:
-//
-//   Contains assembly code for read Kr1.
-//
-//--
-
-  .file  "ReadKr1.s"
-
-#include  "IpfMacro.i"
-
-//---------------------------------------------------------------------------------
-//++
-// AsmReadKr1
-//
-// This routine is used to get KR1. KR1 is used to store Pei Service Table
-// Pointer in archeture.
-//
-// Arguments : 
-//
-// On Entry :  None.
-//
-// Return Value: Pei Services Table.
-// 
-//--
-//----------------------------------------------------------------------------------
-PROCEDURE_ENTRY (AsmReadKr1)
-        
-        mov             r8 = ar.k1;;  // Pei Services Table Pointer
-        br.ret.dpnt     b0;;
-
-PROCEDURE_EXIT (AsmReadKr1)
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/Ipf/WriteKr1.s b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/Ipf/WriteKr1.s
deleted file mode 100644
index f2e0c04822..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/Ipf/WriteKr1.s
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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:
-//
-//   WriteKr1.s
-//
-// Abstract:
-//
-//   Contains assembly code for write Kr1.
-//
-//--
-
-  .file  "WriteKr1.s"
-
-#include  "IpfMacro.i"
-
-//---------------------------------------------------------------------------------
-//++
-// AsmWriteKr1
-//
-// This routine is used to Write KR1. KR1 is used to store Pei Service Table
-// Pointer in archeture.
-//
-// Arguments : r32  Pei Services Table Pointer
-//
-// On Entry :  None.
-//
-// Return Value: None.
-// 
-//--
-//----------------------------------------------------------------------------------
-PROCEDURE_ENTRY (AsmWriteKr1)
-        
-        mov             ar.k1 = r32;;  // Pei Services Table Pointer
-        br.ret.dpnt     b0;;
-
-PROCEDURE_EXIT (AsmWriteKr1)
- 
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointer.c b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointer.c
deleted file mode 100644
index 2f2e87e8c9..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointer.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-  PeiServicesTablePointer.c
-  
-Abstract: 
-
-  PEI Services Table Pointer Library.
-
---*/
-
-#include "PeiServicesTablePointerLibInternals.h"
-
-/**
-  The function returns the pointer to PeiServices.
-
-  The function returns the pointer to PeiServices.
-  It will ASSERT() if the pointer to PeiServices is NULL.
-
-  @retval  The pointer to PeiServices.
-
-**/
-EFI_PEI_SERVICES **
-EFIAPI
-GetPeiServicesTablePointer (
-  VOID
-  )
-{
-  EFI_PEI_SERVICES  **PeiServices;
-
-#if (PI_SPECIFICATION_VERSION < 0x00010000)
-  PeiServices = (EFI_PEI_SERVICES **)(UINTN)AsmReadKr1 ();
-#else
-  PeiServices = (EFI_PEI_SERVICES **)(UINTN)AsmReadKr7 ();
-#endif
-  ASSERT (PeiServices != NULL);
-  return PeiServices;
-}
-
-/**
-  The constructor function caches the pointer to PEI services.
-
-  The constructor function caches the pointer to PEI services.
-  It will always return EFI_SUCCESS.
-
-  @param  FfsHeader   Pointer to FFS header the loaded driver.
-  @param  PeiServices Pointer to the PEI services.
-
-  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.
-
-**/
-EFI_STATUS
-EFIAPI
-PeiServicesTablePointerLibConstructor (
-  IN EFI_FFS_FILE_HEADER  *FfsHeader,
-  IN EFI_PEI_SERVICES     **PeiServices
-  )
-{
-#if (PI_SPECIFICATION_VERSION < 0x00010000)
-  AsmWriteKr1 ((UINT64)(UINTN)PeiServices);
-#endif
-  return EFI_SUCCESS;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointerLibKr1.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointerLibKr1.inf
deleted file mode 100644
index ffb253c570..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibKr1/PeiServicesTablePointerLibKr1.inf
+++ /dev/null
@@ -1,74 +0,0 @@
-#/*++
-#
-# Copyright (c) 2004 - 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:
-#
-#   PeiServiceTablePointerLibKr1.inf
-#
-#  Abstract:
-#
-#    Component description file for PeiServicesTablePointerLibKr1.
-#
-#--*/
-
-[defines]
-BASE_NAME       = EdkIIGluePeiServicesTablePointerLibKr1
-COMPONENT_TYPE  = LIBRARY
-
-[sources.common]
-
-[sources.ipf]
-  PeiServicesTablePointer.c
-  Ipf/ReadKr1.s
-  Ipf/WriteKr1.s
-
-[includes.common]
-  .
-  ../../Include
-  ../../include/Library
-  $(EDK_SOURCE)/Foundation
-  $(EDK_SOURCE)/Foundation/Framework
-  $(EDK_SOURCE)/Foundation/Include/Pei
-  $(EDK_SOURCE)/Foundation/Efi
-  $(EDK_SOURCE)/Foundation/Include
-  $(EDK_SOURCE)/Foundation/Efi/Include
-  $(EDK_SOURCE)/Foundation/Framework/Include
-  $(EDK_SOURCE)/Foundation/Include/IndustryStandard
-  $(EDK_SOURCE)/Foundation/Core/Dxe
-  $(EDK_SOURCE)/Foundation/Library/Dxe/Include
-  $(EDK_SOURCE)/Foundation/Cpu/Pentium/Include
-
-[libraries.common]
-  EdkIIGlueBaseLib
-
-[libraries.ia32]
-  
-
-[libraries.x64]
-  
-
-[nmake.common]
-  C_FLAGS = $(C_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
-  LIB_STD_FLAGS = $(LIB_STD_FLAGS) /IGNORE:4006 /IGNORE:4221
-
-[nmake.ia32]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IA32
-
-[nmake.x64]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
-
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
-[nmake.ebc]
-  EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
-  EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
-  EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D MDE_CPU_EBC
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf
index f9d216f59e..27aef765c2 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 [sources.x64]
   PeiServicesTablePointer.c
 
-[sources.ipf]
-
 [sources.ebc]
 
 [includes.common]
@@ -69,9 +67,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiSmbusLib/PeiSmbusLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiSmbusLib/PeiSmbusLib.inf
index d00f46a00d..a3ed621300 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiSmbusLib/PeiSmbusLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/PeiSmbusLib/PeiSmbusLib.inf
@@ -31,8 +31,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -77,9 +75,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/SmmRuntimeDxeReportStatusCodeLib/SmmRuntimeDxeReportStatusCodeLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/SmmRuntimeDxeReportStatusCodeLib/SmmRuntimeDxeReportStatusCodeLib.inf
index 4137bb6367..532570244d 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/SmmRuntimeDxeReportStatusCodeLib/SmmRuntimeDxeReportStatusCodeLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/SmmRuntimeDxeReportStatusCodeLib/SmmRuntimeDxeReportStatusCodeLib.inf
@@ -32,8 +32,6 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -87,9 +85,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
index af32aea277..667e06bf43 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -68,9 +66,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiDevicePathLib/UefiDevicePathLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiDevicePathLib/UefiDevicePathLib.inf
index 7ddee305a7..16be83db94 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiDevicePathLib/UefiDevicePathLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiDevicePathLib/UefiDevicePathLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -76,9 +74,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiDriverModelLib/UefiDriverModelLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiDriverModelLib/UefiDriverModelLib.inf
index 2fe34d5382..1f48cec46a 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiDriverModelLib/UefiDriverModelLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiDriverModelLib/UefiDriverModelLib.inf
@@ -28,7 +28,7 @@ COMPONENT_TYPE  = LIBRARY
   
 [sources.ia32]
 
-[sources.ipf,sources.x64]
+[sources.x64]
 
 [includes.common]
   $(EDK_SOURCE)/Foundation/Framework
@@ -58,9 +58,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiLib/UefiLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiLib/UefiLib.inf
index da6168d76e..b334a7528c 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiLib/UefiLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiLib/UefiLib.inf
@@ -32,8 +32,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -80,9 +78,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
index 6f51e55a21..7d2e6efb7a 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
@@ -30,8 +30,6 @@ COMPONENT_TYPE  = LIBRARY
 
 [sources.x64]
 
-[sources.ipf]
-
 [sources.ebc]
   
 
@@ -69,9 +67,6 @@ COMPONENT_TYPE  = LIBRARY
 [nmake.x64]
   C_FLAGS = $(C_FLAGS) /D MDE_CPU_X64
 
-[nmake.ipf]
-  C_FLAGS = $(C_FLAGS) /D MDE_CPU_IPF
-
 [nmake.ebc]
   EBC_C_STD_FLAGS = $(EBC_C_STD_FLAGS) /D EDKII_GLUE_LIBRARY_IMPLEMENTATION
   EBC_LIB_STD_FLAGS = $(EBC_LIB_STD_FLAGS)  /IGNORE:4006 /IGNORE:4221
diff --git a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib.inf b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib.inf
index 07b02b7656..63c98533ec 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib.inf
@@ -47,12 +47,6 @@ COMPONENT_TYPE  = LIBRARY
   Ia32/Log2.c
   Ia32/GetPowerOfTwo.c
 
-[sources.ipf]
-  EfiCopyMem.c
-  EfiSetMem.c
-  EfiZeroMem.c
-  Math.c
-
 [sources.ebc]
   EfiCopyMem.c
   EfiSetMem.c
diff --git a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib_Edk2.inf b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib_Edk2.inf
index fd183c1d6a..69ae148c02 100644
--- a/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib_Edk2.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/EfiCommonLib_Edk2.inf
@@ -72,12 +72,6 @@ COMPONENT_TYPE  = LIBRARY
   Ia32/Log2.asm            | INTEL
   Ia32/GetPowerOfTwo.asm   | INTEL
 
-[sources.ipf]
-  EfiCopyMem.c
-  EfiSetMem.c
-  EfiZeroMem.c
-  Math.c
-
 [sources.ebc]
   EfiCopyMem.c
   EfiSetMem.c
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/Hob/PeiHobLib.inf b/EdkCompatibilityPkg/Foundation/Library/Pei/Hob/PeiHobLib.inf
index 4bdcaa1ce0..8dc645450e 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/Hob/PeiHobLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/Pei/Hob/PeiHobLib.inf
@@ -28,8 +28,6 @@ COMPONENT_TYPE    = LIBRARY
 
 [sources.ia32]
 
-[sources.ipf]
-
 [libraries.common]
 
 [includes.common]
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Asm.h b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Asm.h
deleted file mode 100644
index f6171ad204..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Asm.h
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-//
-// Copyright (c) 2004, 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:
-//
-//   asm.h
-//
-// Abstract:
-//
-//   This module contains generic macros for an assembly writer.
-//
-//
-// Revision History
-//
-#ifndef _ASM_H
-#define _ASM_H
-
-#define TRUE  1
-#define FALSE 0
-#define PROCEDURE_ENTRY(name)   .##text;            \
-  .##type name, @function; \
-  .##proc name; \
-  name::
-
-#define PROCEDURE_EXIT(name)  .##endp name
-
-#endif // _ASM_H
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/AsmCpuMisc.s b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/AsmCpuMisc.s
deleted file mode 100644
index 81837472bf..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/AsmCpuMisc.s
+++ /dev/null
@@ -1,44 +0,0 @@
-/// @file
-///   Contains an implementation of EcpEfiBreakPoint and EcpMemoryFence on Itanium-based
-///   architecture.
-///
-/// Copyright (c) 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.
-///
-/// Module Name:  AsmCpuMisc.s
-///
-///
-
-
-.text
-.proc EcpEfiBreakPoint
-.type EcpEfiBreakPoint, @function
-
-EcpEfiBreakPoint::
-        break.i 0;;
-        br.ret.dpnt    b0;;
-
-.endp EcpEfiBreakPoint
-
-.proc EcpMemoryFence
-.type EcpMemoryFence, @function
-
-EcpMemoryFence::
-        mf;;    // memory access ordering
-
-        // do we need the mf.a also here?
-        mf.a    // wait for any IO to complete?
-        
-        // not sure if we need serialization here, just put it, in case...
-        
-        srlz.d;;
-        srlz.i;;
-        
-        br.ret.dpnt    b0;;
-.endp EcpMemoryFence
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/EfiJump.h b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/EfiJump.h
deleted file mode 100644
index ab70a332dd..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/EfiJump.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-  
-  EfiJump.h
-
-Abstract:
-
-  This is the Setjump/Longjump pair for an IA32 processor.
-
---*/
-
-#ifndef _EFI_JUMP_H_
-#define _EFI_JUMP_H_
-
-#include EFI_GUID_DEFINITION (PeiTransferControl)
-
-//
-//  NOTE:Set/LongJump needs to have this buffer start
-//  at 16 byte boundary. Either fix the structure
-//  which call this buffer or fix inside SetJump/LongJump
-//  Choosing 1K buffer storage for now
-//
-typedef struct {
-  CHAR8 Buffer[1024];
-} EFI_JUMP_BUFFER;
-
-EFI_STATUS
-SetJump (
-  IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL  *This,
-  IN EFI_JUMP_BUFFER                    *Jump
-  )
-/*++
-
-Routine Description:
-
-  SetJump stores the current register set in the area pointed to
-by "save".  It returns zero.  Subsequent calls to "LongJump" will
-restore the registers and return non-zero to the same location.
-  On entry, r32 contains the pointer to the jmp_buffer
-  
-Arguments:
-  
-  This  - Calling context
-  Jump  - Jump buffer
-
-Returns:
-
-  Status code
-
---*/
-;
-
-EFI_STATUS
-LongJump (
-  IN EFI_PEI_TRANSFER_CONTROL_PROTOCOL  *This,
-  IN EFI_JUMP_BUFFER                    *Jump
-  )
-/*++
-
-Routine Description:
-
-  LongJump initializes the register set to the values saved by a
-previous 'SetJump' and jumps to the return location saved by that
-'SetJump'.  This has the effect of unwinding the stack and returning
-for a second time to the 'SetJump'.
-
-Arguments:
-
-  This  - Calling context
-  Jump  - Jump buffer
-
-Returns:
-
-  Status code
-
---*/
-;
-
-VOID
-RtPioICacheFlush (
-  IN  VOID    *StartAddress,
-  IN  UINTN   SizeInBytes
-  )
-/*++
-
-Routine Description:
-
-  Flushing the CPU instruction cache.
-
-Arguments:
-
-  StartAddress  - Start address to flush
-  SizeInBytes   - Length in bytes to flush
-
-Returns:
-
-  None
-
---*/
-;
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/HwAccess.s b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/HwAccess.s
deleted file mode 100644
index bdaad969f8..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/HwAccess.s
+++ /dev/null
@@ -1,77 +0,0 @@
-//++
-// Copyright (c) 2007, 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:
-//
-//  HWAccess.s
-//
-// Abstract:
-//
-//  Contains an implementation of Read/Write Kr7 for the Itanium-based architecture.
-//
-//
-//
-// Revision History:
-//
-//--
-
-  .file  "HWAccess.s"
-#include  "IpfMacro.i"
-
-
-//----------------------------------------------------------------------------------
-//++ 
-//VOID
-//AsmWriteKr7 (
-//  UINT64
-//  );
-//
-// This routine saves the given input value into the kernel register 7
-//
-// Arguments :
-//
-// On Entry :  64 bit value to be saved.
-//
-// Return Value: None
-//
-//--
-//----------------------------------------------------------------------------------
-PROCEDURE_ENTRY (AsmWriteKr7)
-        NESTED_SETUP (1,2,0,0)
-        mov ar.k7 = in0;;
-        NESTED_RETURN
-
-PROCEDURE_EXIT (AsmWriteKr7)
-
-//---------------------------------------------------------------------------------
-//++
-//UINT64
-//AsmReadKr7 (
-//  VOID
-//  );
-//
-// This routine returns the value of the kernel register 7
-//
-// Arguments :
-//
-// On Entry :  None
-//
-// Return Value: 64bit Value of the register.
-//
-//--
-//----------------------------------------------------------------------------------
-PROCEDURE_ENTRY (AsmReadKr7)
-        NESTED_SETUP (0,2,0,0)
-        mov r8 = ar.k7;;
-        NESTED_RETURN
-PROCEDURE_EXIT (AsmReadKr7)
-//----------------------------------------------------------------------------------
-
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Ia_64Gen.h b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Ia_64Gen.h
deleted file mode 100644
index 04f18cbaa2..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Ia_64Gen.h
+++ /dev/null
@@ -1,214 +0,0 @@
-// 
-// 
-// 
-// Copyright (c) 2004, 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: ia_64gen.h
-//
-//
-//Abstract:
-//
-//
-//
-//
-//Revision History
-//
-//
-#ifndef _IA64GEN_H
-#define _IA64GEN_H
-
-#define TT_UNAT           0
-#define C_PSR             0
-#define J_UNAT            0
-#define T_TYPE            0
-#define T_IPSR            0x8
-#define T_ISR             0x10
-#define T_IIP             0x18
-#define T_IFA             0x20
-#define T_IIPA            0x28
-#define T_IFS             0x30
-#define T_IIM             0x38
-#define T_RSC             0x40
-#define T_BSP             0x48
-#define T_BSPSTORE        0x50
-#define T_RNAT            0x58
-#define T_PFS             0x60
-#define T_KBSPSTORE       0x68
-#define T_UNAT            0x70
-#define T_CCV             0x78
-#define T_DCR             0x80
-#define T_PREDS           0x88
-#define T_NATS            0x90
-#define T_R1              0x98
-#define T_GP              0x98
-#define T_R2              0xa0
-#define T_R3              0xa8
-#define T_R4              0xb0
-#define T_R5              0xb8
-#define T_R6              0xc0
-#define T_R7              0xc8
-#define T_R8              0xd0
-#define T_R9              0xd8
-#define T_R10             0xe0
-#define T_R11             0xe8
-#define T_R12             0xf0
-#define T_SP              0xf0
-#define T_R13             0xf8
-#define T_R14             0x100
-#define T_R15             0x108
-#define T_R16             0x110
-#define T_R17             0x118
-#define T_R18             0x120
-#define T_R19             0x128
-#define T_R20             0x130
-#define T_R21             0x138
-#define T_R22             0x140
-#define T_R23             0x148
-#define T_R24             0x150
-#define T_R25             0x158
-#define T_R26             0x160
-#define T_R27             0x168
-#define T_R28             0x170
-#define T_R29             0x178
-#define T_R30             0x180
-#define T_R31             0x188
-#define T_F2              0x1f0
-#define T_F3              0x200
-#define T_F4              0x210
-#define T_F5              0x220
-#define T_F6              0x230
-#define T_F7              0x240
-#define T_F8              0x250
-#define T_F9              0x260
-#define T_F10             0x270
-#define T_F11             0x280
-#define T_F12             0x290
-#define T_F13             0x2a0
-#define T_F14             0x2b0
-#define T_F15             0x2c0
-#define T_F16             0x2d0
-#define T_F17             0x2e0
-#define T_F18             0x2f0
-#define T_F19             0x300
-#define T_F20             0x310
-#define T_F21             0x320
-#define T_F22             0x330
-#define T_F23             0x340
-#define T_F24             0x350
-#define T_F25             0x360
-#define T_F26             0x370
-#define T_F27             0x380
-#define T_F28             0x390
-#define T_F29             0x3a0
-#define T_F30             0x3b0
-#define T_F31             0x3c0
-#define T_FPSR            0x1e0
-#define T_B0              0x190
-#define T_B1              0x198
-#define T_B2              0x1a0
-#define T_B3              0x1a8
-#define T_B4              0x1b0
-#define T_B5              0x1b8
-#define T_B6              0x1c0
-#define T_B7              0x1c8
-#define T_EC              0x1d0
-#define T_LC              0x1d8
-#define J_NATS            0x8
-#define J_PFS             0x10
-#define J_BSP             0x18
-#define J_RNAT            0x20
-#define J_PREDS           0x28
-#define J_LC              0x30
-#define J_R4              0x38
-#define J_R5              0x40
-#define J_R6              0x48
-#define J_R7              0x50
-#define J_SP              0x58
-#define J_F2              0x60
-#define J_F3              0x70
-#define J_F4              0x80
-#define J_F5              0x90
-#define J_F16             0xa0
-#define J_F17             0xb0
-#define J_F18             0xc0
-#define J_F19             0xd0
-#define J_F20             0xe0
-#define J_F21             0xf0
-#define J_F22             0x100
-#define J_F23             0x110
-#define J_F24             0x120
-#define J_F25             0x130
-#define J_F26             0x140
-#define J_F27             0x150
-#define J_F28             0x160
-#define J_F29             0x170
-#define J_F30             0x180
-#define J_F31             0x190
-#define J_FPSR            0x1a0
-#define J_B0              0x1a8
-#define J_B1              0x1b0
-#define J_B2              0x1b8
-#define J_B3              0x1c0
-#define J_B4              0x1c8
-#define J_B5              0x1d0
-#define TRAP_FRAME_LENGTH 0x3d0
-#define C_UNAT            0x28
-#define C_NATS            0x30
-#define C_PFS             0x8
-#define C_BSPSTORE        0x10
-#define C_RNAT            0x18
-#define C_RSC             0x20
-#define C_PREDS           0x38
-#define C_LC              0x40
-#define C_DCR             0x48
-#define C_R1              0x50
-#define C_GP              0x50
-#define C_R4              0x58
-#define C_R5              0x60
-#define C_R6              0x68
-#define C_R7              0x70
-#define C_SP              0x78
-#define C_R13             0x80
-#define C_F2              0x90
-#define C_F3              0xa0
-#define C_F4              0xb0
-#define C_F5              0xc0
-#define C_F16             0xd0
-#define C_F17             0xe0
-#define C_F18             0xf0
-#define C_F19             0x100
-#define C_F20             0x110
-#define C_F21             0x120
-#define C_F22             0x130
-#define C_F23             0x140
-#define C_F24             0x150
-#define C_F25             0x160
-#define C_F26             0x170
-#define C_F27             0x180
-#define C_F28             0x190
-#define C_F29             0x1a0
-#define C_F30             0x1b0
-#define C_F31             0x1c0
-#define C_FPSR            0x1d0
-#define C_B0              0x1d8
-#define C_B1              0x1e0
-#define C_B2              0x1e8
-#define C_B3              0x1f0
-#define C_B4              0x1f8
-#define C_B5              0x200
-#define TT_R2             0x8
-#define TT_R3             0x10
-#define TT_R8             0x18
-#define TT_R9             0x20
-#define TT_R10            0x28
-#define TT_R11            0x30
-#define TT_R14            0x38
-
-#endif _IA64GEN_H
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Math.c b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Math.c
deleted file mode 100644
index 7c2af543d7..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Math.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  math.c
-
-Abstract:
-
-  64-bit Math worker functions for Intel Itanium(TM) processors.
-
---*/
-
-#include "Tiano.h"
-#include "Pei.h"
-#include "PeiLib.h"
-
-UINT64
-LShiftU64 (
-  IN UINT64   Operand,
-  IN UINTN    Count
-  )
-/*++
-
-Routine Description:
-
-  This routine allows a 64 bit value to be left shifted by 32 bits and 
-  returns the shifted value.
-  Count is valid up 63. (Only Bits 0-5 is valid for Count)
-
-Arguments:
-
-  Operand - Value to be shifted
-  Count   - Number of times to shift left.
- 
-Returns:
-
-  Value shifted left identified by the Count.
-
---*/
-{
-  return Operand << Count;
-}
-
-UINT64
-RShiftU64 (
-  IN UINT64   Operand,
-  IN UINTN    Count
-  )
-/*++
-
-Routine Description:
-
-  This routine allows a 64 bit value to be right shifted by 32 bits and returns the 
-  shifted value.
-  Count is valid up 63. (Only Bits 0-5 is valid for Count)
-
-Arguments:
-
-  Operand - Value to be shifted
-  Count   - Number of times to shift right.
- 
-Returns:
-
-  Value shifted right identified by the Count.
-
---*/
-{
-  return Operand >> Count;
-}
-
-UINT64
-MultU64x32 (
-  IN UINT64   Multiplicand,
-  IN UINTN    Multiplier
-  )
-/*++  
-  
-Routine Description:
-
-  This routine allows a 64 bit value to be multiplied with a 32 bit 
-  value returns 64bit result.
-  No checking if the result is greater than 64bits
-
-Arguments:
-
-  Multiplicand  - multiplicand
-  Multiplier    - multiplier
-
-Returns:
-
-  Multiplicand * Multiplier
-  
---*/
-{
-  return Multiplicand * Multiplier;
-}
-
-UINT64
-DivU64x32 (
-  IN UINT64   Dividend,
-  IN UINTN    Divisor,
-  OUT UINTN   *Remainder OPTIONAL
-  )
-/*++
-
-Routine Description:
-
-  This routine allows a 64 bit value to be divided with a 32 bit value returns 
-  64bit result and the Remainder.
-  N.B. only works for 31bit divisors!!
-
-Arguments:
-
-  Dividend  - dividend
-  Divisor   - divisor
-  Remainder - buffer for remainder
- 
-Returns:
-
-  Dividend  / Divisor
-  Remainder = Dividend mod Divisor
-
---*/
-{
-  if (Remainder) {
-    *Remainder = Dividend % Divisor;
-  }
-
-  return Dividend / Divisor;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.c b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.c
deleted file mode 100644
index d89379d727..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-
-    PeCoffLoaderEx.c
-
-Abstract:
-
-    Fixes Intel Itanium(TM) specific relocation types
-
-
-Revision History
-
---*/
-
-#include "TianoCommon.h"
-#include "EfiImage.h"
-
-#define EXT_IMM64(Value, Address, Size, InstPos, ValPos)  \
-    Value |= (((UINT64)((*(Address) >> InstPos) & (((UINT64)1 << Size) - 1))) << ValPos)
-
-#define INS_IMM64(Value, Address, Size, InstPos, ValPos)  \
-    *(UINT32*)Address = (*(UINT32*)Address & ~(((1 << Size) - 1) << InstPos)) | \
-          ((UINT32)((((UINT64)Value >> ValPos) & (((UINT64)1 << Size) - 1))) << InstPos)
-
-#define IMM64_IMM7B_INST_WORD_X         3  
-#define IMM64_IMM7B_SIZE_X              7  
-#define IMM64_IMM7B_INST_WORD_POS_X     4  
-#define IMM64_IMM7B_VAL_POS_X           0  
-
-#define IMM64_IMM9D_INST_WORD_X         3  
-#define IMM64_IMM9D_SIZE_X              9  
-#define IMM64_IMM9D_INST_WORD_POS_X     18  
-#define IMM64_IMM9D_VAL_POS_X           7  
-
-#define IMM64_IMM5C_INST_WORD_X         3  
-#define IMM64_IMM5C_SIZE_X              5  
-#define IMM64_IMM5C_INST_WORD_POS_X     13  
-#define IMM64_IMM5C_VAL_POS_X           16  
-
-#define IMM64_IC_INST_WORD_X            3  
-#define IMM64_IC_SIZE_X                 1  
-#define IMM64_IC_INST_WORD_POS_X        12  
-#define IMM64_IC_VAL_POS_X              21  
-
-#define IMM64_IMM41a_INST_WORD_X        1  
-#define IMM64_IMM41a_SIZE_X             10  
-#define IMM64_IMM41a_INST_WORD_POS_X    14  
-#define IMM64_IMM41a_VAL_POS_X          22  
-
-#define IMM64_IMM41b_INST_WORD_X        1  
-#define IMM64_IMM41b_SIZE_X             8  
-#define IMM64_IMM41b_INST_WORD_POS_X    24  
-#define IMM64_IMM41b_VAL_POS_X          32  
-
-#define IMM64_IMM41c_INST_WORD_X        2  
-#define IMM64_IMM41c_SIZE_X             23  
-#define IMM64_IMM41c_INST_WORD_POS_X    0  
-#define IMM64_IMM41c_VAL_POS_X          40  
-
-#define IMM64_SIGN_INST_WORD_X          3  
-#define IMM64_SIGN_SIZE_X               1  
-#define IMM64_SIGN_INST_WORD_POS_X      27  
-#define IMM64_SIGN_VAL_POS_X            63  
-
-EFI_STATUS
-PeCoffLoaderRelocateImageEx (
-  IN UINT16      *Reloc,
-  IN OUT CHAR8   *Fixup, 
-  IN OUT CHAR8   **FixupData,
-  IN UINT64      Adjust
-  )
-/*++
-
-Routine Description:
-
-  Performs an Itanium-based specific relocation fixup
-
-Arguments:
-
-  Reloc      - Pointer to the relocation record
-
-  Fixup      - Pointer to the address to fix up
-
-  FixupData  - Pointer to a buffer to log the fixups
-
-  Adjust     - The offset to adjust the fixup
-
-Returns:
-
-  Status code
-
---*/
-{
-  UINT64      *F64;
-  UINT64      FixupVal;
-
-  switch ((*Reloc) >> 12) {
-
-    case EFI_IMAGE_REL_BASED_IA64_IMM64:
-
-      //
-      // Align it to bundle address before fixing up the
-      // 64-bit immediate value of the movl instruction.
-      //
-
-      Fixup = (CHAR8 *)((UINTN) Fixup & (UINTN) ~(15));
-      FixupVal = (UINT64)0;
-                       
-      // 
-      // Extract the lower 32 bits of IMM64 from bundle
-      //
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IMM7B_INST_WORD_X,
-                IMM64_IMM7B_SIZE_X,
-                IMM64_IMM7B_INST_WORD_POS_X,
-                IMM64_IMM7B_VAL_POS_X
-                );
-
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IMM9D_INST_WORD_X,
-                IMM64_IMM9D_SIZE_X,
-                IMM64_IMM9D_INST_WORD_POS_X,
-                IMM64_IMM9D_VAL_POS_X
-                );
-
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IMM5C_INST_WORD_X,
-                IMM64_IMM5C_SIZE_X,
-                IMM64_IMM5C_INST_WORD_POS_X,
-                IMM64_IMM5C_VAL_POS_X
-                );
-
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IC_INST_WORD_X,
-                IMM64_IC_SIZE_X,
-                IMM64_IC_INST_WORD_POS_X,
-                IMM64_IC_VAL_POS_X
-                );
-
-      EXT_IMM64(FixupVal,
-                (UINT32 *)Fixup + IMM64_IMM41a_INST_WORD_X,
-                IMM64_IMM41a_SIZE_X,
-                IMM64_IMM41a_INST_WORD_POS_X,
-                IMM64_IMM41a_VAL_POS_X
-                );
-                       
-      // 
-      // Update 64-bit address
-      //
-      FixupVal += Adjust;
-
-      // 
-      // Insert IMM64 into bundle
-      //
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM7B_INST_WORD_X),
-                IMM64_IMM7B_SIZE_X,
-                IMM64_IMM7B_INST_WORD_POS_X,
-                IMM64_IMM7B_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM9D_INST_WORD_X),
-                IMM64_IMM9D_SIZE_X,
-                IMM64_IMM9D_INST_WORD_POS_X,
-                IMM64_IMM9D_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM5C_INST_WORD_X),
-                IMM64_IMM5C_SIZE_X,
-                IMM64_IMM5C_INST_WORD_POS_X,
-                IMM64_IMM5C_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IC_INST_WORD_X),
-                IMM64_IC_SIZE_X,
-                IMM64_IC_INST_WORD_POS_X,
-                IMM64_IC_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM41a_INST_WORD_X),
-                IMM64_IMM41a_SIZE_X,
-                IMM64_IMM41a_INST_WORD_POS_X,
-                IMM64_IMM41a_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM41b_INST_WORD_X),
-                IMM64_IMM41b_SIZE_X,
-                IMM64_IMM41b_INST_WORD_POS_X,
-                IMM64_IMM41b_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_IMM41c_INST_WORD_X),
-                IMM64_IMM41c_SIZE_X,
-                IMM64_IMM41c_INST_WORD_POS_X,
-                IMM64_IMM41c_VAL_POS_X
-                );
-
-      INS_IMM64(FixupVal,
-                ((UINT32 *)Fixup + IMM64_SIGN_INST_WORD_X),
-                IMM64_SIGN_SIZE_X,
-                IMM64_SIGN_INST_WORD_POS_X,
-                IMM64_SIGN_VAL_POS_X
-                );
-
-      F64 = (UINT64 *) Fixup;
-      if (*FixupData != NULL) {
-        *FixupData = ALIGN_POINTER(*FixupData, sizeof(UINT64));
-        *(UINT64 *)(*FixupData) = *F64;
-        *FixupData = *FixupData + sizeof(UINT64);
-      }
-      break;
-
-    default:
-      return EFI_UNSUPPORTED;
-  }
-
-  return EFI_SUCCESS;
-}
-
-BOOLEAN
-PeCoffLoaderImageFormatSupported (
-  IN  UINT16  Machine
-  )
-/*++
-Routine Description:
-
-  Returns TRUE if the machine type of PE/COFF image is supported. Supported 
-  does not mean the image can be executed it means the PE/COFF loader supports
-  loading and relocating of the image type. It's up to the caller to support
-  the entry point. 
-
-  This function implies the basic PE/COFF loader/relocator supports IPF, EBC,
-  images. Calling the entry point in a correct mannor is up to the 
-  consumer of this library.
-
-Arguments:
-
-  Machine   - Machine type from the PE Header.
-
-Returns:
-
-  TRUE      - if this PE/COFF loader can load the image
-  FALSE     - if this PE/COFF loader cannot load the image
-
---*/
-{
-  if ((Machine == EFI_IMAGE_MACHINE_IA64) || (Machine == EFI_IMAGE_MACHINE_EBC)) {
-    return TRUE; 
-  }
-
-  return FALSE;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.h b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.h
deleted file mode 100644
index 017864fc34..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeCoffLoaderEx.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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:
-  
-    PeCoffLoaderEx.h
-
-Abstract:
-
-    Fixes Intel Itanium(TM) specific relocation types
-
-
-Revision History
-
---*/
-
-#ifndef _PE_COFF_LOADER_EX_H_
-#define _PE_COFF_LOADER_EX_H_
-
-
-EFI_STATUS
-PeCoffLoaderRelocateImageEx (
-  IN UINT16      *Reloc,
-  IN OUT CHAR8   *Fixup,
-  IN OUT CHAR8   **FixupData,
-  IN UINT64      Adjust
-  )
-/*++
-
-Routine Description:
-
-  Performs an Itanium-based specific relocation fixup
-
-Arguments:
-
-  Reloc      - Pointer to the relocation record
-
-  Fixup      - Pointer to the address to fix up
-
-  FixupData  - Pointer to a buffer to log the fixups
-
-  Adjust     - The offset to adjust the fixup
-
-Returns:
-
-  Status code
-
---*/
-;
-
-BOOLEAN
-PeCoffLoaderImageFormatSupported (
-  IN  UINT16  Machine
-  )
-/*++
-Routine Description:
-
-  Returns TRUE if the machine type of PE/COFF image is supported. Supported 
-  does not mean the image can be executed it means the PE/COFF loader supports
-  loading and relocating of the image type. It's up to the caller to support
-  the entry point. 
-
-  This function implies the basic PE/COFF loader/relocator supports IPF, EBC,
-  images. Calling the entry point in a correct mannor is up to the 
-  consumer of this library.
-
-Arguments:
-
-  Machine   - Machine type from the PE Header.
-
-Returns:
-
-  TRUE      - if this PE/COFF loader can load the image
-  FALSE     - if this PE/COFF loader cannot load the image
-
---*/
-;
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeiServicePointer.c b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeiServicePointer.c
deleted file mode 100644
index 203022af3d..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PeiServicePointer.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*++
-
-Copyright (c) 2007, 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:
-
-    PeiServicePointer.c
-
-Abstract:
-
---*/
-
-#include "Tiano.h"
-#include "PeiApi.h"
-#include "PeiLib.h"
-
-
-#if (PI_SPECIFICATION_VERSION >= 0x00010000)
-
-VOID
-SetPeiServicesTablePointer (
-  IN EFI_PEI_SERVICES  **PeiServices
-  )
-/*++
-
-Routine Description:
-
-  Save PeiService pointer so that it can be retrieved anywhere.
-
-Arguments:
-
-  PeiServices     - The direct pointer to PeiServiceTable.
-  PhyscialAddress - The physcial address of variable PeiServices.
-  
-Returns:
-  NONE
-  
---*/        
-  
-{
-  //
-  // For Itanium Processor Family processors, the EFI_PEI_SERVICES**
-  // is stored in kernel register7.
-  //
-  AsmWriteKr7((UINT64)(UINTN)PeiServices);
-}
-
-
-EFI_PEI_SERVICES **
-GetPeiServicesTablePointer (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  Get PeiService pointer.
-
-Arguments:
-
-  NONE.
-  
-Returns:
-  The direct pointer to PeiServiceTable.
-  
---*/          
-  
-{
-  //
-  // For Itanium Processor Family processors, the EFI_PEI_SERVICES**
-  // is stored in kernel register7.
-  //
-  return (EFI_PEI_SERVICES **)(UINTN)AsmReadKr7();
-}
-
-VOID
-MigrateIdtTable (
-  IN EFI_PEI_SERVICES  **PeiServices
-  )
-/*++
-
-Routine Description:
-
-  Migrate IDT from temporary memory to real memory where preceded with 4 bytes for
-  storing PeiService pointer.
-
-Arguments:
-
-  PeiServices   - The direct pointer to PeiServiceTable.
-  
-Returns:
-
-  NONE.
-  
---*/  
-{
-  return;
-}
-
-#endif
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PerformancePrimitives.s b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PerformancePrimitives.s
deleted file mode 100644
index d5b0a1af02..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PerformancePrimitives.s
+++ /dev/null
@@ -1,61 +0,0 @@
-//++
-// Copyright (c) 2004, 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:
-//
-//    PerformancePrimitives.s
-//
-//  Abstract:
-//
-//
-// Revision History:
-//
-//--
-
-.file  "PerformancePrimitives.s"
-
-#include  "IpfMacro.i"
-
-//-----------------------------------------------------------------------------
-//++
-// GetTimerValue
-//
-// Implementation of CPU-based time service
-//
-// On Entry :
-//    EFI_STATUS
-//    GetTimerValue (
-//      OUT UINT64    *TimerValue
-//    )
-//
-// Return Value: 
-//        r8  = Status
-//        r9  = 0
-//        r10 = 0
-//        r11 = 0
-// 
-// As per static calling conventions. 
-// 
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (GetTimerValue)
-
-      NESTED_SETUP (1,8,0,0)
-      mov               r8 = ar.itc;;
-      st8               [r32]= r8
-      mov               r8 = r0
-      mov               r9 = r0
-      mov               r10 = r0
-      mov               r11 = r0
-      NESTED_RETURN
-
-PROCEDURE_EXIT (GetTimerValue)
-//---------------------------------------------------------------------------
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PioFlush.s b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PioFlush.s
deleted file mode 100644
index 2bd5b8ee8d..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/PioFlush.s
+++ /dev/null
@@ -1,106 +0,0 @@
-//++
-// Copyright (c) 2004, 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:
-//
-//    pioflush.s 
-//
-//  Abstract:
-//
-//
-// Revision History:
-//
-//--
-
-  .file  "pioflush.c"
-  .radix  C
-  .section  .text,  "ax", "progbits"
-  .align 32
-  .section  .pdata,  "a", "progbits"
-  .align 4
-  .section  .xdata,  "a", "progbits"
-  .align 8
-  .section  .data,  "wa", "progbits"
-  .align 16
-  .section  .rdata,  "a", "progbits"
-  .align 16
-  .section  .bss,  "wa", "nobits"
-  .align 16
-  .section  .tls$,  "was", "progbits"
-  .align 16
-  .section  .sdata,  "was", "progbits"
-  .align 16
-  .section  .sbss,  "was", "nobits"
-  .align 16
-  .section  .srdata,  "as", "progbits"
-  .align 16
-  .section  .rdata,  "a", "progbits"
-  .align 16
-  .section  .rtcode,  "ax", "progbits"
-  .align 32
-  .type  RtPioICacheFlush#  ,@function 
-        .globl RtPioICacheFlush#
-// Function compile flags: /Ogsy
-  .section  .rtcode
-
-// Begin code for function: RtPioICacheFlush:
-  .proc  RtPioICacheFlush#
-  .align 32
-RtPioICacheFlush:  
-// File e:\tmp\pioflush.c
- {   .mii  //R-Addr: 0X00 
-  alloc  r3=2, 0, 0, 0            //11, 00000002H
-  cmp4.leu p0,p6=32, r33;;          //15, 00000020H
-  (p6)  mov  r33=32;;            //16, 00000020H
- }
- {   .mii  //R-Addr: 0X010 
-  nop.m   0
-  zxt4  r29=r33;;            //21
-  dep.z  r30=r29, 0, 5;;            //21, 00000005H
- }
- {   .mii  //R-Addr: 0X020 
-  cmp4.eq  p0,p7=r0, r30            //21
-  shr.u  r28=r29, 5;;            //19, 00000005H
-  (p7)  adds  r28=1, r28;;            //22, 00000001H
- }
- {   .mii  //R-Addr: 0X030 
-  nop.m   0
-  shl  r27=r28, 5;;            //25, 00000005H
-  zxt4  r26=r27;;            //25
- }
- {   .mfb  //R-Addr: 0X040 
-  add  r31=r26, r32            //25
-  nop.f   0
-  nop.b   0
- }
-$L143:
- {   .mii  //R-Addr: 0X050 
-  fc   r32              //27
-  adds  r32=32, r32;;            //28, 00000020H
-  cmp.ltu  p14,p15=r32, r31          //29
- }
- {   .mfb  //R-Addr: 0X060 
-  nop.m   0
-  nop.f   0
-  (p14)  br.cond.dptk.few $L143#;;          //29, 880000/120000
- }
- {   .mmi
-    sync.i;;
-    srlz.i
-    nop.i   0;;
- }
- {   .mfb  //R-Addr: 0X070 
-  nop.m   0
-  nop.f   0
-  br.ret.sptk.few b0;;            //31
- }
-// End code for function:
-  .endp  RtPioICacheFlush#
-// END
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Processor.c b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Processor.c
deleted file mode 100644
index 5546b28676..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/Processor.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-    Processor.c
-
-Abstract:
-
---*/
-
-#include "Tiano.h"
-#include "EfiJump.h"
-#include "PeiHob.h"
-#include EFI_GUID_DEFINITION (PeiFlushInstructionCache)
-#include EFI_GUID_DEFINITION (PeiTransferControl)
-
-EFI_STATUS
-WinNtFlushInstructionCacheFlush (
-  IN EFI_PEI_FLUSH_INSTRUCTION_CACHE_PROTOCOL   *This,
-  IN EFI_PHYSICAL_ADDRESS                       Start,
-  IN UINT64                                     Length
-  );
-
-EFI_PEI_TRANSFER_CONTROL_PROTOCOL         mTransferControl = {
-  (EFI_PEI_TRANSFER_CONTROL_SET_JUMP)  SetJump,
-  (EFI_PEI_TRANSFER_CONTROL_LONG_JUMP) LongJump,
-  sizeof (EFI_JUMP_BUFFER)
-};
-
-EFI_PEI_FLUSH_INSTRUCTION_CACHE_PROTOCOL  mFlushInstructionCache = {
-  WinNtFlushInstructionCacheFlush
-};
-
-EFI_STATUS
-InstallEfiPeiTransferControl (
-  IN OUT EFI_PEI_TRANSFER_CONTROL_PROTOCOL **This
-  )
-/*++
-
-Routine Description:
-
-  Installs the pointer to the transfer control mechanism
-
-Arguments:
-
-  This       - Pointer to transfer control mechanism.
-
-Returns:
-
-  EFI_SUCCESS     - Successfully installed.
-
---*/
-{
-  *This = &mTransferControl;
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-InstallEfiPeiFlushInstructionCache (
-  IN OUT EFI_PEI_FLUSH_INSTRUCTION_CACHE_PROTOCOL  **This
-  )
-/*++
-
-Routine Description:
-
-  Installs the pointer to the flush instruction cache mechanism
-
-Arguments:
-
-  This       - Pointer to flush instruction cache mechanism.
-
-Returns:
-
-  EFI_SUCCESS     - Successfully installed
-
---*/
-{
-  *This = &mFlushInstructionCache;
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-WinNtFlushInstructionCacheFlush (
-  IN EFI_PEI_FLUSH_INSTRUCTION_CACHE_PROTOCOL   *This,
-  IN EFI_PHYSICAL_ADDRESS                       Start,
-  IN UINT64                                     Length
-  )
-/*++
-
-Routine Description:
-
-  This routine would provide support for flushing the CPU instruction cache.
-
-Arguments:
-
-  This      - Pointer to CPU Architectural Protocol interface
-  Start     - Start adddress in memory to flush
-  Length    - Length of memory to flush
-
-Returns:
-
-  Status
-    EFI_SUCCESS
-
---*/
-{
-  RtPioICacheFlush ((UINT8 *) Start, (UINTN) Length);
-  return EFI_SUCCESS;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/SetJmp.s b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/SetJmp.s
deleted file mode 100644
index b63c61f05f..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/SetJmp.s
+++ /dev/null
@@ -1,325 +0,0 @@
-//++
-// Copyright (c) 2004, 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:
-//
-//  setjmp.s
-//
-// Abstract:
-//
-//  Contains an implementation of setjmp and longjmp for the
-//  Itanium-based architecture.
-//
-//
-//
-// Revision History:
-//
-//--
-
-  .file  "setjmp.s"
-
-#include  <Asm.h>
-#include  <Ia_64Gen.h>
-
-// int SetJump(struct jmp_buffer save)
-//
-//  Setup a non-local goto.
-//
-// Description:
-//
-//  SetJump stores the current register set in the area pointed to
-//  by "save".  It returns zero.  Subsequent calls to "LongJump" will
-//  restore the registers and return non-zero to the same location.
-//
-// On entry, r32 contains the pointer to the jmp_buffer
-//
-
-PROCEDURE_ENTRY(SetJump)
-  //
-  //  Make sure buffer is aligned at 16byte boundary
-  //
-  mov    r32 = r33        
-
-    add     r10 = -0x10,r0  ;;  // mask the lower 4 bits
-    and     r32 = r32, r10;; 
-    add     r32 = 0x10, r32;;   // move to next 16 byte boundary
-
-    add    r10 = J_PREDS, r32  // skip Unats & pfs save area
-  add    r11 = J_BSP, r32
-  //
-  //  save immediate context
-  //
-  mov    r2 = ar.bsp     // save backing store pointer
-  mov    r3 = pr         // save predicates
-  ;;
-  //
-  // save user Unat register
-  //
-  mov    r16 = ar.lc        // save loop count register
-  mov    r14 = ar.unat     // save user Unat register
-
-  st8    [r10] = r3, J_LC-J_PREDS
-  st8    [r11] = r2, J_R4-J_BSP
-  ;;
-  st8    [r10] = r16, J_R5-J_LC
-  st8    [r32] = r14, J_NATS  // Note: Unat at the 
-                    // beginning of the save area
-  mov    r15 = ar.pfs
-  ;;
-  //
-  //  save preserved general registers & NaT's
-  //
-  st8.spill  [r11] = r4, J_R6-J_R4
-  ;;
-  st8.spill  [r10] = r5, J_R7-J_R5 
-    ;;
-  st8.spill  [r11] = r6, J_SP-J_R6
-  ;;
-  st8.spill  [r10] = r7, J_F3-J_R7 
-    ;;
-  st8.spill  [r11] = sp, J_F2-J_SP
-  ;;
-  //
-  // save spilled Unat and pfs registers
-  //
-  mov    r2 = ar.unat       // save Unat register after spill
-  ;;
-  st8    [r32] = r2, J_PFS-J_NATS  // save unat for spilled regs
-  ;;
-  st8    [r32] = r15          // save pfs
-  //
-  //  save floating registers 
-  //
-  stf.spill  [r11] = f2, J_F4-J_F2
-  stf.spill  [r10] = f3, J_F5-J_F3 
-  ;;
-  stf.spill  [r11] = f4, J_F16-J_F4
-  stf.spill  [r10] = f5, J_F17-J_F5 
-  ;;
-  stf.spill  [r11] = f16, J_F18-J_F16
-  stf.spill  [r10] = f17, J_F19-J_F17 
-  ;;
-  stf.spill  [r11] = f18, J_F20-J_F18
-  stf.spill  [r10] = f19, J_F21-J_F19 
-  ;;
-  stf.spill  [r11] = f20, J_F22-J_F20
-  stf.spill  [r10] = f21, J_F23-J_F21 
-  ;;
-  stf.spill  [r11] = f22, J_F24-J_F22
-  stf.spill  [r10] = f23, J_F25-J_F23 
-  ;;
-  stf.spill  [r11] = f24, J_F26-J_F24
-  stf.spill  [r10] = f25, J_F27-J_F25 
-  ;;
-  stf.spill  [r11] = f26, J_F28-J_F26
-  stf.spill  [r10] = f27, J_F29-J_F27 
-  ;;
-  stf.spill  [r11] = f28, J_F30-J_F28
-  stf.spill  [r10] = f29, J_F31-J_F29 
-  ;;
-  stf.spill  [r11] = f30, J_FPSR-J_F30
-  stf.spill  [r10] = f31, J_B0-J_F31    // size of f31 + fpsr
-  //
-  // save FPSR register & branch registers
-  //
-  mov    r2 = ar.fpsr  // save fpsr register
-  mov    r3 = b0 
-  ;;
-  st8    [r11] = r2, J_B1-J_FPSR
-  st8    [r10] = r3, J_B2-J_B0
-  mov    r2 = b1
-  mov    r3 = b2 
-  ;;
-  st8    [r11] = r2, J_B3-J_B1
-  st8    [r10] = r3, J_B4-J_B2
-  mov    r2 = b3
-  mov    r3 = b4 
-  ;;
-  st8    [r11] = r2, J_B5-J_B3
-  st8    [r10] = r3
-  mov    r2 = b5 
-  ;;
-  st8    [r11] = r2
-  ;;
-  //
-  // return
-  //
-  mov    r8 = r0        // return 0 from setjmp
-  mov    ar.unat = r14  // restore unat
-  br.ret.sptk  b0
-
-PROCEDURE_EXIT(SetJump)
-
-
-//
-// void LongJump(struct jmp_buffer *)
-//
-//  Perform a non-local goto.
-//
-// Description:
-//
-//  LongJump initializes the register set to the values saved by a
-//  previous 'SetJump' and jumps to the return location saved by that
-//  'SetJump'.  This has the effect of unwinding the stack and returning
-//  for a second time to the 'SetJump'.
-//
-
-PROCEDURE_ENTRY(LongJump)
-  //
-  //  Make sure buffer is aligned at 16byte boundary
-  //
-  mov    r32 = r33        
-
-    add     r10 = -0x10,r0  ;;  // mask the lower 4 bits
-    and     r32 = r32, r10;; 
-    add     r32 = 0x10, r32;;   // move to next 16 byte boundary
-
-  //
-  // caching the return value as we do invala in the end
-  //
-///  mov    r8 = r33          // return value
-  mov    r8 = 1              // For now return hard coded 1
-
-  //
-  //  get immediate context
-  //
-  mov    r14 = ar.rsc    // get user RSC conf 
-  add    r10 = J_PFS, r32  // get address of pfs
-  add    r11 = J_NATS, r32
-  ;;
-  ld8    r15 = [r10], J_BSP-J_PFS  // get pfs
-  ld8    r2 = [r11], J_LC-J_NATS      // get unat for spilled regs
-  ;;
-  mov    ar.unat = r2
-  ;;
-  ld8    r16 = [r10], J_PREDS-J_BSP  // get backing store pointer
-  mov    ar.rsc = r0        // put RSE in enforced lazy 
-  mov    ar.pfs = r15
-  ;;
-  
-  //
-  // while returning from longjmp the BSPSTORE and BSP needs to be
-  // same and discard all the registers allocated after we did
-  // setjmp. Also, we need to generate the RNAT register since we
-  // did not flushed the RSE on setjmp.
-  //
-  mov    r17 = ar.bspstore  // get current BSPSTORE
-  ;;
-    cmp.ltu  p6,p7 = r17, r16  // is it less than BSP of 
-(p6)  br.spnt.few  .flush_rse
-  mov    r19 = ar.rnat    // get current RNAT
-  ;;
-  loadrs              // invalidate dirty regs
-  br.sptk.many  .restore_rnat    // restore RNAT
-
-.flush_rse:
-  flushrs
-  ;;
-  mov    r19 = ar.rnat    // get current RNAT
-  mov    r17 = r16      // current BSPSTORE
-  ;;
-.restore_rnat:
-  //
-  // check if RNAT is saved between saved BSP and curr BSPSTORE
-  //
-  dep    r18 = -1,r16,3,6   // get RNAT address
-  ;;
-  cmp.ltu  p8,p9 = r18, r17  // RNAT saved on RSE
-  ;;
-(p8)  ld8    r19 = [r18]    // get RNAT from RSE
-  ;;
-  mov    ar.bspstore = r16  // set new BSPSTORE  
-  ;;
-  mov    ar.rnat = r19    // restore RNAT
-  mov    ar.rsc = r14    // restore RSC conf
-
-
-  ld8    r3 = [r11], J_R4-J_LC    // get lc register
-  ld8    r2 = [r10], J_R5-J_PREDS   // get predicates
-  ;;
-  mov    pr = r2, -1
-  mov    ar.lc = r3
-  //
-  //  restore preserved general registers & NaT's
-  //
-  ld8.fill  r4 = [r11], J_R6-J_R4
-  ;;
-  ld8.fill  r5 = [r10], J_R7-J_R5 
-  ld8.fill  r6 = [r11], J_SP-J_R6
-  ;;
-  ld8.fill  r7 = [r10], J_F2-J_R7
-  ld8.fill  sp = [r11], J_F3-J_SP
-  ;;
-  //
-  //  restore floating registers 
-  //
-  ldf.fill  f2 = [r10], J_F4-J_F2
-  ldf.fill  f3 = [r11], J_F5-J_F3 
-  ;;
-  ldf.fill  f4 = [r10], J_F16-J_F4
-  ldf.fill  f5 = [r11], J_F17-J_F5 
-  ;;
-  ldf.fill  f16 = [r10], J_F18-J_F16
-  ldf.fill  f17 = [r11], J_F19-J_F17
-  ;;
-  ldf.fill  f18 = [r10], J_F20-J_F18
-  ldf.fill  f19 = [r11], J_F21-J_F19
-  ;;
-  ldf.fill  f20 = [r10], J_F22-J_F20
-  ldf.fill  f21 = [r11], J_F23-J_F21
-  ;;
-  ldf.fill  f22 = [r10], J_F24-J_F22
-  ldf.fill  f23 = [r11], J_F25-J_F23 
-  ;;
-  ldf.fill  f24 = [r10], J_F26-J_F24
-  ldf.fill  f25 = [r11], J_F27-J_F25
-  ;;
-  ldf.fill  f26 = [r10], J_F28-J_F26
-  ldf.fill  f27 = [r11], J_F29-J_F27
-  ;;
-  ldf.fill  f28 = [r10], J_F30-J_F28
-  ldf.fill  f29 = [r11], J_F31-J_F29 
-  ;;
-  ldf.fill  f30 = [r10], J_FPSR-J_F30
-  ldf.fill  f31 = [r11], J_B0-J_F31 ;;
-
-    //
-  // restore branch registers and fpsr
-  //
-  ld8    r16 = [r10], J_B1-J_FPSR  // get fpsr
-  ld8    r17 = [r11], J_B2-J_B0    // get return pointer
-  ;;
-  mov    ar.fpsr = r16
-  mov    b0 = r17
-  ld8    r2 = [r10], J_B3-J_B1
-  ld8    r3 = [r11], J_B4-J_B2
-  ;;
-  mov    b1 = r2
-  mov    b2 = r3
-  ld8    r2 = [r10], J_B5-J_B3
-  ld8    r3 = [r11]
-  ;;
-  mov    b3 = r2
-  mov    b4 = r3 
-  ld8    r2 = [r10]
-  ld8    r21 = [r32]      // get user unat
-  ;;
-  mov    b5 = r2
-  mov    ar.unat = r21
-
-  //
-  // invalidate ALAT
-  //
-  invala ;;
-
-  br.ret.sptk  b0
-PROCEDURE_EXIT(LongJump)
-
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/SwitchStack.s b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/SwitchStack.s
deleted file mode 100644
index 439ebdba7d..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Ipf/SwitchStack.s
+++ /dev/null
@@ -1,122 +0,0 @@
-//++
-// Copyright (c) 2004, 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:
-//
-//  SwitchStack.s
-//
-// Abstract:
-//
-//  Contains an implementation of a stack switch for the Itanium-based architecture.
-//
-//
-//
-// Revision History:
-//
-//--
-
-  .file  "SwitchStack.s"
-
-#include  <Asm.h>
-#include  <Ia_64Gen.h>
-
-// Define hardware RSE Configuration Register
-//
-// RS Configuration (RSC) bit field positions
-
-#define RSC_MODE       0
-#define RSC_PL         2
-#define RSC_BE         4
-// RSC bits 5-15 reserved
-#define RSC_MBZ0       5
-#define RSC_MBZ0_V     0x3ff
-#define RSC_LOADRS     16
-#define RSC_LOADRS_LEN 14
-// RSC bits 30-63 reserved
-#define RSC_MBZ1       30
-#define RSC_MBZ1_V     0x3ffffffffULL
-
-// RSC modes
-// Lazy
-#define RSC_MODE_LY (0x0)
-// Store intensive
-#define RSC_MODE_SI (0x1)
-// Load intensive
-#define RSC_MODE_LI (0x2)
-// Eager
-#define RSC_MODE_EA (0x3)
-
-// RSC Endian bit values
-#define RSC_BE_LITTLE 0
-#define RSC_BE_BIG    1
-
-// RSC while in kernel: enabled, little endian, pl = 0, eager mode
-#define RSC_KERNEL ((RSC_MODE_EA<<RSC_MODE) | (RSC_BE_LITTLE<<RSC_BE))
-// Lazy RSC in kernel: enabled, little endian, pl = 0, lazy mode
-#define RSC_KERNEL_LAZ ((RSC_MODE_LY<<RSC_MODE) | (RSC_BE_LITTLE<<RSC_BE))
-// RSE disabled: disabled, pl = 0, little endian, eager mode
-#define RSC_KERNEL_DISABLED ((RSC_MODE_LY<<RSC_MODE) | (RSC_BE_LITTLE<<RSC_BE))
-
-
-//VOID
-//SwitchStacks (
-//    VOID    *ContinuationFunction,
-//    UINTN   Parameter,
-//    UINTN   NewTopOfStack,
-//    UINTN   NewBSPStore OPTIONAL
-//)
-///*++
-//
-//Input Arguments
-//
-//  ContinuationFunction - This is a pointer to the PLABEL of the function that should  be called once the
-//        new stack has been created.  
-//  Parameter - The parameter to pass to the continuation function
-//  NewTopOfStack - This is the new top of the memory stack for ensuing code.  This is mandatory and
-//      should be non-zero
-//  NewBSPStore - This is the new BSP store for the ensuing code.  It is optional on IA-32 and mandatory on Itanium-based platform.
-//
-//--*/
-
-PROCEDURE_ENTRY(SwitchStacks)
-
-        mov        r16 = -0x10;;
-        and        r16 = r34, r16;;             // get new stack value in R16, 0 the last nibble.
-        mov        r15 = r35;;                  // Get new BspStore into R15
-        mov        r13 = r32;;                  // this is a pointer to the PLABEL of the continuation function.  
-        mov        r17 = r33;;                  // this is the parameter to pass to the continuation function
-
-        alloc       r11=0,0,0,0                 // Set 0-size frame
-        ;;
-        flushrs;;
-
-        mov         r21 = RSC_KERNEL_DISABLED   // for rse disable             
-        ;;
-        mov         ar.rsc = r21                // turn off RSE                
-
-        add         sp = r0, r16;;              // transfer to the EFI stack
-        mov         ar.bspstore = r15           // switch to EFI BSP        
-        invala                                  // change of ar.bspstore needs invala.     
-      
-        mov         r18 = RSC_KERNEL_LAZ        // RSC enabled, Lazy mode
-        ;;
-        mov         ar.rsc = r18                // turn rse on, in kernel mode     
-        ;;        
-        alloc       r11=0,0,1,0;;                 // alloc 0 outs going to ensuing DXE IPL service
-        mov         out0 = r17
-        ld8         r16 = [r13],8;;               // r16 = address of continuation function from the PLABEL
-        ld8         gp = [r13]                  // gp  = gp of continuation function from the PLABEL
-        mov         b6 = r16
-        ;;
-        br.call.sptk.few b0=b6;;                  // Call the continuation function
-        ;;
-PROCEDURE_EXIT(SwitchStacks)
-
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib.inf b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib.inf
index 6ac8794fc2..35300438af 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib.inf
@@ -57,21 +57,6 @@ COMPONENT_TYPE    = LIBRARY
   X64/EfiJump.h
   X64/PeiServicePointer.c
 
-[sources.ipf]
-#  Ipf/Math.c
-  Ipf/PeCoffLoaderEx.c
-  Ipf/PeCoffLoaderEx.h
-  Ipf/PerformancePrimitives.s
-  Ipf/Processor.c
-  Ipf/EfiJump.h
-  Ipf/SetJmp.s
-  Ipf/Asm.h
-  Ipf/PioFlush.s
-  Ipf/SwitchStack.s
-  Ipf/Ia_64Gen.h
-  Ipf/HwAccess.s
-  Ipf/PeiServicePointer.c
-
 [sources.ARM]
   Arm/PerformancePrimitives.c
 
diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib_Edk2.inf b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib_Edk2.inf
index f84f5d119f..bda32654d4 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib_Edk2.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/PeiLib_Edk2.inf
@@ -69,27 +69,6 @@ COMPONENT_TYPE    = LIBRARY
   X64/EfiJump.h
   X64/PeiServicePointer.c
 
-[sources.ipf]
-#  Ipf/Math.c
-  Ipf/PeCoffLoaderEx.c
-  Ipf/PeCoffLoaderEx.h
-  Ipf/PerformancePrimitives.s
-  Ipf/Processor.c
-  Ipf/EfiJump.h
-  Ipf/SetJmp.s
-  Ipf/Asm.h
-  Ipf/PioFlush.s
-  Ipf/SwitchStack.s
-  Ipf/Ia_64Gen.h
-  Ipf/HwAccess.s
-  Ipf/PeiServicePointer.c
-  #
-  # Only for CYGWINGCC IPF tool chain, EFI_BREAKPOINT and MEMORY_FENCE
-  # is defined as two functions EcpEfiBreakPoint and EcpMemoryFence.
-  #
-  Ipf/AsmCpuMisc.s | GCC
-  
-  
 [libraries.common]
   EdkGuidLib
   EfiCommonLib
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib.inf b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib.inf
index 948bffa205..3983749782 100644
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib.inf
@@ -47,13 +47,6 @@ COMPONENT_TYPE  = LIBRARY
   X64/Fvb.c
   X64/RuntimeLibAsm.asm
 
-[sources.ipf]
-  Ipf/RuntimeLib.c
-  Ipf/Lock.c
-  Ipf/Fvb.c
-  Ipf/EsalLib.s
-  Ipf/IpfCpuCache.s
-
 [sources.ebc]
   Ebc/RuntimeLib.c
 
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib_Edk2.inf b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib_Edk2.inf
index b9b48872b9..b88e47132b 100644
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib_Edk2.inf
+++ b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/EfiRuntimeLib_Edk2.inf
@@ -51,18 +51,6 @@ COMPONENT_TYPE  = LIBRARY
   X64/RuntimeLibAsm.asm     | INTEL
   X64/RuntimeLibAsm.S       | GCC
 
-[sources.ipf]
-  Ipf/RuntimeLib.c
-  Ipf/Lock.c
-  Ipf/Fvb.c
-  Ipf/EsalLib.s
-  Ipf/IpfCpuCache.s
-  #
-  # Only for CYGWINGCC IPF tool chain, EFI_BREAKPOINT and MEMORY_FENCE
-  # is defined as two functions EcpEfiBreakPoint and EcpMemoryFence.
-  #
-  Ipf/AsmCpuMisc.s | GCC
-
 [sources.ebc]
   Ebc/RuntimeLib.c
 
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/AsmCpuMisc.s b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/AsmCpuMisc.s
deleted file mode 100644
index 81837472bf..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/AsmCpuMisc.s
+++ /dev/null
@@ -1,44 +0,0 @@
-/// @file
-///   Contains an implementation of EcpEfiBreakPoint and EcpMemoryFence on Itanium-based
-///   architecture.
-///
-/// Copyright (c) 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.
-///
-/// Module Name:  AsmCpuMisc.s
-///
-///
-
-
-.text
-.proc EcpEfiBreakPoint
-.type EcpEfiBreakPoint, @function
-
-EcpEfiBreakPoint::
-        break.i 0;;
-        br.ret.dpnt    b0;;
-
-.endp EcpEfiBreakPoint
-
-.proc EcpMemoryFence
-.type EcpMemoryFence, @function
-
-EcpMemoryFence::
-        mf;;    // memory access ordering
-
-        // do we need the mf.a also here?
-        mf.a    // wait for any IO to complete?
-        
-        // not sure if we need serialization here, just put it, in case...
-        
-        srlz.d;;
-        srlz.i;;
-        
-        br.ret.dpnt    b0;;
-.endp EcpMemoryFence
\ No newline at end of file
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/EsalLib.s b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/EsalLib.s
deleted file mode 100644
index 27135e71e4..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/EsalLib.s
+++ /dev/null
@@ -1,149 +0,0 @@
-//++
-// Copyright (c) 2004, 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:
-//
-//    EsalLib.s
-//
-//  Abstract:
-//
-//
-// Revision History:
-//
-//--
-
-.file  "EsalLib.s"
-
-#include  "IpfMacro.i"
-
-//
-// Exports
-//
-.globl GetEsalEntryPoint
-
-
-//-----------------------------------------------------------------------------
-//++
-// GetEsalEntryPoint
-//
-// Return Esal global and PSR register.
-//
-// On Entry :
-//
-//
-// Return Value:
-//        r8  = EFI_SAL_SUCCESS
-//        r9  = Physical Plabel
-//        r10 = Virtual Plabel
-//        r11 = psr
-// 
-// As per static calling conventions. 
-// 
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (GetEsalEntryPoint)
-
-      NESTED_SETUP (0,8,0,0)
-
-EsalCalcStart:
-      mov   r8  = ip;;
-      add   r8  = (EsalEntryPoint - EsalCalcStart), r8;;
-      mov   r9  = r8;;
-      add   r10 = 0x10, r8;;
-      mov   r11 = psr;;
-      mov   r8  = r0;;
-
-      NESTED_RETURN
-
-PROCEDURE_EXIT (GetEsalEntryPoint)
-
-
-
-
-
-//-----------------------------------------------------------------------------
-//++
-// SetEsalPhysicalEntryPoint
-//
-// Set the dispatcher entry point
-//
-// On Entry:
-//  in0 = Physical address of Esal Dispatcher
-//  in1 = Physical GP
-//
-// Return Value: 
-//   r8 = EFI_SAL_SUCCESS
-// 
-// As per static calling conventions. 
-// 
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (SetEsalPhysicalEntryPoint)
-
-      NESTED_SETUP (2,8,0,0)
-
-EsalCalcStart1:
-      mov   r8   = ip;;
-      add   r8   = (EsalEntryPoint - EsalCalcStart1), r8;;
-      st8   [r8] = in0;;
-      add   r8   = 0x08, r8;;
-      st8   [r8] = in1;;
-      mov   r8   = r0;;
-
-      NESTED_RETURN
-
-PROCEDURE_EXIT (SetEsalPhysicalEntryPoint)
-
-
-//-----------------------------------------------------------------------------
-//++
-// SetEsalVirtualEntryPoint
-//
-// Register physical address of Esal globals.
-//
-// On Entry :
-//  in0 = Virtual address of Esal Dispatcher
-//  in1 = Virtual GP
-//
-// Return Value: 
-//  r8 = EFI_SAL_ERROR
-// 
-// As per static calling conventions. 
-// 
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (SetEsalVirtualEntryPoint)
-
-      NESTED_SETUP (2,8,0,0)
-
-EsalCalcStart2:
-      mov   r8   = ip;;
-      add   r8   = (EsalEntryPoint - EsalCalcStart2), r8;;
-      add   r8   = 0x10, r8;;
-      st8   [r8] = in0;;
-      add   r8   = 0x08, r8;;
-      st8   [r8] = in1;;
-      mov   r8   = r0;;
-
-      NESTED_RETURN
-
-PROCEDURE_EXIT (SetEsalVirtualEntryPoint)
-
-
-
-
-.align 32
-EsalEntryPoint: 
-    data8 0   // Physical Entry
-    data8 0   //         GP
-    data8 0   // Virtual Entry
-    data8 0   //         GP
-
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/Fvb.c b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/Fvb.c
deleted file mode 100644
index 7eb93a8d47..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/Fvb.c
+++ /dev/null
@@ -1,332 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 2007, 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:
-  
-    Fvb.c
-
-Abstract:
-
-  Light weight lib to support Tiano Firmware Volume Block 
-  protocol abstraction at runtime.
-
-  All these functions convert EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID
-  class function to the Runtime Lib function. There is a 1 to 1 mapping.
-
-  If you are using any of these lib functions.you must first call FvbInitialize ().
-
---*/
-
-#include "Tiano.h"
-#include "EfiRuntimeLib.h"
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalGuid)
-#include "SalApi.h"
-
-EFI_STATUS
-EfiFvbInitialize (
-  VOID
-  )
-/*++
-
-Routine Description:
-  Initialize globals and register Fvb Protocol notification function.
-
-Arguments:
-  None
-
-Returns: 
-  EFI_SUCCESS
-
---*/
-{
-  return EFI_SUCCESS;
-}
-//
-// The following functions wrap Fvb protocol in the Runtime Lib functions.
-// The Instance translates into Fvb instance. The Fvb order defined by HOBs and
-// thus the sequence of FVB protocol addition define Instance.
-//
-// EfiFvbInitialize () must be called before any of the following functions
-// must be called.
-//
-EFI_STATUS
-EfiFvbReadBlock (
-  IN UINTN                                        Instance,
-  IN EFI_LBA                                      Lba,
-  IN UINTN                                        Offset,
-  IN OUT UINTN                                    *NumBytes,
-  IN UINT8                                        *Buffer
-  )
-/*++
-
-Routine Description:
-  Reads specified number of bytes into a buffer from the specified block
-
-Arguments:
-  Instance              - The FV instance to be read from
-  Lba                   - The logical block address to be read from
-  Offset                - Offset into the block at which to begin reading
-  NumBytes              - Pointer that on input contains the total size of
-                          the buffer. On output, it contains the total number
-                          of bytes read
-  Buffer                - Pointer to a caller allocated buffer that will be
-                          used to hold the data read
-
-Returns:
-  Status code
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
-
-  return EfiCallEsalService (&Guid, Read, Instance, Lba, Offset, (UINT64) NumBytes, (UINT64) Buffer, 0, 0).Status;
-}
-
-EFI_STATUS
-EfiFvbWriteBlock (
-  IN UINTN                                        Instance,
-  IN EFI_LBA                                      Lba,
-  IN UINTN                                        Offset,
-  IN OUT UINTN                                    *NumBytes,
-  IN UINT8                                        *Buffer
-  )
-/*++
-
-Routine Description:
-  Writes specified number of bytes from the input buffer to the block
-
-Arguments:
-  Instance              - The FV instance to be written to
-  Lba                   - The starting logical block index to write to
-  Offset                - Offset into the block at which to begin writing
-  NumBytes              - Pointer that on input contains the total size of
-                          the buffer. On output, it contains the total number
-                          of bytes actually written
-  Buffer                - Pointer to a caller allocated buffer that contains
-                          the source for the write
-
-Returns:
-  Status code
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
-
-  return EfiCallEsalService (&Guid, Write, Instance, Lba, Offset, (UINT64) NumBytes, (UINT64) Buffer, 0, 0).Status;
-}
-
-EFI_STATUS
-EfiFvbEraseBlock (
-  IN UINTN                                Instance,
-  IN UINTN                                Lba
-  )
-/*++
-
-Routine Description:
-  Erases and initializes a firmware volume block
-
-Arguments:
-  Instance              - The FV instance to be erased
-  Lba                   - The logical block index to be erased
-
-Returns:
-  Status code
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
-
-  return EfiCallEsalService (&Guid, EraseBlock, Instance, Lba, 0, 0, 0, 0, 0).Status;
-}
-
-EFI_STATUS
-EfiFvbGetVolumeAttributes (
-  IN UINTN                                Instance,
-  OUT EFI_FVB_ATTRIBUTES                  *Attributes
-  )
-/*++
-
-Routine Description:
-  Retrieves attributes, insures positive polarity of attribute bits, returns
-  resulting attributes in output parameter
-
-Arguments:
-  Instance              - The FV instance whose attributes is going to be 
-                          returned
-  Attributes            - Output buffer which contains attributes
-
-Returns:
-  Status code
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
-
-  return EfiCallEsalService (&Guid, SetVolumeAttributes, Instance, (UINT64) Attributes, 0, 0, 0, 0, 0).Status;
-}
-
-EFI_STATUS
-EfiFvbSetVolumeAttributes (
-  IN UINTN                                Instance,
-  IN EFI_FVB_ATTRIBUTES                   Attributes
-  )
-/*++
-
-Routine Description:
-  Modifies the current settings of the firmware volume according to the 
-  input parameter.
-
-Arguments:
-  Instance              - The FV instance whose attributes is going to be 
-                          modified
-  Attributes            - It is a pointer to EFI_FVB_ATTRIBUTES 
-                          containing the desired firmware volume settings.
-
-Returns:
-  Status code
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
-
-  return EfiCallEsalService (&Guid, SetVolumeAttributes, Instance, (UINT64) (&Attributes), 0, 0, 0, 0, 0).Status;
-}
-
-EFI_STATUS
-EfiFvbGetPhysicalAddress (
-  IN UINTN                                Instance,
-  OUT EFI_PHYSICAL_ADDRESS                *BaseAddress
-  )
-/*++
-
-Routine Description:
-  Retrieves the physical address of a memory mapped FV
-
-Arguments:
-  Instance              - The FV instance whose base address is going to be
-                          returned
-  BaseAddress           - Pointer to a caller allocated EFI_PHYSICAL_ADDRESS 
-                          that on successful return, contains the base address
-                          of the firmware volume. 
-
-Returns:
-  Status code
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
-
-  return EfiCallEsalService (&Guid, GetPhysicalAddress, Instance, (UINT64) BaseAddress, 0, 0, 0, 0, 0).Status;
-}
-
-EFI_STATUS
-EfiFvbGetBlockSize (
-  IN UINTN                                Instance,
-  IN EFI_LBA                              Lba,
-  OUT UINTN                               *BlockSize,
-  OUT UINTN                               *NumOfBlocks
-  )
-/*++
-
-Routine Description:
-  Retrieve the size of a logical block
-
-Arguments:
-  Instance              - The FV instance whose block size is going to be
-                          returned
-  Lba                   - Indicates which block to return the size for.
-  BlockSize             - A pointer to a caller allocated UINTN in which
-                          the size of the block is returned
-  NumOfBlocks           - a pointer to a caller allocated UINTN in which the
-                          number of consecutive blocks starting with Lba is
-                          returned. All blocks in this range have a size of
-                          BlockSize
-
-Returns:
-  EFI_SUCCESS           - The firmware volume was read successfully and 
-                          contents are in Buffer
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
-
-  return EfiCallEsalService (
-          &Guid,
-          GetBlockSize,
-          Instance,
-          Lba,
-          (UINT64) BlockSize,
-          (UINT64) NumOfBlocks,
-          0,
-          0,
-          0
-          ).Status;
-}
-
-EFI_STATUS
-EfiFvbEraseCustomBlockRange (
-  IN UINTN                                Instance,
-  IN EFI_LBA                              StartLba,
-  IN UINTN                                OffsetStartLba,
-  IN EFI_LBA                              LastLba,
-  IN UINTN                                OffsetLastLba
-  )
-/*++
-
-Routine Description:
-  Erases and initializes a specified range of a firmware volume
-
-Arguments:
-  Instance              - The FV instance to be erased
-  StartLba              - The starting logical block index to be erased
-  OffsetStartLba        - Offset into the starting block at which to 
-                          begin erasing
-  LastLba               - The last logical block index to be erased
-  OffsetLastLba         - Offset into the last block at which to end erasing
-
-Returns:
-  Status code
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
-
-  return EfiCallEsalService (
-          &Guid,
-          EraseCustomBlockRange,
-          Instance,
-          StartLba,
-          OffsetStartLba,
-          LastLba,
-          OffsetLastLba,
-          0,
-          0
-          ).Status;
-}
-EFI_STATUS
-EfiFvbShutdown (
-  VOID
-  )
-/*++
-
-Routine Description:
-  Release resources allocated in EfiFvbInitialize.
-
-Arguments:
-  None 
-
-Returns: 
-  EFI_SUCCESS
-
---*/
-{
-  return EFI_SUCCESS;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/IpfCpuCache.s b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/IpfCpuCache.s
deleted file mode 100644
index a5b2672b55..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/IpfCpuCache.s
+++ /dev/null
@@ -1,88 +0,0 @@
-//++
-// Copyright (c) 2004, 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:
-//
-//    IpfCpuCache.s
-//
-//  Abstract:
-//
-//    Contains Misc assembly procedures to support IPF CPU AP.
-//
-// Revision History:
-//
-//--
-
-.file  "IpfCpuCache.s"
-
-#include  "IpfMacro.i"
-#include  "IpfDefines.h"
-
-//-----------------------------------------------------------------------------
-//++
-// Flush Cache
-//
-// Arguments : 
-
-// Input = in0 = Starting Address to Flush.
-// Input = in1 = Length in bytes.
-// Input = b0 = return branch register.
-// On Entry :
-//
-// Return Value: 
-//
-//  VOID
-//  SalFlushCache (
-//    IN UINT64   BaseToFlush,
-//    IN UINT64   LengthToFlush
-//    );
-//
-//--
-//---------------------------------------------------------------------------
-PROCEDURE_ENTRY (SalFlushCache)
-
-      NESTED_SETUP (5,8,0,0)
-            
-      mov         loc2 = ar.lc
-      
-      mov         loc3 = in0                  // Start address.
-      mov         loc4 = in1;;                // Length in bytes.
-      
-      cmp.eq  p6,p7 = loc4, r0;;               // If Length is zero then don't flush any cache
-      (p6)  br.spnt.many DoneFlushingC;;         
-      
-      add         loc4 = loc4,loc3 
-      mov         loc5 = 1;;
-      sub         loc4 = loc4, loc5 ;; // the End address to flush
-                                         
-      dep         loc3 = r0,loc3,0,5          
-      dep         loc4 = r0,loc4,0,5;;         
-      shr         loc3 = loc3,5             
-      shr         loc4 = loc4,5;;    // 32 byte cache line
-      
-      sub         loc4 = loc4,loc3;; // total flush count, It should be add 1 but 
-                                     // the br.cloop will first execute one time 
-      mov         loc3 = in0                  
-      mov         loc5 = 32      
-      mov         ar.lc = loc4;;
-
-StillFlushingC:
-      fc          loc3;; 
-      sync.i;;
-      srlz.i;;
-      add         loc3 = loc5,loc3;;
-      br.cloop.sptk.few StillFlushingC;;
-
-DoneFlushingC:      
-      mov         ar.lc = loc2     
-      NESTED_RETURN
-
-PROCEDURE_EXIT (SalFlushCache)
-
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/Lock.c b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/Lock.c
deleted file mode 100644
index fb17e8fc93..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/Lock.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*++
-
-Copyright (c) 2004, 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:
-
-  Lock.c
-
-Abstract:
-
-  Support for locking lib services. These primitives may be implemented 
-  as Esal calls but since these result in small code that us position
-  independent, we can use lib functions. ESAL calls have a significant
-  software overhead and too deep nesting is bad for the stack.
-
---*/
-
-#include "Tiano.h"
-#include "EfiDriverLib.h"
-
-extern
-BOOLEAN
-EfiAtRuntime (
-  VOID
-  );
-
-VOID
-EfiInitializeLock (
-  IN OUT EFI_LOCK *Lock,
-  IN EFI_TPL      Priority
-  )
-/*++
-
-Routine Description:
-
-  Initialize a basic mutual exclusion lock. There is 
-  no concept of TPL at runtime hence priority is
-  ignored.
-    
-Arguments:
-
-  Lock        - The EFI_LOCK structure to initialize
-
-  Priority    - Ignored
-
-    
-Returns:
-
-  An initialized Efi Lock structure.
-
---*/
-{
-  Lock->Tpl       = Priority;
-  Lock->OwnerTpl  = 0;
-  Lock->Lock      = 0;
-}
-
-EFI_STATUS
-EfiAcquireLockOrFail (
-  IN EFI_LOCK  *Lock
-  )
-/*++
-
-Routine Description:
-
-  Initialize a basic mutual exclusion lock. For now,
-  only allow one level of nesting.
-    
-Arguments:
-
-  Lock        - The EFI_LOCK structure to initialize
-   
-Returns:
-
-  EFI_SUCCESS       - Lock Owned.
-  EFI_ACCESS_DENIED - Reentrant Lock Acquisition, Lock not Owned.
-
---*/
-{
-  if (Lock->Lock != 0) {
-    //
-    // Lock is already owned, so bail out
-    //
-    return EFI_ACCESS_DENIED;
-  }
-
-  if (!EfiAtRuntime ()) {
-    //
-    // The check is just debug code for core inplementation. It must
-    //  always be true in a driver
-    //
-    Lock->OwnerTpl = gBS->RaiseTPL (Lock->Tpl);
-  }
-
-  Lock->Lock += 1;
-  return EFI_SUCCESS;
-}
-
-VOID
-EfiAcquireLock (
-  IN EFI_LOCK  *Lock
-  )
-/*++
-
-Routine Description:
-
-  Acquires ownership of the lock.
-    
-Arguments:
-
-  Lock - The lock to acquire
-    
-Returns:
-
-  Lock owned
-
---*/
-{
-  EFI_STATUS  Status;
-
-  Status = EfiAcquireLockOrFail (Lock);
-
-  //
-  // Lock was already locked.
-  //
-  ASSERT_EFI_ERROR (Status);
-}
-
-VOID
-EfiReleaseLock (
-  IN EFI_LOCK  *Lock
-  )
-/*++
-
-Routine Description:
-
-    Releases ownership of the mutual exclusion lock.
-    
-Arguments:
-
-    Lock - The lock to release
-    
-Returns:
-
-    Lock unowned
-
---*/
-{
-  EFI_TPL Tpl;
-
-  Tpl = Lock->OwnerTpl;
-
-  ASSERT (Lock->Lock == 1);
-  Lock->Lock -= 1;
-
-  if (!EfiAtRuntime ()) {
-    //
-    // The check is just debug code for core inplementation. It must
-    //  always be true in a driver
-    //
-    gBS->RestoreTPL (Tpl);
-  }
-}
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/RuntimeLib.c b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/RuntimeLib.c
deleted file mode 100644
index d826b9000e..0000000000
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/Ipf/RuntimeLib.c
+++ /dev/null
@@ -1,1321 +0,0 @@
-/*++
-
-Copyright (c) 2004 - 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.             
-
-Module Name:
-
-  RuntimeLib.c
-
-Abstract:
-
-  Light weight lib to support Tiano Sal drivers.
-
---*/
-
-#include "Tiano.h"
-#include "EfiRuntimeLib.h"
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalBootService)
-#include EFI_PROTOCOL_DEFINITION (ExtendedSalGuid)
-#include "IpfDefines.h"
-#include "SalApi.h"
-
-//
-// Worker functions in EsalLib.s
-//
-SAL_RETURN_REGS
-GetEsalEntryPoint (
-  VOID
-  );
-
-SAL_RETURN_REGS
-SetEsalPhysicalEntryPoint (
-  IN  UINT64  EntryPoint,
-  IN  UINT64  Gp
-  );
-
-SAL_RETURN_REGS
-SetEsalVirtualEntryPoint (
-  IN  UINT64  EntryPoint,
-  IN  UINT64  Gp
-  );
-
-VOID
-SalFlushCache (
-  IN EFI_PHYSICAL_ADDRESS  Start,
-  IN UINT64                Length
-  );
-
-//
-// Module Globals. It's not valid to use these after the
-// EfiRuntimeLibVirtualNotifyEvent has fired.
-//
-static EFI_EVENT                          mEfiVirtualNotifyEvent;
-static EFI_RUNTIME_SERVICES               *mRT;
-static EFI_PLABEL                         mPlabel;
-static EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *mEsalBootService;
-static BOOLEAN                            mRuntimeLibInitialized = FALSE;
-
-VOID
-EFIAPI
-EfiRuntimeLibVirtualNotifyEvent (
-  IN EFI_EVENT        Event,
-  IN VOID             *Context
-  )
-/*++
-
-Routine Description:
-
-  Fixup internal data so that EFI and SAL can be call in virtual mode.
-  Call the passed in Child Notify event and convert any pointers in 
-  lib to virtual mode.
-
-Arguments:
-
-  Event   - The Event that is being processed
-  
-  Context - Event Context
-
-Returns: 
-
-  None
-
---*/
-{
-  EFI_EVENT_NOTIFY  ChildNotify;
-
-  if (Context != NULL) {
-    //
-    // Call child event
-    //
-    ChildNotify = (EFI_EVENT_NOTIFY) (UINTN) Context;
-    ChildNotify (Event, NULL);
-  }
-
-  mRT->ConvertPointer (EFI_INTERNAL_POINTER, (VOID **) &mPlabel.EntryPoint);
-  mRT->ConvertPointer (EFI_INTERNAL_POINTER | EFI_IPF_GP_POINTER, (VOID **) &mPlabel.GP);
-
-  SetEsalVirtualEntryPoint (mPlabel.EntryPoint, mPlabel.GP);
-
-  //
-  // Clear out BootService globals
-  //
-  gBS = NULL;
-  gST = NULL;
-  mRT = NULL;
-
-  //
-  // Pointers don't work you must use a direct lib call
-  //
-}
-
-EFI_STATUS
-EfiInitializeRuntimeDriverLib (
-  IN EFI_HANDLE           ImageHandle,
-  IN EFI_SYSTEM_TABLE     *SystemTable,
-  IN EFI_EVENT_NOTIFY     GoVirtualChildEvent
-  )
-/*++
-
-Routine Description:
-
-  Intialize runtime Driver Lib if it has not yet been initialized. 
-
-Arguments:
-
-  ImageHandle     - The firmware allocated handle for the EFI image.
-  
-  SystemTable     - A pointer to the EFI System Table.
-
-  GoVirtualChildEvent - Caller can register a virtual notification event.
-
-Returns: 
-
-  EFI_STATUS always returns EFI_SUCCESS except EFI_ALREADY_STARTED if already started.
-
---*/
-{
-  EFI_STATUS  Status;
-  EFI_PLABEL  *Plabel;
-
-  if (mRuntimeLibInitialized) {
-    return EFI_ALREADY_STARTED;
-  }
-
-  mRuntimeLibInitialized  = TRUE;
-
-  gST                     = SystemTable;
-  gBS                     = SystemTable->BootServices;
-  mRT                     = SystemTable->RuntimeServices;
-  Status                  = EfiLibGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, (VOID **) &gDS);
-  ASSERT_EFI_ERROR (Status);
-
-  //
-  // The protocol contains a function pointer, which is an indirect procedure call.
-  // An indirect procedure call goes through a plabel, and pointer to a function is
-  // a pointer to a plabel. To implement indirect procedure calls that can work in
-  // both physical and virtual mode, two plabels are required (one physical and one
-  // virtual). So lets grap the physical PLABEL for the EsalEntryPoint and store it
-  // away. We cache it in a module global, so we can register the vitrual version.
-  //
-  Status = gBS->LocateProtocol (&gEfiExtendedSalBootServiceProtocolGuid, NULL, (VOID **) &mEsalBootService);
-  ASSERT_EFI_ERROR (Status);
-
-  Plabel              = (EFI_PLABEL *) (UINTN) mEsalBootService->ExtendedSalProc;
-
-  mPlabel.EntryPoint  = Plabel->EntryPoint;
-  mPlabel.GP          = Plabel->GP;
-
-  SetEsalPhysicalEntryPoint (mPlabel.EntryPoint, mPlabel.GP);
-
-  //
-  // Create a Virtual address change notification event. Pass in the callers
-  // GoVirtualChildEvent so it's get passed to the event as contex.
-  //
-  Status = gBS->CreateEvent (
-                  EFI_EVENT_SIGNAL_VIRTUAL_ADDRESS_CHANGE,
-                  EFI_TPL_NOTIFY,
-                  EfiRuntimeLibVirtualNotifyEvent,
-                  (VOID *) GoVirtualChildEvent,
-                  &mEfiVirtualNotifyEvent
-                  );
-  ASSERT_EFI_ERROR (Status);
-
-  return EFI_SUCCESS;
-}
-
-EFI_STATUS
-EfiShutdownRuntimeDriverLib (
-  VOID
-  )
-/*++
-
-Routine Description:
-
-  This routine will free some resources which have been allocated in
-  EfiInitializeRuntimeDriverLib(). If a runtime driver exits with an error, 
-  it must call this routine to free the allocated resource before the exiting.
-
-Arguments:
-
-  None
-
-Returns: 
-
-  EFI_SUCCESS     - Shotdown the Runtime Driver Lib successfully
-  EFI_UNSUPPORTED - Runtime Driver lib was not initialized at all
-
---*/
-{
-  EFI_STATUS  Status;
-
-  if (!mRuntimeLibInitialized) {
-    //
-    // You must call EfiInitializeRuntimeDriverLib() first
-    //
-    return EFI_UNSUPPORTED;
-  }
-
-  mRuntimeLibInitialized = FALSE;
-
-  //
-  // Close SetVirtualAddressMap () notify function
-  //
-  Status = gBS->CloseEvent (mEfiVirtualNotifyEvent);
-  ASSERT_EFI_ERROR (Status);
-
-  return EFI_SUCCESS;
-}
-    
-EFI_STATUS
-RegisterEsalFunction (
-  IN  UINT64                                    FunctionId,
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  SAL_INTERNAL_EXTENDED_SAL_PROC            Function,
-  IN  VOID                                      *ModuleGlobal
-  )
-/*++
-
-Routine Description:
-
-  Register ESAL Class Function and it's asociated global.
-  This function is boot service only!
-
-Arguments:
-  FunctionId    - ID of function to register
-  ClassGuid     - GUID of function class 
-  Function      - Function to register under ClassGuid/FunctionId pair
-  ModuleGlobal  - Module global for Function.
-
-Returns: 
-  EFI_SUCCESS - If ClassGuid/FunctionId Function was registered.
-
---*/
-{
-  return mEsalBootService->AddExtendedSalProc (
-                            mEsalBootService,
-                            ClassGuid,
-                            FunctionId,
-                            Function,
-                            ModuleGlobal
-                            );
-}
-
-EFI_STATUS
-RegisterEsalClass (
-  IN  EFI_GUID                                  *ClassGuid,
-  IN  VOID                                      *ModuleGlobal,
-  ...
-  )
-/*++
-
-Routine Description:
-
-  Register ESAL Class and it's asociated global.
-  This function is boot service only!
-
-Arguments:
-  ClassGuid     - GUID of function class 
-  ModuleGlobal  - Module global for Function.
-  ...           - SAL_INTERNAL_EXTENDED_SAL_PROC and FunctionId pairs. NULL 
-                  indicates the end of the list.
-
-Returns: 
-  EFI_SUCCESS - All members of ClassGuid registered
-
---*/
-{
-  VA_LIST                         Args;
-  EFI_STATUS                      Status;
-  SAL_INTERNAL_EXTENDED_SAL_PROC  Function;
-  UINT64                          FunctionId;
-  EFI_HANDLE                      NewHandle;
-
-  VA_START (Args, ModuleGlobal);
-
-  Status = EFI_SUCCESS;
-  while (!EFI_ERROR (Status)) {
-    Function = (SAL_INTERNAL_EXTENDED_SAL_PROC) VA_ARG (Args, SAL_INTERNAL_EXTENDED_SAL_PROC);
-    if (Function == NULL) {
-      break;
-    }
-
-    FunctionId  = VA_ARG (Args, UINT64);
-
-    Status      = RegisterEsalFunction (FunctionId, ClassGuid, Function, ModuleGlobal);
-  }
-
-  VA_END (Args);
-
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  NewHandle = NULL;
-  return gBS->InstallProtocolInterface (
-                &NewHandle,
-                ClassGuid,
-                EFI_NATIVE_INTERFACE,
-                NULL
-                );
-}
-
-SAL_RETURN_REGS
-EfiCallEsalService (
-  IN  EFI_GUID                                      *ClassGuid,
-  IN  UINT64                                        FunctionId,
-  IN  UINT64                                        Arg2,
-  IN  UINT64                                        Arg3,
-  IN  UINT64                                        Arg4,
-  IN  UINT64                                        Arg5,
-  IN  UINT64                                        Arg6,
-  IN  UINT64                                        Arg7,
-  IN  UINT64                                        Arg8
-  )
-/*++
-
-Routine Description:
-
-  Call module that is not linked direclty to this module. This code is IP 
-  relative and hides the binding issues of virtual or physical calling. The
-  function that gets dispatched has extra arguments that include the registered
-  module global and a boolean flag to indicate if the system is in virutal mode.
-
-Arguments:
-  ClassGuid   - GUID of function
-  FunctionId  - Function in ClassGuid to call
-  Arg2        - Argument 2 ClassGuid/FunctionId defined
-  Arg3        - Argument 3 ClassGuid/FunctionId defined
-  Arg4        - Argument 4 ClassGuid/FunctionId defined
-  Arg5        - Argument 5 ClassGuid/FunctionId defined
-  Arg6        - Argument 6 ClassGuid/FunctionId defined
-  Arg7        - Argument 7 ClassGuid/FunctionId defined
-  Arg8        - Argument 8 ClassGuid/FunctionId defined
-
-Returns: 
-  Status of ClassGuid/FuncitonId
-
---*/
-{
-  SAL_RETURN_REGS       ReturnReg;
-  SAL_EXTENDED_SAL_PROC EsalProc;
-
-  ReturnReg = GetEsalEntryPoint ();
-  if (ReturnReg.Status != EFI_SAL_SUCCESS) {
-    return ReturnReg;
-  }
-
-  if (ReturnReg.r11 & PSR_IT_MASK) {
-    //
-    // Virtual mode plabel to entry point
-    //
-    EsalProc = (SAL_EXTENDED_SAL_PROC) ReturnReg.r10;
-  } else {
-    //
-    // Physical mode plabel to entry point
-    //
-    EsalProc = (SAL_EXTENDED_SAL_PROC) ReturnReg.r9;
-  }
-
-  return EsalProc (
-          ClassGuid,
-          FunctionId,
-          Arg2,
-          Arg3,
-          Arg4,
-          Arg5,
-          Arg6,
-          Arg7,
-          Arg8
-          );
-}
-
-EFI_STATUS
-EfiConvertPointer (
-  IN UINTN                     DebugDisposition,
-  IN OUT VOID                  *Address
-  )
-/*++
-
-Routine Description:
-
-  Determines the new virtual address that is to be used on subsequent memory accesses.
-
-Arguments:
-
-  DebugDisposition  - Supplies type information for the pointer being converted.
-  Address           - A pointer to a pointer that is to be fixed to be the value needed
-                      for the new virtual address mappings being applied.
-
-Returns:
-
-  Status code
-
---*/
-{
-  return mRT->ConvertPointer (DebugDisposition, Address);
-}
-
-BOOLEAN
-EfiGoneVirtual (
-  VOID
-  )
-/*++
-
-Routine Description:
-  Return TRUE if SetVirtualAddressMap () has been called
-
-Arguments:
-  NONE
-
-Returns: 
-  TRUE - If SetVirtualAddressMap () has been called
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID;
-  SAL_RETURN_REGS ReturnReg;
-
-  ReturnReg = EfiCallEsalService (&Guid, IsVirtual, 0, 0, 0, 0, 0, 0, 0);
-
-  return (BOOLEAN) (ReturnReg.r9 == 1);
-}
-
-BOOLEAN
-EfiAtRuntime (
-  VOID
-  )
-/*++
-
-Routine Description:
-  Return TRUE if ExitBootService () has been called
-
-Arguments:
-  NONE
-
-Returns: 
-  TRUE - If ExitBootService () has been called
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID;
-  SAL_RETURN_REGS ReturnReg;
-
-  ReturnReg = EfiCallEsalService (&Guid, IsEfiRuntime, 0, 0, 0, 0, 0, 0, 0);
-
-  return (BOOLEAN) (ReturnReg.r9 == 1);
-}
-
-EFI_STATUS
-EfiReportStatusCode (
-  IN EFI_STATUS_CODE_TYPE     CodeType,
-  IN EFI_STATUS_CODE_VALUE    Value,
-  IN UINT32                   Instance,
-  IN EFI_GUID                 * CallerId,
-  IN EFI_STATUS_CODE_DATA     * Data OPTIONAL
-  )
-/*++
-
-Routine Description:
-
-  Status Code reporter
-
-Arguments:
-
-  CodeType    - Type of Status Code.
-  
-  Value       - Value to output for Status Code.
-  
-  Instance    - Instance Number of this status code.
-  
-  CallerId    - ID of the caller of this status code.
-  
-  Data        - Optional data associated with this status code.
-
-Returns:
-
-  Status code
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_PROTOCOL_GUID;
-  SAL_RETURN_REGS ReturnReg;
-
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                StatusCode,
-                (UINT64) CodeType,
-                (UINT64) Value,
-                (UINT64) Instance,
-                (UINT64) CallerId,
-                (UINT64) Data,
-                0,
-                0
-                );
-
-  return (EFI_STATUS) ReturnReg.Status;
-}
-//
-//  Sal Reset Driver Class
-//
-VOID
-EfiResetSystem (
-  IN EFI_RESET_TYPE     ResetType,
-  IN EFI_STATUS         ResetStatus,
-  IN UINTN              DataSize,
-  IN CHAR16             *ResetData
-  )
-/*++
-
-Routine Description:
-
-  Resets the entire platform.
-
-Arguments:
-
-  ResetType   - The type of reset to perform.
-  ResetStatus - The status code for the reset.
-  DataSize    - The size, in bytes, of ResetData.
-  ResetData   - A data buffer that includes a Null-terminated Unicode string, optionally
-                followed by additional binary data.
-
-Returns:
-
-  None
-
---*/
-{
-  EFI_GUID Guid = EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID;
-
-  EfiCallEsalService (
-    &Guid,
-    ResetSystem,
-    (UINT64) ResetType,
-    (UINT64) ResetStatus,
-    (UINT64) DataSize,
-    (UINT64) ResetData,
-    0,
-    0,
-    0
-    );
-}
-//
-//  Sal MTC Driver Class
-//
-EFI_STATUS
-EfiGetNextHighMonotonicCount (
-  OUT UINT32      *HighCount
-  )
-/*++
-
-Routine Description:
-
-  Returns the next high 32 bits of the platform's monotonic counter.
-
-Arguments:
-
-  HighCount - Pointer to returned value.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-
-  EFI_GUID Guid = EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, GetNextHighMonotonicCount, (UINT64) HighCount, 0, 0, 0, 0, 0, 0);
-  return (EFI_STATUS) ReturnReg.Status;
-}
-//
-// Sal Variable Driver Class
-//
-EFI_STATUS
-EfiGetVariable (
-  IN CHAR16                       *VariableName,
-  IN EFI_GUID                     * VendorGuid,
-  OUT UINT32                      *Attributes OPTIONAL,
-  IN OUT UINTN                    *DataSize,
-  OUT VOID                        *Data
-  )
-/*++
-
-Routine Description:
-
-  Returns the value of a variable.
-
-Arguments:
-
-  VariableName  - A Null-terminated Unicode string that is the name of the
-                  vendor's variable.
-  VendorGuid    - A unique identifier for the vendor.
-  Attributes    - If not NULL, a pointer to the memory location to return the
-                  attributes bitmask for the variable.
-  DataSize      - On input, the size in bytes of the return Data buffer.
-                  On output the size of data returned in Data.
-  Data          - The buffer to return the contents of the variable.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID Guid = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                EsalGetVariable,
-                (UINT64) VariableName,
-                (UINT64) VendorGuid,
-                (UINT64) Attributes,
-                (UINT64) DataSize,
-                (UINT64) Data,
-                0,
-                0
-                );
-  return (EFI_STATUS) ReturnReg.Status;
-}
-
-EFI_STATUS
-EfiGetNextVariableName (
-  IN OUT UINTN                    *VariableNameSize,
-  IN OUT CHAR16                   *VariableName,
-  IN OUT EFI_GUID                 *VendorGuid
-  )
-/*++
-
-Routine Description:
-
-  Enumerates the current variable names.
-
-Arguments:
-
-  VariableNameSize  - The size of the VariableName buffer.
-  VariableName      - On input, supplies the last VariableName that was returned
-                      by GetNextVariableName(). 
-                      On output, returns the Nullterminated Unicode string of the
-                      current variable.
-  VendorGuid        - On input, supplies the last VendorGuid that was returned by
-                      GetNextVariableName(). 
-                      On output, returns the VendorGuid of the current variable.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID Guid = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                EsalGetNextVariableName,
-                (UINT64) VariableNameSize,
-                (UINT64) VariableName,
-                (UINT64) VendorGuid,
-                0,
-                0,
-                0,
-                0
-                );
-  return (EFI_STATUS) ReturnReg.Status;
-}
-
-EFI_STATUS
-EfiSetVariable (
-  IN CHAR16                       *VariableName,
-  IN EFI_GUID                     *VendorGuid,
-  IN UINT32                       Attributes,
-  IN UINTN                        DataSize,
-  IN VOID                         *Data
-  )
-/*++
-
-Routine Description:
-
-  Sets the value of a variable.
-
-Arguments:
-
-  VariableName  - A Null-terminated Unicode string that is the name of the
-                  vendor's variable.
-  VendorGuid    - A unique identifier for the vendor.
-  Attributes    - Attributes bitmask to set for the variable.
-  DataSize      - The size in bytes of the Data buffer.
-  Data          - The contents for the variable.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID Guid = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                EsalSetVariable,
-                (UINT64) VariableName,
-                (UINT64) VendorGuid,
-                (UINT64) Attributes,
-                (UINT64) DataSize,
-                (UINT64) Data,
-                0,
-                0
-                );
-  return (EFI_STATUS) ReturnReg.Status;
-}
-
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
-
-EFI_STATUS
-EfiQueryVariableInfo (
-  IN UINT32           Attributes,
-  OUT UINT64          *MaximumVariableStorageSize,
-  OUT UINT64          *RemainingVariableStorageSize,
-  OUT UINT64          *MaximumVariableSize
-  )
-/*++
-
-Routine Description:
-
-  This code returns information about the EFI variables.
-
-Arguments:
-
-  Attributes                      Attributes bitmask to specify the type of variables 
-                                  on which to return information.
-  MaximumVariableStorageSize      Pointer to the maximum size of the storage space available
-                                  for the EFI variables associated with the attributes specified.
-  RemainingVariableStorageSize    Pointer to the remaining size of the storage space available 
-                                  for the EFI variables associated with the attributes specified.
-  MaximumVariableSize             Pointer to the maximum size of the individual EFI variables
-                                  associated with the attributes specified.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID Guid = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (
-                &Guid,
-                EsalQueryVariableInfo,
-                (UINT64) Attributes,
-                (UINT64) MaximumVariableStorageSize,
-                (UINT64) RemainingVariableStorageSize,
-                (UINT64) MaximumVariableSize,
-                0, 
-                0,
-                0
-                );
-  return (EFI_STATUS) ReturnReg.Status;
-}
-
-#endif
-
-//
-//  Sal RTC Driver Class.
-//
-EFI_STATUS
-EfiGetTime (
-  OUT EFI_TIME              *Time,
-  OUT EFI_TIME_CAPABILITIES *Capabilities
-  )
-/*++
-
-Routine Description:
-
-  Returns the current time and date information, and the time-keeping 
-  capabilities of the hardware platform.
-
-Arguments:
-
-  Time          - A pointer to storage to receive a snapshot of the current time.
-  Capabilities  - An optional pointer to a buffer to receive the real time clock device's
-                  capabilities.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-  EFI_GUID Guid = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, GetTime, (UINT64) Time, (UINT64) Capabilities, 0, 0, 0, 0, 0);
-  return ReturnReg.Status;
-}
-
-EFI_STATUS
-EfiSetTime (
-  OUT EFI_TIME              *Time
-  )
-/*++
-
-Routine Description:
-
-  Sets the current local time and date information.
-
-Arguments:
-
-  Time  - A pointer to the current time.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-
-  EFI_GUID Guid = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, SetTime, (UINT64) Time, 0, 0, 0, 0, 0, 0);
-  return ReturnReg.Status;
-}
-
-EFI_STATUS
-EfiGetWakeupTime (
-  OUT BOOLEAN       *Enabled,
-  OUT BOOLEAN       *Pending,
-  OUT EFI_TIME      *Time
-  )
-/*++
-
-Routine Description:
-
-  Returns the current wakeup alarm clock setting.
-
-Arguments:
-
-  Enabled - Indicates if the alarm is currently enabled or disabled.
-  Pending - Indicates if the alarm signal is pending and requires acknowledgement.
-  Time    - The current alarm setting.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-
-  EFI_GUID Guid = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, GetWakeupTime, (UINT64) Enabled, (UINT64) Pending, (UINT64) Time, 0, 0, 0, 0);
-  return ReturnReg.Status;
-}
-
-EFI_STATUS
-EfiSetWakeupTime (
-  IN BOOLEAN        Enable,
-  IN EFI_TIME       *Time
-  )
-/*++
-
-Routine Description:
-
-  Sets the system wakeup alarm clock time.
-
-Arguments:
-
-  Enable  - Enable or disable the wakeup alarm.
-  Time    - If Enable is TRUE, the time to set the wakeup alarm for.
-            If Enable is FALSE, then this parameter is optional, and may be NULL.
-
-Returns:
-
-  Status code
-
---*/
-{
-  SAL_RETURN_REGS ReturnReg;
-
-  EFI_GUID Guid = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, SetWakeupTime, (UINT64) Enable, (UINT64) Time, 0, 0, 0, 0, 0);
-  return ReturnReg.Status;
-}
-
-
-
-//
-//  Base IO Services
-//
-EFI_STATUS
-EfiIoRead (
-  IN     EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN     UINT64                     Address,
-  IN     UINTN                      Count,
-  IN OUT VOID                       *Buffer
-  )
-/*++
-
-Routine Description:
-  Perform an IO read into Buffer.
-
-Arguments:
-  Width   - Width of read transaction, and repeat operation to use
-  Address - IO address to read
-  Count   - Number of times to read the IO address.
-  Buffer  - Buffer to read data into. size is Width * Count
-
-Returns:
-  Status code
-
---*/
-{
-
-  SAL_RETURN_REGS ReturnReg;
-
-  EFI_GUID Guid = EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, IoRead, (UINT64) Width, Address, Count, (UINT64) Buffer, 0, 0, 0);
-  ASSERT (ReturnReg.Status == EFI_SAL_SUCCESS);
-
-  return ReturnReg.Status;
-
-}
-
-EFI_STATUS
-EfiIoWrite (
-  IN     EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN     UINT64                     Address,
-  IN     UINTN                      Count,
-  IN OUT VOID                       *Buffer
-  )
-/*++
-
-Routine Description:
-  Perform an IO write into Buffer.
-
-Arguments:
-  Width   - Width of write transaction, and repeat operation to use
-  Address - IO address to write
-  Count   - Number of times to write the IO address.
-  Buffer  - Buffer to write data from. size is Width * Count
-
-Returns:
-  Status code
-
---*/
-{
-
-  SAL_RETURN_REGS ReturnReg;
-
-  EFI_GUID Guid = EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, IoWrite, (UINT64) Width, Address, Count, (UINT64) Buffer, 0, 0, 0);
-
-  return ReturnReg.Status;
-
-}
-
-EFI_STATUS
-EfiMemRead (
-  IN     EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN     UINT64                     Address,
-  IN     UINTN                      Count,
-  IN  OUT VOID                      *Buffer
-  )
-/*++
-
-Routine Description:
-  Perform a Memory mapped IO read into Buffer.
-
-Arguments:
-  Width   - Width of each read transaction.
-  Address - Memory mapped IO address to read
-  Count   - Number of Width quanta to read
-  Buffer  - Buffer to read data into. size is Width * Count
-
-Returns:
-  Status code
-
---*/
-{
-
-  SAL_RETURN_REGS ReturnReg;
-
-  EFI_GUID Guid = EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, MemRead, (UINT64) Width, Address, Count, (UINT64) Buffer, 0, 0, 0);
-  ASSERT (ReturnReg.Status == EFI_SAL_SUCCESS);
-
-  return ReturnReg.Status;
-
-}
-
-EFI_STATUS
-EfiMemWrite (
-  IN     EFI_CPU_IO_PROTOCOL_WIDTH  Width,
-  IN     UINT64                     Address,
-  IN     UINTN                      Count,
-  IN OUT VOID                       *Buffer
-  )
-/*++
-
-Routine Description:
-  Perform a memory mapped IO write into Buffer.
-
-Arguments:
-  Width   - Width of write transaction, and repeat operation to use
-  Address - IO address to write
-  Count   - Number of times to write the IO address.
-  Buffer  - Buffer to write data from. size is Width * Count
-
-Returns:
-  Status code
-
---*/
-{
-
-  SAL_RETURN_REGS ReturnReg;
-
-  EFI_GUID Guid = EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID;
-
-  ReturnReg = EfiCallEsalService (&Guid, MemWrite, (UINT64) Width, Address, Count, (UINT64) Buffer, 0, 0, 0);
-
-  return ReturnReg.Status;
-
-}
-
-
-#define EFI_PCI_ADDRESS_IPF(_seg, _bus, _devfunc, _reg) \
-    (((_seg) << 24) | ((_bus) << 16) | ((_devfunc) << 8) | (_reg)) & 0xFFFFFFFF
-
-//
-//  PCI Class Functions
-//
-UINT8
-PciRead8 (
-  UINT8   Segment,
-  UINT8   Bus,
-  UINT8   DevFunc,
-  UINT8   Register
-  )
-/*++
-
-Routine Description:
-  Perform an one byte PCI config cycle read
-
-Arguments:
-  Segment   - PCI Segment ACPI _SEG
-  Bus       - PCI Bus
-  DevFunc   - PCI Device(7:3) and Func(2:0)
-  Register  - PCI config space register
-
-Returns:
-  Data read from PCI config space
-
---*/
-{
-  EFI_GUID        Guid = EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID;
-  UINT64          Address;
-  SAL_RETURN_REGS Return;
-
-  Address = EFI_PCI_ADDRESS_IPF (Segment, Bus, DevFunc, Register);
-  Return  = EfiCallEsalService (&Guid, SalPciConfigRead, Address, 1, 0, 0, 0, 0, 0);
-
-  return (UINT8) Return.r9;
-}
-
-
-UINT16
-PciRead16 (
-  UINT8   Segment,
-  UINT8   Bus,
-  UINT8   DevFunc,
-  UINT8   Register
-  )
-/*++
-
-Routine Description:
-  Perform an two byte PCI config cycle read
-
-Arguments:
-  Segment   - PCI Segment ACPI _SEG
-  Bus       - PCI Bus
-  DevFunc   - PCI Device(7:3) and Func(2:0)
-  Register  - PCI config space register
-
-Returns:
-  Data read from PCI config space
-
---*/
-{
-  EFI_GUID        Guid = EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID;
-  UINT64          Address;
-  SAL_RETURN_REGS Return;
-
-  Address = EFI_PCI_ADDRESS_IPF (Segment, Bus, DevFunc, Register);
-  Return  = EfiCallEsalService (&Guid, SalPciConfigRead, Address, 2, 0, 0, 0, 0, 0);
-
-  return (UINT16) Return.r9;
-}
-
-UINT32
-PciRead32 (
-  UINT8   Segment,
-  UINT8   Bus,
-  UINT8   DevFunc,
-  UINT8   Register
-  )
-/*++
-
-Routine Description:
-  Perform an four byte PCI config cycle read
-
-Arguments:
-  Segment   - PCI Segment ACPI _SEG
-  Bus       - PCI Bus
-  DevFunc   - PCI Device(7:3) and Func(2:0)
-  Register  - PCI config space register
-
-Returns:
-  Data read from PCI config space
-
---*/
-{
-  EFI_GUID        Guid = EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID;
-  UINT64          Address;
-  SAL_RETURN_REGS Return;
-
-  Address = EFI_PCI_ADDRESS_IPF (Segment, Bus, DevFunc, Register);
-  Return  = EfiCallEsalService (&Guid, SalPciConfigRead, Address, 4, 0, 0, 0, 0, 0);
-
-  return (UINT32) Return.r9;
-}
-
-VOID
-PciWrite8 (
-  UINT8   Segment,
-  UINT8   Bus,
-  UINT8   DevFunc,
-  UINT8   Register,
-  UINT8   Data
-  )
-/*++
-
-Routine Description:
-  Perform an one byte PCI config cycle write
-
-Arguments:
-  Segment   - PCI Segment ACPI _SEG
-  Bus       - PCI Bus
-  DevFunc   - PCI Device(7:3) and Func(2:0)
-  Register  - PCI config space register
-  Data      - Data to write
-
-Returns:
-  NONE
-
---*/
-{
-  EFI_GUID        Guid = EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID;
-  UINT64    Address;
-
-  Address = EFI_PCI_ADDRESS_IPF (Segment, Bus, DevFunc, Register);
-  EfiCallEsalService (&Guid, SalPciConfigWrite, Address, 1, Data, 0, 0, 0, 0);
-}
-
-VOID
-PciWrite16 (
-  UINT8   Segment,
-  UINT8   Bus,
-  UINT8   DevFunc,
-  UINT8   Register,
-  UINT16  Data
-  )
-/*++
-
-Routine Description:
-  Perform an two byte PCI config cycle write
-
-Arguments:
-  Segment   - PCI Segment ACPI _SEG
-  Bus       - PCI Bus
-  DevFunc   - PCI Device(7:3) and Func(2:0)
-  Register  - PCI config space register
-  Data      - Data to write
-
-Returns:
-  None.
-
---*/
-{
-  EFI_GUID        Guid = EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID;
-  UINT64    Address;
-
-  Address = EFI_PCI_ADDRESS_IPF (Segment, Bus, DevFunc, Register);
-  EfiCallEsalService (&Guid, SalPciConfigWrite, Address, 2, Data, 0, 0, 0, 0);
-}
-
-VOID
-PciWrite32 (
-  UINT8   Segment,
-  UINT8   Bus,
-  UINT8   DevFunc,
-  UINT8   Register,
-  UINT32  Data
-  )
-/*++
-
-Routine Description:
-  Perform an four byte PCI config cycle write
-
-Arguments:
-  Segment   - PCI Segment ACPI _SEG
-  Bus       - PCI Bus
-  DevFunc   - PCI Device(7:3) and Func(2:0)
-  Register  - PCI config space register
-  Data      - Data to write
-
-Returns:
-  NONE
-
---*/
-{
-  EFI_GUID  Guid = EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID;
-  UINT64    Address;
-
-  Address = EFI_PCI_ADDRESS_IPF (Segment, Bus, DevFunc, Register);
-  EfiCallEsalService (&Guid, SalPciConfigWrite, Address, 4, Data, 0, 0, 0, 0);
-}
-
-//
-// Stall class functions
-//
-VOID
-EfiStall (
-  IN  UINTN   Microseconds
-  )
-/*++
-
-Routine Description:
- Delay for at least the request number of microseconds
-
-Arguments:
-  Microseconds - Number of microseconds to delay.
-
-Returns:
-  NONE
-
---*/
-{
-  EFI_GUID        Guid = EFI_EXTENDED_SAL_STALL_SERVICES_PROTOCOL_GUID;
-
-  if (EfiAtRuntime ()) {
-    EfiCallEsalService (&Guid, Stall, Microseconds, 4, 0, 0, 0, 0, 0);
-  } else {
-    gBS->Stall (Microseconds);
-  }
-}
-//
-// Cache Flush Routine.
-//
-EFI_STATUS
-EfiCpuFlushCache (
-  IN EFI_PHYSICAL_ADDRESS          Start,
-  IN UINT64                        Length
-  )
-/*++
-
-Routine Description:
-
-  Flush cache with specified range.
-
-Arguments:
-
-  Start   - Start address
-  Length  - Length in bytes
-
-Returns:
-
-  Status code
-  
-  EFI_SUCCESS - success
-
---*/
-{
-  SalFlushCache (Start, Length);
-  return EFI_SUCCESS;
-}
diff --git a/EdkCompatibilityPkg/Foundation/Protocol/EdkProtocolLib.inf b/EdkCompatibilityPkg/Foundation/Protocol/EdkProtocolLib.inf
index 8cab7ac0e7..6273dc89d5 100644
--- a/EdkCompatibilityPkg/Foundation/Protocol/EdkProtocolLib.inf
+++ b/EdkCompatibilityPkg/Foundation/Protocol/EdkProtocolLib.inf
@@ -106,8 +106,3 @@ COMPONENT_TYPE=   LIBRARY
   VgaMiniPort/VgaMiniPort.h
   VgaMiniPort/VgaMiniPort.c
 
-[sources.ipf]
-  ExtendedSalBootService/ExtendedSalBootService.c
-  ExtendedSalBootService/ExtendedSalBootService.h
-  ExtendedSalGuid/ExtendedSalGuid.c
-  ExtendedSalGuid/ExtendedSalGuid.h
-- 
2.16.2.windows.1



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2018-06-13  3:43 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-13  3:43 [PATCH 10/37] EdkCompatibilityPkg: Removing ipf from edk2 chenc2

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