diff --git a/MdePkg/Base.h b/MdePkg/Base.h
deleted file mode 100644
index 15ee9ad89a..0000000000
--- a/MdePkg/Base.h
+++ /dev/null
@@ -1,303 +0,0 @@
-/** @file
-
-  Root include file for Mde Package Base type modules
-
-  This is the include file for any module of type base. Base modules only use 
-  types defined via this include file and can be ported easily to any 
-  environment. There are a set of base libraries in the Mde Package that can
-  be used to implement base modules.
-
-Copyright (c) 2006 - 2007, Intel Corporation
-All rights reserved. This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-
-#ifndef __BASE_H__
-#define __BASE_H__
-
-//
-// Include processor specific binding
-//
-#include <ProcessorBind.h>
-
-typedef struct {
-  UINT32  Data1;
-  UINT16  Data2;
-  UINT16  Data3;
-  UINT8   Data4[8];
-} GUID;
-
-typedef UINT64 PHYSICAL_ADDRESS;
-
-//
-// LIST_ENTRY definition
-//
-typedef struct _LIST_ENTRY LIST_ENTRY;
-
-struct _LIST_ENTRY {
-  LIST_ENTRY  *ForwardLink;
-  LIST_ENTRY  *BackLink;
-};
-
-//
-// Modifiers to absract standard types to aid in debug of problems
-//
-#define CONST     const
-#define STATIC    static
-#define VOID      void
-
-//
-// Modifiers for Data Types used to self document code.
-// This concept is borrowed for UEFI specification.
-//
-#ifndef IN
-//
-// Some other envirnments use this construct, so #ifndef to prevent
-// mulitple definition.
-//
-#define IN
-#define OUT
-#define OPTIONAL
-#endif
-
-//
-// Constants. They may exist in other build structures, so #ifndef them.
-//
-#ifndef TRUE
-//
-//  UEFI specification claims 1 and 0. We are concerned about the 
-//  complier portability so we did it this way.
-//
-#define TRUE  ((BOOLEAN)(1==1))
-#endif
-
-#ifndef FALSE
-#define FALSE ((BOOLEAN)(0==1))
-#endif
-
-#ifndef NULL
-#define NULL  ((VOID *) 0)
-#endif
-
-#define  BIT0     0x00000001
-#define  BIT1     0x00000002
-#define  BIT2     0x00000004
-#define  BIT3     0x00000008
-#define  BIT4     0x00000010
-#define  BIT5     0x00000020
-#define  BIT6     0x00000040
-#define  BIT7     0x00000080
-#define  BIT8     0x00000100
-#define  BIT9     0x00000200
-#define  BIT10    0x00000400
-#define  BIT11    0x00000800
-#define  BIT12    0x00001000
-#define  BIT13    0x00002000
-#define  BIT14    0x00004000
-#define  BIT15    0x00008000
-#define  BIT16    0x00010000
-#define  BIT17    0x00020000
-#define  BIT18    0x00040000
-#define  BIT19    0x00080000
-#define  BIT20    0x00100000
-#define  BIT21    0x00200000
-#define  BIT22    0x00400000
-#define  BIT23    0x00800000
-#define  BIT24    0x01000000
-#define  BIT25    0x02000000
-#define  BIT26    0x04000000
-#define  BIT27    0x08000000
-#define  BIT28    0x10000000
-#define  BIT29    0x20000000
-#define  BIT30    0x40000000
-#define  BIT31    0x80000000
-#define  BIT32    0x0000000100000000UL
-#define  BIT33    0x0000000200000000UL
-#define  BIT34    0x0000000400000000UL
-#define  BIT35    0x0000000800000000UL
-#define  BIT36    0x0000001000000000UL
-#define  BIT37    0x0000002000000000UL
-#define  BIT38    0x0000004000000000UL
-#define  BIT39    0x0000008000000000UL
-#define  BIT40    0x0000010000000000UL
-#define  BIT41    0x0000020000000000UL
-#define  BIT42    0x0000040000000000UL
-#define  BIT43    0x0000080000000000UL
-#define  BIT44    0x0000100000000000UL
-#define  BIT45    0x0000200000000000UL
-#define  BIT46    0x0000400000000000UL
-#define  BIT47    0x0000800000000000UL
-#define  BIT48    0x0001000000000000UL
-#define  BIT49    0x0002000000000000UL
-#define  BIT50    0x0004000000000000UL
-#define  BIT51    0x0008000000000000UL
-#define  BIT52    0x0010000000000000UL
-#define  BIT53    0x0020000000000000UL
-#define  BIT54    0x0040000000000000UL
-#define  BIT55    0x0080000000000000UL
-#define  BIT56    0x0100000000000000UL
-#define  BIT57    0x0200000000000000UL
-#define  BIT58    0x0400000000000000UL
-#define  BIT59    0x0800000000000000UL
-#define  BIT60    0x1000000000000000UL
-#define  BIT61    0x2000000000000000UL
-#define  BIT62    0x4000000000000000UL
-#define  BIT63    0x8000000000000000UL
-
-//
-//  Support for variable length argument lists using the ANSI standard.
-//  
-//  Since we are using the ANSI standard we used the standard nameing and
-//  did not folow the coding convention
-//
-//  VA_LIST  - typedef for argument list.
-//  VA_START (VA_LIST Marker, argument before the ...) - Init Marker for use.
-//  VA_END (VA_LIST Marker) - Clear Marker
-//  VA_ARG (VA_LIST Marker, var arg size) - Use Marker to get an argumnet from
-//    the ... list. You must know the size and pass it in this macro.
-//
-//  example:
-//
-//  UINTN
-//  ExampleVarArg (
-//    IN UINTN  NumberOfArgs,
-//    ...
-//    )
-//  {
-//    VA_LIST Marker;
-//    UINTN   Index;
-//    UINTN   Result;
-//
-//    //
-//    // Initialize the Marker
-//    //
-//    VA_START (Marker, NumberOfArgs);
-//    for (Index = 0, Result = 0; Index < NumberOfArgs; Index++) {
-//      //
-//      // The ... list is a series of UINTN values, so average them up.
-//      //
-//      Result += VA_ARG (Marker, UINTN);
-//    }
-//
-//    VA_END (Marker);
-//    return Result
-//  }
-//
-
-#define _INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))
-
-//
-// Also support coding convention rules for var arg macros
-//
-#ifndef VA_START
-
-typedef CHAR8 *VA_LIST;
-#define VA_START(ap, v) (ap = (VA_LIST) & (v) + _INT_SIZE_OF (v))
-#define VA_ARG(ap, t)   (*(t *) ((ap += _INT_SIZE_OF (t)) - _INT_SIZE_OF (t)))
-#define VA_END(ap)      (ap = (VA_LIST) 0)
-
-#endif
-
-//
-// Macro that returns the byte offset of a field in a data structure. 
-//
-#define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field))
-
-///
-///  CONTAINING_RECORD - returns a pointer to the structure
-///      from one of it's elements.
-///
-#define _CR(Record, TYPE, Field)  ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
-
-///
-///  ALIGN_POINTER - aligns a pointer to the lowest boundry
-///
-#define ALIGN_POINTER(p, s) ((VOID *) ((UINTN)(p) + (((s) - ((UINTN) (p))) & ((s) - 1))))
-
-///
-///  ALIGN_VARIABLE - aligns a variable up to the next natural boundry for int size of a processor
-///
-#define ALIGN_VARIABLE(Value, Adjustment) \
-  Adjustment = 0U; \
-  if ((UINTN) (Value) % sizeof (UINTN)) { \
-    (Adjustment) = (UINTN)(sizeof (UINTN) - ((UINTN) (Value) % sizeof (UINTN))); \
-  } \
-  (Value) = (UINTN)((UINTN) (Value) + (UINTN) (Adjustment))
-
-//
-// Return the maximum of two operands. 
-// This macro returns the maximum of two operand specified by a and b.  
-// Both a and b must be the same numerical types, signed or unsigned.
-//
-#define MAX(a, b)                       \
-  (((a) > (b)) ? (a) : (b))
-
-
-//
-// Return the minimum of two operands. 
-// This macro returns the minimal of two operand specified by a and b.  
-// Both a and b must be the same numerical types, signed or unsigned.
-//
-#define MIN(a, b)                       \
-  (((a) < (b)) ? (a) : (b))
-
-
-//
-// EFI Error Codes common to all execution phases
-//
-
-typedef INTN RETURN_STATUS;
-
-///
-/// Set the upper bit to indicate EFI Error.
-///
-#define ENCODE_ERROR(a)              (MAX_BIT | (a))
-
-#define ENCODE_WARNING(a)            (a)
-#define RETURN_ERROR(a)              ((a) < 0)
-
-#define RETURN_SUCCESS               0
-#define RETURN_LOAD_ERROR            ENCODE_ERROR (1)
-#define RETURN_INVALID_PARAMETER     ENCODE_ERROR (2)
-#define RETURN_UNSUPPORTED           ENCODE_ERROR (3)
-#define RETURN_BAD_BUFFER_SIZE       ENCODE_ERROR (4)
-#define RETURN_BUFFER_TOO_SMALL      ENCODE_ERROR (5)
-#define RETURN_NOT_READY             ENCODE_ERROR (6)
-#define RETURN_DEVICE_ERROR          ENCODE_ERROR (7)
-#define RETURN_WRITE_PROTECTED       ENCODE_ERROR (8)
-#define RETURN_OUT_OF_RESOURCES      ENCODE_ERROR (9)
-#define RETURN_VOLUME_CORRUPTED      ENCODE_ERROR (10)
-#define RETURN_VOLUME_FULL           ENCODE_ERROR (11)
-#define RETURN_NO_MEDIA              ENCODE_ERROR (12)
-#define RETURN_MEDIA_CHANGED         ENCODE_ERROR (13)
-#define RETURN_NOT_FOUND             ENCODE_ERROR (14)
-#define RETURN_ACCESS_DENIED         ENCODE_ERROR (15)
-#define RETURN_NO_RESPONSE           ENCODE_ERROR (16)
-#define RETURN_NO_MAPPING            ENCODE_ERROR (17)
-#define RETURN_TIMEOUT               ENCODE_ERROR (18)
-#define RETURN_NOT_STARTED           ENCODE_ERROR (19)
-#define RETURN_ALREADY_STARTED       ENCODE_ERROR (20)
-#define RETURN_ABORTED               ENCODE_ERROR (21)
-#define RETURN_ICMP_ERROR            ENCODE_ERROR (22)
-#define RETURN_TFTP_ERROR            ENCODE_ERROR (23)
-#define RETURN_PROTOCOL_ERROR        ENCODE_ERROR (24)
-#define RETURN_INCOMPATIBLE_VERSION  ENCODE_ERROR (25)
-#define RETURN_SECURITY_VIOLATION    ENCODE_ERROR (26)
-#define RETURN_CRC_ERROR             ENCODE_ERROR (27)
-#define RETURN_END_OF_MEDIA          ENCODE_ERROR (28)
-#define RETURN_END_OF_FILE           ENCODE_ERROR (31)
-
-#define RETURN_WARN_UNKNOWN_GLYPH    ENCODE_WARNING (1)
-#define RETURN_WARN_DELETE_FAILURE   ENCODE_WARNING (2)
-#define RETURN_WARN_WRITE_FAILURE    ENCODE_WARNING (3)
-#define RETURN_WARN_BUFFER_TOO_SMALL ENCODE_WARNING (4)
-
-#endif
-
diff --git a/MdePkg/Ebc/ProcessorBind.h b/MdePkg/Ebc/ProcessorBind.h
deleted file mode 100644
index 2cb0753867..0000000000
--- a/MdePkg/Ebc/ProcessorBind.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/** @file
-  Processor or compiler specific defines and types for EBC.
-
-  We currently only have one EBC complier so there may be some Intel compiler
-  specific functions in this file.
-
-  Copyright (c) 2006, Intel Corporation                                                         
-  All rights reserved. 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:  ProcessorBind.h
-
-**/
-
-#ifndef __PROCESSOR_BIND_H__
-#define __PROCESSOR_BIND_H__
-
-//
-// Define the processor type so other code can make processor based choices
-//
-#define MDE_CPU_EBC
-
-//
-// Native integer types
-//
-typedef char                  INT8;
-typedef unsigned char         BOOLEAN;
-typedef unsigned char         UINT8;
-typedef unsigned char         CHAR8;
-
-typedef short                 INT16;
-typedef unsigned short        UINT16;
-typedef unsigned short        CHAR16;
-
-typedef int                   INT32;
-typedef unsigned int          UINT32;
-
-typedef __int64               INT64;
-typedef unsigned __int64      UINT64;
-
-//
-// "long" type scales to the processor native size with EBC compiler
-//
-typedef long                  INTN;
-typedef unsigned long         UINTN;
-
-#define UINT8_MAX 0xff
-
-//
-// Scalable macro to set the most significant bit in a natural number
-//
-#define MAX_BIT     (1ULL << (sizeof (INTN) * 8 - 1)) 
-#define MAX_2_BITS  (3ULL << (sizeof (INTN) * 8 - 2))
-
-//
-// Maximum legal EBC address
-//
-#define MAX_ADDRESS   ((UINTN) ~0)
-
-//
-// The stack alignment required for EBC
-//
-#define CPU_STACK_ALIGNMENT   sizeof(UINTN)
-
-//
-// Modifier to ensure that all protocol member functions and EFI intrinsics
-// use the correct C calling convention. All protocol member functions and
-// EFI intrinsics are required to modify thier member functions with EFIAPI.
-//
-#define EFIAPI    
-
-//
-// 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. Currently not supported by the EBC compiler
-//
-#define GLOBAL_REMOVE_IF_UNREFERENCED
-
-#endif 
-
diff --git a/MdePkg/Ia32/ProcessorBind.h b/MdePkg/Ia32/ProcessorBind.h
deleted file mode 100644
index dd38e4958b..0000000000
--- a/MdePkg/Ia32/ProcessorBind.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/** @file
-  Processor or Compiler specific defines and types for x64.
-
-  Copyright (c) 2006, Intel Corporation                                                         
-  All rights reserved. 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:  ProcessorBind.h
-
-**/
-
-#ifndef __PROCESSOR_BIND_H__
-#define __PROCESSOR_BIND_H__
-
-//
-// Define the processor type so other code can make processor based choices
-//
-#define MDE_CPU_IA32
-
-//
-// Make sure we are useing the correct packing rules per EFI specification
-//
-#ifndef __GNUC__
-#pragma pack()
-#endif
-
-#if _MSC_EXTENSIONS
-
-//
-// Disable warning that make it impossible to compile at /W4
-// This only works for Microsoft* tools
-//
-
-//
-// 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 )
-
-//
-// This warning is caused by functions defined but not used. For precompiled header only.
-//
-#pragma warning ( disable : 4505 )
-
-//
-// This warning is caused by empty (after preprocessing) souce file. For precompiled header only.
-//
-#pragma warning ( disable : 4206 )
-
-#endif
-
-
-#if !defined(__GNUC__) && (__STDC_VERSION__ < 199901L)
-  //
-  // No ANSI C 2000 stdint.h integer width declarations, so define equivalents
-  //
- 
-  #if _MSC_EXTENSIONS 
-    
-    //
-    // use Microsoft* C complier dependent interger width types 
-    //
-    typedef unsigned __int64    UINT64;
-    typedef __int64             INT64;
-    typedef unsigned __int32    UINT32;
-    typedef __int32             INT32;
-    typedef unsigned short      UINT16;
-    typedef unsigned short      CHAR16;
-    typedef short               INT16;
-    typedef unsigned char       BOOLEAN;
-    typedef unsigned char       UINT8;
-    typedef char                CHAR8;
-    typedef char                INT8;
-  #else
-
-    //
-    // Assume standard IA-32 alignment. 
-    // Need to check portability of long long
-    //
-    typedef unsigned long long  UINT64;
-    typedef long long           INT64;
-    typedef unsigned int        UINT32;
-    typedef int                 INT32;
-    typedef unsigned short      UINT16;
-    typedef unsigned short      CHAR16;
-    typedef short               INT16;
-    typedef unsigned char       BOOLEAN;
-    typedef unsigned char       UINT8;
-    typedef char                CHAR8;
-    typedef char                INT8;
-  #endif
-
-  #define UINT8_MAX 0xff
-
-#else
-  //
-  // Use ANSI C 2000 stdint.h integer width declarations
-  //
-  #include "stdint.h"
-  typedef uint8_t   BOOLEAN;
-  typedef int8_t    INT8;
-  typedef uint8_t   UINT8;
-  typedef int16_t   INT16;
-  typedef uint16_t  UINT16;
-  typedef int32_t   INT32;
-  typedef uint32_t  UINT32;
-  typedef int64_t   INT64;
-  typedef uint64_t  UINT64;
-  typedef char      CHAR8;
-  typedef uint16_t  CHAR16;
-
-#endif
-
-typedef UINT32  UINTN;
-typedef INT32   INTN;
-
-
-//
-// Processor specific defines
-//
-#define MAX_BIT     0x80000000
-#define MAX_2_BITS  0xC0000000
-
-//
-// Maximum legal IA-32 address
-//
-#define MAX_ADDRESS   0xFFFFFFFF
-
-//
-// The stack alignment required for IA-32
-//
-#define CPU_STACK_ALIGNMENT   sizeof(UINTN)
-
-//
-// Modifier to ensure that all protocol member functions and EFI intrinsics
-// use the correct C calling convention. All protocol member functions and
-// EFI intrinsics are required to modify thier member functions with EFIAPI.
-//
-#if _MSC_EXTENSIONS
-  //
-  // Microsoft* compiler requires _EFIAPI useage, __cdecl is Microsoft* specific C.
-  // 
-  #define EFIAPI __cdecl  
-#endif
-
-#if __GNUC__
-  #define EFIAPI __attribute__((cdecl))    
-#endif
-
-//
-// 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 _MSC_EXTENSIONS
-  #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)
-#else
-  #define GLOBAL_REMOVE_IF_UNREFERENCED
-#endif
-
-#endif
-
diff --git a/MdePkg/Ipf/IpfDefines.h b/MdePkg/Ipf/IpfDefines.h
deleted file mode 100644
index ef0293047b..0000000000
--- a/MdePkg/Ipf/IpfDefines.h
+++ /dev/null
@@ -1,553 +0,0 @@
-///** @file
-//  IPF Processor Defines for assembly code
-//
-//  @note
-//  This file is included by assembly files as well. The assmber can NOT deal
-//  with /* */ commnets this is why this file is commented not following the
-//  coding standard
-//
-//Copyright (c) 2006, Intel Corporation
-//All rights reserved. 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
-//
-//**/
-
-#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  0xfffffULL
-
-//
-// 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/MdePkg/Ipf/IpfMacro.i b/MdePkg/Ipf/IpfMacro.i
deleted file mode 100644
index 86fd3c1a8e..0000000000
--- a/MdePkg/Ipf/IpfMacro.i
+++ /dev/null
@@ -1,67 +0,0 @@
-//++
-// Copyright (c) 2006, Intel Corporation                                                         
-// All rights reserved. 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 GLOBAL_FUNCTION(Function) \
-         .##type   Function, @function; \
-         .##global Function
-
-#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
diff --git a/MdePkg/Ipf/PalApi.h b/MdePkg/Ipf/PalApi.h
deleted file mode 100644
index 0afa3d361f..0000000000
--- a/MdePkg/Ipf/PalApi.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
-  Main PAL API's defined in IPF PAL Spec.
-
-  Copyright (c) 2006 - 2007, Intel Corporation
-  All rights reserved. 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
-
-**/
-
-#ifndef __PAL_API_H__
-#define __PAL_API_H__
-
-//
-// IPF Specific Functions
-//
-
-typedef struct {
-  UINT64                    Status;
-  UINT64                    r9;
-  UINT64                    r10;
-  UINT64                    r11;
-} PAL_CALL_RETURN;
-
-#endif
diff --git a/MdePkg/Ipf/ProcessorBind.h b/MdePkg/Ipf/ProcessorBind.h
deleted file mode 100644
index 0c2a2778a3..0000000000
--- a/MdePkg/Ipf/ProcessorBind.h
+++ /dev/null
@@ -1,221 +0,0 @@
-/** @file
-  Processor or Compiler specific defines and types for Intel Itanium(TM).
-
-  Copyright (c) 2006, Intel Corporation                                                         
-  All rights reserved. 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:  ProcessorBind.h
-
-**/
-
-#ifndef __PROCESSOR_BIND_H__
-#define __PROCESSOR_BIND_H__
-
-
-//
-// Define the processor type so other code can make processor based choices
-//
-#define MDE_CPU_IPF
-
-
-//
-// Make sure we are useing the correct packing rules per EFI specification
-//
-#pragma pack()
-
-
-#if _MSC_EXTENSIONS 
-    
-//
-// 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 )
-
-//
-// Disable warning on conversion from function pointer to a data pointer
-//
-#pragma warning ( disable : 4054 )
-
-//
-// 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 )
-
-//
-// This warning is caused by functions defined but not used. For precompiled header only.
-//
-#pragma warning ( disable : 4505 )
-
-//
-// This warning is caused by empty (after preprocessing) souce file. For precompiled header only.
-//
-#pragma warning ( disable : 4206 )
-
-#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 interger width types 
-    //
-    typedef unsigned __int64    UINT64;
-    typedef __int64             INT64;
-    typedef unsigned __int32    UINT32;
-    typedef __int32             INT32;
-    typedef unsigned short      UINT16;
-    typedef unsigned short      CHAR16;
-    typedef short               INT16;
-    typedef unsigned char       BOOLEAN;
-    typedef unsigned char       UINT8;
-    typedef char                CHAR8;
-    typedef char                INT8;
-  #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;
-      typedef long long           INT64;
-      typedef unsigned int        UINT32;
-      typedef int                 INT32;
-      typedef unsigned short      CHAR16;
-      typedef unsigned short      UINT16;
-      typedef short               INT16;
-      typedef unsigned char       BOOLEAN;
-      typedef unsigned char       UINT8;
-      typedef char                CHAR8;
-      typedef char                INT8;
-    #else
-      //
-      // Assume LP64 - longs and pointers are 64-bit. Ints are 32-bit.
-      //
-      typedef unsigned long   UINT64;
-      typedef long            INT64;
-      typedef unsigned int    UINT32;
-      typedef int             INT32;
-      typedef unsigned short  UINT16;
-      typedef unsigned short  CHAR16;
-      typedef short           INT16;
-      typedef unsigned char   BOOLEAN;
-      typedef unsigned char   UINT8;
-      typedef char            CHAR8;
-      typedef char            INT8;
-    #endif
-  #endif
-
-  #define UINT8_MAX 0xff
-
-#else
-  //
-  // Use ANSI C 2000 stdint.h integer width declarations
-  //
-  #include <stdint.h>
-  typedef uint8_t   BOOLEAN;
-  typedef int8_t    INT8;
-  typedef uint8_t   UINT8;
-  typedef int16_t   INT16;
-  typedef uint16_t  UINT16;
-  typedef int32_t   INT32;
-  typedef uint32_t  UINT32;
-  typedef int64_t   INT64;
-  typedef uint64_t  UINT64;
-  typedef char      CHAR8;
-  typedef uint16_t  CHAR16;
-
-#endif
-
-typedef UINT64  UINTN;
-typedef INT64   INTN;
-
-
-//
-// Processor specific defines
-//
-#define MAX_BIT     0x8000000000000000ULL
-#define MAX_2_BITS  0xC000000000000000ULL
-
-//
-// Maximum legal Itanium-based address
-//
-#define MAX_ADDRESS   0xFFFFFFFFFFFFFFFFULL
-
-//
-// 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
-
-//
-// Modifier to ensure that all protocol member functions and EFI intrinsics
-// use the correct C calling convention. All protocol member functions and
-// EFI intrinsics are required to modify thier member functions with EFIAPI.
-//
-#if _MSC_EXTENSIONS 
-  //
-  // Microsoft* compiler requires _EFIAPI useage, __cdecl is Microsoft* specific C.
-  // 
-  #define EFIAPI __cdecl  
-#else
-  #define EFIAPI       
-#endif
-
-//
-// 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 _MSC_EXTENSIONS
-  #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)
-#else
-  #define GLOBAL_REMOVE_IF_UNREFERENCED
-#endif
-
-//
-// A pointer to a function in IPF points to a plabel.
-//
-typedef struct {
-  UINT64  EntryPoint;
-  UINT64  GP;
-} EFI_PLABEL;
-
-#include <IpfDefines.h>
-
-#endif
-
diff --git a/MdePkg/Ipf/SalApi.h b/MdePkg/Ipf/SalApi.h
deleted file mode 100644
index 6f889aa563..0000000000
--- a/MdePkg/Ipf/SalApi.h
+++ /dev/null
@@ -1,721 +0,0 @@
-/** @file
-  Main SAL API's defined in SAL 3.0 specification. 
-
-  Copyright (c) 2006, Intel Corporation                                                         
-  All rights reserved. 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
-
-**/
-
-#ifndef __SAL_API_H__
-#define __SAL_API_H__
-
-//
-// FIT Types 
-// Table 2-2 of Intel Itanium Processor Family System Abstraction Layer Specification December 2003
-//
-#define EFI_SAL_FIT_FIT_HEADER_TYPE 0x00
-#define EFI_SAL_FIT_PAL_B_TYPE      0x01
-//
-// type from 0x02 to 0x0E is reserved.
-//
-#define EFI_SAL_FIT_PAL_A_TYPE  0x0F
-//
-// OEM-defined type range is from 0x10 to 0x7E. Here we defined the PEI_CORE type as 0x10
-//
-#define EFI_SAL_FIT_PEI_CORE_TYPE 0x10
-#define EFI_SAL_FIT_UNUSED_TYPE   0x7F
-
-//
-// EFI_SAL_STATUS 
-//
-typedef UINTN EFI_SAL_STATUS;
-
-#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)
-
-//
-//  Return values from SAL
-//
-typedef struct {
-  EFI_SAL_STATUS  Status; // register r8
-  UINTN           r9;
-  UINTN           r10;
-  UINTN           r11;
-} SAL_RETURN_REGS;
-
-//
-//  Delivery Mode of IPF CPU.
-//
-typedef enum {
-  EFI_DELIVERY_MODE_INT,
-  EFI_DELIVERY_MODE_MPreserved1,
-  EFI_DELIVERY_MODE_PMI,
-  EFI_DELIVERY_MODE_MPreserved2,
-  EFI_DELIVERY_MODE_NMI,
-  EFI_DELIVERY_MODE_INIT,
-  EFI_DELIVERY_MODE_MPreserved3,
-  EFI_DELIVERY_MODE_ExtINT
-} EFI_DELIVERY_MODE;
-
-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 {
-  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 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/MdePkg/Pi/PiBootMode.h b/MdePkg/Pi/PiBootMode.h
deleted file mode 100644
index f7d988df1d..0000000000
--- a/MdePkg/Pi/PiBootMode.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/** @file
-  Present the boot mode values in PI.
-
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         
-  All rights reserved. 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:  PiBootMode.h
-
-  @par Revision Reference:
-  Version 1.0.
-
-**/
-
-#ifndef __PI_BOOT_MODE_H__
-#define __PI_BOOT_MODE_H__
-
-typedef UINT32 	EFI_BOOT_MODE;
-
-//
-// 0x21 - 0xf..f are reserved.
-// 
-#define BOOT_WITH_FULL_CONFIGURATION 									0x00
-#define BOOT_WITH_MINIMAL_CONFIGURATION 							0x01
-#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES 				0x02
-#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03
-#define BOOT_WITH_DEFAULT_SETTINGS 										0x04
-#define BOOT_ON_S4_RESUME 														0x05
-#define BOOT_ON_S5_RESUME 														0x06
-#define BOOT_ON_S2_RESUME 														0x10
-#define BOOT_ON_S3_RESUME 														0x11
-#define BOOT_ON_FLASH_UPDATE 													0x12
-#define BOOT_IN_RECOVERY_MODE													0x20
-
-#endif
diff --git a/MdePkg/Pi/PiDependency.h b/MdePkg/Pi/PiDependency.h
deleted file mode 100644
index 1f208f3873..0000000000
--- a/MdePkg/Pi/PiDependency.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/** @file
-  Present the dependency expression values in PI.
-
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         
-  All rights reserved. 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:  PiDependency.h
-
-  @par Revision Reference:
-  Version 1.0.
-
-**/
-#ifndef __PI_DEPENDENCY_H__
-#define __PI_DEPENDENCY_H__
-
-// 
-// If present, this must be the first and only opcode
-// 
-#define EFI_DEP_BEFORE        0x00
-
-// 
-// If present, this must be the first and only opcode
-// 
-#define EFI_DEP_AFTER         0x01
-
-#define EFI_DEP_PUSH          0x02
-#define EFI_DEP_AND           0x03
-#define EFI_DEP_OR            0x04
-#define EFI_DEP_NOT           0x05
-#define EFI_DEP_TRUE          0x06
-#define EFI_DEP_FALSE         0x07
-#define EFI_DEP_END           0x08
-
-
-// 
-// If present, this must be the first opcode.
-// 
-#define EFI_DEP_SOR           0x09
-
-#endif 
diff --git a/MdePkg/Pi/PiDxeCis.h b/MdePkg/Pi/PiDxeCis.h
deleted file mode 100644
index 2001f1f7c0..0000000000
--- a/MdePkg/Pi/PiDxeCis.h
+++ /dev/null
@@ -1,450 +0,0 @@
-/** @file
-  Include file matches things in PI.
-
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         
-  All rights reserved. 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:  PiDxeCis.h
-
-  @par Revision Reference:
-  Version 1.0.
-
-**/
-
-#ifndef __PI_DXECIS_H__
-#define __PI_DXECIS_H__
-
-#include <Pi/PiMultiPhase.h>
-
-//
-// Global Coherencey Domain types
-//
-typedef enum {
-  EfiGcdMemoryTypeNonExistent,
-  EfiGcdMemoryTypeReserved,
-  EfiGcdMemoryTypeSystemMemory,
-  EfiGcdMemoryTypeMemoryMappedIo,
-  EfiGcdMemoryTypeMaximum
-} EFI_GCD_MEMORY_TYPE;
-
-
-typedef enum {
-  EfiGcdIoTypeNonExistent,
-  EfiGcdIoTypeReserved,
-  EfiGcdIoTypeIo,
-  EfiGcdIoTypeMaximum
-} EFI_GCD_IO_TYPE;
-
-
-typedef enum {
-  EfiGcdAllocateAnySearchBottomUp,
-  EfiGcdAllocateMaxAddressSearchBottomUp,
-  EfiGcdAllocateAddress,
-  EfiGcdAllocateAnySearchTopDown,
-  EfiGcdAllocateMaxAddressSearchTopDown,
-  EfiGcdMaxAllocateType
-} EFI_GCD_ALLOCATE_TYPE;
-
-
-typedef struct {
-  EFI_PHYSICAL_ADDRESS  BaseAddress;
-  UINT64                Length;
-  UINT64                Capabilities;
-  UINT64                Attributes;
-  EFI_GCD_MEMORY_TYPE   GcdMemoryType;
-  EFI_HANDLE            ImageHandle;
-  EFI_HANDLE            DeviceHandle;
-} EFI_GCD_MEMORY_SPACE_DESCRIPTOR;
-
-
-typedef struct {
-  EFI_PHYSICAL_ADDRESS  BaseAddress;
-  UINT64                Length;
-  EFI_GCD_IO_TYPE       GcdIoType;
-  EFI_HANDLE            ImageHandle;
-  EFI_HANDLE            DeviceHandle;
-} EFI_GCD_IO_SPACE_DESCRIPTOR;
-
-
-/**
-  Adds reserved memory, system memory, or memory-mapped I/O resources to the
-  global coherency domain of the processor.
-
-  @param  GcdMemoryType    Memory type of the memory space.
-  @param  BaseAddress      Base address of the memory space.
-  @param  Length           Length of the memory space.
-  @param  Capabilities     alterable attributes of the memory space.
-
-  @retval EFI_SUCCESS           Merged this memory space into GCD map.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_ADD_MEMORY_SPACE) (
-  IN EFI_GCD_MEMORY_TYPE   GcdMemoryType,
-  IN EFI_PHYSICAL_ADDRESS  BaseAddress,
-  IN UINT64                Length,
-  IN UINT64                Capabilities
-  )
-;
-
-/**
-  Allocates nonexistent memory, reserved memory, system memory, or memorymapped
-  I/O resources from the global coherency domain of the processor.
-
-  @param  GcdAllocateType  The type of allocate operation
-  @param  GcdMemoryType    The desired memory type
-  @param  Alignment        Align with 2^Alignment
-  @param  Length           Length to allocate
-  @param  BaseAddress      Base address to allocate
-  @param  Imagehandle      The image handle consume the allocated space.
-  @param  DeviceHandle     The device handle consume the allocated space.
-
-  @retval EFI_INVALID_PARAMETER Invalid parameter.
-  @retval EFI_NOT_FOUND         No descriptor contains the desired space.
-  @retval EFI_SUCCESS           Memory space successfully allocated.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_ALLOCATE_MEMORY_SPACE) (
-  IN     EFI_GCD_ALLOCATE_TYPE               GcdAllocateType,
-  IN     EFI_GCD_MEMORY_TYPE                 GcdMemoryType,
-  IN     UINTN                               Alignment,
-  IN     UINT64                              Length,
-  IN OUT EFI_PHYSICAL_ADDRESS                *BaseAddress,
-  IN     EFI_HANDLE                          ImageHandle,
-  IN     EFI_HANDLE                          DeviceHandle OPTIONAL
-  )
-;
-
-/**
-  Frees nonexistent memory, reserved memory, system memory, or memory-mapped
-  I/O resources from the global coherency domain of the processor.
-
-  @param  BaseAddress      Base address of the segment.
-  @param  Length           Length of the segment.
-
-  @retval EFI_SUCCESS           Space successfully freed.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FREE_MEMORY_SPACE) (
-  IN EFI_PHYSICAL_ADDRESS  BaseAddress,
-  IN UINT64                Length
-  )
-;
-
-/**
-  Removes reserved memory, system memory, or memory-mapped I/O resources from
-  the global coherency domain of the processor.
-
-  @param  BaseAddress      Base address of the memory space.
-  @param  Length           Length of the memory space.
-
-  @retval EFI_SUCCESS           Successfully remove a segment of memory space.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_REMOVE_MEMORY_SPACE) (
-  IN EFI_PHYSICAL_ADDRESS  BaseAddress,
-  IN UINT64                Length
-  )
-;
-
-/**
-  Retrieves the descriptor for a memory region containing a specified address.
-
-  @param  BaseAddress      Specified start address
-  @param  Descriptor       Specified length
-
-  @retval EFI_INVALID_PARAMETER Invalid parameter
-  @retval EFI_SUCCESS           Successfully get memory space descriptor.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_MEMORY_SPACE_DESCRIPTOR) (
-  IN  EFI_PHYSICAL_ADDRESS             BaseAddress,
-  OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR  *Descriptor
-  )
-;
-
-/**
-  Modifies the attributes for a memory region in the global coherency domain of the
-  processor.
-
-  @param  BaseAddress      Specified start address
-  @param  Length           Specified length
-  @param  Attributes       Specified attributes
-
-  @retval EFI_SUCCESS           Successfully set attribute of a segment of memory space.
-
-**/
-typedef
-
-EFI_STATUS
-(EFIAPI *EFI_SET_MEMORY_SPACE_ATTRIBUTES) (
-  IN EFI_PHYSICAL_ADDRESS         BaseAddress,
-  IN UINT64                       Length,
-  IN UINT64                       Attributes
-  )
-;
-
-/**
-  Returns a map of the memory resources in the global coherency domain of the
-  processor.
-
-  @param  NumberOfDescriptors Number of descriptors.
-  @param  MemorySpaceMap      Descriptor array
-
-  @retval EFI_INVALID_PARAMETER Invalid parameter
-  @retval EFI_OUT_OF_RESOURCES  No enough buffer to allocate
-  @retval EFI_SUCCESS           Successfully get memory space map.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_MEMORY_SPACE_MAP) (
-  OUT UINTN                            *NumberOfDescriptors,
-  OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR  **MemorySpaceMap
-  )
-;
-
-/**
-  Adds reserved I/O or I/O resources to the global coherency domain of the processor.
-
-  @param  GcdIoType        IO type of the segment.
-  @param  BaseAddress      Base address of the segment.
-  @param  Length           Length of the segment.
-
-  @retval EFI_SUCCESS           Merged this segment into GCD map.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_ADD_IO_SPACE) (
-  IN EFI_GCD_IO_TYPE       GcdIoType,
-  IN EFI_PHYSICAL_ADDRESS  BaseAddress,
-  IN UINT64                Length
-  )
-;
-
-/**
-  Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency
-  domain of the processor.
-
-  @param  GcdAllocateType  The type of allocate operation
-  @param  GcdIoType        The desired IO type
-  @param  Alignment        Align with 2^Alignment
-  @param  Length           Length to allocate
-  @param  BaseAddress      Base address to allocate
-  @param  Imagehandle      The image handle consume the allocated space.
-  @param  DeviceHandle     The device handle consume the allocated space.
-
-  @retval EFI_INVALID_PARAMETER Invalid parameter.
-  @retval EFI_NOT_FOUND         No descriptor contains the desired space.
-  @retval EFI_SUCCESS           IO space successfully allocated.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_ALLOCATE_IO_SPACE) (
-  IN     EFI_GCD_ALLOCATE_TYPE               GcdAllocateType,
-  IN     EFI_GCD_IO_TYPE                     GcdIoType,
-  IN     UINTN                               Alignment,
-  IN     UINT64                              Length,
-  IN OUT EFI_PHYSICAL_ADDRESS                *BaseAddress,
-  IN     EFI_HANDLE                          ImageHandle,
-  IN     EFI_HANDLE                          DeviceHandle OPTIONAL
-  )
-;
-
-/**
-  Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency
-  domain of the processor.
-
-  @param  BaseAddress      Base address of the segment.
-  @param  Length           Length of the segment.
-
-  @retval EFI_SUCCESS           Space successfully freed.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FREE_IO_SPACE) (
-  IN EFI_PHYSICAL_ADDRESS  BaseAddress,
-  IN UINT64                Length
-  )
-;
-
-/**
-  Removes reserved I/O or I/O resources from the global coherency domain of the
-  processor.
-
-  @param  BaseAddress      Base address of the segment.
-  @param Length Length of the segment.
-
-  @retval EFI_SUCCESS           Successfully removed a segment of IO space.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_REMOVE_IO_SPACE) (
-  IN EFI_PHYSICAL_ADDRESS  BaseAddress,
-  IN UINT64                Length
-  )
-;
-
-/**
-  Retrieves the descriptor for an I/O region containing a specified address.
-
-  @param  BaseAddress      Specified start address
-  @param  Descriptor       Specified length
-
-  @retval EFI_INVALID_PARAMETER Descriptor is NULL.
-  @retval EFI_SUCCESS           Successfully get the IO space descriptor.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_IO_SPACE_DESCRIPTOR) (
-  IN  EFI_PHYSICAL_ADDRESS         BaseAddress,
-  OUT EFI_GCD_IO_SPACE_DESCRIPTOR  *Descriptor
-  )
-;
-
-/**
-  Returns a map of the I/O resources in the global coherency domain of the processor.
-
-  @param  NumberOfDescriptors Number of descriptors.
-  @param  MemorySpaceMap      Descriptor array
-
-  @retval EFI_INVALID_PARAMETER Invalid parameter
-  @retval EFI_OUT_OF_RESOURCES  No enough buffer to allocate
-  @retval EFI_SUCCESS           Successfully get IO space map.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_IO_SPACE_MAP) (
-  OUT UINTN                        *NumberOfDescriptors,
-  OUT EFI_GCD_IO_SPACE_DESCRIPTOR  **IoSpaceMap
-  )
-;
-
-
-
-/**
-  Loads and executed DXE drivers from firmware volumes.
-
-  @return Status code
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DISPATCH) (VOID)
-;
-
-/**
-  Clears the Schedule on Request (SOR) flag for a component that is stored in a firmware volume.
-
-  @param  FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName.
-  @param  DriverName           A pointer to the name of the file in a firmware volume.
-
-  @return Status code
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SCHEDULE) (
-  IN EFI_HANDLE  FirmwareVolumeHandle,
-  IN EFI_GUID    *DriverName
-  )
-;
-
-/**
-  Promotes a file stored in a firmware volume from the untrusted to the trusted state.
-
-  @param  FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName.
-  @param  DriverName           A pointer to the name of the file in a firmware volume.
-
-  @return Status code
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TRUST) (
-  IN EFI_HANDLE  FirmwareVolumeHandle,
-  IN EFI_GUID    *DriverName
-  )
-;
-
-/**
-  Creates a firmware volume handle for a firmware volume that is present in system memory.
-
-  @param  FirmwareVolumeHeader A pointer to the header of the firmware volume.
-  @param  Size                 The size, in bytes, of the firmware volume.
-  @param  FirmwareVolumeHandle On output, a pointer to the created handle.
-
-  @return Status code
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PROCESS_FIRMWARE_VOLUME) (
-  IN VOID                             *FvHeader,
-  IN UINTN                            Size,
-  OUT EFI_HANDLE                      *FirmwareVolumeHandle
-  )
-;
-
-//
-// DXE Services Table
-//
-#define DXE_SERVICES_SIGNATURE 	0x565245535f455844
-#define DXE_SERVICES_REVISION 	((1<<16) | (00)
-
-typedef struct {
-  EFI_TABLE_HEADER                Hdr;
-
-  //
-  // Global Coherency Domain Services
-  //
-  EFI_ADD_MEMORY_SPACE            AddMemorySpace;
-  EFI_ALLOCATE_MEMORY_SPACE       AllocateMemorySpace;
-  EFI_FREE_MEMORY_SPACE           FreeMemorySpace;
-  EFI_REMOVE_MEMORY_SPACE         RemoveMemorySpace;
-  EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor;
-  EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes;
-  EFI_GET_MEMORY_SPACE_MAP        GetMemorySpaceMap;
-  EFI_ADD_IO_SPACE                AddIoSpace;
-  EFI_ALLOCATE_IO_SPACE           AllocateIoSpace;
-  EFI_FREE_IO_SPACE               FreeIoSpace;
-  EFI_REMOVE_IO_SPACE             RemoveIoSpace;
-  EFI_GET_IO_SPACE_DESCRIPTOR     GetIoSpaceDescriptor;
-  EFI_GET_IO_SPACE_MAP            GetIoSpaceMap;
-
-  //
-  // Dispatcher Services
-  //
-  EFI_DISPATCH                    Dispatch;
-  EFI_SCHEDULE                    Schedule;
-  EFI_TRUST                       Trust;
-  //
-  // Service to process a single firmware volume found in a capsule
-  //
-  EFI_PROCESS_FIRMWARE_VOLUME     ProcessFirmwareVolume;
-} DXE_SERVICES;
-
-typedef DXE_SERVICES EFI_DXE_SERVICES;
-
-#endif
diff --git a/MdePkg/Pi/PiFirmwareFile.h b/MdePkg/Pi/PiFirmwareFile.h
deleted file mode 100644
index db4167263b..0000000000
--- a/MdePkg/Pi/PiFirmwareFile.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/** @file
-  The firmware file related definitions in PI.
-
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         
-  All rights reserved. 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:  PiFirmwareFile.h
-
-  @par Revision Reference:
-  Version 1.0.
-
-**/
-
-#ifndef __PI_FIRMWARE_FILE_H__
-#define __PI_FIRMWARE_FILE_H__
-
-//
-// Used to verify the integrity of the file.
-// 
-typedef union {
-  struct {
-    UINT8   Header;
-    UINT8   File;
-  } Checksum;
-  UINT16    Checksum16;
-} EFI_FFS_INTEGRITY_CHECK;
-
-typedef UINT8 EFI_FV_FILETYPE;
-typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
-typedef UINT8 EFI_FFS_FILE_STATE;
-
-// 
-// FFS File Attributes.
-// 
-#define FFS_ATTRIB_FIXED              0x04
-#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
-#define FFS_ATTRIB_CHECKSUM           0x40
-
-// 
-// FFS File State Bits.
-// 
-#define EFI_FILE_HEADER_CONSTRUCTION  0x01
-#define EFI_FILE_HEADER_VALID         0x02
-#define EFI_FILE_DATA_VALID           0x04
-#define EFI_FILE_MARKED_FOR_UPDATE    0x08
-#define EFI_FILE_DELETED              0x10
-#define EFI_FILE_HEADER_INVALID       0x20
-
-
-//
-// Each file begins with the header that describe the 
-// contents and state of the files.
-// 
-typedef struct {
-  EFI_GUID                Name;
-  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
-  EFI_FV_FILETYPE         Type;
-  EFI_FFS_FILE_ATTRIBUTES Attributes;
-  UINT8                   Size[3];
-  EFI_FFS_FILE_STATE      State;
-} EFI_FFS_FILE_HEADER;
-
-
-typedef UINT8 EFI_SECTION_TYPE;
-
-//
-// Pseudo type. It is
-// used as a wild card when retrieving sections. The section
-// type EFI_SECTION_ALL matches all section types.
-//
-#define EFI_SECTION_ALL                   0x00
-
-//
-// Encapsulation section Type values
-//
-#define EFI_SECTION_COMPRESSION           0x01
-
-#define EFI_SECTION_GUID_DEFINED          0x02
-
-//
-// Leaf section Type values
-//
-#define EFI_SECTION_PE32                  0x10
-#define EFI_SECTION_PIC                   0x11
-#define EFI_SECTION_TE                    0x12
-#define EFI_SECTION_DXE_DEPEX             0x13
-#define EFI_SECTION_VERSION               0x14
-#define EFI_SECTION_USER_INTERFACE        0x15
-#define EFI_SECTION_COMPATIBILITY16       0x16
-#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
-#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
-#define EFI_SECTION_RAW                   0x19
-#define EFI_SECTION_PEI_DEPEX             0x1B
-
-typedef struct {
-  UINT8             Size[3];
-  EFI_SECTION_TYPE  Type;
-} EFI_COMMON_SECTION_HEADER;
-
-//
-// Leaf section type that contains an 
-// IA-32 16-bit executable image.
-// 
-typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION;
-
-//
-// CompressionType of EFI_COMPRESSION_SECTION.
-// 
-#define EFI_NOT_COMPRESSED        0x00
-#define EFI_STANDARD_COMPRESSION  0x01
-//
-// An encapsulation section type in which the 
-// section data is compressed.
-// 
-typedef struct {
-  EFI_COMMON_SECTION_HEADER CommonHeader;
-  UINT32  UncompressedLength;
-  UINT8   CompressionType;
-} EFI_COMPRESSION_SECTION;
-
-//
-// Leaf section which could be used to determine the dispatch order of DXEs.
-// 
-typedef EFI_COMMON_SECTION_HEADER EFI_DXE_DEPEX_SECTION;
-
-//
-// Leaf section witch contains a PI FV.
-// 
-typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
-
-//
-// Leaf section which contains a single GUID.
-// 
-typedef struct {
-  EFI_COMMON_SECTION_HEADER CommonHeader;
-  EFI_GUID  SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
-
-//
-// Attributes of EFI_GUID_DEFINED_SECTION
-// 
-#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
-#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
-//
-// Leaf section which is encapsulation defined by specific GUID
-// 
-typedef struct {
-  EFI_COMMON_SECTION_HEADER CommonHeader;
-  EFI_GUID  SectionDefinitionGuid;
-  UINT16    DataOffset;
-  UINT16    Attributes;
-} EFI_GUID_DEFINED_SECTION;
-
-//
-// Leaf section which contains PE32+ image.
-// 
-typedef EFI_COMMON_SECTION_HEADER EFI_PE32_SECTION;
-
-
-//
-// Leaf section which used to determine the dispatch order of PEIMs.
-// 
-typedef EFI_COMMON_SECTION_HEADER EFI_PEI_DEPEX_SECTION;
-
-//
-// Leaf section which constains the position-independent-code image.
-// 
-typedef EFI_COMMON_SECTION_HEADER EFI_TE_SECTION;
-
-//
-// Leaf section which contains an array of zero or more bytes.
-// 
-typedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION;
-
-//
-// Leaf section which contains a unicode string that 
-// is human readable file name.
-// 
-typedef struct {
-  EFI_COMMON_SECTION_HEADER CommonHeader;
-
-  //
-  // Array of unicode string.
-  // 
-  CHAR16 FileNameString[1];
-} EFI_USER_INTERFACE_SECTION;
-
-
-//
-// Leaf section which contains a numeric build number and
-// an optional unicode string that represent the file revision. 
-// 
-typedef struct {
-  EFI_COMMON_SECTION_HEADER CommonHeader;
-  UINT16  BuildNumber;
-  CHAR16  VersionString[1];
-} EFI_VERSION_SECTION;
-
-#endif
-
diff --git a/MdePkg/Pi/PiFirmwareVolume.h b/MdePkg/Pi/PiFirmwareVolume.h
deleted file mode 100644
index 38f57f7d78..0000000000
--- a/MdePkg/Pi/PiFirmwareVolume.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/** @file
-  The firmware volume related definitions in PI.
-
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         
-  All rights reserved. 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:  PiFirmwareVolume.h
-
-  @par Revision Reference:
-  Version 1.0.
-
-**/
-
-#ifndef __PI_FIRMWAREVOLUME_H__
-#define __PI_FIRMWAREVOLUME_H__
-
-//
-// EFI_FV_FILE_ATTRIBUTES
-//
-typedef UINT32 	EFI_FV_FILE_ATTRIBUTES;
-
-//
-// Value of EFI_FV_FILE_ATTRIBUTES.
-// 
-#define EFI_FV_FILE_ATTRIB_ALIGNMENT			0x0000001F
-#define EFI_FV_FILE_ATTRIB_FIXED 					0x00000100
-#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED 	0x00000200
-
-typedef UINT32 	EFI_FVB_ATTRIBUTES;
-
-// 
-// Attributes bit definitions
-// 
-#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
-#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
-#define EFI_FVB2_READ_STATUS        0x00000004
-#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
-#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
-#define EFI_FVB2_WRITE_STATUS       0x00000020
-#define EFI_FVB2_LOCK_CAP           0x00000040
-#define EFI_FVB2_LOCK_STATUS        0x00000080
-#define EFI_FVB2_STICKY_WRITE       0x00000200
-#define EFI_FVB2_MEMORY_MAPPED      0x00000400
-#define EFI_FVB2_ERASE_POLARITY     0x00000800
-#define EFI_FVB2_READ_LOCK_CAP      0x00001000
-#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
-#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
-#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
-#define EFI_FVB2_ALIGNMENT          0x001F0000
-#define EFI_FVB2_ALIGNMENT_1        0x00000000
-#define EFI_FVB2_ALIGNMENT_2        0x00010000
-#define EFI_FVB2_ALIGNMENT_4        0x00020000
-#define EFI_FVB2_ALIGNMENT_8        0x00030000
-#define EFI_FVB2_ALIGNMENT_16       0x00040000
-#define EFI_FVB2_ALIGNMENT_32       0x00050000
-#define EFI_FVB2_ALIGNMENT_64       0x00060000
-#define EFI_FVB2_ALIGNMENT_128      0x00070000
-#define EFI_FVB2_ALIGNMENT_256      0x00080000
-#define EFI_FVB2_ALIGNMENT_512      0x00090000
-#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
-#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
-#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
-#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
-#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
-#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
-#define EFI_FVB2_ALIGNMENT_64K      0x00100000
-#define EFI_FVB2_ALIGNMENT_128K     0x00110000
-#define EFI_FVB2_ALIGNMENT_256K     0x00120000
-#define EFI_FVB2_ALIGNMNET_512K     0x00130000
-#define EFI_FVB2_ALIGNMENT_1M       0x00140000
-#define EFI_FVB2_ALIGNMENT_2M       0x00150000
-#define EFI_FVB2_ALIGNMENT_4M       0x00160000
-#define EFI_FVB2_ALIGNMENT_8M       0x00170000
-#define EFI_FVB2_ALIGNMENT_16M      0x00180000
-#define EFI_FVB2_ALIGNMENT_32M      0x00190000
-#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
-#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
-#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
-#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
-#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
-#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
-
-
-typedef struct {
-  UINT32 NumBlocks;
-  UINT32 Length;
-} EFI_FV_BLOCK_MAP_ENTRY;
-
-//
-// Describes the features and layout of the firmware volume.
-//
-typedef struct {
-  UINT8     ZeroVector[16];
-  EFI_GUID  FileSystemGuid;
-  UINT64    FvLength;
-  UINT32    Signature;
-  EFI_FVB_ATTRIBUTES  Attributes;
-  UINT16    HeaderLength;
-  UINT16    Checksum;
-  UINT16    ExtHeaderOffset;
-  UINT8     Reserved[1];
-  UINT8     Revision;
-  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
-} EFI_FIRMWARE_VOLUME_HEADER;
-
-
-
-//
-// Extension header pointed by ExtHeaderOffset of volume header.
-// 
-typedef struct {
-  EFI_GUID  FvName;
-  UINT32    ExtHeaderSize;
-} EFI_FIRMWARE_VOLUME_EXT_HEADER;
-
-typedef struct {
-  UINT16    ExtEntrySize;
-  UINT16    ExtEntryType;
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
-
-#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
-typedef struct {
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
-  UINT32    TypeMask;
-
-  //
-  // Array of GUIDs. 
-  // Each GUID represents an OEM file type.
-  // 
-  EFI_GUID  Types[1];
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
-
-
-#endif
diff --git a/MdePkg/Pi/PiHob.h b/MdePkg/Pi/PiHob.h
deleted file mode 100644
index 7a710a44a4..0000000000
--- a/MdePkg/Pi/PiHob.h
+++ /dev/null
@@ -1,258 +0,0 @@
-/* @file
-	HOB related definitions in PI.
-
-	Copyright (c) 2006 - 2007, Intel Corporation                                                         
-	All rights reserved. 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:  PiHob.h
-
-	@par Revision Reference:
-	Version 1.0.
-
-**/
-
-#ifndef __PI_HOB_H__
-#define __PI_HOB_H__
-
-//
-// HobType of EFI_HOB_GENERIC_HEADER.
-// 
-#define EFI_HOB_TYPE_HANDOFF 							0x0001
-#define EFI_HOB_TYPE_MEMORY_ALLOCATION 		0x0002
-#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 	0x0003
-#define EFI_HOB_TYPE_GUID_EXTENSION 			0x0004
-#define EFI_HOB_TYPE_FV 									0x0005
-#define EFI_HOB_TYPE_CPU 									0x0006
-#define EFI_HOB_TYPE_MEMORY_POOL 					0x0007
-#define EFI_HOB_TYPE_FV2 									0x0009
-#define EFI_HOB_TYPE_LOAD_PEIM 						0x000A
-#define EFI_HOB_TYPE_UNUSED 							0xFFFE
-#define EFI_HOB_TYPE_END_OF_HOB_LIST 			0xFFFF
-
-//
-// Describes the format and size of the data inside the HOB. 
-// All HOBs must contain this generic HOB header.
-// 
-typedef struct _EFI_HOB_GENERIC_HEADER {
-	UINT16 HobType;
-	UINT16 HobLength;
-	UINT32 Reserved;
-} EFI_HOB_GENERIC_HEADER;
-
-
-//
-// Value of version ofinEFI_HOB_HANDOFF_INFO_TABLE.
-// 
-#define EFI_HOB_HANDOFF_TABLE_VERSION 0x0009
-//
-// Contains general state information used by the HOB producer phase. 
-// This HOB must be the first one in the HOB list.
-// 
-typedef struct _EFI_HOB_HANDOFF_INFO_TABLE {
-	EFI_HOB_GENERIC_HEADER  Header;
-	UINT32                Version;
-	EFI_BOOT_MODE         BootMode;
-	EFI_PHYSICAL_ADDRESS  EfiMemoryTop;
-	EFI_PHYSICAL_ADDRESS  EfiMemoryBottom;
-	EFI_PHYSICAL_ADDRESS  EfiFreeMemoryTop;
-	EFI_PHYSICAL_ADDRESS  EfiFreeMemoryBottom;
-	EFI_PHYSICAL_ADDRESS  EfiEndOfHobList;
-} EFI_HOB_HANDOFF_INFO_TABLE;
-
-
-typedef struct _EFI_HOB_MEMORY_ALLOCATION_HEADER {
-	EFI_GUID              Name;
-	EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
-	UINT64                MemoryLength;
-	EFI_MEMORY_TYPE       MemoryType;
-
-	//
-	// Padding for Itanium processor family
-	// 
-	UINT8                 Reserved[4];
-} EFI_HOB_MEMORY_ALLOCATION_HEADER;
-
-//
-// Describes all memory ranges used during the HOB producer 
-// phase that exist outside the HOB list. This HOB type 
-// describes how memory is used, 
-// not the physical attributes of memory.
-// 
-typedef struct _EFI_HOB_MEMORY_ALLOCATION {
-	EFI_HOB_GENERIC_HEADER            Header;
-	EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
-	//
-	// Additional data pertaining to the ��Name�� Guid memory
-	// may go here.
-	//
-} EFI_HOB_MEMORY_ALLOCATION;
-
-
-//
-// Describes the memory stack that is produced by the HOB producer 
-// phase and upon which all postmemory-installed executable
-// content in the HOB producer phase is executing.
-// 
-typedef struct _EFI_HOB_MEMORY_ALLOCATION_STACK {
-	EFI_HOB_GENERIC_HEADER            Header;
-	EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
-} EFI_HOB_MEMORY_ALLOCATION_STACK;
-
-//
-// Defines the location of the boot-strap 
-// processor (BSP) BSPStore (��Backing Store Pointer Store��).
-// This HOB is valid for the Itanium processor family only 
-// register overflow store.
-// 
-typedef struct _EFI_HOB_MEMORY_ALLOCATION_BSP_STORE {
-	EFI_HOB_GENERIC_HEADER            Header;
-	EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
-} EFI_HOB_MEMORY_ALLOCATION_BSP_STORE;
-
-//
-// Defines the location and entry point of the HOB consumer phase.
-// 
-typedef struct {
-	EFI_HOB_GENERIC_HEADER            Header;
-	EFI_HOB_MEMORY_ALLOCATION_HEADER  MemoryAllocationHeader;
-	EFI_GUID ModuleName;
-	EFI_PHYSICAL_ADDRESS EntryPoint;
-} EFI_HOB_MEMORY_ALLOCATION_MODULE;
-
-typedef UINT32 EFI_RESOURCE_TYPE;
-
-//
-// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
-// 
-#define EFI_RESOURCE_SYSTEM_MEMORY 					0x00000000
-#define EFI_RESOURCE_MEMORY_MAPPED_IO 			0x00000001
-#define EFI_RESOURCE_IO 										0x00000002
-#define EFI_RESOURCE_FIRMWARE_DEVICE 				0x00000003
-#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 	0x00000004
-#define EFI_RESOURCE_MEMORY_RESERVED 				0x00000005
-#define EFI_RESOURCE_IO_RESERVED 						0x00000006
-#define EFI_RESOURCE_MAX_MEMORY_TYPE 				0x00000007
-
-
-typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
-
-//
-// These types can be ORed together as needed.
-//
-// The first three enumerations describe settings
-//
-#define EFI_RESOURCE_ATTRIBUTE_PRESENT 							0x00000001
-#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED 					0x00000002
-#define EFI_RESOURCE_ATTRIBUTE_TESTED 							0x00000004
-//
-// The rest of the settings describe capabilities
-//
-#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC 			0x00000008
-#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC 		0x00000010
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1 			0x00000020
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2 			0x00000040
-#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED 			0x00000080
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED 			0x00000100
-#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED 	0x00000200
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE 					0x00000400
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE 		0x00000800
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE	0x00001000
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE 0x00002000
-#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO 						0x00004000
-#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO 						0x00008000
-#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO 						0x00010000
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED 		0x00020000
-
-//
-// Describes the resource properties of all fixed, 
-// nonrelocatable resource ranges found on the processor
-// host bus during the HOB producer phase.
-// 
-typedef struct _EFI_HOB_RESOURCE_DESCRIPTOR {
-	EFI_HOB_GENERIC_HEADER      Header;
-	EFI_GUID                    Owner;
-	EFI_RESOURCE_TYPE           ResourceType;
-	EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
-	EFI_PHYSICAL_ADDRESS        PhysicalStart;
-	UINT64                      ResourceLength;
-} EFI_HOB_RESOURCE_DESCRIPTOR;
-
-//
-// Allows writers of executable content in the HOB producer phase to 
-// maintain and manage HOBs with specific GUID.
-// 
-typedef struct _EFI_HOB_GUID_TYPE {
-	EFI_HOB_GENERIC_HEADER      Header;
-	EFI_GUID                    Name;
-
-	//
-	// Guid specific data goes here
-	//
-} EFI_HOB_GUID_TYPE;
-
-//
-// Details the location of firmware volumes that contain firmware files.
-// 
-typedef struct {
-	EFI_HOB_GENERIC_HEADER Header;
-	EFI_PHYSICAL_ADDRESS BaseAddress;
-	UINT64 Length;
-} EFI_HOB_FIRMWARE_VOLUME;
-
-//
-// Details the location of a firmware volume which was extracted 
-// from a file within another firmware volume.
-// 
-typedef struct {
-	EFI_HOB_GENERIC_HEADER  Header;
-	EFI_PHYSICAL_ADDRESS    BaseAddress;
-	UINT64                  Length;
-	EFI_GUID                FvName;
-	EFI_GUID                FileName;
-} EFI_HOB_FIRMWARE_VOLUME2;
-
-
-//
-// Describes processor information, such as address space and I/O space capabilities.
-// 
-typedef struct _EFI_HOB_CPU {
-	EFI_HOB_GENERIC_HEADER 	Header;
-	UINT8 									SizeOfMemorySpace;
-	UINT8 									SizeOfIoSpace;
-	UINT8 									Reserved[6];
-} EFI_HOB_CPU;
-
-
-//
-// Describes pool memory allocations.
-// 
-typedef struct _EFI_HOB_MEMORY_POOL {
-	EFI_HOB_GENERIC_HEADER 	Header;
-} EFI_HOB_MEMORY_POOL;
-
-//
-// Union of all the possible HOB Types
-//
-typedef union {
-	EFI_HOB_GENERIC_HEADER 							*Header;
-	EFI_HOB_HANDOFF_INFO_TABLE 					*HandoffInformationTable;
-	EFI_HOB_MEMORY_ALLOCATION 					*MemoryAllocation;
-	EFI_HOB_MEMORY_ALLOCATION_BSP_STORE *MemoryAllocationBspStore;
-	EFI_HOB_MEMORY_ALLOCATION_STACK 		*MemoryAllocationStack;
-	EFI_HOB_MEMORY_ALLOCATION_MODULE 		*MemoryAllocationModule;
-	EFI_HOB_RESOURCE_DESCRIPTOR 				*ResourceDescriptor;
-	EFI_HOB_GUID_TYPE 									*Guid;
-	EFI_HOB_FIRMWARE_VOLUME 						*FirmwareVolume;
-	EFI_HOB_CPU 												*Cpu;
-	EFI_HOB_MEMORY_POOL 								*Pool;
-	UINT8 															*Raw;
-} EFI_PEI_HOB_POINTERS;
-
-
-#endif 
diff --git a/MdePkg/Pi/PiMultiPhase.h b/MdePkg/Pi/PiMultiPhase.h
deleted file mode 100644
index 2b3f2482ec..0000000000
--- a/MdePkg/Pi/PiMultiPhase.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/** @file
-  Include file matches things in PI for multiple module types.
-
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         
-  All rights reserved. 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:  PiMultiPhase.h
-
-  @par Revision Reference:
-  Version 1.0.
-
-**/
-
-#ifndef __PI_MULTIPHASE_H__
-#define __PI_MULTIPHASE_H__
-
-#include <Uefi/UefiMultiPhase.h>
-
-#include <Pi/PiFirmwareVolume.h>
-#include <Pi/PiFirmwareFile.h>
-#include <Pi/PiBootMode.h>
-
-#include <Pi/PiHob.h>
-#include <Pi/PiDependency.h>
-
-//
-// Status Code Type Definition
-//
-typedef UINT32 	EFI_STATUS_CODE_TYPE;
-
-//
-// A Status Code Type is made up of the code type and severity
-// All values masked by EFI_STATUS_CODE_RESERVED_MASK are
-// reserved for use by this specification.
-//
-#define EFI_STATUS_CODE_TYPE_MASK 		0x000000FF
-#define EFI_STATUS_CODE_SEVERITY_MASK 0xFF000000
-#define EFI_STATUS_CODE_RESERVED_MASK 0x00FFFF00
-
-//
-// Definition of code types, all other values masked by
-// EFI_STATUS_CODE_TYPE_MASK are reserved for use by
-// this specification.
-//
-#define EFI_PROGRESS_CODE 						0x00000001
-#define EFI_ERROR_CODE 								0x00000002
-#define EFI_DEBUG_CODE 								0x00000003
-
-//
-// Definitions of severities, all other values masked by
-// EFI_STATUS_CODE_SEVERITY_MASK are reserved for use by
-// this specification.
-// Uncontained errors are major errors that could not contained
-// to the specific component that is reporting the error
-// For example, if a memory error was not detected early enough,
-// the bad data could be consumed by other drivers.
-//
-#define EFI_ERROR_MINOR 							0x40000000
-#define EFI_ERROR_MAJOR 							0x80000000
-#define EFI_ERROR_UNRECOVERED 				0x90000000
-#define EFI_ERROR_UNCONTAINED 				0xa0000000
-
-//
-// Status Code Value Definition
-//
-typedef UINT32 EFI_STATUS_CODE_VALUE;
-//
-// A Status Code Value is made up of the class, subclass, and
-// an operation.
-//
-#define EFI_STATUS_CODE_CLASS_MASK 			0xFF000000
-#define EFI_STATUS_CODE_SUBCLASS_MASK 	0x00FF0000
-#define EFI_STATUS_CODE_OPERATION_MASK 	0x0000FFFF
-//
-// Definition of Status Code extended data header.
-// The data will follow HeaderSize bytes from the beginning of
-// the structure and is Size bytes long.
-//
-typedef struct {
-	UINT16 		HeaderSize;
-	UINT16 		Size;
-	EFI_GUID 	Type;
-} EFI_STATUS_CODE_DATA;
-
-#endif
diff --git a/MdePkg/Pi/PiPeiCis.h b/MdePkg/Pi/PiPeiCis.h
deleted file mode 100644
index 059b90b084..0000000000
--- a/MdePkg/Pi/PiPeiCis.h
+++ /dev/null
@@ -1,805 +0,0 @@
-
-/** @file
-  PI PEI master include file. This file should match the PI spec.
-
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         
-  All rights reserved. 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:  PiPeiCis.h
-
-  @par Revision Reference:
-  Version 1.0.
-
-**/
-
-#ifndef __PI_PEICIS_H__
-#define __PI_PEICIS_H__
-
-#include <Pi/PiMultiPhase.h>
-
-#define EFI_NOT_AVAILABLE_YET   EFIERR (28)
-
-//
-// Handles of EFI FV/FFS.
-// 
-typedef VOID 		*EFI_PEI_FV_HANDLE;
-typedef VOID 		*EFI_PEI_FILE_HANDLE;
-
-//
-// Declare forward referenced data structures
-//
-typedef struct _EFI_PEI_SERVICES          EFI_PEI_SERVICES;
-typedef struct _EFI_PEI_NOTIFY_DESCRIPTOR EFI_PEI_NOTIFY_DESCRIPTOR;
-
-
-#include <Ppi/CpuIo.h>
-#include <Ppi/PciCfg2.h>
-
-/**
-  The PEI Dispatcher will invoke each PEIM one time.  During this pass, the PEI 
-  Dispatcher will pass control to the PEIM at the AddressOfEntryPoint in the PE Header. 
-
-  @param  FfsHeader        Pointer to the FFS file header.
-  @param  PeiServices      Describes the list of possible PEI Services.
-
-  @return Status code
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEIM_ENTRY_POINT)(
-  IN EFI_FFS_FILE_HEADER       *FfsHeader,
-  IN EFI_PEI_SERVICES          **PeiServices
-  );
-
-/**
-  Entry point of the notification callback function itself within the PEIM.
-
-  @param  PeiServices      Indirect reference to the PEI Services Table.
-  @param  NotifyDescriptor Address of the notification descriptor data structure.
-  @param  Ppi              Address of the PPI that was installed.
-
-  @return Status code
-  
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEIM_NOTIFY_ENTRY_POINT) (
-  IN EFI_PEI_SERVICES           **PeiServices,
-  IN EFI_PEI_NOTIFY_DESCRIPTOR  *NotifyDescriptor,
-  IN VOID                       *Ppi
-  );
-
-//
-// PEI Ppi Services List Descriptors
-//
-#define EFI_PEI_PPI_DESCRIPTOR_PIC              0x00000001
-#define EFI_PEI_PPI_DESCRIPTOR_PPI              0x00000010
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK  0x00000020
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH  0x00000040
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES     0x00000060
-#define EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST   0x80000000
-
-typedef struct {
-  UINTN     Flags;
-  EFI_GUID  *Guid;
-  VOID      *Ppi;
-} EFI_PEI_PPI_DESCRIPTOR;
-
-struct _EFI_PEI_NOTIFY_DESCRIPTOR {
-  UINTN                       Flags;
-  EFI_GUID                    *Guid;
-  EFI_PEIM_NOTIFY_ENTRY_POINT Notify;
-};
-
-//
-// Describes request of the module to be loaded to 
-// the permanent memory once it is available. Unlike most of the other HOBs, 
-// this HOB is produced and consumed during the HOB producer phase.
-// 
-typedef struct _EFI_HOB_LOAD_PEIM {
-	EFI_HOB_GENERIC_HEADER            Header;
-	EFI_PEI_FILE_HANDLE               FileHandle;
-	EFI_PEIM_ENTRY_POINT              EntryPoint;
-	EFI_PEIM_ENTRY_POINT              InMemEntryPoint;
-} EFI_HOB_LOAD_PEIM;
-
-
-/**
-  This service is the first one provided by the PEI Foundation.  This function 
-  installs an interface in the PEI PPI database by GUID.  The purpose of the 
-  service is to publish an interface that other parties can use to call 
-  additional PEIMs.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table
-                           published by the PEI Foundation.
-  @param  PpiList          A pointer to the list of interfaces that the caller shall install.
-
-  @retval EFI_SUCCESS           The interface was successfully installed.
-  @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.
-  @retval EFI_OUT_OF_RESOURCES  There is no additional space in the PPI database.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_INSTALL_PPI) (
-  IN EFI_PEI_SERVICES            **PeiServices,
-  IN EFI_PEI_PPI_DESCRIPTOR      *PpiList
-  );
-
-/**
-  This function reinstalls an interface in the PEI PPI database by GUID. 
-  The purpose of the service is to publish an interface that other parties 
-  can use to replace a same-named interface in the protocol database 
-  with a different interface. 
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table
-                           published by the PEI Foundation.
-  @param  OldPpi           A pointer to the former PPI in the database.
-  @param  NewPpi           A pointer to the new interfaces that the caller shall install.
-
-  @retval EFI_SUCCESS           The interface was successfully installed.
-  @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the 
-                                list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.
-  @retval EFI_OUT_OF_RESOURCES  There is no additional space in the PPI database.
-  @retval EFI_NOT_FOUND         The PPI for which the reinstallation was requested has not been installed.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_REINSTALL_PPI) (
-  IN EFI_PEI_SERVICES                **PeiServices,
-  IN EFI_PEI_PPI_DESCRIPTOR          *OldPpi,
-  IN EFI_PEI_PPI_DESCRIPTOR          *NewPpi
-  );
-
-/**
-  This function locates an interface in the PEI PPI database by GUID. 
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES published by the PEI Foundation.
-  @param  Guid             A pointer to the GUID whose corresponding interface needs to be found.
-  @param  Instance         The N-th instance of the interface that is required.
-  @param  PpiDescriptor    A pointer to instance of the EFI_PEI_PPI_DESCRIPTOR.
-  @param  Ppi              A pointer to the instance of the interface.
-
-  @retval EFI_SUCCESS           The interface was successfully returned.
-  @retval EFI_NOT_FOUND         The PPI descriptor is not found in the database.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_LOCATE_PPI) (
-  IN EFI_PEI_SERVICES            **PeiServices,
-  IN EFI_GUID                    *Guid,
-  IN UINTN                       Instance,
-  IN OUT EFI_PEI_PPI_DESCRIPTOR  **PpiDescriptor,
-  IN OUT VOID                    **Ppi
-  );
-
-/**
-  This function installs a notification service to be called back when a 
-  given interface is installed or reinstalled.  The purpose of the service 
-  is to publish an interface that other parties can use to call additional PPIs 
-  that may materialize later.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation
-  @param  NotifyList       A pointer to the list of notification interfaces that the caller shall install.
-
-  @retval EFI_SUCCESS           The interface was successfully installed.
-  @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the 
-                                list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.
-  @retval EFI_OUT_OF_RESOURCES  There is no additional space in the PPI database.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_NOTIFY_PPI) (
-  IN EFI_PEI_SERVICES                **PeiServices,
-  IN EFI_PEI_NOTIFY_DESCRIPTOR       *NotifyList
-  );
-
-/**
-  This function returns the present value of the boot mode.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  BootMode         A pointer to contain the value of the boot mode.
-
-  @retval EFI_SUCCESS           The boot mode was returned successfully.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_GET_BOOT_MODE) (
-  IN EFI_PEI_SERVICES            **PeiServices,
-  OUT EFI_BOOT_MODE              *BootMode
-  );
-
-/**
-  This function sets the value of the boot mode.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation
-  @param  BootMode         The value of the boot mode to set.
-
-  @retval EFI_SUCCESS           The boot mode was returned successfully.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_SET_BOOT_MODE) (
-  IN EFI_PEI_SERVICES            **PeiServices,
-  IN EFI_BOOT_MODE               BootMode
-  );
-
-/**
-  This function returns the pointer to the list of Hand-Off Blocks (HOBs) in memory. 
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation
-  @param  HobList          A pointer to the list of HOBs that the PEI Foundation will initialize
-
-  @retval EFI_SUCCESS           The list was successfully returned.
-  @retval EFI_NOT_AVAILABLE_YET The HOB list is not yet published.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_GET_HOB_LIST) (
-  IN EFI_PEI_SERVICES            **PeiServices,
-  IN OUT VOID                    **HobList
-  );
-
-/**
-  This service published by the PEI Foundation abstracts the creation of a Hand-Off Block's (HOB's) headers.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  Type             The type of HOB to be installed.
-  @param  Length           The length of the HOB to be added.
-  @param  Hob              The address of a pointer that will contain the HOB header.
-
-  @retval EFI_SUCCESS           The HOB was successfully created.
-  @retval EFI_OUT_OF_RESOURCES  There is no additional space for HOB creation.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_CREATE_HOB) (
-  IN EFI_PEI_SERVICES            **PeiServices,
-  IN UINT16                      Type,
-  IN UINT16                      Length,
-  IN OUT VOID                    **Hob
-  );
-
-/**
-  The purpose of the service is to abstract the capability of the PEI 
-  Foundation to discover instances of firmware volumes in the system. 
-  Given the input file pointer, this service searches for the next 
-  matching file in the Firmware File System (FFS) volume.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  Instance         This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV).
-  @param  FwVolHeader      Pointer to the firmware volume header of the volume to return.
-
-  @retval EFI_SUCCESS           The volume was found.
-  @retval EFI_NOT_FOUND         The volume was not found.
-  @retval EFI_INVALID_PARAMETER FwVolHeader is NULL
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) (
-  IN EFI_PEI_SERVICES                **PeiServices,
-  IN UINTN                           Instance,
-  IN OUT EFI_FIRMWARE_VOLUME_HEADER  **FwVolHeader
-  );
-
-/**
-  The purpose of the service is to abstract the capability of the PEI 
-  Foundation to discover instances of firmware files in the system. 
-  Given the input file pointer, this service searches for the next matching 
-  file in the Firmware File System (FFS) volume.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  SearchType       A filter to find files only of this type.
-  @param  FwVolHeader      Pointer to the firmware volume header of the volume to search.This parameter 
-                           must point to a valid FFS volume.
-  @param  FileHeader       Pointer to the current file from which to begin searching.This pointer will be 
-                           updated upon return to reflect the file found.
-
-  @retval EFI_SUCCESS           The file was found.
-  @retval EFI_NOT_FOUND         The file was not found.
-  @retval EFI_NOT_FOUND         The header checksum was not zero.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) (
-  IN EFI_PEI_SERVICES            **PeiServices,
-  IN EFI_FV_FILETYPE             SearchType,
-  IN EFI_FIRMWARE_VOLUME_HEADER  *FwVolHeader,
-  IN OUT EFI_FFS_FILE_HEADER     **FileHeader
-  );
-
-/**
-  Given the input file pointer, this service searches for the next 
-  matching file in the Firmware File System (FFS) volume. 
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  SectionType      The value of the section type to find.
-  @param  FfsFileHeader    A pointer to the file header that contains the set of sections to be searched.
-  @param  SectionData      A pointer to the discovered section, if successful.
-
-  @retval EFI_SUCCESS           The section was found.
-  @retval EFI_NOT_FOUND         The section was not found.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) (
-  IN EFI_PEI_SERVICES            **PeiServices,
-  IN EFI_SECTION_TYPE            SectionType,
-  IN EFI_FFS_FILE_HEADER         *FfsFileHeader,
-  IN OUT VOID                    **SectionData
-  );
-
-/**
-  This function registers the found memory configuration with the PEI Foundation.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  MemoryBegin      The value of a region of installed memory
-  @param  MemoryLength     The corresponding length of a region of installed memory.
-
-  @retval EFI_SUCCESS           The region was successfully installed in a HOB.
-  @retval EFI_INVALID_PARAMETER MemoryBegin and MemoryLength are illegal for this system.
-  @retval EFI_OUT_OF_RESOURCES  There is no additional space for HOB creation.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) (
-  IN EFI_PEI_SERVICES           **PeiServices,
-  IN EFI_PHYSICAL_ADDRESS       MemoryBegin,
-  IN UINT64                     MemoryLength
-  );
-
-/**
-  The purpose of the service is to publish an interface that allows 
-  PEIMs to allocate memory ranges that are managed by the PEI Foundation.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  MemoryType       The type of memory to allocate.
-  @param  Pages            The number of contiguous 4 KB pages to allocate.
-  @param  Memory           Pointer to a physical address. On output, the address is set to the base 
-                           of the page range that was allocated.
-
-  @retval EFI_SUCCESS           The memory range was successfully allocated.
-  @retval EFI_OUT_OF_RESOURCES  The pages could not be allocated.
-  @retval EFI_INVALID_PARAMETER Type is not equal to AllocateAnyPages.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_ALLOCATE_PAGES) (
-  IN EFI_PEI_SERVICES           **PeiServices,
-  IN EFI_MEMORY_TYPE            MemoryType,
-  IN UINTN                      Pages,
-  IN OUT EFI_PHYSICAL_ADDRESS   *Memory
-  );
-
-/**
-  The purpose of this service is to publish an interface that 
-  allows PEIMs to allocate memory ranges that are managed by the PEI Foundation.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  Size             The number of bytes to allocate from the pool.
-  @param  Buffer           If the call succeeds, a pointer to a pointer to the allocated buffer; undefined otherwise.
-
-  @retval EFI_SUCCESS           The allocation was successful.
-  @retval EFI_OUT_OF_RESOURCES  There is not enough heap to allocate the requested size.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_ALLOCATE_POOL) (
-  IN EFI_PEI_SERVICES           **PeiServices,
-  IN UINTN                      Size,
-  OUT VOID                      **Buffer
-  );
-
-/**
-  This service copies the contents of one buffer to another buffer.
-
-  @param  Destination      Pointer to the destination buffer of the memory copy.
-  @param  Source           Pointer to the source buffer of the memory copy
-  @param  Length           Number of bytes to copy from Source to Destination.
-
-  @return None
-
-**/
-typedef
-VOID
-(EFIAPI *EFI_PEI_COPY_MEM) (
-  IN VOID                       *Destination,
-  IN VOID                       *Source,
-  IN UINTN                      Length
-  );
-
-/**
-  The service fills a buffer with a specified value.
-
-  @param  Buffer           Pointer to the buffer to fill.
-  @param  Size             Number of bytes in Buffer to fill.
-  @param  Value            Value to fill Buffer with
-
-  @return None
-
-**/
-typedef
-VOID
-(EFIAPI *EFI_PEI_SET_MEM) (
-  IN VOID                       *Buffer,
-  IN UINTN                      Size,
-  IN UINT8                      Value
-  );
-
-/**
-  This service publishes an interface that allows PEIMs to report status codes.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
-  @param  Type             Indicates the type of status code being reported.
-  @param  Value            Describes the current status of a hardware or
-                           software entity. This includes information about the class and
-                           subclass that is used to classify the entity as well as an operation.
-                           For progress codes, the operation is the current activity.
-                           For error codes, it is the exception.For debug codes,it is not defined at this time.
-  @param  Instance         The enumeration of a hardware or software entity within
-                           the system. A system may contain multiple entities that match a class/subclass
-                           pairing. The instance differentiates between them. An instance of 0 indicates
-                           that instance information is unavailable, not meaningful, or not relevant.
-                           Valid instance numbers start with 1.
-  @param  CallerId         This optional parameter may be used to identify the caller.
-                           This parameter allows the status code driver to apply different rules to
-                           different callers.
-  @param  Data             This optional parameter may be used to pass additional data.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_NOT_AVAILABLE_YET No progress code provider has installed an interface in the system.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) (
-  IN EFI_PEI_SERVICES         **PeiServices,
-  IN EFI_STATUS_CODE_TYPE     Type,
-  IN EFI_STATUS_CODE_VALUE    Value,
-  IN UINT32                   Instance,
-  IN EFI_GUID                 *CallerId OPTIONAL,
-  IN EFI_STATUS_CODE_DATA     *Data OPTIONAL
-  );
-
-/**
-  Resets the entire platform.
-
-  @param  PeiServices      An indirect pointer to the EFI_PEI_SERVICES
-                           table published by the PEI Foundation.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_NOT_AVAILABLE_YET The service has not been installed yet.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_RESET_SYSTEM) (
-  IN EFI_PEI_SERVICES   **PeiServices
-  );
-
-/**
-   
-	This service searches for files with a specific name, within
-	either the specified firmware volume or all firmware volumes.
-	The service returns a file handle of type EFI_PEI_FILE_HANDLE,
-  which must be unique within the system.
-
-  @param FileName 			A pointer to the name of the file to
-												find within the firmware volume.
-
-  @param VolumeHandle 	The firmware volume to search FileHandle
-                        Upon exit, points to the found file's
-                        handle or NULL if it could not be found.
-
-  @retval EFI_SUCCESS 						File was found.
-
-  @retval EFI_NOT_FOUND 					File was not found.
-
-  @retval EFI_INVALID_PARAMETER 	VolumeHandle or FileHandle or
-																	FileName was NULL.
-
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_FFS_FIND_BY_NAME) (
-	IN CONST 	EFI_GUID 						*FileName,
-	IN CONST	EFI_PEI_FV_HANDLE 	VolumeHandle,
-	OUT 			EFI_PEI_FILE_HANDLE *FileHandle
-);
-
-
-/**
-   
-  @param FileName 	Name of the file.
-
-  @param FileType 	File type. See EFI_FV_FILETYPE, which is
-                    defined in the Platform Initialization
-                    Firmware Storage Specification.
-
-  @param FileAttributes 	Attributes of the file. Type
-                          EFI_FV_FILE_ATTRIBUTES is defined in
-                          the Platform Initialization Firmware
-                          Storage Specification.
-
-  @param Buffer 	Points to the file's data (not the header).
-                  Not valid if EFI_FV_FILE_ATTRIB_MEMORY_MAPPED
-                  is zero.
-
-  @param BufferSize 	Size of the file's data.
-
-**/
-typedef struct {
-	EFI_GUID 								FileName;
-	EFI_FV_FILETYPE 				FileType;
-	EFI_FV_FILE_ATTRIBUTES 	FileAttributes;
-	VOID 										*Buffer;
-	UINT32 									BufferSize;
-} EFI_FV_FILE_INFO;
-
-/**
-   
-	This function returns information about a specific file,
-	including its file name, type, attributes, starting address and
-	size. If the firmware volume is not memory mapped then the
-  Buffer member will be NULL.
-
-  @param FileHandle   Handle of the file.
-
-  @param FileInfo     Upon exit, points to the file��s
-                      information.
-
-  @retval EFI_SUCCESS 						File information returned.
-  
-  @retval EFI_INVALID_PARAMETER 	If FileHandle does not
-                                  represent a valid file.
-  
-  @retval EFI_INVALID_PARAMETER 	If FileInfo is NULL.
-  
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_FFS_GET_FILE_INFO) (
-	IN CONST	EFI_PEI_FILE_HANDLE 	FileHandle,
-	OUT 			EFI_FV_FILE_INFO 			*FileInfo
-);
-
-
-/**
-   
-  @param FvAttributes 	Attributes of the firmware volume. Type
-                        EFI_FVB_ATTRIBUTES is defined in the
-                        Platform Initialization Firmware Storage
-                        Specficiation.
-
-  @param FvFormat 			Format of the firmware volume. For PI
-                        Architecture Firmware Volumes, this can
-                        be copied from FileSystemGuid in
-                        EFI_FIRMWARE_VOLUME_HEADER.
-
-  @param FvName 				Name of the firmware volume. For PI
-                        Architecture Firmware Volumes, this can
-                        be copied from VolumeName in the
-                        extended header of
-                        EFI_FIRMWARE_VOLUME_HEADER.
-
-  @param FvStart 				Points to the first byte of the firmware
-                        volume, if bit EFI_FVB_MEMORY_MAPPED is
-                        set in FvAttributes. FvSize Size of the
-                        firmware volume.
-
-**/
-typedef struct {
-	EFI_FVB_ATTRIBUTES 	FvAttributes;
-	EFI_GUID 						FvFormat;
-	EFI_GUID 						FvName;
-	VOID								*FvStart;
-	UINT64 							FvSize;
-} EFI_FV_INFO;
-
-/**
-   
-	This function returns information about a specific firmware
-	volume, including its name, type, attributes, starting address
-  and size.
-
-  @param VolumeHandle   Handle of the volume.
-
-  @param VolumeInfo     Upon exit, points to the volume��s
-                        information.
-
-	@retval EFI_SUCCESS 						File information returned.
-  
-  @retval EFI_INVALID_PARAMETER 	If FileHandle does not
-                                  represent a valid file.
-  
-  @retval EFI_INVALID_PARAMETER 	If FileInfo is NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) (
-	IN CONST	EFI_PEI_FV_HANDLE	*VolumeHandle,
-	OUT 			EFI_FV_INFO 			*VolumeInfo
-);
-
-/**
-   
-	This service registers a file handle so that after memory is
-	available, the PEIM will be re-loaded into permanent memory and
-	re-initialized. The PEIM registered this way will always be
-	initialized twice. The first time, this function call will
-	return EFI_SUCCESS. The second time, this function call will
-	return EFI_ALREADY_STARTED. Depending on the order in which
-	PEIMs are dispatched, the PEIM making this call may be
-	initialized after permanent memory is installed, even the first
-  time.
-
-  @param FileHandle 	PEIM��s file handle. Must be the currently
-                      xecuting PEIM.
-  
-  @retval EFI_SUCCESS 	The PEIM was successfully registered for
-                        shadowing.
-
-  @retval EFI_ALREADY_STARTED 	The PEIM was previously
-                                registered for shadowing.
-
-  @retval EFI_NOT_FOUND 	The FileHandle does not refer to a
-													valid file handle.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) (
-	IN CONST 	EFI_PEI_FILE_HANDLE FileHandle
-);
-
-
-//
-// PEI Specification Revision information
-//
-#define PEI_SPECIFICATION_MAJOR_REVISION  1
-#define PEI_SPECIFICATION_MINOR_REVISION  0
-
-//
-// PEI Services Table
-//
-#define PEI_SERVICES_SIGNATURE 	0x5652455320494550
-#define PEI_SERVICES_REVISION 	(PEI_SPECIFICATION_MAJOR_REVISION<<16) | (PEI_SPECIFICATION_MINOR_REVISION)
-
-struct EFI_PEI_SERVICES {
-	EFI_TABLE_HEADER 						Hdr;
-	//
-	// PPI Functions
-	//
-	EFI_PEI_INSTALL_PPI 				InstallPpi;
-	EFI_PEI_REINSTALL_PPI 			ReInstallPpi;
-	EFI_PEI_LOCATE_PPI 					LocatePpi;
-	EFI_PEI_NOTIFY_PPI					NotifyPpi;
-	//
-	// Boot Mode Functions
-	//
-	EFI_PEI_GET_BOOT_MODE 			GetBootMode;
-	EFI_PEI_SET_BOOT_MODE 			SetBootMode;
-	//
-	// HOB Functions
-	//
-	EFI_PEI_GET_HOB_LIST 				GetHobList;
-	EFI_PEI_CREATE_HOB 					CreateHob;
-	//
-	// Firmware Volume Functions
-	//
-	EFI_PEI_FFS_FIND_NEXT_VOLUME2 	FfsFindNextVolume;
-	EFI_PEI_FFS_FIND_NEXT_FILE2 		FfsFindNextFile;
-	EFI_PEI_FFS_FIND_SECTION_DATA2 	FfsFindSectionData;
-	//
-	// PEI Memory Functions
-	//
-	EFI_PEI_INSTALL_PEI_MEMORY 	InstallPeiMemory;
-	EFI_PEI_ALLOCATE_PAGES 			AllocatePages;
-	EFI_PEI_ALLOCATE_POOL 			AllocatePool;
-	EFI_PEI_COPY_MEM 						CopyMem;
-	EFI_PEI_SET_MEM 						SetMem;
-	//
-	// Status Code
-	EFI_PEI_REPORT_STATUS_CODE 	ReportStatusCode;
-	//
-	// Reset
-	//
-	EFI_PEI_RESET_SYSTEM 				ResetSystem;
-	//
-	// (the following interfaces are installed by publishing PEIM)
-	//
-	// I/O Abstractions
-	//
-	EFI_PEI_CPU_IO_PPI 					*CpuIo;
-	EFI_PEI_PCI_CFG2_PPI 				*PciCfg;
-	//
-	// Future Installed Services
-	EFI_PEI_FFS_FIND_BY_NAME 		FfsFindFileByName;
-	EFI_PEI_FFS_GET_FILE_INFO 	FfsGetFileInfo;
-	EFI_PEI_FFS_GET_VOLUME_INFO FfsGetVolumeInfo;
-	EFI_PEI_REGISTER_FOR_SHADOW RegisterForShadow;
-} ;
-
-
-typedef struct _EFI_SEC_PEI_HAND_OFF {
-  //
-  // Size of the data structure.
-  // 
-  UINT16  DataSize;
-
-  //
-  // Points to the first byte of the boot firmware volume, 
-  // which the PEI Dispatcher should search for 
-  // PEI modules.
-  // 
-  VOID    *BootFirmwareVolumeBase;
-
-  //
-  // Size of the boot firmware volume, in bytes.
-  // 
-  UINTN   BootFirmwareVolumeSize;
-
-  //
-  // Points to the first byte of the temporary RAM.
-  // 
-  VOID    *TemporaryRamBase;
-
-  //
-  // Size of the temporary RAM, in bytes.
-  // 
-  UINTN   TemporaryRamSize;
-
-  //
-  // Points to the first byte of the temporary RAM 
-  // available for use by the PEI Foundation. The area 
-  // described by PeiTemporaryRamBase and PeiTemporaryRamSize 
-  // must not extend outside beyond the area described by
-  // TemporaryRamBase & TemporaryRamSize. This area should not
-  // overlap with the area reported by StackBase and 
-  // StackSize.
-  //
-  VOID    *PeiTemporaryRamBase;
-
-  //
-  // Size of the available temporary RAM available for 
-  // use by the PEI Foundation, in bytes.
-  // 
-  UINTN   PeiTemporaryRamSize;
-
-  //
-  // Points to the first byte of the stack. 
-  // This are may be part of the memory described by 
-  // TemporaryRamBase and TemporaryRamSize 
-  // or may be an entirely separate area.
-  // 
-  VOID    *StackBase;
-
-  //
-  // Size of the stack, in bytes.
-  // 
-  UINTN   StackSize;
-} EFI_SEC_PEI_HAND_OFF;
-
-#endif
diff --git a/MdePkg/PiDxe.h b/MdePkg/PiDxe.h
deleted file mode 100644
index 7b72809777..0000000000
--- a/MdePkg/PiDxe.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
-
-  Root include file for Mde Package DXE_CORE, DXE, SMM, SAL type modules.
-
-  This is the include file for any module of type base. Base modules only use 
-  types defined via this include file and can be ported easily to any 
-  environment. There are a set of base libraries in the Mde Package that can
-  be used to implement base modules.
-
-Copyright (c) 2006 - 2007, Intel Corporation
-All rights reserved. This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef __PI_DXE_H__
-#define __PI_DXE_H__
-
-#include <Uefi/UefiBaseType.h>
-#include <Uefi/UefiSpec.h>
-
-#include <Pi/PiDxeCis.h>
-
-#endif
-
diff --git a/MdePkg/PiPei.h b/MdePkg/PiPei.h
deleted file mode 100644
index 043922d660..0000000000
--- a/MdePkg/PiPei.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
-
-  Root include file for Mde Package SEC, PEIM, PEI_CORE type modules.
-
-  This is the include file for any module of type base. Base modules only use 
-  types defined via this include file and can be ported easily to any 
-  environment. There are a set of base libraries in the Mde Package that can
-  be used to implement base modules.
-
-Copyright (c) 2006 - 2007, Intel Corporation
-All rights reserved. This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef __PI_PEI_H__
-#define __PI_PEI_H__
-
-#include <Uefi/UefiBaseType.h>
-#include <Pi/PiPeiCis.h>
-#include <Uefi/UefiMultiPhase.h>
-
-
-#endif
-
diff --git a/MdePkg/Uefi.h b/MdePkg/Uefi.h
deleted file mode 100644
index 3ae15dea9a..0000000000
--- a/MdePkg/Uefi.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/** @file
-
-  Root include file for Mde Package UEFI, UEFI_APPLICATION type modules.
-
-  This is the include file for any module of type base. Base modules only use 
-  types defined via this include file and can be ported easily to any 
-  environment. There are a set of base libraries in the Mde Package that can
-  be used to implement base modules.
-
-Copyright (c) 2006 - 2007, Intel Corporation
-All rights reserved. This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef __PI_UEFI_H__
-#define __PI_UEFI_H__
-
-#include <UefiBaseType.h>
-#include <UefiSpec.h>
-
-#endif
-
diff --git a/MdePkg/Uefi/UefiBaseType.h b/MdePkg/Uefi/UefiBaseType.h
deleted file mode 100644
index e0e25e155a..0000000000
--- a/MdePkg/Uefi/UefiBaseType.h
+++ /dev/null
@@ -1,141 +0,0 @@
-
-/* @file
-
-  Defines data types and constants introduced in UEFI.
-
-Copyright (c) 2006 - 2007, Intel Corporation
-All rights reserved. This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef __UEFI_BASETYPE_H__
-#define __UEFI_BASETYPE_H__
-
-#include "Base.h"
-
-//
-// Basical data type definitions introduced in UEFI.
-// 
-typedef GUID          						EFI_GUID;
-typedef RETURN_STATUS 						EFI_STATUS;
-typedef VOID											*EFI_HANDLE;
-
-typedef VOID  										*EFI_EVENT;
-
-typedef UINTN 										EFI_TPL;
-
-
-typedef UINT64    								EFI_LBA;
-
-
-typedef UINT16  									EFI_HII_HANDLE;
-typedef UINT16  									STRING_REF;
-
-typedef UINT64  									EFI_PHYSICAL_ADDRESS;
-typedef UINT64  									EFI_VIRTUAL_ADDRESS;
-
-//
-// EFI Time Abstraction:
-//  Year:       2000 - 20XX
-//  Month:      1 - 12
-//  Day:        1 - 31
-//  Hour:       0 - 23
-//  Minute:     0 - 59
-//  Second:     0 - 59
-//  Nanosecond: 0 - 999,999,999
-//  TimeZone:   -1440 to 1440 or 2047
-//
-typedef struct {
-  UINT16  Year;
-  UINT8   Month;
-  UINT8   Day;
-  UINT8   Hour;
-  UINT8   Minute;
-  UINT8   Second;
-  UINT8   Pad1;
-  UINT32  Nanosecond;
-  INT16   TimeZone;
-  UINT8   Daylight;
-  UINT8   Pad2;
-} EFI_TIME;
-
-//
-// Enumeration of EFI_STATUS.
-// 
-#define EFI_SUCCESS               RETURN_SUCCESS              
-#define EFI_LOAD_ERROR            RETURN_LOAD_ERROR           
-#define EFI_INVALID_PARAMETER     RETURN_INVALID_PARAMETER    
-#define EFI_UNSUPPORTED           RETURN_UNSUPPORTED          
-#define EFI_BAD_BUFFER_SIZE       RETURN_BAD_BUFFER_SIZE      
-#define EFI_BUFFER_TOO_SMALL      RETURN_BUFFER_TOO_SMALL     
-#define EFI_NOT_READY             RETURN_NOT_READY            
-#define EFI_DEVICE_ERROR          RETURN_DEVICE_ERROR         
-#define EFI_WRITE_PROTECTED       RETURN_WRITE_PROTECTED      
-#define EFI_OUT_OF_RESOURCES      RETURN_OUT_OF_RESOURCES     
-#define EFI_VOLUME_CORRUPTED      RETURN_VOLUME_CORRUPTED     
-#define EFI_VOLUME_FULL           RETURN_VOLUME_FULL          
-#define EFI_NO_MEDIA              RETURN_NO_MEDIA             
-#define EFI_MEDIA_CHANGED         RETURN_MEDIA_CHANGED        
-#define EFI_NOT_FOUND             RETURN_NOT_FOUND            
-#define EFI_ACCESS_DENIED         RETURN_ACCESS_DENIED        
-#define EFI_NO_RESPONSE           RETURN_NO_RESPONSE          
-#define EFI_NO_MAPPING            RETURN_NO_MAPPING           
-#define EFI_TIMEOUT               RETURN_TIMEOUT              
-#define EFI_NOT_STARTED           RETURN_NOT_STARTED          
-#define EFI_ALREADY_STARTED       RETURN_ALREADY_STARTED      
-#define EFI_ABORTED               RETURN_ABORTED              
-#define EFI_ICMP_ERROR            RETURN_ICMP_ERROR           
-#define EFI_TFTP_ERROR            RETURN_TFTP_ERROR           
-#define EFI_PROTOCOL_ERROR        RETURN_PROTOCOL_ERROR       
-#define EFI_INCOMPATIBLE_VERSION  RETURN_INCOMPATIBLE_VERSION 
-#define EFI_SECURITY_VIOLATION    RETURN_SECURITY_VIOLATION   
-#define EFI_CRC_ERROR             RETURN_CRC_ERROR   
-#define EFI_END_OF_MEDIA          RETURN_END_OF_MEDIA
-#define EFI_END_OF_FILE           RETURN_END_OF_FILE
-
-#define EFI_WARN_UNKNOWN_GLYPH    RETURN_WARN_UNKNOWN_GLYPH   
-#define EFI_WARN_DELETE_FAILURE   RETURN_WARN_DELETE_FAILURE  
-#define EFI_WARN_WRITE_FAILURE    RETURN_WARN_WRITE_FAILURE   
-#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL
-
-
-#define NULL_HANDLE 							((VOID *) 0)
-
-//
-// Define macro to encode the status code.
-// 
-#define EFIERR(_a)    						ENCODE_ERROR(_a)
-
-#define EFI_ERROR(A)              RETURN_ERROR(A)
-
-//
-// Define macros to build data structure signatures from characters.
-//
-#define EFI_SIGNATURE_16(A, B)        ((A) | (B << 8))
-#define EFI_SIGNATURE_32(A, B, C, D)  (EFI_SIGNATURE_16 (A, B) | (EFI_SIGNATURE_16 (C, D) << 16))
-#define EFI_SIGNATURE_64(A, B, C, D, E, F, G, H) \
-    (EFI_SIGNATURE_32 (A, B, C, D) | ((UINT64) (EFI_SIGNATURE_32 (E, F, G, H)) << 32))
-
-
-//
-//  Returns the byte offset to a field within a structure
-//
-#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(&(((TYPE *) 0)->Field)))
-
-//
-// The EFI memory allocation functions work in units of EFI_PAGEs that are
-// 4K. This should in no way be confused with the page size of the processor.
-// An EFI_PAGE is just the quanta of memory in EFI.
-//
-#define EFI_PAGE_SIZE							0x1000
-#define EFI_PAGE_MASK         		0xFFF
-#define EFI_PAGE_SHIFT        		12
-
-
-#endif
diff --git a/MdePkg/Uefi/UefiDevicePath.h b/MdePkg/Uefi/UefiDevicePath.h
deleted file mode 100644
index de5dbf7124..0000000000
--- a/MdePkg/Uefi/UefiDevicePath.h
+++ /dev/null
@@ -1,466 +0,0 @@
-/* @file
-  Device Path definitions introduced in UEFI.
-
-  This include file must only contain things defined in the UEFI 2.0 specification.
-  If a code construct is defined in the UEFI 2.0 specification it must be included
-  by this include file.
-
-  Copyright (c) 2006 - 2007, Intel Corporation
-  All rights reserved. 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:    UefiDevicePath.h
-
-**/
-
-#ifndef __UEFI_DEVICE_PATH_H__
-#define __UEFI_DEVICE_PATH_H__
-
-//
-// Device Path information
-//
-
-#pragma pack(1)
-
-//
-// Hardware Device Paths
-//
-#define HARDWARE_DEVICE_PATH      0x01
-
-#define HW_PCI_DP                 0x01
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT8                           Function;
-  UINT8                           Device;
-} PCI_DEVICE_PATH;
-
-#define HW_PCCARD_DP              0x02
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT8                           FunctionNumber;
-} PCCARD_DEVICE_PATH;
-
-#define HW_MEMMAP_DP              0x03
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          MemoryType;
-  EFI_PHYSICAL_ADDRESS            StartingAddress;
-  EFI_PHYSICAL_ADDRESS            EndingAddress;
-} MEMMAP_DEVICE_PATH;
-
-#define HW_VENDOR_DP              0x04
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  EFI_GUID                        Guid;
-} VENDOR_DEVICE_PATH;
-
-#define HW_CONTROLLER_DP          0x05
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          ControllerNumber;
-} CONTROLLER_DEVICE_PATH;
-
-//
-// ACPI Device Paths
-//
-#define ACPI_DEVICE_PATH          0x02
-
-#define ACPI_DP                   0x01
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          HID;
-  UINT32                          UID;
-} ACPI_HID_DEVICE_PATH;
-
-#define ACPI_EXTENDED_DP          0x02
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          HID;
-  UINT32                          UID;
-  UINT32                          CID;
-  //
-  // Optional variable length _HIDSTR
-  // Optional variable length _UIDSTR
-  //
-} ACPI_EXTENDED_HID_DEVICE_PATH;
-
-//
-//  EISA ID Macro
-//  EISA ID Definition 32-bits
-//   bits[15:0] - three character compressed ASCII EISA ID.
-//   bits[31:16] - binary number
-//    Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
-//
-#define PNP_EISA_ID_CONST         0x41d0
-#define EISA_ID(_Name, _Num)      ((UINT32) ((_Name) | (_Num) << 16))
-#define EISA_PNP_ID(_PNPId)       (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
-#define EFI_PNP_ID(_PNPId)        (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
-
-#define PNP_EISA_ID_MASK          0xffff
-#define EISA_ID_TO_NUM(_Id)       ((_Id) >> 16)
-
-
-#define ACPI_ADR_DP               0x03
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          ADR;
-} ACPI_ADR_DEVICE_PATH;
-
-
-//
-// Messaging Device Paths
-//
-#define MESSAGING_DEVICE_PATH     0x03
-
-#define MSG_ATAPI_DP              0x01
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT8                           PrimarySecondary;
-  UINT8                           SlaveMaster;
-  UINT16                          Lun;
-} ATAPI_DEVICE_PATH;
-
-#define MSG_SCSI_DP               0x02
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT16                          Pun;
-  UINT16                          Lun;
-} SCSI_DEVICE_PATH;
-
-#define MSG_FIBRECHANNEL_DP       0x03
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          Reserved;
-  UINT64                          WWN;
-  UINT64                          Lun;
-} FIBRECHANNEL_DEVICE_PATH;
-
-#define MSG_1394_DP               0x04
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          Reserved;
-  UINT64                          Guid;
-} F1394_DEVICE_PATH;
-
-#define MSG_USB_DP                0x05
-typedef struct {
-    EFI_DEVICE_PATH_PROTOCOL      Header;
-    UINT8                         ParentPortNumber;
-    UINT8                         InterfaceNumber;
-} USB_DEVICE_PATH;
-
-#define MSG_USB_CLASS_DP          0x0f
-typedef struct {
-    EFI_DEVICE_PATH_PROTOCOL      Header;
-    UINT16                        VendorId;
-    UINT16                        ProductId;
-    UINT8                         DeviceClass;
-    UINT8                         DeviceSubClass;
-    UINT8                         DeviceProtocol;
-} USB_CLASS_DEVICE_PATH;
-
-#define MSG_USB_WWID_DP           0x10
-typedef struct {
-    EFI_DEVICE_PATH_PROTOCOL      Header;
-    UINT16                        InterfaceNumber;
-    UINT16                        VendorId;
-    UINT16                        ProductId;
-    // CHAR16                     SerialNumber[...];
-} USB_WWID_DEVICE_PATH;
-
-
-#define MSG_DEVICE_LOGICAL_UNIT_DP  0x11
-typedef struct {
-    EFI_DEVICE_PATH_PROTOCOL      Header;
-    UINT8                         Lun;
-} DEVICE_LOGICAL_UNIT_DEVICE_PATH;
-
-#define MSG_SATA_DP								0x12
-typedef struct {
-	EFI_DEVICE_PATH_PROTOCOL      	Header;
-	UINT16													HbaPortNumber;
-	UINT16                          PortMultiplierPort;
-	UINT16                          LogicalUnitNumber;
-} SATA_DEVICE_PATH;
-
-#define MSG_I2O_DP                0x06
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          Tid;
-} I2O_DEVICE_PATH;
-
-#define MSG_MAC_ADDR_DP           0x0b
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  EFI_MAC_ADDRESS                 MacAddress;
-  UINT8                           IfType;
-} MAC_ADDR_DEVICE_PATH;
-
-#define MSG_IPv4_DP               0x0c
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  EFI_IPv4_ADDRESS                LocalIpAddress;
-  EFI_IPv4_ADDRESS                RemoteIpAddress;
-  UINT16                          LocalPort;
-  UINT16                          RemotePort;
-  UINT16                          Protocol;
-  BOOLEAN                         StaticIpAddress;
-} IPv4_DEVICE_PATH;
-
-#define MSG_IPv6_DP               0x0d
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  EFI_IPv6_ADDRESS                LocalIpAddress;
-  EFI_IPv6_ADDRESS                RemoteIpAddress;
-  UINT16                          LocalPort;
-  UINT16                          RemotePort;
-  UINT16                          Protocol;
-  BOOLEAN                         StaticIpAddress;
-} IPv6_DEVICE_PATH;
-
-#define MSG_INFINIBAND_DP         0x09
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          ResourceFlags;
-  UINT8                           PortGid[16];
-  UINT64                          ServiceId;
-  UINT64                          TargetPortId;
-  UINT64                          DeviceId;
-} INFINIBAND_DEVICE_PATH;
-
-#define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE                0x01
-#define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT  0x02
-#define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL           0x04
-#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL           0x08
-#define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL           0x10
-
-#define MSG_UART_DP               0x0e
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          Reserved;
-  UINT64                          BaudRate;
-  UINT8                           DataBits;
-  UINT8                           Parity;
-  UINT8                           StopBits;
-} UART_DEVICE_PATH;
-
-//
-// Use VENDOR_DEVICE_PATH struct
-//
-#define MSG_VENDOR_DP             0x0a
-typedef VENDOR_DEVICE_PATH 				VENDOR_DEFINED_DEVICE_PATH;
-
-#define DEVICE_PATH_MESSAGING_PC_ANSI     EFI_PC_ANSI_GUID
-#define DEVICE_PATH_MESSAGING_VT_100      EFI_VT_100_GUID
-#define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID
-#define DEVICE_PATH_MESSAGING_VT_UTF8     EFI_VT_UTF8_GUID
-
-#define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL   EFI_UART_DEVICE_PATH_GUID
-
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  EFI_GUID                        Guid;
-  UINT32                          FlowControlMap;
-} UART_FLOW_CONTROL_DEVICE_PATH;
-
-#define DEVICE_PATH_MESSAGING_SAS                 EFI_SAS_DEVICE_PATH_GUID
-
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  EFI_GUID                        Guid;
-  UINT32                          Reserved;
-  UINT64                          SasAddress;
-  UINT64                          Lun;
-  UINT16                          DeviceTopology;
-  UINT16                          RelativeTargetPort;
-} SAS_DEVICE_PATH;
-
-#define MSG_ISCSI_DP              0x13
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT16                          NetworkProtocol;
-  UINT16                          LoginOption;
-  UINT16                          Reserved;
-  UINT16                          TargetPortalGroupTag;
-  UINT64                          LUN;
-  // CHAR8                        iSCSI Target Name
-} ISCSI_DEVICE_PATH;
-
-#define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST             0x0000
-#define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C   0x0002
-#define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST               0x0000
-#define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C     0x0008
-#define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP              0x0000
-#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON               0x1000
-#define ISCSI_LOGIN_OPTION_CHAP_BI                      0x0000
-#define ISCSI_LOGIN_OPTION_CHAP_UNI                     0x2000
-
-//
-// Media Device Path
-//
-#define MEDIA_DEVICE_PATH         0x04
-
-#define MEDIA_HARDDRIVE_DP        0x01
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          PartitionNumber;
-  UINT64                          PartitionStart;
-  UINT64                          PartitionSize;
-  UINT8                           Signature[16];
-  UINT8                           MBRType;
-  UINT8                           SignatureType;
-} HARDDRIVE_DEVICE_PATH;
-
-#define MBR_TYPE_PCAT             0x01
-#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
-
-#define SIGNATURE_TYPE_MBR        0x01
-#define SIGNATURE_TYPE_GUID       0x02
-
-#define MEDIA_CDROM_DP            0x02
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          BootEntry;
-  UINT64                          PartitionStart;
-  UINT64                          PartitionSize;
-} CDROM_DEVICE_PATH;
-
-//
-// Use VENDOR_DEVICE_PATH struct
-//
-#define MEDIA_VENDOR_DP           0x03
-
-#define MEDIA_FILEPATH_DP         0x04
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  CHAR16                          PathName[1];
-} FILEPATH_DEVICE_PATH;
-
-#define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
-
-#define MEDIA_PROTOCOL_DP         0x05
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  EFI_GUID                        Protocol;
-} MEDIA_PROTOCOL_DEVICE_PATH;
-
-
-#define MEDIA_PIWG_FW_VOL_DP			0x6
-typedef MEDIA_PROTOCOL_DEVICE_PATH MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
-
-
-#define MEDIA_PIWG_FW_FILE_DP			0x7
-typedef MEDIA_PROTOCOL_DEVICE_PATH MEDIA_FW_VOL_DEVICE_PATH;
-
-//
-// BBS Device Path
-//
-#define BBS_DEVICE_PATH           0x05
-#define BBS_BBS_DP                0x01
-typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT16                          DeviceType;
-  UINT16                          StatusFlag;
-  CHAR8                           String[1];
-} BBS_BBS_DEVICE_PATH;
-
-//
-// DeviceType definitions - from BBS specification
-//
-#define BBS_TYPE_FLOPPY           0x01
-#define BBS_TYPE_HARDDRIVE        0x02
-#define BBS_TYPE_CDROM            0x03
-#define BBS_TYPE_PCMCIA           0x04
-#define BBS_TYPE_USB              0x05
-#define BBS_TYPE_EMBEDDED_NETWORK 0x06
-#define BBS_TYPE_BEV              0x80
-#define BBS_TYPE_UNKNOWN          0xFF
-
-
-//
-// Union of all possible Device Paths and pointers to Device Paths
-//
-
-typedef union {
-  EFI_DEVICE_PATH_PROTOCOL             DevPath;
-  PCI_DEVICE_PATH                      Pci;
-  PCCARD_DEVICE_PATH                   PcCard;
-  MEMMAP_DEVICE_PATH                   MemMap;
-  VENDOR_DEVICE_PATH                   Vendor;
-
-  CONTROLLER_DEVICE_PATH               Controller;
-  ACPI_HID_DEVICE_PATH                 Acpi;
-
-  ATAPI_DEVICE_PATH                    Atapi;
-  SCSI_DEVICE_PATH                     Scsi;
-  FIBRECHANNEL_DEVICE_PATH             FibreChannel;
-
-  F1394_DEVICE_PATH                    F1394;
-  USB_DEVICE_PATH                      Usb;
-  SATA_DEVICE_PATH                     Sata;
-  USB_CLASS_DEVICE_PATH                UsbClass;
-  I2O_DEVICE_PATH                      I2O;
-  MAC_ADDR_DEVICE_PATH                 MacAddr;
-  IPv4_DEVICE_PATH                     Ipv4;
-  IPv6_DEVICE_PATH                     Ipv6;
-  INFINIBAND_DEVICE_PATH               InfiniBand;
-  UART_DEVICE_PATH                     Uart;
-
-  HARDDRIVE_DEVICE_PATH                HardDrive;
-  CDROM_DEVICE_PATH                    CD;
-
-  FILEPATH_DEVICE_PATH                 FilePath;
-  MEDIA_PROTOCOL_DEVICE_PATH           MediaProtocol;
-
-  BBS_BBS_DEVICE_PATH                  Bbs;
-} EFI_DEV_PATH;
-
-
-
-typedef union {
-  EFI_DEVICE_PATH_PROTOCOL             *DevPath;
-  PCI_DEVICE_PATH                      *Pci;
-  PCCARD_DEVICE_PATH                   *PcCard;
-  MEMMAP_DEVICE_PATH                   *MemMap;
-  VENDOR_DEVICE_PATH                   *Vendor;
-
-  CONTROLLER_DEVICE_PATH               *Controller;
-  ACPI_HID_DEVICE_PATH                 *Acpi;
-  ACPI_EXTENDED_HID_DEVICE_PATH        *ExtendedAcpi;
-
-  ATAPI_DEVICE_PATH                    *Atapi;
-  SCSI_DEVICE_PATH                     *Scsi;
-  FIBRECHANNEL_DEVICE_PATH             *FibreChannel;
-
-  F1394_DEVICE_PATH                    *F1394;
-  USB_DEVICE_PATH                      *Usb;
-  SATA_DEVICE_PATH                     *Sata;
-  USB_CLASS_DEVICE_PATH                *UsbClass;
-  I2O_DEVICE_PATH                      *I2O;
-  MAC_ADDR_DEVICE_PATH                 *MacAddr;
-  IPv4_DEVICE_PATH                     *Ipv4;
-  IPv6_DEVICE_PATH                     *Ipv6;
-  INFINIBAND_DEVICE_PATH               *InfiniBand;
-  UART_DEVICE_PATH                     *Uart;
-
-  HARDDRIVE_DEVICE_PATH                *HardDrive;
-  CDROM_DEVICE_PATH                    *CD;
-
-  FILEPATH_DEVICE_PATH                 *FilePath;
-  MEDIA_PROTOCOL_DEVICE_PATH           *MediaProtocol;
-
-  BBS_BBS_DEVICE_PATH                  *Bbs;
-  UINT8                                *Raw;
-} EFI_DEV_PATH_PTR;
-
-#pragma pack()
-
-
-#endif
- 
-
diff --git a/MdePkg/Uefi/UefiGpt.h b/MdePkg/Uefi/UefiGpt.h
deleted file mode 100644
index e8bc1ca225..0000000000
--- a/MdePkg/Uefi/UefiGpt.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* @file
-  EFI Guid Partition Table Format Definition.
-
-  Copyright (c) 2006 - 2007, Intel Corporation
-  All rights reserved. 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:    UefiGpt.h
-
-**/
-
-#ifndef __UEFI_GPT_H__
-#define __UEFI_GPT_H__
-
-#define PRIMARY_PART_HEADER_LBA 1
-
-//
-// EFI Partition Table Signature: "EFI PART"
-// 
-#define EFI_PTAB_HEADER_ID      0x5452415020494645ULL
-
-#pragma pack(1)
-//
-// GPT Partition Table Header
-//
-typedef struct {
-  EFI_TABLE_HEADER  Header;
-  EFI_LBA           MyLBA;
-  EFI_LBA           AlternateLBA;
-  EFI_LBA           FirstUsableLBA;
-  EFI_LBA           LastUsableLBA;
-  EFI_GUID          DiskGUID;
-  EFI_LBA           PartitionEntryLBA;
-  UINT32            NumberOfPartitionEntries;
-  UINT32            SizeOfPartitionEntry;
-  UINT32            PartitionEntryArrayCRC32;
-} EFI_PARTITION_TABLE_HEADER;
-
-//
-// GPT Partition Entry
-//
-typedef struct {
-  EFI_GUID  PartitionTypeGUID;
-  EFI_GUID  UniquePartitionGUID;
-  EFI_LBA   StartingLBA;
-  EFI_LBA   EndingLBA;
-  UINT64    Attributes;
-  CHAR16    PartitionName[36];
-} EFI_PARTITION_ENTRY;
-
-//
-// GPT Partition Entry Status
-//
-typedef struct {
-  BOOLEAN OutOfRange;
-  BOOLEAN Overlap;
-} EFI_PARTITION_ENTRY_STATUS;
-
-#pragma pack()
-#endif
-
-
diff --git a/MdePkg/Uefi/UefiInternalFormRepresentation.h b/MdePkg/Uefi/UefiInternalFormRepresentation.h
deleted file mode 100644
index 1f16535c77..0000000000
--- a/MdePkg/Uefi/UefiInternalFormRepresentation.h
+++ /dev/null
@@ -1,425 +0,0 @@
-
-/** @file
-  This file defines the encoding for the VFR (Visual Form Representation) language.
-  IFR is primarily consumed by the EFI presentation engine, and produced by EFI
-  internal application and drivers as well as all add-in card option-ROM drivers
-
-  Copyright (c) 2006 - 2007, Intel Corporation                                                         
-  All rights reserved. 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:  UefiInternalFormRepresentation.h
-
-  @par Revision Reference:
-  These definitions are from UEFI2.1.
-
-**/
-
-#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
-#define __UEFI_INTERNAL_FORMREPRESENTATION_H__
-
-//
-// The following types are currently defined:
-//
-typedef UINT32  RELOFST;
-typedef CHAR16  *EFI_STRING;
-
-//
-// IFR Op codes
-//
-#define EFI_IFR_FORM_OP                 0x01
-#define EFI_IFR_SUBTITLE_OP             0x02
-#define EFI_IFR_TEXT_OP                 0x03
-#define EFI_IFR_GRAPHIC_OP              0x04
-#define EFI_IFR_ONE_OF_OP               0x05
-#define EFI_IFR_CHECKBOX_OP             0x06
-#define EFI_IFR_NUMERIC_OP              0x07
-#define EFI_IFR_PASSWORD_OP             0x08
-#define EFI_IFR_ONE_OF_OPTION_OP        0x09  // ONEOF OPTION field
-#define EFI_IFR_SUPPRESS_IF_OP          0x0A
-#define EFI_IFR_END_FORM_OP             0x0B
-#define EFI_IFR_HIDDEN_OP               0x0C
-#define EFI_IFR_END_FORM_SET_OP         0x0D
-#define EFI_IFR_FORM_SET_OP             0x0E
-#define EFI_IFR_REF_OP                  0x0F
-#define EFI_IFR_END_ONE_OF_OP           0x10
-#define EFI_IFR_END_OP                  EFI_IFR_END_ONE_OF_OP
-#define EFI_IFR_INCONSISTENT_IF_OP      0x11
-#define EFI_IFR_EQ_ID_VAL_OP            0x12
-#define EFI_IFR_EQ_ID_ID_OP             0x13
-#define EFI_IFR_EQ_ID_LIST_OP           0x14
-#define EFI_IFR_AND_OP                  0x15
-#define EFI_IFR_OR_OP                   0x16
-#define EFI_IFR_NOT_OP                  0x17
-#define EFI_IFR_END_IF_OP               0x18  // for endif of inconsistentif, suppressif, grayoutif
-#define EFI_IFR_GRAYOUT_IF_OP           0x19
-#define EFI_IFR_DATE_OP                 0x1A
-#define EFI_IFR_TIME_OP                 0x1B
-#define EFI_IFR_STRING_OP               0x1C
-#define EFI_IFR_LABEL_OP                0x1D
-#define EFI_IFR_SAVE_DEFAULTS_OP        0x1E
-#define EFI_IFR_RESTORE_DEFAULTS_OP     0x1F
-#define EFI_IFR_BANNER_OP               0x20
-#define EFI_IFR_INVENTORY_OP            0x21
-#define EFI_IFR_EQ_VAR_VAL_OP           0x22
-#define EFI_IFR_ORDERED_LIST_OP         0x23
-#define EFI_IFR_VARSTORE_OP             0x24
-#define EFI_IFR_VARSTORE_SELECT_OP      0x25
-#define EFI_IFR_VARSTORE_SELECT_PAIR_OP 0x26
-#define EFI_IFR_TRUE_OP                 0x27
-#define EFI_IFR_FALSE_OP                0x28
-#define EFI_IFR_GT_OP                   0x29
-#define EFI_IFR_GE_OP                   0x2A
-#define EFI_IFR_OEM_DEFINED_OP          0x2B
-#define EFI_IFR_LAST_OPCODE             EFI_IFR_OEM_DEFINED_OP
-#define EFI_IFR_OEM_OP                  0xFE
-#define EFI_IFR_NV_ACCESS_COMMAND       0xFF
-
-//
-// Define values for the flags fields in some VFR opcodes. These are
-// bitmasks.
-//
-#define EFI_IFR_FLAG_DEFAULT              0x01
-#define EFI_IFR_FLAG_MANUFACTURING        0x02
-#define EFI_IFR_FLAG_INTERACTIVE          0x04
-#define EFI_IFR_FLAG_NV_ACCESS            0x08
-#define EFI_IFR_FLAG_RESET_REQUIRED       0x10
-#define EFI_IFR_FLAG_LATE_CHECK           0x20
-
-#define EFI_NON_DEVICE_CLASS              0x00  // Useful when you do not want something in the Device Manager
-#define EFI_DISK_DEVICE_CLASS             0x01
-#define EFI_VIDEO_DEVICE_CLASS            0x02
-#define EFI_NETWORK_DEVICE_CLASS          0x04
-#define EFI_INPUT_DEVICE_CLASS            0x08
-#define EFI_ON_BOARD_DEVICE_CLASS         0x10
-#define EFI_OTHER_DEVICE_CLASS            0x20
-
-#define EFI_SETUP_APPLICATION_SUBCLASS    0x00
-#define EFI_GENERAL_APPLICATION_SUBCLASS  0x01
-#define EFI_FRONT_PAGE_SUBCLASS           0x02
-#define EFI_SINGLE_USE_SUBCLASS           0x03  // Used to display a single entity and then exit
-
-//
-// Used to flag dynamically created op-codes. This is meaningful to the IFR Library set
-// and the browser since we need to distinguish between compiled NV map data and created data.
-// We do not allow new entries to be created in the NV map dynamically however we still need
-// to display this information correctly.  To dynamically create op-codes and assume that their
-// data will be saved, ensure that the NV starting location they refer to is pre-defined in the
-// NV map.
-//
-#define EFI_IFR_FLAG_CREATED  128
-
-#pragma pack(1)
-//
-// IFR Structure definitions
-//
-typedef struct {
-  UINT8 OpCode;
-  UINT8 Length;
-} EFI_IFR_OP_HEADER;
-
-typedef struct {
-  EFI_IFR_OP_HEADER     Header;
-  EFI_GUID              Guid;
-  STRING_REF            FormSetTitle;
-  STRING_REF            Help;
-  EFI_PHYSICAL_ADDRESS  CallbackHandle;
-  UINT16                Class;
-  UINT16                SubClass;
-  UINT16                NvDataSize; // set once, size of the NV data as defined in the script
-} EFI_IFR_FORM_SET;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            FormId;
-  STRING_REF        FormTitle;
-} EFI_IFR_FORM;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            LabelId;
-} EFI_IFR_LABEL;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  STRING_REF        SubTitle;
-} EFI_IFR_SUBTITLE;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  STRING_REF        Help;
-  STRING_REF        Text;
-  STRING_REF        TextTwo;
-  UINT8             Flags;          // This is included solely for purposes of interactive/dynamic support.
-  UINT16            Key;            // Value to be passed to caller to identify this particular op-code
-} EFI_IFR_TEXT;
-
-//
-// goto
-//
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            FormId;
-  STRING_REF        Prompt;
-  STRING_REF        Help;   // The string Token for the context-help
-  UINT8             Flags;  // This is included solely for purposes of interactive/dynamic support.
-  UINT16            Key;    // Value to be passed to caller to identify this particular op-code
-} EFI_IFR_REF;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_END_FORM;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_END_FORM_SET;
-
-//
-// Also notice that the IFR_ONE_OF and IFR_CHECK_BOX are identical in structure......code assumes this to be true, if this ever
-// changes we need to revisit the InitializeTagStructures code
-//
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
-  UINT8             Width;      // The Size of the Data being saved
-  STRING_REF        Prompt;     // The String Token for the Prompt
-  STRING_REF        Help;       // The string Token for the context-help
-} EFI_IFR_ONE_OF;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId; // The offset in NV for storage of the data
-  UINT8             MaxEntries; // The maximum number of options in the ordered list (=size of NVStore)
-  STRING_REF        Prompt;     // The string token for the prompt
-  STRING_REF        Help;       // The string token for the context-help
-} EFI_IFR_ORDERED_LIST;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
-  UINT8             Width;      // The Size of the Data being saved
-  STRING_REF        Prompt;     // The String Token for the Prompt
-  STRING_REF        Help;       // The string Token for the context-help
-  UINT8             Flags;      // For now, if non-zero, means that it is the default option, - further definition likely
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code
-} EFI_IFR_CHECKBOX, EFI_IFR_CHECK_BOX;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  STRING_REF        Option;     // The string token describing the option
-  UINT16            Value;      // The value associated with this option that is stored in the NVRAM if chosen
-  UINT8             Flags;      // For now, if non-zero, means that it is the default option, - further definition likely above
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code
-} EFI_IFR_ONE_OF_OPTION;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
-  UINT8             Width;      // The Size of the Data being saved
-  STRING_REF        Prompt;     // The String Token for the Prompt
-  STRING_REF        Help;       // The string Token for the context-help
-  UINT8             Flags;      // This is included solely for purposes of interactive/dynamic support.
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code
-  UINT16            Minimum;
-  UINT16            Maximum;
-  UINT16            Step;       // If step is 0, then manual input is specified, otherwise, left/right arrow selection is called for
-  UINT16            Default;
-} EFI_IFR_NUMERIC;
-
-//
-// There is an interesting twist with regards to Time and Date.  This is one of the few items which can accept input from
-// a user, however may or may not need to use storage in the NVRAM space.  The decided method for determining if NVRAM space
-// will be used (only for a TimeOp or DateOp) is:  If .QuestionId == 0 && .Width == 0 (normally an impossibility) then use system
-// resources to store the data away and not NV resources.  In other words, the setup engine will call gRT->SetTime, and gRT->SetDate
-// for the saving of data, and the values displayed will be from the gRT->GetXXXX series of calls.
-//
-typedef struct {
-  EFI_IFR_NUMERIC Hour;
-  EFI_IFR_NUMERIC Minute;
-  EFI_IFR_NUMERIC Second;
-} EFI_IFR_TIME;
-
-typedef struct {
-  EFI_IFR_NUMERIC Year;
-  EFI_IFR_NUMERIC Month;
-  EFI_IFR_NUMERIC Day;
-} EFI_IFR_DATE;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId;   // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
-  UINT8             Width;        // The Size of the Data being saved -- BUGBUG -- remove someday
-  STRING_REF        Prompt;       // The String Token for the Prompt
-  STRING_REF        Help;         // The string Token for the context-help
-  UINT8             Flags;        // This is included solely for purposes of interactive/dynamic support.
-  UINT16            Key;          // Value to be passed to caller to identify this particular op-code
-  UINT8             MinSize;      // Minimum allowable sized password
-  UINT8             MaxSize;      // Maximum allowable sized password
-  UINT16            Encoding;
-} EFI_IFR_PASSWORD;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId;   // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
-  UINT8             Width;        // The Size of the Data being saved -- BUGBUG -- remove someday
-  STRING_REF        Prompt;       // The String Token for the Prompt
-  STRING_REF        Help;         // The string Token for the context-help
-  UINT8             Flags;        // This is included solely for purposes of interactive/dynamic support.
-  UINT16            Key;          // Value to be passed to caller to identify this particular op-code
-  UINT8             MinSize;      // Minimum allowable sized password
-  UINT8             MaxSize;      // Maximum allowable sized password
-} EFI_IFR_STRING;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_END_ONE_OF;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            Value;
-  UINT16            Key;
-} EFI_IFR_HIDDEN;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT8             Flags;
-} EFI_IFR_SUPPRESS;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT8             Flags;
-} EFI_IFR_GRAY_OUT;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  STRING_REF        Popup;
-  UINT8             Flags;
-} EFI_IFR_INCONSISTENT;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId;   // offset into variable storage
-  UINT8             Width;        // size of variable storage
-  UINT16            Value;        // value to compare against
-} EFI_IFR_EQ_ID_VAL;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId;   // offset into variable storage
-  UINT8             Width;        // size of variable storage
-  UINT16            ListLength;
-  UINT16            ValueList[1];
-} EFI_IFR_EQ_ID_LIST;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            QuestionId1;  // offset into variable storage for first value to compare
-  UINT8             Width;        // size of variable storage (must be same for both)
-  UINT16            QuestionId2;  // offset into variable storage for second value to compare
-} EFI_IFR_EQ_ID_ID;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            VariableId;   // offset into variable storage
-  UINT16            Value;        // value to compare against
-} EFI_IFR_EQ_VAR_VAL;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_AND;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_OR;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_NOT;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_END_EXPR, EFI_IFR_END_IF;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            FormId;
-  STRING_REF        Prompt;
-  STRING_REF        Help;
-  UINT8             Flags;
-  UINT16            Key;
-} EFI_IFR_SAVE_DEFAULTS;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  STRING_REF        Help;
-  STRING_REF        Text;
-  STRING_REF        TextTwo;      // optional text
-} EFI_IFR_INVENTORY;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  EFI_GUID          Guid;         // GUID for the variable
-  UINT16            VarId;        // variable store ID, as referenced elsewhere in the form
-  UINT16            Size;         // size of the variable storage
-} EFI_IFR_VARSTORE;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            VarId;        // variable store ID, as referenced elsewhere in the form
-} EFI_IFR_VARSTORE_SELECT;
-
-//
-// Used for the ideqid VFR statement where two variable stores may be referenced in the
-// same VFR statement.
-// A browser should treat this as an EFI_IFR_VARSTORE_SELECT statement and assume that all following
-// IFR opcodes use the VarId as defined here.
-//
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  UINT16            VarId;          // variable store ID, as referenced elsewhere in the form
-  UINT16            SecondaryVarId; // variable store ID, as referenced elsewhere in the form
-} EFI_IFR_VARSTORE_SELECT_PAIR;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_TRUE;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_FALSE;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_GT;
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-} EFI_IFR_GE;
-
-//
-// Save defaults and restore defaults have same structure
-//
-#define EFI_IFR_RESTORE_DEFAULTS  EFI_IFR_SAVE_DEFAULTS
-
-typedef struct {
-  EFI_IFR_OP_HEADER Header;
-  STRING_REF        Title;        // The string token for the banner title
-  UINT16            LineNumber;   // 1-based line number
-  UINT8             Alignment;    // left, center, or right-aligned
-} EFI_IFR_BANNER;
-
-#define EFI_IFR_BANNER_ALIGN_LEFT   0
-#define EFI_IFR_BANNER_ALIGN_CENTER 1
-#define EFI_IFR_BANNER_ALIGN_RIGHT  2
-#define EFI_IFR_BANNER_TIMEOUT      0xFF
-
-#pragma pack()
-
-
-
-#endif
diff --git a/MdePkg/Uefi/UefiMultiPhase.h b/MdePkg/Uefi/UefiMultiPhase.h
deleted file mode 100644
index 9f9c719494..0000000000
--- a/MdePkg/Uefi/UefiMultiPhase.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/** @file
-	This includes some definitions introduced in UEFI that will be used in both PEI and DXE phases.
-
-	Copyright (c) 2006, Intel Corporation                                                         
-	All rights reserved. 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:  UefiMultiPhase.h
-
-**/
-
-#ifndef __UEFI_MULTIPHASE_H__
-#define __UEFI_MULTIPHASE_H__
-
-//
-// Enumeration of memory types introduced in UEFI.
-// 
-typedef enum {
-	EfiReservedMemoryType,
-	EfiLoaderCode,
-	EfiLoaderData,
-	EfiBootServicesCode,
-	EfiBootServicesData,
-	EfiRuntimeServicesCode,
-	EfiRuntimeServicesData,
-	EfiConventionalMemory,
-	EfiUnusableMemory,
-	EfiACPIReclaimMemory,
-	EfiACPIMemoryNVS,
-	EfiMemoryMappedIO,
-	EfiMemoryMappedIOPortSpace,
-	EfiPalCode,
-	EfiMaxMemoryType
-} EFI_MEMORY_TYPE;
-
-
-//
-// Data structure that precedes all of the standard EFI table types.
-// 
-typedef struct {
-	UINT64  Signature;
-	UINT32  Revision;
-	UINT32  HeaderSize;
-	UINT32  CRC32;
-	UINT32  Reserved;
-} EFI_TABLE_HEADER;
-
-//
-// Attributes of variable.
-// 
-#define EFI_VARIABLE_NON_VOLATILE 								0x00000001
-#define EFI_VARIABLE_BOOTSERVICE_ACCESS 					0x00000002
-#define EFI_VARIABLE_RUNTIME_ACCESS 							0x00000004
-#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 				0x00000008
-
-//
-// This attribute is identified by the mnemonic 'HR' 
-// elsewhere in this specification.
-// 
-#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS		0x00000010
-
-
-
-//
-// _WIN_CERTIFICATE.wCertificateType
-// 
-#define WIN_CERT_TYPE_EFI_PKCS115 	0x0EF0
-#define WIN_CERT_TYPE_EFI_GUID 			0x0EF1
-
-/**
-   
-	The WIN_CERTIFICATE structure is part of the PE/COFF
-  specification and has the following definition:
-
-  @param dwLength   The length of the entire certificate,
-                    including the length of the header, in
-                    bytes.
-
-  @param wRevision 	The revision level of the WIN_CERTIFICATE
-                    structure. The current revision level is
-                    0x0200.
-
-  @param wCertificateType 	The certificate type. See
-                            WIN_CERT_TYPE_xxx for the UEFI
-                            certificate types. The UEFI
-                            specification reserves the range of
-                            certificate type values from 0x0EF0
-                            to 0x0EFF.
-
-  @param bCertificate 	The actual certificate. The format of
-                        the certificate depends on
-                        wCertificateType. The format of the UEFI
-                        certificates is defined below.
-
-
-**/
-typedef struct _WIN_CERTIFICATE {
-	UINT32 	dwLength;
-	UINT16 	wRevision;
-	UINT16 	wCertificateType;
-	//UINT8 bCertificate[ANYSIZE_ARRAY];
-} WIN_CERTIFICATE;
-
-//
-// WIN_CERTIFICATE_UEFI_GUID.CertType
-// 
-#define EFI_CERT_TYPE_RSA2048_SHA256_GUID \
-	{0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } }
-
-//
-// WIN_CERTIFICATE_UEFI_GUID.CertData
-// 
-typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 {
-	UINT32 	HashType;
-	UINT8 	PublicKey[256];
-	UINT8 	Signature[256];
-} EFI_CERT_BLOCK_RSA_2048_SHA256;
-
-
-/**
-   
-  @param Hdr 	This is the standard WIN_CERTIFICATE header, where
-              wCertificateType is set to
-              WIN_CERT_TYPE_UEFI_GUID.
-
-  @param CertType   This is the unique id which determines the
-                    format of the CertData. In this case, the
-                    value is EFI_CERT_TYPE_RSA2048_SHA256_GUID.
-
-  @param CertData 	This is the certificate data. The format of
-                    the data is determined by the CertType. In
-                    this case the value is
-                    EFI_CERT_BLOCK_RSA_2048_SHA256.
-
-  @param Information 	The WIN_CERTIFICATE_UEFI_GUID certificate
-                      type allows new types of certificates to
-                      be developed for driver authentication
-                      without requiring a new certificate type.
-                      The CertType defines the format of the
-                      CertData, which length is defined by the
-                      size of the certificate less the fixed
-                      size of the WIN_CERTIFICATE_UEFI_GUID
-                      structure.
-
-**/
-typedef struct _WIN_CERTIFICATE_UEFI_GUID {
-	WIN_CERTIFICATE 	Hdr;
-	EFI_GUID 					CertType;
-	// UINT8 						CertData[ANYSIZE_ARRAY];
-} WIN_CERTIFICATE_UEFI_GUID;
-
-
-
-
-
-
-/**
-   
-  Certificate which encapsulates the RSASSA_PKCS1-v1_5 digital
-  signature.
-  
-  The WIN_CERTIFICATE_UEFI_PKCS1_15 structure is derived from
-	WIN_CERTIFICATE and encapsulate the information needed to  
-	implement the RSASSA-PKCS1-v1_5 digital signature algorithm as  
-	specified in RFC2437.  
-  
-  @param Hdr  This is the standard WIN_CERTIFICATE header, where
-              wCertificateType is set to
-              WIN_CERT_TYPE_UEFI_PKCS1_15.
-  
-  @param HashAlgorithm  This is the hashing algorithm which was
-                        performed on the UEFI executable when
-                        creating the digital signature. It is
-                        one of the enumerated values pre-defined
-                        in Section 26.4.1. See
-                        EFI_HASH_ALGORITHM_x.
-  
-  @param Signature 	This is the actual digital signature. The
-                    size of the signature is the same size as
-                    the key (1024-bit key is 128 bytes) and can
-                    be determined by subtracting the length of
-                    the other parts of this header from the
-                    total length of the certificate as found in
-                    Hdr.dwLength.
-
-**/
-typedef struct _WIN_CERTIFICATE_EFI_PKCS1_15 {
-	WIN_CERTIFICATE	Hdr;
-	EFI_GUID 				HashAlgorithm;
-	// UINT8 Signature[ANYSIZE_ARRAY];
-} WIN_CERTIFICATE_EFI_PKCS1_15;
-
-
-/**
-   
-	AuthInfo is a WIN_CERTIFICATE using the wCertificateType
-	WIN_CERTIFICATE_UEFI_GUID and the CertType
-	EFI_CERT_TYPE_RSA2048_SHA256. If the attribute specifies
-	authenticated access, then the Data buffer should begin with an
-	authentication descriptor prior to the data payload and DataSize
-	should reflect the the data.and descriptor size. The caller
-	shall digest the Monotonic Count value and the associated data
-	for the variable update using the SHA-256 1-way hash algorithm.
-	The ensuing the 32-byte digest will be signed using the private
-	key associated w/ the public/private 2048-bit RSA key-pair. The
-	WIN_CERTIFICATE shall be used to describe the signature of the
-	Variable data *Data. In addition, the signature will also
-  include the MonotonicCount value to guard against replay attacks
-  
-  @param	MonotonicCount  Included in the signature of
-                          AuthInfo.Used to ensure freshness/no
-                          replay. Incremented during each
-                          "Write" access.
-  
-  @param AuthInfo 	Provides the authorization for the variable
-                    access. It is a signature across the
-                    variable data and the  Monotonic Count
-                    value. Caller uses Private key that is
-                    associated with a public key that has been
-                    provisioned via the key exchange.
-
-**/
-typedef struct {
-	UINT64 											MonotonicCount;
-	WIN_CERTIFICATE_UEFI_GUID 	AuthInfo;
-} EFI_VARIABLE_AUTHENTICATION;
-
-#endif
-
diff --git a/MdePkg/Uefi/UefiPxe.h b/MdePkg/Uefi/UefiPxe.h
deleted file mode 100644
index c9c21bb59e..0000000000
--- a/MdePkg/Uefi/UefiPxe.h
+++ /dev/null
@@ -1,1813 +0,0 @@
-/** @file
-  This header file contains all of the PXE type definitions,
-  structure prototypes, global variables and constants that
-  are needed for porting PXE to EFI.
-  
-  Copyright (c) 2006, Intel Corporation                                                         
-  All rights reserved. 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: EfiPxe.h
-  
-  @par Revision Reference:
-  32/64-bit PXE specification:
-  alpha-4, 99-Dec-17
-  
-**/
-
-#ifndef __EFI_PXE_H__
-#define __EFI_PXE_H__
-
-#pragma pack(1)
-
-
-
-#define PXE_BUSTYPE(a, b, c, d) \
-    ( \
-      (((PXE_UINT32) (d) & 0xFF) << 24) | (((PXE_UINT32) (c) & 0xFF) << 16) | (((PXE_UINT32) (b) & 0xFF) << 8) | \
-        ((PXE_UINT32) (a) & 0xFF) \
-    )
-
-//
-// UNDI ROM ID and devive ID signature
-//
-#define PXE_BUSTYPE_PXE PXE_BUSTYPE ('!', 'P', 'X', 'E')
-
-//
-// BUS ROM ID signatures
-//
-#define PXE_BUSTYPE_PCI     PXE_BUSTYPE ('P', 'C', 'I', 'R')
-#define PXE_BUSTYPE_PC_CARD PXE_BUSTYPE ('P', 'C', 'C', 'R')
-#define PXE_BUSTYPE_USB     PXE_BUSTYPE ('U', 'S', 'B', 'R')
-#define PXE_BUSTYPE_1394    PXE_BUSTYPE ('1', '3', '9', '4')
-
-#define PXE_SWAP_UINT16(n)  ((((PXE_UINT16) (n) & 0x00FF) << 8) | (((PXE_UINT16) (n) & 0xFF00) >> 8))
-
-#define PXE_SWAP_UINT32(n) \
-  ((((PXE_UINT32)(n) & 0x000000FF) << 24) | \
-   (((PXE_UINT32)(n) & 0x0000FF00) << 8)  | \
-   (((PXE_UINT32)(n) & 0x00FF0000) >> 8)  | \
-   (((PXE_UINT32)(n) & 0xFF000000) >> 24))
-
-#define PXE_SWAP_UINT64(n) \
-  ((((PXE_UINT64)(n) & 0x00000000000000FFULL) << 56) | \
-   (((PXE_UINT64)(n) & 0x000000000000FF00ULL) << 40) | \
-   (((PXE_UINT64)(n) & 0x0000000000FF0000ULL) << 24) | \
-   (((PXE_UINT64)(n) & 0x00000000FF000000ULL) << 8)  | \
-   (((PXE_UINT64)(n) & 0x000000FF00000000ULL) >> 8)  | \
-   (((PXE_UINT64)(n) & 0x0000FF0000000000ULL) >> 24) | \
-   (((PXE_UINT64)(n) & 0x00FF000000000000ULL) >> 40) | \
-   (((PXE_UINT64)(n) & 0xFF00000000000000ULL) >> 56))
-
-
-#define PXE_CPBSIZE_NOT_USED  0               // zero
-#define PXE_DBSIZE_NOT_USED   0               // zero
-#define PXE_CPBADDR_NOT_USED  (PXE_UINT64) 0  // zero
-#define PXE_DBADDR_NOT_USED   (PXE_UINT64) 0  // zero
-#define PXE_CONST             const
-
-#define PXE_VOLATILE          volatile
-
-typedef VOID           PXE_VOID;
-typedef UINT8          PXE_UINT8;
-typedef UINT16         PXE_UINT16;
-typedef UINT32         PXE_UINT32;
-typedef UINTN          PXE_UINTN;
- 
-//
-// typedef unsigned long PXE_UINT64;
-//
-typedef UINT64      PXE_UINT64;
-
-typedef PXE_UINT8 PXE_BOOL;
-#define PXE_FALSE 0 // zero
-#define PXE_TRUE  (!PXE_FALSE)
-
-typedef PXE_UINT16      PXE_OPCODE;
-
-//
-// Return UNDI operational state.
-//
-#define PXE_OPCODE_GET_STATE  0x0000
-
-//
-// Change UNDI operational state from Stopped to Started.
-//
-#define PXE_OPCODE_START  0x0001
-
-//
-// Change UNDI operational state from Started to Stopped.
-//
-#define PXE_OPCODE_STOP 0x0002
-
-//
-// Get UNDI initialization information.
-//
-#define PXE_OPCODE_GET_INIT_INFO  0x0003
-
-//
-// Get NIC configuration information.
-//
-#define PXE_OPCODE_GET_CONFIG_INFO  0x0004
-
-//
-// Changed UNDI operational state from Started to Initialized.
-//
-#define PXE_OPCODE_INITIALIZE 0x0005
-
-//
-// Re-initialize the NIC H/W.
-//
-#define PXE_OPCODE_RESET  0x0006
-
-//
-// Change the UNDI operational state from Initialized to Started.
-//
-#define PXE_OPCODE_SHUTDOWN 0x0007
-
-//
-// Read & change state of external interrupt enables.
-//
-#define PXE_OPCODE_INTERRUPT_ENABLES  0x0008
-
-//
-// Read & change state of packet receive filters.
-//
-#define PXE_OPCODE_RECEIVE_FILTERS  0x0009
-
-//
-// Read & change station MAC address.
-//
-#define PXE_OPCODE_STATION_ADDRESS  0x000A
-
-//
-// Read traffic statistics.
-//
-#define PXE_OPCODE_STATISTICS 0x000B
-
-//
-// Convert multicast IP address to multicast MAC address.
-//
-#define PXE_OPCODE_MCAST_IP_TO_MAC  0x000C
-
-//
-// Read or change non-volatile storage on the NIC.
-//
-#define PXE_OPCODE_NVDATA 0x000D
-
-//
-// Get & clear interrupt status.
-//
-#define PXE_OPCODE_GET_STATUS 0x000E
-
-//
-// Fill media header in packet for transmit.
-//
-#define PXE_OPCODE_FILL_HEADER  0x000F
-
-//
-// Transmit packet(s).
-//
-#define PXE_OPCODE_TRANSMIT 0x0010
-
-//
-// Receive packet.
-//
-#define PXE_OPCODE_RECEIVE  0x0011
-
-//
-// Last valid PXE UNDI OpCode number.
-//
-#define PXE_OPCODE_LAST_VALID 0x0011
-
-typedef PXE_UINT16  PXE_OPFLAGS;
-
-#define PXE_OPFLAGS_NOT_USED  0x0000
-
-//
-// //////////////////////////////////////
-// UNDI Get State
-//
-// No OpFlags
-
-////////////////////////////////////////
-// UNDI Start
-//
-// No OpFlags
-
-////////////////////////////////////////
-// UNDI Stop
-//
-// No OpFlags
-
-////////////////////////////////////////
-// UNDI Get Init Info
-//
-// No Opflags
-
-////////////////////////////////////////
-// UNDI Get Config Info
-//
-// No Opflags
-
-////////////////////////////////////////
-// UNDI Initialize
-//
-#define PXE_OPFLAGS_INITIALIZE_CABLE_DETECT_MASK    0x0001
-#define PXE_OPFLAGS_INITIALIZE_DETECT_CABLE         0x0000
-#define PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE  0x0001
-
-//
-// //////////////////////////////////////
-// UNDI Reset
-//
-#define PXE_OPFLAGS_RESET_DISABLE_INTERRUPTS  0x0001
-#define PXE_OPFLAGS_RESET_DISABLE_FILTERS     0x0002
-
-//
-// //////////////////////////////////////
-// UNDI Shutdown
-//
-// No OpFlags
-
-////////////////////////////////////////
-// UNDI Interrupt Enables
-//
-//
-// Select whether to enable or disable external interrupt signals.
-// Setting both enable and disable will return PXE_STATCODE_INVALID_OPFLAGS.
-//
-#define PXE_OPFLAGS_INTERRUPT_OPMASK  0xC000
-#define PXE_OPFLAGS_INTERRUPT_ENABLE  0x8000
-#define PXE_OPFLAGS_INTERRUPT_DISABLE 0x4000
-#define PXE_OPFLAGS_INTERRUPT_READ    0x0000
-
-//
-// Enable receive interrupts.  An external interrupt will be generated
-// after a complete non-error packet has been received.
-//
-#define PXE_OPFLAGS_INTERRUPT_RECEIVE 0x0001
-
-//
-// Enable transmit interrupts.  An external interrupt will be generated
-// after a complete non-error packet has been transmitted.
-//
-#define PXE_OPFLAGS_INTERRUPT_TRANSMIT  0x0002
-
-//
-// Enable command interrupts.  An external interrupt will be generated
-// when command execution stops.
-//
-#define PXE_OPFLAGS_INTERRUPT_COMMAND 0x0004
-
-//
-// Generate software interrupt.  Setting this bit generates an external
-// interrupt, if it is supported by the hardware.
-//
-#define PXE_OPFLAGS_INTERRUPT_SOFTWARE  0x0008
-
-//
-// //////////////////////////////////////
-// UNDI Receive Filters
-//
-//
-// Select whether to enable or disable receive filters.
-// Setting both enable and disable will return PXE_STATCODE_INVALID_OPCODE.
-//
-#define PXE_OPFLAGS_RECEIVE_FILTER_OPMASK   0xC000
-#define PXE_OPFLAGS_RECEIVE_FILTER_ENABLE   0x8000
-#define PXE_OPFLAGS_RECEIVE_FILTER_DISABLE  0x4000
-#define PXE_OPFLAGS_RECEIVE_FILTER_READ     0x0000
-
-//
-// To reset the contents of the multicast MAC address filter list,
-// set this OpFlag:
-//
-#define PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST 0x2000
-
-//
-// Enable unicast packet receiving.  Packets sent to the current station
-// MAC address will be received.
-//
-#define PXE_OPFLAGS_RECEIVE_FILTER_UNICAST  0x0001
-
-//
-// Enable broadcast packet receiving.  Packets sent to the broadcast
-// MAC address will be received.
-//
-#define PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST  0x0002
-
-//
-// Enable filtered multicast packet receiving.  Packets sent to any
-// of the multicast MAC addresses in the multicast MAC address filter
-// list will be received.  If the filter list is empty, no multicast
-//
-#define PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004
-
-//
-// Enable promiscuous packet receiving.  All packets will be received.
-//
-#define PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS  0x0008
-
-//
-// Enable promiscuous multicast packet receiving.  All multicast
-// packets will be received.
-//
-#define PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST  0x0010
-
-//
-// //////////////////////////////////////
-// UNDI Station Address
-//
-#define PXE_OPFLAGS_STATION_ADDRESS_READ   0x0000
-#define PXE_OPFLAGS_STATION_ADDRESS_WRITE  0x0000
-#define PXE_OPFLAGS_STATION_ADDRESS_RESET  0x0001
-
-//
-// //////////////////////////////////////
-// UNDI Statistics
-//
-#define PXE_OPFLAGS_STATISTICS_READ   0x0000
-#define PXE_OPFLAGS_STATISTICS_RESET  0x0001
-
-//
-// //////////////////////////////////////
-// UNDI MCast IP to MAC
-//
-//
-// Identify the type of IP address in the CPB.
-//
-#define PXE_OPFLAGS_MCAST_IP_TO_MAC_OPMASK  0x0003
-#define PXE_OPFLAGS_MCAST_IPV4_TO_MAC       0x0000
-#define PXE_OPFLAGS_MCAST_IPV6_TO_MAC       0x0001
-
-//
-// //////////////////////////////////////
-// UNDI NvData
-//
-//
-// Select the type of non-volatile data operation.
-//
-#define PXE_OPFLAGS_NVDATA_OPMASK 0x0001
-#define PXE_OPFLAGS_NVDATA_READ   0x0000
-#define PXE_OPFLAGS_NVDATA_WRITE  0x0001
-
-//
-// //////////////////////////////////////
-// UNDI Get Status
-//
-//
-// Return current interrupt status.  This will also clear any interrupts
-// that are currently set.  This can be used in a polling routine.  The
-// interrupt flags are still set and cleared even when the interrupts
-// are disabled.
-//
-#define PXE_OPFLAGS_GET_INTERRUPT_STATUS  0x0001
-
-//
-// Return list of transmitted buffers for recycling.  Transmit buffers
-// must not be changed or unallocated until they have recycled.  After
-// issuing a transmit command, wait for a transmit complete interrupt.
-// When a transmit complete interrupt is received, read the transmitted
-// buffers.  Do not plan on getting one buffer per interrupt.  Some
-// NICs and UNDIs may transmit multiple buffers per interrupt.
-//
-#define PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS 0x0002
-
-//
-// //////////////////////////////////////
-// UNDI Fill Header
-//
-#define PXE_OPFLAGS_FILL_HEADER_OPMASK      0x0001
-#define PXE_OPFLAGS_FILL_HEADER_FRAGMENTED  0x0001
-#define PXE_OPFLAGS_FILL_HEADER_WHOLE       0x0000
-
-//
-// //////////////////////////////////////
-// UNDI Transmit
-//
-//
-// S/W UNDI only.  Return after the packet has been transmitted.  A
-// transmit complete interrupt will still be generated and the transmit
-// buffer will have to be recycled.
-//
-#define PXE_OPFLAGS_SWUNDI_TRANSMIT_OPMASK  0x0001
-#define PXE_OPFLAGS_TRANSMIT_BLOCK          0x0001
-#define PXE_OPFLAGS_TRANSMIT_DONT_BLOCK     0x0000
-
-//
-//
-//
-#define PXE_OPFLAGS_TRANSMIT_OPMASK     0x0002
-#define PXE_OPFLAGS_TRANSMIT_FRAGMENTED 0x0002
-#define PXE_OPFLAGS_TRANSMIT_WHOLE      0x0000
-
-//
-// //////////////////////////////////////
-// UNDI Receive
-//
-// No OpFlags
-//
-typedef PXE_UINT16  PXE_STATFLAGS;
-
-#define PXE_STATFLAGS_INITIALIZE  0x0000
-
-//
-// //////////////////////////////////////
-// Common StatFlags that can be returned by all commands.
-//
-//
-// The COMMAND_COMPLETE and COMMAND_FAILED status flags must be
-// implemented by all UNDIs.  COMMAND_QUEUED is only needed by UNDIs
-// that support command queuing.
-//
-#define PXE_STATFLAGS_STATUS_MASK       0xC000
-#define PXE_STATFLAGS_COMMAND_COMPLETE  0xC000
-#define PXE_STATFLAGS_COMMAND_FAILED    0x8000
-#define PXE_STATFLAGS_COMMAND_QUEUED    0x4000
-
-//
-// //////////////////////////////////////
-// UNDI Get State
-//
-#define PXE_STATFLAGS_GET_STATE_MASK        0x0003
-#define PXE_STATFLAGS_GET_STATE_INITIALIZED 0x0002
-#define PXE_STATFLAGS_GET_STATE_STARTED     0x0001
-#define PXE_STATFLAGS_GET_STATE_STOPPED     0x0000
-
-//
-// //////////////////////////////////////
-// UNDI Start
-//
-// No additional StatFlags
-
-////////////////////////////////////////
-// UNDI Get Init Info
-//
-#define PXE_STATFLAGS_CABLE_DETECT_MASK           0x0001
-#define PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED  0x0000
-#define PXE_STATFLAGS_CABLE_DETECT_SUPPORTED      0x0001
-
-//
-// //////////////////////////////////////
-// UNDI Initialize
-//
-#define PXE_STATFLAGS_INITIALIZED_NO_MEDIA  0x0001
-
-//
-// //////////////////////////////////////
-// UNDI Reset
-//
-#define PXE_STATFLAGS_RESET_NO_MEDIA  0x0001
-
-//
-// //////////////////////////////////////
-// UNDI Shutdown
-//
-// No additional StatFlags
-
-////////////////////////////////////////
-// UNDI Interrupt Enables
-//
-//
-// If set, receive interrupts are enabled.
-//
-#define PXE_STATFLAGS_INTERRUPT_RECEIVE 0x0001
-
-//
-// If set, transmit interrupts are enabled.
-//
-#define PXE_STATFLAGS_INTERRUPT_TRANSMIT  0x0002
-
-//
-// If set, command interrupts are enabled.
-//
-#define PXE_STATFLAGS_INTERRUPT_COMMAND 0x0004
-
-//
-// //////////////////////////////////////
-// UNDI Receive Filters
-//
-//
-// If set, unicast packets will be received.
-//
-#define PXE_STATFLAGS_RECEIVE_FILTER_UNICAST  0x0001
-
-//
-// If set, broadcast packets will be received.
-//
-#define PXE_STATFLAGS_RECEIVE_FILTER_BROADCAST  0x0002
-
-//
-// If set, multicast packets that match up with the multicast address
-// filter list will be received.
-//
-#define PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004
-
-//
-// If set, all packets will be received.
-//
-#define PXE_STATFLAGS_RECEIVE_FILTER_PROMISCUOUS  0x0008
-
-//
-// If set, all multicast packets will be received.
-//
-#define PXE_STATFLAGS_RECEIVE_FILTER_ALL_MULTICAST  0x0010
-
-//
-// //////////////////////////////////////
-// UNDI Station Address
-//
-// No additional StatFlags
-
-////////////////////////////////////////
-// UNDI Statistics
-//
-// No additional StatFlags
-
-////////////////////////////////////////
-// UNDI MCast IP to MAC
-//
-// No additional StatFlags
-
-////////////////////////////////////////
-// UNDI NvData
-//
-// No additional StatFlags
-
-
-////////////////////////////////////////
-// UNDI Get Status
-//
-//
-// Use to determine if an interrupt has occurred.
-//
-#define PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK 0x000F
-#define PXE_STATFLAGS_GET_STATUS_NO_INTERRUPTS  0x0000
-
-//
-// If set, at least one receive interrupt occurred.
-//
-#define PXE_STATFLAGS_GET_STATUS_RECEIVE  0x0001
-
-//
-// If set, at least one transmit interrupt occurred.
-//
-#define PXE_STATFLAGS_GET_STATUS_TRANSMIT 0x0002
-
-//
-// If set, at least one command interrupt occurred.
-//
-#define PXE_STATFLAGS_GET_STATUS_COMMAND  0x0004
-
-//
-// If set, at least one software interrupt occurred.
-//
-#define PXE_STATFLAGS_GET_STATUS_SOFTWARE 0x0008
-
-//
-// This flag is set if the transmitted buffer queue is empty.  This flag
-// will be set if all transmitted buffer addresses get written into the DB.
-//
-#define PXE_STATFLAGS_GET_STATUS_TXBUF_QUEUE_EMPTY  0x0010
-
-//
-// This flag is set if no transmitted buffer addresses were written
-// into the DB.  (This could be because DBsize was too small.)
-//
-#define PXE_STATFLAGS_GET_STATUS_NO_TXBUFS_WRITTEN  0x0020
-
-//
-// //////////////////////////////////////
-// UNDI Fill Header
-//
-// No additional StatFlags
-
-////////////////////////////////////////
-// UNDI Transmit
-//
-// No additional StatFlags.
-
-////////////////////////////////////////
-// UNDI Receive
-//
-// No additional StatFlags.
-//
-typedef PXE_UINT16  PXE_STATCODE;
-
-#define PXE_STATCODE_INITIALIZE 0x0000
-
-//
-// //////////////////////////////////////
-// Common StatCodes returned by all UNDI commands, UNDI protocol functions
-// and BC protocol functions.
-//
-#define PXE_STATCODE_SUCCESS              0x0000
-
-#define PXE_STATCODE_INVALID_CDB          0x0001
-#define PXE_STATCODE_INVALID_CPB          0x0002
-#define PXE_STATCODE_BUSY                 0x0003
-#define PXE_STATCODE_QUEUE_FULL           0x0004
-#define PXE_STATCODE_ALREADY_STARTED      0x0005
-#define PXE_STATCODE_NOT_STARTED          0x0006
-#define PXE_STATCODE_NOT_SHUTDOWN         0x0007
-#define PXE_STATCODE_ALREADY_INITIALIZED  0x0008
-#define PXE_STATCODE_NOT_INITIALIZED      0x0009
-#define PXE_STATCODE_DEVICE_FAILURE       0x000A
-#define PXE_STATCODE_NVDATA_FAILURE       0x000B
-#define PXE_STATCODE_UNSUPPORTED          0x000C
-#define PXE_STATCODE_BUFFER_FULL          0x000D
-#define PXE_STATCODE_INVALID_PARAMETER    0x000E
-#define PXE_STATCODE_INVALID_UNDI         0x000F
-#define PXE_STATCODE_IPV4_NOT_SUPPORTED   0x0010
-#define PXE_STATCODE_IPV6_NOT_SUPPORTED   0x0011
-#define PXE_STATCODE_NOT_ENOUGH_MEMORY    0x0012
-#define PXE_STATCODE_NO_DATA              0x0013
-
-typedef PXE_UINT16  PXE_IFNUM;
-
-//
-// This interface number must be passed to the S/W UNDI Start command.
-//
-#define PXE_IFNUM_START 0x0000
-
-//
-// This interface number is returned by the S/W UNDI Get State and
-// Start commands if information in the CDB, CPB or DB is invalid.
-//
-#define PXE_IFNUM_INVALID 0x0000
-
-typedef PXE_UINT16  PXE_CONTROL;
-
-//
-// Setting this flag directs the UNDI to queue this command for later
-// execution if the UNDI is busy and it supports command queuing.
-// If queuing is not supported, a PXE_STATCODE_INVALID_CONTROL error
-// is returned.  If the queue is full, a PXE_STATCODE_CDB_QUEUE_FULL
-// error is returned.
-//
-#define PXE_CONTROL_QUEUE_IF_BUSY 0x0002
-
-//
-// These two bit values are used to determine if there are more UNDI
-// CDB structures following this one.  If the link bit is set, there
-// must be a CDB structure following this one.  Execution will start
-// on the next CDB structure as soon as this one completes successfully.
-// If an error is generated by this command, execution will stop.
-//
-#define PXE_CONTROL_LINK              0x0001
-#define PXE_CONTROL_LAST_CDB_IN_LIST  0x0000
-
-typedef PXE_UINT8   PXE_FRAME_TYPE;
-
-#define PXE_FRAME_TYPE_NONE                     0x00
-#define PXE_FRAME_TYPE_UNICAST                  0x01
-#define PXE_FRAME_TYPE_BROADCAST                0x02
-#define PXE_FRAME_TYPE_FILTERED_MULTICAST       0x03
-#define PXE_FRAME_TYPE_PROMISCUOUS              0x04
-#define PXE_FRAME_TYPE_PROMISCUOUS_MULTICAST    0x05
-
-#define PXE_FRAME_TYPE_MULTICAST                PXE_FRAME_TYPE_FILTERED_MULTICAST       
-
-typedef PXE_UINT32  PXE_IPV4;
-
-typedef PXE_UINT32  PXE_IPV6[4];
-#define PXE_MAC_LENGTH  32
-
-typedef PXE_UINT8   PXE_MAC_ADDR[PXE_MAC_LENGTH];
-
-typedef PXE_UINT8   PXE_IFTYPE;
-typedef UINT16      PXE_MEDIA_PROTOCOL;
-
-//
-// This information is from the ARP section of RFC 1700.
-//
-//     1 Ethernet (10Mb)                                    [JBP]
-//     2 Experimental Ethernet (3Mb)                        [JBP]
-//     3 Amateur Radio AX.25                                [PXK]
-//     4 Proteon ProNET Token Ring                          [JBP]
-//     5 Chaos                                              [GXP]
-//     6 IEEE 802 Networks                                  [JBP]
-//     7 ARCNET                                             [JBP]
-//     8 Hyperchannel                                       [JBP]
-//     9 Lanstar                                             [TU]
-//    10 Autonet Short Address                             [MXB1]
-//    11 LocalTalk                                         [JKR1]
-//    12 LocalNet (IBM* PCNet or SYTEK* LocalNET)           [JXM]
-//    13 Ultra link                                        [RXD2]
-//    14 SMDS                                              [GXC1]
-//    15 Frame Relay                                        [AGM]
-//    16 Asynchronous Transmission Mode (ATM)              [JXB2]
-//    17 HDLC                                               [JBP]
-//    18 Fibre Channel                            [Yakov Rekhter]
-//    19 Asynchronous Transmission Mode (ATM)      [Mark Laubach]
-//    20 Serial Line                                        [JBP]
-//    21 Asynchronous Transmission Mode (ATM)              [MXB1]
-//
-// * Other names and brands may be claimed as the property of others.
-//
-#define PXE_IFTYPE_ETHERNET       0x01
-#define PXE_IFTYPE_TOKENRING      0x04
-#define PXE_IFTYPE_FIBRE_CHANNEL  0x12
-
-typedef struct s_pxe_hw_undi {
-  PXE_UINT32  Signature;      // PXE_ROMID_SIGNATURE
-  PXE_UINT8   Len;            // sizeof(PXE_HW_UNDI)
-  PXE_UINT8   Fudge;          // makes 8-bit cksum equal zero
-  PXE_UINT8   Rev;            // PXE_ROMID_REV
-  PXE_UINT8   IFcnt;          // physical connector count
-  PXE_UINT8   MajorVer;       // PXE_ROMID_MAJORVER
-  PXE_UINT8   MinorVer;       // PXE_ROMID_MINORVER
-  PXE_UINT16  reserved;       // zero, not used
-  PXE_UINT32  Implementation; // implementation flags
-  // reserved             // vendor use
-  // UINT32 Status;       // status port
-  // UINT32 Command;      // command port
-  // UINT64 CDBaddr;      // CDB address port
-  //
-} PXE_HW_UNDI;
-
-//
-// Status port bit definitions
-//
-//
-// UNDI operation state
-//
-#define PXE_HWSTAT_STATE_MASK   0xC0000000
-#define PXE_HWSTAT_BUSY         0xC0000000
-#define PXE_HWSTAT_INITIALIZED  0x80000000
-#define PXE_HWSTAT_STARTED      0x40000000
-#define PXE_HWSTAT_STOPPED      0x00000000
-
-//
-// If set, last command failed
-//
-#define PXE_HWSTAT_COMMAND_FAILED 0x20000000
-
-//
-// If set, identifies enabled receive filters
-//
-#define PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED 0x00001000
-#define PXE_HWSTAT_PROMISCUOUS_RX_ENABLED           0x00000800
-#define PXE_HWSTAT_BROADCAST_RX_ENABLED             0x00000400
-#define PXE_HWSTAT_MULTICAST_RX_ENABLED             0x00000200
-#define PXE_HWSTAT_UNICAST_RX_ENABLED               0x00000100
-
-//
-// If set, identifies enabled external interrupts
-//
-#define PXE_HWSTAT_SOFTWARE_INT_ENABLED     0x00000080
-#define PXE_HWSTAT_TX_COMPLETE_INT_ENABLED  0x00000040
-#define PXE_HWSTAT_PACKET_RX_INT_ENABLED    0x00000020
-#define PXE_HWSTAT_CMD_COMPLETE_INT_ENABLED 0x00000010
-
-//
-// If set, identifies pending interrupts
-//
-#define PXE_HWSTAT_SOFTWARE_INT_PENDING     0x00000008
-#define PXE_HWSTAT_TX_COMPLETE_INT_PENDING  0x00000004
-#define PXE_HWSTAT_PACKET_RX_INT_PENDING    0x00000002
-#define PXE_HWSTAT_CMD_COMPLETE_INT_PENDING 0x00000001
-
-//
-// Command port definitions
-//
-//
-// If set, CDB identified in CDBaddr port is given to UNDI.
-// If not set, other bits in this word will be processed.
-//
-#define PXE_HWCMD_ISSUE_COMMAND   0x80000000
-#define PXE_HWCMD_INTS_AND_FILTS  0x00000000
-
-//
-// Use these to enable/disable receive filters.
-//
-#define PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE 0x00001000
-#define PXE_HWCMD_PROMISCUOUS_RX_ENABLE           0x00000800
-#define PXE_HWCMD_BROADCAST_RX_ENABLE             0x00000400
-#define PXE_HWCMD_MULTICAST_RX_ENABLE             0x00000200
-#define PXE_HWCMD_UNICAST_RX_ENABLE               0x00000100
-
-//
-// Use these to enable/disable external interrupts
-//
-#define PXE_HWCMD_SOFTWARE_INT_ENABLE     0x00000080
-#define PXE_HWCMD_TX_COMPLETE_INT_ENABLE  0x00000040
-#define PXE_HWCMD_PACKET_RX_INT_ENABLE    0x00000020
-#define PXE_HWCMD_CMD_COMPLETE_INT_ENABLE 0x00000010
-
-//
-// Use these to clear pending external interrupts
-//
-#define PXE_HWCMD_CLEAR_SOFTWARE_INT      0x00000008
-#define PXE_HWCMD_CLEAR_TX_COMPLETE_INT   0x00000004
-#define PXE_HWCMD_CLEAR_PACKET_RX_INT     0x00000002
-#define PXE_HWCMD_CLEAR_CMD_COMPLETE_INT  0x00000001
-
-typedef struct s_pxe_sw_undi {
-  PXE_UINT32  Signature;      // PXE_ROMID_SIGNATURE
-  PXE_UINT8   Len;            // sizeof(PXE_SW_UNDI)
-  PXE_UINT8   Fudge;          // makes 8-bit cksum zero
-  PXE_UINT8   Rev;            // PXE_ROMID_REV
-  PXE_UINT8   IFcnt;          // physical connector count
-  PXE_UINT8   MajorVer;       // PXE_ROMID_MAJORVER
-  PXE_UINT8   MinorVer;       // PXE_ROMID_MINORVER
-  PXE_UINT16  reserved1;      // zero, not used
-  PXE_UINT32  Implementation; // Implementation flags
-  PXE_UINT64  EntryPoint;     // API entry point
-  PXE_UINT8   reserved2[3];   // zero, not used
-  PXE_UINT8   BusCnt;         // number of bustypes supported
-  PXE_UINT32  BusType[1];     // list of supported bustypes
-} PXE_SW_UNDI;
-
-typedef union u_pxe_undi {
-  PXE_HW_UNDI hw;
-  PXE_SW_UNDI sw;
-} PXE_UNDI;
-
-//
-// Signature of !PXE structure
-//
-#define PXE_ROMID_SIGNATURE PXE_BUSTYPE ('!', 'P', 'X', 'E')
-
-//
-// !PXE structure format revision
-//
-#define PXE_ROMID_REV 0x02
-
-//
-// UNDI command interface revision.  These are the values that get sent
-// in option 94 (Client Network Interface Identifier) in the DHCP Discover
-// and PXE Boot Server Request packets.
-//
-#define PXE_ROMID_MAJORVER    0x03
-#define PXE_ROMID_MINORVER    0x01
-
-//
-// Implementation flags
-//
-#define PXE_ROMID_IMP_HW_UNDI                             0x80000000
-#define PXE_ROMID_IMP_SW_VIRT_ADDR                        0x40000000
-#define PXE_ROMID_IMP_64BIT_DEVICE                        0x00010000
-#define PXE_ROMID_IMP_FRAG_SUPPORTED                      0x00008000
-#define PXE_ROMID_IMP_CMD_LINK_SUPPORTED                  0x00004000
-#define PXE_ROMID_IMP_CMD_QUEUE_SUPPORTED                 0x00002000
-#define PXE_ROMID_IMP_MULTI_FRAME_SUPPORTED               0x00001000
-#define PXE_ROMID_IMP_NVDATA_SUPPORT_MASK                 0x00000C00
-#define PXE_ROMID_IMP_NVDATA_BULK_WRITABLE                0x00000C00
-#define PXE_ROMID_IMP_NVDATA_SPARSE_WRITABLE              0x00000800
-#define PXE_ROMID_IMP_NVDATA_READ_ONLY                    0x00000400
-#define PXE_ROMID_IMP_NVDATA_NOT_AVAILABLE                0x00000000
-#define PXE_ROMID_IMP_STATISTICS_SUPPORTED                0x00000200
-#define PXE_ROMID_IMP_STATION_ADDR_SETTABLE               0x00000100
-#define PXE_ROMID_IMP_PROMISCUOUS_MULTICAST_RX_SUPPORTED  0x00000080
-#define PXE_ROMID_IMP_PROMISCUOUS_RX_SUPPORTED            0x00000040
-#define PXE_ROMID_IMP_BROADCAST_RX_SUPPORTED              0x00000020
-#define PXE_ROMID_IMP_FILTERED_MULTICAST_RX_SUPPORTED     0x00000010
-#define PXE_ROMID_IMP_SOFTWARE_INT_SUPPORTED              0x00000008
-#define PXE_ROMID_IMP_TX_COMPLETE_INT_SUPPORTED           0x00000004
-#define PXE_ROMID_IMP_PACKET_RX_INT_SUPPORTED             0x00000002
-#define PXE_ROMID_IMP_CMD_COMPLETE_INT_SUPPORTED          0x00000001
-
-typedef struct s_pxe_cdb {
-  PXE_OPCODE    OpCode;
-  PXE_OPFLAGS   OpFlags;
-  PXE_UINT16    CPBsize;
-  PXE_UINT16    DBsize;
-  PXE_UINT64    CPBaddr;
-  PXE_UINT64    DBaddr;
-  PXE_STATCODE  StatCode;
-  PXE_STATFLAGS StatFlags;
-  PXE_UINT16    IFnum;
-  PXE_CONTROL   Control;
-} PXE_CDB;
-
-typedef union u_pxe_ip_addr {
-  PXE_IPV6  IPv6;
-  PXE_IPV4  IPv4;
-} PXE_IP_ADDR;
-
-typedef union pxe_device {
-  //
-  // PCI and PC Card NICs are both identified using bus, device
-  // and function numbers.  For PC Card, this may require PC
-  // Card services to be loaded in the BIOS or preboot
-  // environment.
-  //
-  struct {
-    //
-    // See S/W UNDI ROMID structure definition for PCI and
-    // PCC BusType definitions.
-    //
-    PXE_UINT32  BusType;
-
-    //
-    // Bus, device & function numbers that locate this device.
-    //
-    PXE_UINT16  Bus;
-    PXE_UINT8   Device;
-    PXE_UINT8   Function;
-  }
-  PCI, PCC;
-
-  //
-  // %%TBD - More information is needed about enumerating
-  // USB and 1394 devices.
-  //
-  struct {
-    PXE_UINT32  BusType;
-    PXE_UINT32  tdb;
-  }
-  USB, _1394;
-} PXE_DEVICE;
-
-//
-// cpb and db definitions
-//
-#define MAX_PCI_CONFIG_LEN    64  // # of dwords
-#define MAX_EEPROM_LEN        128 // #of dwords
-#define MAX_XMIT_BUFFERS      32  // recycling Q length for xmit_done
-#define MAX_MCAST_ADDRESS_CNT 8
-
-typedef struct s_pxe_cpb_start_30 {
-  //
-  // PXE_VOID Delay(UINTN microseconds);
-  //
-  // UNDI will never request a delay smaller than 10 microseconds
-  // and will always request delays in increments of 10 microseconds.
-  // The Delay() CallBack routine must delay between n and n + 10
-  // microseconds before returning control to the UNDI.
-  //
-  // This field cannot be set to zero.
-  //
-  UINT64  Delay;
-
-  //
-  // PXE_VOID Block(UINT32 enable);
-  //
-  // UNDI may need to block multi-threaded/multi-processor access to
-  // critical code sections when programming or accessing the network
-  // device.  To this end, a blocking service is needed by the UNDI.
-  // When UNDI needs a block, it will call Block() passing a non-zero
-  // value.  When UNDI no longer needs a block, it will call Block()
-  // with a zero value.  When called, if the Block() is already enabled,
-  // do not return control to the UNDI until the previous Block() is
-  // disabled.
-  //
-  // This field cannot be set to zero.
-  //
-  UINT64  Block;
-
-  //
-  // PXE_VOID Virt2Phys(UINT64 virtual, UINT64 physical_ptr);
-  //
-  // UNDI will pass the virtual address of a buffer and the virtual
-  // address of a 64-bit physical buffer.  Convert the virtual address
-  // to a physical address and write the result to the physical address
-  // buffer.  If virtual and physical addresses are the same, just
-  // copy the virtual address to the physical address buffer.
-  //
-  // This field can be set to zero if virtual and physical addresses
-  // are equal.
-  //
-  UINT64  Virt2Phys;
-  //
-  // PXE_VOID Mem_IO(UINT8 read_write, UINT8 len, UINT64 port,
-  //              UINT64 buf_addr);
-  //
-  // UNDI will read or write the device io space using this call back
-  // function. It passes the number of bytes as the len parameter and it
-  // will be either 1,2,4 or 8.
-  //
-  // This field can not be set to zero.
-  //
-  UINT64  Mem_IO;
-} PXE_CPB_START_30;
-
-typedef struct s_pxe_cpb_start_31 {
-  //
-  // PXE_VOID Delay(UINT64 UnqId, UINTN microseconds);
-  //
-  // UNDI will never request a delay smaller than 10 microseconds
-  // and will always request delays in increments of 10 microseconds.
-  // The Delay() CallBack routine must delay between n and n + 10
-  // microseconds before returning control to the UNDI.
-  //
-  // This field cannot be set to zero.
-  //
-  UINT64  Delay;
-
-  //
-  // PXE_VOID Block(UINT64 unq_id, UINT32 enable);
-  //
-  // UNDI may need to block multi-threaded/multi-processor access to
-  // critical code sections when programming or accessing the network
-  // device.  To this end, a blocking service is needed by the UNDI.
-  // When UNDI needs a block, it will call Block() passing a non-zero
-  // value.  When UNDI no longer needs a block, it will call Block()
-  // with a zero value.  When called, if the Block() is already enabled,
-  // do not return control to the UNDI until the previous Block() is
-  // disabled.
-  //
-  // This field cannot be set to zero.
-  //
-  UINT64  Block;
-
-  //
-  // PXE_VOID Virt2Phys(UINT64 UnqId, UINT64 virtual, UINT64 physical_ptr);
-  //
-  // UNDI will pass the virtual address of a buffer and the virtual
-  // address of a 64-bit physical buffer.  Convert the virtual address
-  // to a physical address and write the result to the physical address
-  // buffer.  If virtual and physical addresses are the same, just
-  // copy the virtual address to the physical address buffer.
-  //
-  // This field can be set to zero if virtual and physical addresses
-  // are equal.
-  //
-  UINT64  Virt2Phys;
-  //
-  // PXE_VOID Mem_IO(UINT64 UnqId, UINT8 read_write, UINT8 len, UINT64 port,
-  //              UINT64 buf_addr);
-  //
-  // UNDI will read or write the device io space using this call back
-  // function. It passes the number of bytes as the len parameter and it
-  // will be either 1,2,4 or 8.
-  //
-  // This field can not be set to zero.
-  //
-  UINT64  Mem_IO;
-  //
-  // PXE_VOID Map_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,
-  //                 UINT32 Direction, UINT64 mapped_addr);
-  //
-  // UNDI will pass the virtual address of a buffer, direction of the data
-  // flow from/to the mapped buffer (the constants are defined below)
-  // and a place holder (pointer) for the mapped address.
-  // This call will Map the given address to a physical DMA address and write
-  // the result to the mapped_addr pointer.  If there is no need to
-  // map the given address to a lower address (i.e. the given address is
-  // associated with a physical address that is already compatible to be
-  // used with the DMA, it converts the given virtual address to it's
-  // physical address and write that in the mapped address pointer.
-  //
-  // This field can be set to zero if there is no mapping service available
-  //
-  UINT64  Map_Mem;
-
-  //
-  // PXE_VOID UnMap_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,
-  //            UINT32 Direction, UINT64 mapped_addr);
-  //
-  // UNDI will pass the virtual and mapped addresses of a buffer
-  // This call will un map the given address
-  //
-  // This field can be set to zero if there is no unmapping service available
-  //
-  UINT64  UnMap_Mem;
-
-  //
-  // PXE_VOID Sync_Mem(UINT64 unq_id, UINT64 virtual,
-  //            UINT32 size, UINT32 Direction, UINT64 mapped_addr);
-  //
-  // UNDI will pass the virtual and mapped addresses of a buffer
-  // This call will synchronize the contents of both the virtual and mapped
-  // buffers for the given Direction.
-  //
-  // This field can be set to zero if there is no service available
-  //
-  UINT64  Sync_Mem;
-
-  //
-  // protocol driver can provide anything for this Unique_ID, UNDI remembers
-  // that as just a 64bit value assocaited to the interface specified by
-  // the ifnum and gives it back as a parameter to all the call-back routines
-  // when calling for that interface!
-  //
-  UINT64  Unique_ID;
-  //
-} PXE_CPB_START_31;
-
-#define TO_AND_FROM_DEVICE    0
-#define FROM_DEVICE           1
-#define TO_DEVICE             2
-
-#define PXE_DELAY_MILLISECOND 1000
-#define PXE_DELAY_SECOND      1000000
-#define PXE_IO_READ           0
-#define PXE_IO_WRITE          1
-#define PXE_MEM_READ          2
-#define PXE_MEM_WRITE         4
-
-typedef struct s_pxe_db_get_init_info {
-  //
-  // Minimum length of locked memory buffer that must be given to
-  // the Initialize command. Giving UNDI more memory will generally
-  // give better performance.
-  //
-  // If MemoryRequired is zero, the UNDI does not need and will not
-  // use system memory to receive and transmit packets.
-  //
-  PXE_UINT32  MemoryRequired;
-
-  //
-  // Maximum frame data length for Tx/Rx excluding the media header.
-  //
-  PXE_UINT32  FrameDataLen;
-
-  //
-  // Supported link speeds are in units of mega bits.  Common ethernet
-  // values are 10, 100 and 1000.  Unused LinkSpeeds[] entries are zero
-  // filled.
-  //
-  PXE_UINT32  LinkSpeeds[4];
-
-  //
-  // Number of non-volatile storage items.
-  //
-  PXE_UINT32  NvCount;
-
-  //
-  // Width of non-volatile storage item in bytes.  0, 1, 2 or 4
-  //
-  PXE_UINT16  NvWidth;
-
-  //
-  // Media header length.  This is the typical media header length for
-  // this UNDI.  This information is needed when allocating receive
-  // and transmit buffers.
-  //
-  PXE_UINT16  MediaHeaderLen;
-
-  //
-  // Number of bytes in the NIC hardware (MAC) address.
-  //
-  PXE_UINT16  HWaddrLen;
-
-  //
-  // Maximum number of multicast MAC addresses in the multicast
-  // MAC address filter list.
-  //
-  PXE_UINT16  MCastFilterCnt;
-
-  //
-  // Default number and size of transmit and receive buffers that will
-  // be allocated by the UNDI.  If MemoryRequired is non-zero, this
-  // allocation will come out of the memory buffer given to the Initialize
-  // command.  If MemoryRequired is zero, this allocation will come out of
-  // memory on the NIC.
-  //
-  PXE_UINT16  TxBufCnt;
-  PXE_UINT16  TxBufSize;
-  PXE_UINT16  RxBufCnt;
-  PXE_UINT16  RxBufSize;
-
-  //
-  // Hardware interface types defined in the Assigned Numbers RFC
-  // and used in DHCP and ARP packets.
-  // See the PXE_IFTYPE typedef and PXE_IFTYPE_xxx macros.
-  //
-  PXE_UINT8   IFtype;
-
-  //
-  // Supported duplex.  See PXE_DUPLEX_xxxxx #defines below.
-  //
-  PXE_UINT8   SupportedDuplexModes;
-
-  //
-  // Supported loopback options.  See PXE_LOOPBACK_xxxxx #defines below.
-  //
-  PXE_UINT8   SupportedLoopBackModes;
-} PXE_DB_GET_INIT_INFO;
-
-#define PXE_MAX_TXRX_UNIT_ETHER           1500
-
-#define PXE_HWADDR_LEN_ETHER              0x0006
-#define PXE_MAC_HEADER_LEN_ETHER          0x000E
-
-#define PXE_DUPLEX_ENABLE_FULL_SUPPORTED  1
-#define PXE_DUPLEX_FORCE_FULL_SUPPORTED   2
-
-#define PXE_LOOPBACK_INTERNAL_SUPPORTED   1
-#define PXE_LOOPBACK_EXTERNAL_SUPPORTED   2
-
-typedef struct s_pxe_pci_config_info {
-  //
-  // This is the flag field for the PXE_DB_GET_CONFIG_INFO union.
-  // For PCI bus devices, this field is set to PXE_BUSTYPE_PCI.
-  //
-  UINT32  BusType;
-
-  //
-  // This identifies the PCI network device that this UNDI interface
-  // is bound to.
-  //
-  UINT16  Bus;
-  UINT8   Device;
-  UINT8   Function;
-
-  //
-  // This is a copy of the PCI configuration space for this
-  // network device.
-  //
-  union {
-    UINT8   Byte[256];
-    UINT16  Word[128];
-    UINT32  Dword[64];
-  } Config;
-} PXE_PCI_CONFIG_INFO;
-
-typedef struct s_pxe_pcc_config_info {
-  //
-  // This is the flag field for the PXE_DB_GET_CONFIG_INFO union.
-  // For PCC bus devices, this field is set to PXE_BUSTYPE_PCC.
-  //
-  PXE_UINT32  BusType;
-
-  //
-  // This identifies the PCC network device that this UNDI interface
-  // is bound to.
-  //
-  PXE_UINT16  Bus;
-  PXE_UINT8   Device;
-  PXE_UINT8   Function;
-
-  //
-  // This is a copy of the PCC configuration space for this
-  // network device.
-  //
-  union {
-    PXE_UINT8   Byte[256];
-    PXE_UINT16  Word[128];
-    PXE_UINT32  Dword[64];
-  } Config;
-} PXE_PCC_CONFIG_INFO;
-
-typedef union u_pxe_db_get_config_info {
-  PXE_PCI_CONFIG_INFO   pci;
-  PXE_PCC_CONFIG_INFO   pcc;
-} PXE_DB_GET_CONFIG_INFO;
-
-typedef struct s_pxe_cpb_initialize {
-  //
-  // Address of first (lowest) byte of the memory buffer.  This buffer must
-  // be in contiguous physical memory and cannot be swapped out.  The UNDI
-  // will be using this for transmit and receive buffering.
-  //
-  PXE_UINT64  MemoryAddr;
-
-  //
-  // MemoryLength must be greater than or equal to MemoryRequired
-  // returned by the Get Init Info command.
-  //
-  PXE_UINT32  MemoryLength;
-
-  //
-  // Desired link speed in Mbit/sec.  Common ethernet values are 10, 100
-  // and 1000.  Setting a value of zero will auto-detect and/or use the
-  // default link speed (operation depends on UNDI/NIC functionality).
-  //
-  PXE_UINT32  LinkSpeed;
-
-  //
-  // Suggested number and size of receive and transmit buffers to
-  // allocate.  If MemoryAddr and MemoryLength are non-zero, this
-  // allocation comes out of the supplied memory buffer.  If MemoryAddr
-  // and MemoryLength are zero, this allocation comes out of memory
-  // on the NIC.
-  //
-  // If these fields are set to zero, the UNDI will allocate buffer
-  // counts and sizes as it sees fit.
-  //
-  PXE_UINT16  TxBufCnt;
-  PXE_UINT16  TxBufSize;
-  PXE_UINT16  RxBufCnt;
-  PXE_UINT16  RxBufSize;
-
-  //
-  // The following configuration parameters are optional and must be zero
-  // to use the default values.
-  //
-  PXE_UINT8   DuplexMode;
-
-  PXE_UINT8   LoopBackMode;
-} PXE_CPB_INITIALIZE;
-
-#define PXE_DUPLEX_DEFAULT      0x00
-#define PXE_FORCE_FULL_DUPLEX   0x01
-#define PXE_ENABLE_FULL_DUPLEX  0x02
-#define PXE_FORCE_HALF_DUPLEX   0x04
-#define PXE_DISABLE_FULL_DUPLEX 0x08
-
-#define LOOPBACK_NORMAL         0
-#define LOOPBACK_INTERNAL       1
-#define LOOPBACK_EXTERNAL       2
-
-typedef struct s_pxe_db_initialize {
-  //
-  // Actual amount of memory used from the supplied memory buffer.  This
-  // may be less that the amount of memory suppllied and may be zero if
-  // the UNDI and network device do not use external memory buffers.
-  //
-  // Memory used by the UNDI and network device is allocated from the
-  // lowest memory buffer address.
-  //
-  PXE_UINT32  MemoryUsed;
-
-  //
-  // Actual number and size of receive and transmit buffers that were
-  // allocated.
-  //
-  PXE_UINT16  TxBufCnt;
-  PXE_UINT16  TxBufSize;
-  PXE_UINT16  RxBufCnt;
-  PXE_UINT16  RxBufSize;
-} PXE_DB_INITIALIZE;
-
-typedef struct s_pxe_cpb_receive_filters {
-  //
-  // List of multicast MAC addresses.  This list, if present, will
-  // replace the existing multicast MAC address filter list.
-  //
-  PXE_MAC_ADDR  MCastList[MAX_MCAST_ADDRESS_CNT];
-} PXE_CPB_RECEIVE_FILTERS;
-
-typedef struct s_pxe_db_receive_filters {
-  //
-  // Filtered multicast MAC address list.
-  //
-  PXE_MAC_ADDR  MCastList[MAX_MCAST_ADDRESS_CNT];
-} PXE_DB_RECEIVE_FILTERS;
-
-typedef struct s_pxe_cpb_station_address {
-  //
-  // If supplied and supported, the current station MAC address
-  // will be changed.
-  //
-  PXE_MAC_ADDR  StationAddr;
-} PXE_CPB_STATION_ADDRESS;
-
-typedef struct s_pxe_dpb_station_address {
-  //
-  // Current station MAC address.
-  //
-  PXE_MAC_ADDR  StationAddr;
-
-  //
-  // Station broadcast MAC address.
-  //
-  PXE_MAC_ADDR  BroadcastAddr;
-
-  //
-  // Permanent station MAC address.
-  //
-  PXE_MAC_ADDR  PermanentAddr;
-} PXE_DB_STATION_ADDRESS;
-
-typedef struct s_pxe_db_statistics {
-  //
-  // Bit field identifying what statistic data is collected by the
-  // UNDI/NIC.
-  // If bit 0x00 is set, Data[0x00] is collected.
-  // If bit 0x01 is set, Data[0x01] is collected.
-  // If bit 0x20 is set, Data[0x20] is collected.
-  // If bit 0x21 is set, Data[0x21] is collected.
-  // Etc.
-  //
-  PXE_UINT64  Supported;
-
-  //
-  // Statistic data.
-  //
-  PXE_UINT64  Data[64];
-} PXE_DB_STATISTICS;
-
-//
-// Total number of frames received.  Includes frames with errors and
-// dropped frames.
-//
-#define PXE_STATISTICS_RX_TOTAL_FRAMES  0x00
-
-//
-// Number of valid frames received and copied into receive buffers.
-//
-#define PXE_STATISTICS_RX_GOOD_FRAMES 0x01
-
-//
-// Number of frames below the minimum length for the media.
-// This would be <64 for ethernet.
-//
-#define PXE_STATISTICS_RX_UNDERSIZE_FRAMES  0x02
-
-//
-// Number of frames longer than the maxminum length for the
-// media.  This would be >1500 for ethernet.
-//
-#define PXE_STATISTICS_RX_OVERSIZE_FRAMES 0x03
-
-//
-// Valid frames that were dropped because receive buffers were full.
-//
-#define PXE_STATISTICS_RX_DROPPED_FRAMES  0x04
-
-//
-// Number of valid unicast frames received and not dropped.
-//
-#define PXE_STATISTICS_RX_UNICAST_FRAMES  0x05
-
-//
-// Number of valid broadcast frames received and not dropped.
-//
-#define PXE_STATISTICS_RX_BROADCAST_FRAMES  0x06
-
-//
-// Number of valid mutlicast frames received and not dropped.
-//
-#define PXE_STATISTICS_RX_MULTICAST_FRAMES  0x07
-
-//
-// Number of frames w/ CRC or alignment errors.
-//
-#define PXE_STATISTICS_RX_CRC_ERROR_FRAMES  0x08
-
-//
-// Total number of bytes received.  Includes frames with errors
-// and dropped frames.
-//
-#define PXE_STATISTICS_RX_TOTAL_BYTES 0x09
-
-//
-// Transmit statistics.
-//
-#define PXE_STATISTICS_TX_TOTAL_FRAMES      0x0A
-#define PXE_STATISTICS_TX_GOOD_FRAMES       0x0B
-#define PXE_STATISTICS_TX_UNDERSIZE_FRAMES  0x0C
-#define PXE_STATISTICS_TX_OVERSIZE_FRAMES   0x0D
-#define PXE_STATISTICS_TX_DROPPED_FRAMES    0x0E
-#define PXE_STATISTICS_TX_UNICAST_FRAMES    0x0F
-#define PXE_STATISTICS_TX_BROADCAST_FRAMES  0x10
-#define PXE_STATISTICS_TX_MULTICAST_FRAMES  0x11
-#define PXE_STATISTICS_TX_CRC_ERROR_FRAMES  0x12
-#define PXE_STATISTICS_TX_TOTAL_BYTES       0x13
-
-//
-// Number of collisions detection on this subnet.
-//
-#define PXE_STATISTICS_COLLISIONS 0x14
-
-//
-// Number of frames destined for unsupported protocol.
-//
-#define PXE_STATISTICS_UNSUPPORTED_PROTOCOL 0x15
-
-typedef struct s_pxe_cpb_mcast_ip_to_mac {
-  //
-  // Multicast IP address to be converted to multicast MAC address.
-  //
-  PXE_IP_ADDR IP;
-} PXE_CPB_MCAST_IP_TO_MAC;
-
-typedef struct s_pxe_db_mcast_ip_to_mac {
-  //
-  // Multicast MAC address.
-  //
-  PXE_MAC_ADDR  MAC;
-} PXE_DB_MCAST_IP_TO_MAC;
-
-typedef struct s_pxe_cpb_nvdata_sparse {
-  //
-  // NvData item list.  Only items in this list will be updated.
-  //
-  struct {
-    //
-    //  Non-volatile storage address to be changed.
-    //
-    PXE_UINT32  Addr;
-
-    //
-    // Data item to write into above storage address.
-    //
-    union {
-      PXE_UINT8   Byte;
-      PXE_UINT16  Word;
-      PXE_UINT32  Dword;
-    } Data;
-  } Item[MAX_EEPROM_LEN];
-}
-PXE_CPB_NVDATA_SPARSE;
-
-//
-// When using bulk update, the size of the CPB structure must be
-// the same size as the non-volatile NIC storage.
-//
-typedef union u_pxe_cpb_nvdata_bulk {
-  //
-  // Array of byte-wide data items.
-  //
-  PXE_UINT8   Byte[MAX_EEPROM_LEN << 2];
-
-  //
-  // Array of word-wide data items.
-  //
-  PXE_UINT16  Word[MAX_EEPROM_LEN << 1];
-
-  //
-  // Array of dword-wide data items.
-  //
-  PXE_UINT32  Dword[MAX_EEPROM_LEN];
-} PXE_CPB_NVDATA_BULK;
-
-typedef struct s_pxe_db_nvdata {
-  //
-  // Arrays of data items from non-volatile storage.
-  //
-  union {
-    //
-    // Array of byte-wide data items.
-    //
-    PXE_UINT8   Byte[MAX_EEPROM_LEN << 2];
-
-    //
-    // Array of word-wide data items.
-    //
-    PXE_UINT16  Word[MAX_EEPROM_LEN << 1];
-
-    //
-    // Array of dword-wide data items.
-    //
-    PXE_UINT32  Dword[MAX_EEPROM_LEN];
-  } Data;
-} PXE_DB_NVDATA;
-
-typedef struct s_pxe_db_get_status {
-  //
-  // Length of next receive frame (header + data).  If this is zero,
-  // there is no next receive frame available.
-  //
-  PXE_UINT32  RxFrameLen;
-
-  //
-  // Reserved, set to zero.
-  //
-  PXE_UINT32  reserved;
-
-  //
-  //  Addresses of transmitted buffers that need to be recycled.
-  //
-  PXE_UINT64  TxBuffer[MAX_XMIT_BUFFERS];
-} PXE_DB_GET_STATUS;
-
-typedef struct s_pxe_cpb_fill_header {
-  //
-  // Source and destination MAC addresses.  These will be copied into
-  // the media header without doing byte swapping.
-  //
-  PXE_MAC_ADDR  SrcAddr;
-  PXE_MAC_ADDR  DestAddr;
-
-  //
-  // Address of first byte of media header.  The first byte of packet data
-  // follows the last byte of the media header.
-  //
-  PXE_UINT64        MediaHeader;
-
-  //
-  // Length of packet data in bytes (not including the media header).
-  //
-  PXE_UINT32        PacketLen;
-
-  //
-  // Protocol type.  This will be copied into the media header without
-  // doing byte swapping.  Protocol type numbers can be obtained from
-  // the Assigned Numbers RFC 1700.
-  //
-  PXE_UINT16        Protocol;
-
-  //
-  // Length of the media header in bytes.
-  //
-  PXE_UINT16        MediaHeaderLen;
-} PXE_CPB_FILL_HEADER;
-
-#define PXE_PROTOCOL_ETHERNET_IP  0x0800
-#define PXE_PROTOCOL_ETHERNET_ARP 0x0806
-#define MAX_XMIT_FRAGMENTS        16
-
-typedef struct s_pxe_cpb_fill_header_fragmented {
-  //
-  // Source and destination MAC addresses.  These will be copied into
-  // the media header without doing byte swapping.
-  //
-  PXE_MAC_ADDR        SrcAddr;
-  PXE_MAC_ADDR        DestAddr;
-
-  //
-  // Length of packet data in bytes (not including the media header).
-  //
-  PXE_UINT32          PacketLen;
-
-  //
-  // Protocol type.  This will be copied into the media header without
-  // doing byte swapping.  Protocol type numbers can be obtained from
-  // the Assigned Numbers RFC 1700.
-  //
-  PXE_MEDIA_PROTOCOL  Protocol;
-
-  //
-  // Length of the media header in bytes.
-  //
-  PXE_UINT16          MediaHeaderLen;
-
-  //
-  // Number of packet fragment descriptors.
-  //
-  PXE_UINT16          FragCnt;
-
-  //
-  // Reserved, must be set to zero.
-  //
-  PXE_UINT16          reserved;
-
-  //
-  // Array of packet fragment descriptors.  The first byte of the media
-  // header is the first byte of the first fragment.
-  //
-  struct {
-    //
-    // Address of this packet fragment.
-    //
-    PXE_UINT64  FragAddr;
-
-    //
-    // Length of this packet fragment.
-    //
-    PXE_UINT32  FragLen;
-
-    //
-    // Reserved, must be set to zero.
-    //
-    PXE_UINT32  reserved;
-  } FragDesc[MAX_XMIT_FRAGMENTS];
-}
-PXE_CPB_FILL_HEADER_FRAGMENTED;
-
-typedef struct s_pxe_cpb_transmit {
-  //
-  // Address of first byte of frame buffer.  This is also the first byte
-  // of the media header.
-  //
-  PXE_UINT64  FrameAddr;
-
-  //
-  // Length of the data portion of the frame buffer in bytes.  Do not
-  // include the length of the media header.
-  //
-  PXE_UINT32  DataLen;
-
-  //
-  // Length of the media header in bytes.
-  //
-  PXE_UINT16  MediaheaderLen;
-
-  //
-  // Reserved, must be zero.
-  //
-  PXE_UINT16  reserved;
-} PXE_CPB_TRANSMIT;
-
-typedef struct s_pxe_cpb_transmit_fragments {
-  //
-  // Length of packet data in bytes (not including the media header).
-  //
-  PXE_UINT32  FrameLen;
-
-  //
-  // Length of the media header in bytes.
-  //
-  PXE_UINT16  MediaheaderLen;
-
-  //
-  // Number of packet fragment descriptors.
-  //
-  PXE_UINT16  FragCnt;
-
-  //
-  // Array of frame fragment descriptors.  The first byte of the first
-  // fragment is also the first byte of the media header.
-  //
-  struct {
-    //
-    // Address of this frame fragment.
-    //
-    PXE_UINT64  FragAddr;
-
-    //
-    // Length of this frame fragment.
-    //
-    PXE_UINT32  FragLen;
-
-    //
-    // Reserved, must be set to zero.
-    //
-    PXE_UINT32  reserved;
-  } FragDesc[MAX_XMIT_FRAGMENTS];
-}
-PXE_CPB_TRANSMIT_FRAGMENTS;
-
-typedef struct s_pxe_cpb_receive {
-  //
-  // Address of first byte of receive buffer.  This is also the first byte
-  // of the frame header.
-  //
-  PXE_UINT64  BufferAddr;
-
-  //
-  // Length of receive buffer.  This must be large enough to hold the
-  // received frame (media header + data).  If the length of smaller than
-  // the received frame, data will be lost.
-  //
-  PXE_UINT32  BufferLen;
-
-  //
-  // Reserved, must be set to zero.
-  //
-  PXE_UINT32  reserved;
-} PXE_CPB_RECEIVE;
-
-typedef struct s_pxe_db_receive {
-  //
-  // Source and destination MAC addresses from media header.
-  //
-  PXE_MAC_ADDR        SrcAddr;
-  PXE_MAC_ADDR        DestAddr;
-
-  //
-  // Length of received frame.  May be larger than receive buffer size.
-  // The receive buffer will not be overwritten.  This is how to tell
-  // if data was lost because the receive buffer was too small.
-  //
-  PXE_UINT32          FrameLen;
-
-  //
-  // Protocol type from media header.
-  //
-  PXE_MEDIA_PROTOCOL  Protocol;
-
-  //
-  // Length of media header in received frame.
-  //
-  PXE_UINT16          MediaHeaderLen;
-
-  //
-  // Type of receive frame.
-  //
-  PXE_FRAME_TYPE      Type;
-
-  //
-  // Reserved, must be zero.
-  //
-  PXE_UINT8           reserved[7];
-
-} PXE_DB_RECEIVE;
-
-//
-// Packet definitions
-//
-typedef struct {
-  UINT8   BootpOpcode;
-  UINT8   BootpHwType;
-  UINT8   BootpHwAddrLen;
-  UINT8   BootpGateHops;
-  UINT32  BootpIdent;
-  UINT16  BootpSeconds;
-  UINT16  BootpFlags;
-  UINT8   BootpCiAddr[4];
-  UINT8   BootpYiAddr[4];
-  UINT8   BootpSiAddr[4];
-  UINT8   BootpGiAddr[4];
-  UINT8   BootpHwAddr[16];
-  UINT8   BootpSrvName[64];
-  UINT8   BootpBootFile[128];
-  UINT32  DhcpMagik;
-  UINT8   DhcpOptions[56];
-} EFI_PXE_BASE_CODE_DHCPV4_PACKET;
-
-typedef union {
-  UINT8                           Raw[1472];
-  EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
-
-  //
-  //  EFI_PXE_BASE_CODE_DHCPV6_PACKET     Dhcpv6;
-  //
-} EFI_PXE_BASE_CODE_PACKET;
-
-
-
-#pragma pack()
-
-#endif
diff --git a/MdePkg/Uefi/UefiSpec.h b/MdePkg/Uefi/UefiSpec.h
deleted file mode 100644
index 70e8b91c4f..0000000000
--- a/MdePkg/Uefi/UefiSpec.h
+++ /dev/null
@@ -1,1744 +0,0 @@
-/** @file
-  Include file that supportes UEFI.
-
-  This include file must only contain things defined in the UEFI 2.0 specification.
-  If a code construct is defined in the UEFI 2.0 specification it must be included
-  by this include file.
-
-  Copyright (c) 2006 - 2007, Intel Corporation
-  All rights reserved. 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:    UefiSpec.h
-
-**/
-
-#ifndef __UEFI_SPEC_H__
-#define __UEFI_SPEC_H__
-
-#include <Uefi/UefiMultiPhase.h>
-
-#include <Protocol/DevicePath.h>
-#include <Protocol/SimpleTextIn.h>
-#include <Protocol/SimpleTextOut.h>
-
-//
-// Networking Definitions
-//
-typedef struct {
-  UINT8 Addr[4];
-} EFI_IPv4_ADDRESS;
-
-typedef struct {
-  UINT8 Addr[16];
-} EFI_IPv6_ADDRESS;
-
-typedef struct {
-  UINT8 Addr[32];
-} EFI_MAC_ADDRESS;
-
-typedef union {
-  UINT32            Addr[4];
-  EFI_IPv4_ADDRESS  v4;
-  EFI_IPv6_ADDRESS  v6;
-} EFI_IP_ADDRESS;
-
-
-//
-// Enumeration of memory allocation.
-// 
-typedef enum {
-  AllocateAnyPages,
-  AllocateMaxAddress,
-  AllocateAddress,
-  MaxAllocateType
-} EFI_ALLOCATE_TYPE;
-
-
-//
-// possible caching types for the memory range
-//
-#define EFI_MEMORY_UC   0x0000000000000001ULL
-#define EFI_MEMORY_WC   0x0000000000000002ULL
-#define EFI_MEMORY_WT   0x0000000000000004ULL
-#define EFI_MEMORY_WB   0x0000000000000008ULL
-#define EFI_MEMORY_UCE  0x0000000000000010ULL
-
-//
-// physical memory protection on range
-//
-#define EFI_MEMORY_WP 	0x0000000000001000ULL
-#define EFI_MEMORY_RP 	0x0000000000002000ULL
-#define EFI_MEMORY_XP 	0x0000000000004000ULL
-
-//
-// range requires a runtime mapping
-//
-#define EFI_MEMORY_RUNTIME  0x8000000000000000ULL
-
-#define EFI_MEMORY_DESCRIPTOR_VERSION 1
-typedef struct {
-	UINT32 								Type;
-	EFI_PHYSICAL_ADDRESS 	PhysicalStart;
-	EFI_VIRTUAL_ADDRESS 	VirtualStart;
-	UINT64 								NumberOfPages;
-	UINT64 								Attribute;
-} EFI_MEMORY_DESCRIPTOR;
-
-//
-// Build macros to find next EFI_MEMORY_DESCRIPTOR.
-// 
-#define NextMemoryDescriptor(_Ptr, _Size)   ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) (_Ptr)) + (_Size)))
-#define NEXT_MEMORY_DESCRIPTOR(_Ptr, _Size) NextMemoryDescriptor (_Ptr, _Size)
-
-//
-// Declare forward referenced data structures
-//
-typedef struct _EFI_SYSTEM_TABLE   EFI_SYSTEM_TABLE;
-
-/**
-  Allocates memory pages from the system.
-
-  @param  Type        The type of allocation to perform.
-  @param  MemoryType  The type of memory to allocate.
-  @param  Pages       The number of contiguous 4 KB pages to allocate.
-  @param  Memory      Pointer to a physical address. On input, the way in which the address is
-                      used depends on the value of Type.
-
-  @retval EFI_SUCCESS           The requested pages were allocated.
-  @retval EFI_INVALID_PARAMETER 1) Type is not AllocateAnyPages or
-                                AllocateMaxAddress or AllocateAddress.
-                                2) MemoryType is in the range
-                                EfiMaxMemoryType..0x7FFFFFFF.
-  @retval EFI_OUT_OF_RESOURCES  The pages could not be allocated.
-  @retval EFI_NOT_FOUND         The requested pages could not be found.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_ALLOCATE_PAGES) (
-  IN     EFI_ALLOCATE_TYPE            Type,
-  IN     EFI_MEMORY_TYPE              MemoryType,
-  IN     UINTN                        Pages,
-  IN OUT EFI_PHYSICAL_ADDRESS         *Memory
-  );
-
-/**
-  Frees memory pages.
-
-  @param  Memory      The base physical address of the pages to be freed.
-  @param  Pages       The number of contiguous 4 KB pages to free.
-
-  @retval EFI_SUCCESS           The requested pages were freed.
-  @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid.
-  @retval EFI_NOT_FOUND         The requested memory pages were not allocated with
-                                AllocatePages().
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FREE_PAGES) (
-  IN  EFI_PHYSICAL_ADDRESS         Memory,
-  IN  UINTN                        Pages
-  );
-
-/**
-  Returns the current memory map.
-
-  @param  MemoryMapSize         A pointer to the size, in bytes, of the MemoryMap buffer.
-  @param  MemoryMap             A pointer to the buffer in which firmware places the current memory
-                                map.
-  @param  MapKey                A pointer to the location in which firmware returns the key for the
-                                current memory map.
-  @param  DescriptorSize        A pointer to the location in which firmware returns the size, in bytes, of
-                                an individual EFI_MEMORY_DESCRIPTOR.
-  @param  DescriptorVersion     A pointer to the location in which firmware returns the version number
-                                associated with the EFI_MEMORY_DESCRIPTOR.
-
-  @retval EFI_SUCCESS           The memory map was returned in the MemoryMap buffer.
-  @retval EFI_BUFFER_TOO_SMALL  The MemoryMap buffer was too small. The current buffer size
-                                needed to hold the memory map is returned in MemoryMapSize.
-  @retval EFI_INVALID_PARAMETER 1) MemoryMapSize is NULL.
-                                2) The MemoryMap buffer is not too small and MemoryMap is
-                                   NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_MEMORY_MAP) (
-  IN OUT UINTN                       *MemoryMapSize,
-  IN OUT EFI_MEMORY_DESCRIPTOR       *MemoryMap,
-  OUT    UINTN                       *MapKey,
-  OUT    UINTN                       *DescriptorSize,
-  OUT    UINT32                      *DescriptorVersion
-  );
-
-/**
-  Allocates pool memory.
-
-  @param  PoolType              The type of pool to allocate.
-  @param  Size                  The number of bytes to allocate from the pool.
-  @param  Buffer                A pointer to a pointer to the allocated buffer if the call succeeds;
-                                undefined otherwise.
-
-  @retval EFI_SUCCESS           The requested number of bytes was allocated.
-  @retval EFI_OUT_OF_RESOURCES  The pool requested could not be allocated.
-  @retval EFI_INVALID_PARAMETER PoolType was invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_ALLOCATE_POOL) (
-  IN  EFI_MEMORY_TYPE              PoolType,
-  IN  UINTN                        Size,
-  OUT VOID                         **Buffer
-  );
-
-/**
-  Returns pool memory to the system.
-
-  @param  Buffer                Pointer to the buffer to free.
-
-  @retval EFI_SUCCESS           The memory was returned to the system.
-  @retval EFI_INVALID_PARAMETER Buffer was invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FREE_POOL) (
-  IN  VOID                         *Buffer
-  );
-
-/**
-  Changes 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.
-
-  @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.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
-  IN  UINTN                        MemoryMapSize,
-  IN  UINTN                        DescriptorSize,
-  IN  UINT32                       DescriptorVersion,
-  IN  EFI_MEMORY_DESCRIPTOR        *VirtualMap
-  );
-
-/**
-  Connects one or more drivers to a controller.
-
-  @param  ControllerHandle      The handle of the controller to which driver(s) are to be connected.
-  @param  DriverImageHandle     A pointer to an ordered list handles that support the
-                                EFI_DRIVER_BINDING_PROTOCOL.
-  @param  RemainingDevicePath   A pointer to the device path that specifies a child of the
-                                controller specified by ControllerHandle.
-  @param  Recursive             If TRUE, then ConnectController() is called recursively
-                                until the entire tree of controllers below the controller specified
-                                by ControllerHandle have been created. If FALSE, then
-                                the tree of controllers is only expanded one level.
-
-  @retval EFI_SUCCESS           1) One or more drivers were connected to ControllerHandle.
-                                2) No drivers were connected to ControllerHandle, but
-                                RemainingDevicePath is not NULL, and it is an End Device
-                                Path Node.
-  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
-  @retval EFI_NOT_FOUND         1) There are no EFI_DRIVER_BINDING_PROTOCOL instances
-                                present in the system.
-                                2) No drivers were connected to ControllerHandle.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CONNECT_CONTROLLER) (
-  IN  EFI_HANDLE                    ControllerHandle,
-  IN  EFI_HANDLE                    *DriverImageHandle,   OPTIONAL
-  IN  EFI_DEVICE_PATH_PROTOCOL      *RemainingDevicePath, OPTIONAL
-  IN  BOOLEAN                       Recursive
-  );
-
-/**
-  Disconnects one or more drivers from a controller.
-
-  @param  ControllerHandle      The handle of the controller from which driver(s) are to be disconnected.
-  @param  DriverImageHandle     The driver to disconnect from ControllerHandle.
-  @param  ChildHandle           The handle of the child to destroy.
-
-  @retval EFI_SUCCESS           1) One or more drivers were disconnected from the controller.
-                                2) On entry, no drivers are managing ControllerHandle.
-                                3) DriverImageHandle is not NULL, and on entry
-                                   DriverImageHandle is not managing ControllerHandle.
-
-  @retval EFI_INVALID_PARAMETER One ore more parameters are invalid.
-  @retval EFI_OUT_OF_RESOURCES  There are not enough resources available to disconnect any drivers from
-                                ControllerHandle.
-  @retval EFI_DEVICE_ERROR      The controller could not be disconnected because of a device error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DISCONNECT_CONTROLLER) (
-  IN  EFI_HANDLE                     ControllerHandle,
-  IN  EFI_HANDLE                     DriverImageHandle, OPTIONAL
-  IN  EFI_HANDLE                     ChildHandle        OPTIONAL
-  );
-
-
-
-//
-// ConvertPointer DebugDisposition type.
-//
-#define EFI_OPTIONAL_PTR     0x00000001
-#define EFI_OPTIONAL_POINTER EFI_OPTIONAL_PTR
-
-/**
-  Determines the new virtual address that is to be used on subsequent memory accesses.
-
-  @param  DebugDisposition      Supplies type information for the pointer being converted.
-  @param  Address               A pointer to a pointer that is to be fixed to be the value needed
-                                for the new virtual address mappings being applied.
-
-  @retval EFI_SUCCESS           The pointer pointed to by Address was modified.
-  @retval EFI_INVALID_PARAMETER 1) Address is NULL.
-                                2) *Address is NULL and DebugDisposition does
-                                not have the EFI_OPTIONAL_PTR bit set.
-  @retval EFI_NOT_FOUND         The pointer pointed to by Address was not found to be part
-                                of the current memory map. This is normally fatal.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CONVERT_POINTER) (
-  IN     UINTN                      DebugDisposition,
-  IN OUT VOID                       **Address
-  );
-
-
-//
-// These types can be ��ORed�� together as needed �C for example,
-// EVT_TIMER might be ��Ored�� with EVT_NOTIFY_WAIT or
-// EVT_NOTIFY_SIGNAL.
-//
-#define EVT_TIMER 												0x80000000
-#define EVT_RUNTIME 											0x40000000
-
-#define EVT_NOTIFY_WAIT										0x00000100
-#define EVT_NOTIFY_SIGNAL									0x00000200
-#define EVT_SIGNAL_EXIT_BOOT_SERVICES			0x00000201
-#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE	0x60000202
-
-
-//
-// The event��s NotifyContext pointer points to a runtime memory
-// address. 
-// The event is deprecated in UEFI2.0 and later specifications.
-// 
-#define EVT_RUNTIME_CONTEXT               0x20000000
-
-
-/**
-  Invoke a notification event
-
-  @param  Event                 Event whose notification function is being invoked.
-  @param  Context               Pointer to the notification function's context,
-                                which is implementation-dependent.
-
-**/
-typedef
-VOID
-(EFIAPI *EFI_EVENT_NOTIFY) (
-  IN  EFI_EVENT                Event,
-  IN  VOID                     *Context
-  );
-
-/**
-  Creates an event.
-
-  @param  Type                  The type of event to create and its mode and attributes.
-  @param  NotifyTpl             Pointer to the notification function's context.
-  @param  NotifyFunction        Pointer to the event's notification function, if any.
-  @param  NotifyContext         Pointer to the notification function's context; corresponds to parameter
-                                Context in the notification function.
-  @param  Event                 Pointer to the newly created event if the call succeeds; undefined
-                                otherwise.
-
-  @retval EFI_SUCCESS           The event structure was created.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-  @retval EFI_OUT_OF_RESOURCES  The event could not be allocated.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CREATE_EVENT) (
-  IN  UINT32                       Type,
-  IN  EFI_TPL                      NotifyTpl,
-  IN  EFI_EVENT_NOTIFY             NotifyFunction,
-  IN  VOID                         *NotifyContext,
-  OUT EFI_EVENT                    *Event
-  );
-
-/**
-  Creates an event in a group.
-
-  @param  Type                  The type of event to create and its mode and attributes.
-  @param  NotifyTpl             Pointer to the notification function's context.
-  @param  NotifyFunction        Pointer to the event's notification function, if any.
-  @param  NotifyContext         Pointer to the notification function's context; corresponds to parameter
-                                Context in the notification function.
-  @param  EventGroup            Pointer to the unique identifier of the group to which this event belongs.
-  @param  Event                 Pointer to the newly created event if the call succeeds; undefined
-                                otherwise.
-
-  @retval EFI_SUCCESS           The event structure was created.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-  @retval EFI_OUT_OF_RESOURCES  The event could not be allocated.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CREATE_EVENT_EX) (
-  IN       UINT32                 Type,
-  IN       EFI_TPL                NotifyTpl      OPTIONAL,
-  IN       EFI_EVENT_NOTIFY       NotifyFunction OPTIONAL,
-  IN CONST VOID                   *NotifyContext OPTIONAL,
-  IN CONST EFI_GUID               *EventGroup    OPTIONAL,
-  OUT      EFI_EVENT              *Event
-  );
-
-typedef enum {
-  TimerCancel,
-  TimerPeriodic,
-  TimerRelative
-} EFI_TIMER_DELAY;
-
-/**
-  Sets the type of timer and the trigger time for a timer event.
-
-  @param  Event                 The timer event that is to be signaled at the specified time.
-  @param  Type                  The type of time that is specified in TriggerTime.
-  @param  TriggerTime           The number of 100ns units until the timer expires.
-
-  @retval EFI_SUCCESS           The event has been set to be signaled at the requested time.
-  @retval EFI_INVALID_PARAMETER Event or Type is not valid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_TIMER) (
-  IN  EFI_EVENT                Event,
-  IN  EFI_TIMER_DELAY          Type,
-  IN  UINT64                   TriggerTime
-  );
-
-/**
-  Signals an event.
-
-  @param  Event                 The event to signal.
-
-  @retval EFI_SUCCESS           The event has been signaled.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIGNAL_EVENT) (
-  IN  EFI_EVENT                Event
-  );
-
-/**
-  Stops execution until an event is signaled.
-
-  @param  NumberOfEvents        The number of events in the Event array.
-  @param  Event                 An array of EFI_EVENT.
-  @param  Index                 Pointer to the index of the event which satisfied the wait condition.
-
-  @retval EFI_SUCCESS           The event indicated by Index was signaled.
-  @retval EFI_INVALID_PARAMETER 1) NumberOfEvents is 0.
-                                2) The event indicated by Index is of type
-                                   EVT_NOTIFY_SIGNAL.
-  @retval EFI_UNSUPPORTED       The current TPL is not TPL_APPLICATION.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_WAIT_FOR_EVENT) (
-  IN  UINTN                    NumberOfEvents,
-  IN  EFI_EVENT                *Event,
-  OUT UINTN                    *Index
-  );
-
-/**
-  Closes an event.
-
-  @param  Event                 The event to close.
-
-  @retval EFI_SUCCESS           The event has been closed.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CLOSE_EVENT) (
-  IN EFI_EVENT                Event
-  );
-
-/**
-  Checks whether an event is in the signaled state.
-
-  @param  Event                 The event to check.
-
-  @retval EFI_SUCCESS           The event is in the signaled state.
-  @retval EFI_NOT_READY         The event is not in the signaled state.
-  @retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CHECK_EVENT) (
-  IN EFI_EVENT                Event
-  );
-
-
-//
-// Task priority level (name defined in spec).
-//
-#define TPL_APPLICATION       4
-#define TPL_CALLBACK          8
-#define TPL_NOTIFY            16
-#define TPL_HIGH_LEVEL        31
-
-
-/**
-  Raises a task's priority level and returns its previous level.
-
-  @param  NewTpl                The new task priority level.
-
-  @retval                       Previous task priority level
-
-**/
-typedef
-EFI_TPL
-(EFIAPI *EFI_RAISE_TPL) (
-  IN EFI_TPL      NewTpl
-  );
-
-/**
-  Restores a task's priority level to its previous value.
-
-  @param  OldTpl                The previous task priority level to restore
-
-**/
-typedef
-VOID
-(EFIAPI *EFI_RESTORE_TPL) (
-  IN EFI_TPL      OldTpl
-  );
-
-/**
-  Returns the value of a variable.
-
-  @param  VariableName          A Null-terminated Unicode string that is the name of the
-                                vendor's variable.
-  @param  VendorGuid            A unique identifier for the vendor.
-  @param  Attributes            If not NULL, a pointer to the memory location to return the
-                                attributes bitmask for the variable.
-  @param  DataSize              On input, the size in bytes of the return Data buffer.
-                                On output the size of data returned in Data.
-  @param  Data                  The buffer to return the contents of the variable.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_NOT_FOUND         The variable was not found.
-  @retval EFI_BUFFER_TOO_SMALL  The DataSize is too small for the result.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-  @retval EFI_DEVICE_ERROR      The variable could not be retrieved due to a hardware error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_VARIABLE) (
-  IN     CHAR16                      *VariableName,
-  IN     EFI_GUID                    *VendorGuid,
-  OUT    UINT32                      *Attributes,    OPTIONAL
-  IN OUT UINTN                       *DataSize,
-  OUT    VOID                        *Data
-  );
-
-/**
-  Enumerates the current variable names.
-
-  @param  VariableNameSize      The size of the VariableName buffer.
-  @param  VariableName          On input, supplies the last VariableName that was returned
-                                by GetNextVariableName(). On output, returns the Nullterminated
-                                Unicode string of the current variable.
-  @param  VendorGuid            On input, supplies the last VendorGuid that was returned by
-                                GetNextVariableName(). On output, returns the
-                                VendorGuid of the current variable.
-
-  @retval EFI_SUCCESS           The function completed successfully.
-  @retval EFI_NOT_FOUND         The next variable was not found.
-  @retval EFI_BUFFER_TOO_SMALL  The VariableNameSize is too small for the result.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-  @retval EFI_DEVICE_ERROR      The variable could not be retrieved due to a hardware error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
-  IN OUT UINTN                    *VariableNameSize,
-  IN OUT CHAR16                   *VariableName,
-  IN OUT EFI_GUID                 *VendorGuid
-  );
-
-/**
-  Sets the value of a variable.
-
-  @param  VariableName          A Null-terminated Unicode string that is the name of the
-                                vendor's variable.
-  @param  VendorGuid            A unique identifier for the vendor.
-  @param  Attributes            Attributes bitmask to set for the variable.
-  @param  DataSize              The size in bytes of the Data buffer.
-  @param  Data                  The contents for the variable.
-
-  @retval EFI_SUCCESS           The firmware has successfully stored the variable and its data as
-                                defined by the Attributes.
-  @retval EFI_WRITE_PROTECTED   The variable in question is read-only.
-  @retval EFI_OUT_OF_RESOURCES  Not enough storage is available to hold the variable and its data.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-  @retval EFI_DEVICE_ERROR      The variable could not be retrieved due to a hardware error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_VARIABLE) (
-  IN  CHAR16                       *VariableName,
-  IN  EFI_GUID                     *VendorGuid,
-  IN  UINT32                       Attributes,
-  IN  UINTN                        DataSize,
-  IN  VOID                         *Data
-  );
-
-
-// 
-// This provides the capabilities of the
-// real time clock device as exposed through the EFI interfaces.
-// 
-typedef struct {
-	UINT32 		Resolution;
-	UINT32 		Accuracy;
-	BOOLEAN 	SetsToZero;
-} EFI_TIME_CAPABILITIES;
-
-/**
-  Returns the current time and date information, and the time-keeping capabilities
-  of the hardware platform.
-
-  @param  Time                  A pointer to storage to receive a snapshot of the current time.
-  @param  Capabilities          An optional pointer to a buffer to receive the real time clock
-                                device's capabilities.
-
-  @retval EFI_SUCCESS           The operation completed successfully.
-  @retval EFI_INVALID_PARAMETER Time is NULL.
-  @retval EFI_DEVICE_ERROR      The time could not be retrieved due to hardware error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_TIME) (
-  OUT  EFI_TIME                    *Time,
-  OUT  EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
-  );
-
-/**
-  Sets the current local time and date information.
-
-  @param  Time                  A pointer to the current time.
-
-  @retval EFI_SUCCESS           The operation completed successfully.
-  @retval EFI_INVALID_PARAMETER A time field is out of range.
-  @retval EFI_DEVICE_ERROR      The time could not be set due due to hardware error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_TIME) (
-  IN  EFI_TIME                     *Time
-  );
-
-/**
-  Returns the current wakeup alarm clock setting.
-
-  @param  Enabled               Indicates if the alarm is currently enabled or disabled.
-  @param  Pending               Indicates if the alarm signal is pending and requires acknowledgement.
-  @param  Time                  The current alarm setting.
-
-  @retval EFI_SUCCESS           The alarm settings were returned.
-  @retval EFI_INVALID_PARAMETER Any parameter is NULL.
-  @retval EFI_DEVICE_ERROR      The wakeup time could not be retrieved due to a hardware error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_WAKEUP_TIME) (
-  OUT BOOLEAN                     *Enabled,
-  OUT BOOLEAN                     *Pending,
-  OUT EFI_TIME                    *Time
-  );
-
-/**
-  Sets the system wakeup alarm clock time.
-
-  @param  Enabled               Enable or disable the wakeup alarm.
-  @param  Time                  If Enable is TRUE, the time to set the wakeup alarm for.
-
-  @retval EFI_SUCCESS           If Enable is TRUE, then the wakeup alarm was enabled. If
-                                Enable is FALSE, then the wakeup alarm was disabled.
-  @retval EFI_INVALID_PARAMETER A time field is out of range.
-  @retval EFI_DEVICE_ERROR      The wakeup time could not be set due to a hardware error.
-  @retval EFI_UNSUPPORTED       A wakeup timer is not supported on this platform.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_WAKEUP_TIME) (
-  IN  BOOLEAN                      Enable,
-  IN  EFI_TIME                     *Time   OPTIONAL
-  );
-
-/**
-  This is the declaration of an EFI image entry point. This can be the entry point to an application
-  written to this specification, an EFI boot service driver, or an EFI runtime driver.
-
-  @param  ImageHandle           Handle that identifies the loaded image.
-  @param  SystemTable           System Table for this image.
-
-  @retval EFI_SUCCESS           The operation completed successfully.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_ENTRY_POINT) (
-  IN  EFI_HANDLE                   ImageHandle,
-  IN  EFI_SYSTEM_TABLE             *SystemTable
-  );
-
-/**
-  Loads an EFI image into memory.
-
-  @param  BootPolicy            If TRUE, indicates that the request originates from the boot
-                                manager, and that the boot manager is attempting to load
-                                FilePath as a boot selection. Ignored if SourceBuffer is
-                                not NULL.
-  @param  ParentImageHandle     The caller's image handle.
-  @param  FilePath              The DeviceHandle specific file path from which the image is
-                                loaded.
-  @param  SourceBuffer          If not NULL, a pointer to the memory location containing a copy
-                                of the image to be loaded.
-  @param  SourceSize            The size in bytes of SourceBuffer.
-  @param  ImageHandle           Pointer to the returned image handle that is created when the
-                                image is successfully loaded.
-
-  @retval EFI_SUCCESS           Image was loaded into memory correctly.
-  @retval EFI_NOT_FOUND         Both SourceBuffer and FilePath are NULL.
-  @retval EFI_INVALID_PARAMETER One or more parametes are invalid.
-  @retval EFI_UNSUPPORTED       The image type is not supported.
-  @retval EFI_OUT_OF_RESOURCES  Image was not loaded due to insufficient resources.
-  @retval EFI_LOAD_ERROR        Image was not loaded because the image format was corrupt or not
-                                understood.
-  @retval EFI_DEVICE_ERROR      Image was not loaded because the device returned a read error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_LOAD) (
-  IN  BOOLEAN                      BootPolicy,
-  IN  EFI_HANDLE                   ParentImageHandle,
-  IN  EFI_DEVICE_PATH_PROTOCOL     *FilePath,
-  IN  VOID                         *SourceBuffer OPTIONAL,
-  IN  UINTN                        SourceSize,
-  OUT EFI_HANDLE                   *ImageHandle
-  );
-
-/**
-  Transfers control to a loaded image's entry point.
-
-  @param  ImageHandle           Handle of image to be started.
-  @param  ExitDataSize          Pointer to the size, in bytes, of ExitData.
-  @param  ExitData              Pointer to a pointer to a data buffer that includes a Null-terminated
-                                Unicode string, optionally followed by additional binary data.
-
-  @retval EFI_INVALID_PARAMETER ImageHandle is either an invalid image handle or the image
-                                has already been initialized with StartImage
-  @retval Exit code from image  Exit code from image
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_START) (
-  IN  EFI_HANDLE                  ImageHandle,
-  OUT UINTN                       *ExitDataSize,
-  OUT CHAR16                      **ExitData    OPTIONAL
-  );
-
-/**
-  Terminates a loaded EFI image and returns control to boot services.
-
-  @param  ImageHandle           Handle that identifies the image.
-  @param  ExitStatus            The image's exit code.
-  @param  ExitDataSize          The size, in bytes, of ExitData.
-  @param  ExitData              Pointer to a data buffer that includes a Null-terminated Unicode string,
-                                optionally followed by additional binary data.
-
-  @retval EFI_SUCCESS           The image specified by ImageHandle was unloaded.
-  @retval EFI_INVALID_PARAMETER The image specified by ImageHandle has been loaded and
-                                started with LoadImage() and StartImage(), but the
-                                image is not the currently executing image.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_EXIT) (
-  IN  EFI_HANDLE                   ImageHandle,
-  IN  EFI_STATUS                   ExitStatus,
-  IN  UINTN                        ExitDataSize,
-  IN  CHAR16                       *ExitData     OPTIONAL
-  );
-
-/**
-  Unloads an image.
-
-  @param  ImageHandle           Handle that identifies the image to be unloaded.
-
-  @retval EFI_SUCCESS           The image has been unloaded.
-  @retval EFI_INVALID_PARAMETER ImageHandle is not a valid image handle.
-  @retval EFI_UNSUPPORTED       The image has been started, and does not support unload.
-  @retval                       Exit code from the image's unload handler
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_UNLOAD) (
-  IN  EFI_HANDLE                   ImageHandle
-  );
-
-/**
-  Terminates all boot services.
-
-  @param  ImageHandle           Handle that identifies the exiting image.
-  @param  MapKey                Key to the latest memory map.
-
-  @retval EFI_SUCCESS           Boot services have been terminated.
-  @retval EFI_INVALID_PARAMETER MapKey is incorrect.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_EXIT_BOOT_SERVICES) (
-  IN  EFI_HANDLE                   ImageHandle,
-  IN  UINTN                        MapKey
-  );
-
-/**
-  Induces a fine-grained stall.
-
-  @param  Microseconds          The number of microseconds to stall execution.
-
-  @retval EFI_SUCCESS           Execution was stalled at least the requested number of
-                                Microseconds.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_STALL) (
-  IN  UINTN                    Microseconds
-  );
-
-/**
-  Sets the system's watchdog timer.
-
-  @param  Timeout               The number of seconds to set the watchdog timer to.
-  @param  WatchdogCode          The numeric code to log on a watchdog timer timeout event.
-  @param  DataSize              The size, in bytes, of WatchdogData.
-  @param  WatchdogData          A data buffer that includes a Null-terminated Unicode string, optionally
-                                followed by additional binary data.
-
-  @retval EFI_SUCCESS           The timeout has been set.
-  @retval EFI_INVALID_PARAMETER The supplied WatchdogCode is invalid.
-  @retval EFI_UNSUPPORTED       The system does not have a watchdog timer.
-  @retval EFI_DEVICE_ERROR      The watch dog timer could not be programmed due to a hardware
-                                error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_WATCHDOG_TIMER) (
-  IN UINTN                    Timeout,
-  IN UINT64                   WatchdogCode,
-  IN UINTN                    DataSize,
-  IN CHAR16                   *WatchdogData OPTIONAL
-  );
-
-//
-// Enumeration of reset types.
-// 
-typedef enum {
-  EfiResetCold,
-  EfiResetWarm,
-  EfiResetShutdown,
-} EFI_RESET_TYPE;
-
-/**
-  Resets the entire platform.
-
-  @param  ResetType             The type of reset to perform.
-  @param  ResetStatus           The status code for the reset.
-  @param  DataSize              The size, in bytes, of WatchdogData.
-  @param  ResetData             For a ResetType of EfiResetCold, EfiResetWarm, or
-                                EfiResetShutdown the data buffer starts with a Null-terminated
-                                Unicode string, optionally followed by additional binary data.
-
-**/
-typedef
-VOID
-(EFIAPI *EFI_RESET_SYSTEM) (
-  IN EFI_RESET_TYPE           ResetType,
-  IN EFI_STATUS               ResetStatus,
-  IN UINTN                    DataSize,
-  IN CHAR16                   *ResetData OPTIONAL
-  );
-
-/**
-  Returns a monotonically increasing count for the platform.
-
-  @param  Count                 Pointer to returned value.
-
-  @retval EFI_SUCCESS           The next monotonic count was returned.
-  @retval EFI_INVALID_PARAMETER Count is NULL.
-  @retval EFI_DEVICE_ERROR      The device is not functioning properly.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
-  OUT UINT64                  *Count
-  );
-
-/**
-  Returns the next high 32 bits of the platform's monotonic counter.
-
-  @param  HighCount             Pointer to returned value.
-
-  @retval EFI_SUCCESS           The next high monotonic count was returned.
-  @retval EFI_INVALID_PARAMETER HighCount is NULL.
-  @retval EFI_DEVICE_ERROR      The device is not functioning properly.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
-  OUT UINT32                  *HighCount
-  );
-
-/**
-  Computes and returns a 32-bit CRC for a data buffer.
-
-  @param  Data                  A pointer to the buffer on which the 32-bit CRC is to be computed.
-  @param  DataSize              The number of bytes in the buffer Data.
-  @param  Crc32                 The 32-bit CRC that was computed for the data buffer specified by Data
-                                and DataSize.
-
-  @retval EFI_SUCCESS           The 32-bit CRC was computed for the data buffer and returned in
-                                Crc32.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CALCULATE_CRC32) (
-  IN  VOID                              *Data,
-  IN  UINTN                             DataSize,
-  OUT UINT32                            *Crc32
-  );
-
-/**
-  Copies the contents of one buffer to another buffer.
-
-  @param  Destination           Pointer to the destination buffer of the memory copy.
-  @param  Source                Pointer to the source buffer of the memory copy.
-  @param  Length                Number of bytes to copy from Source to Destination.
-
-**/
-typedef
-VOID
-(EFIAPI *EFI_COPY_MEM) (
-  IN VOID     *Destination,
-  IN VOID     *Source,
-  IN UINTN    Length
-  );
-
-/**
-  The SetMem() function fills a buffer with a specified value.
-
-  @param  Buffer                Pointer to the buffer to fill.
-  @param  Size                  Number of bytes in Buffer to fill.
-  @param  Value                 Value to fill Buffer with.
-
-**/
-typedef
-VOID
-(EFIAPI *EFI_SET_MEM) (
-  IN VOID     *Buffer,
-  IN UINTN    Size,
-  IN UINT8    Value
-  );
-
-
-//
-// Protocol handler functions
-//
-typedef enum {
-  EFI_NATIVE_INTERFACE
-} EFI_INTERFACE_TYPE;
-
-/**
-  Installs a protocol interface on a device handle. If the handle does not exist, it is created and added
-  to the list of handles in the system. InstallMultipleProtocolInterfaces() performs
-  more error checking than InstallProtocolInterface(), so it is recommended that
-  InstallMultipleProtocolInterfaces() be used in place of
-  InstallProtocolInterface()
-
-  @param  Handle                A pointer to the EFI_HANDLE on which the interface is to be installed.
-  @param  Protocol              The numeric ID of the protocol interface.
-  @param  InterfaceType         Indicates whether Interface is supplied in native form.
-  @param  Interface             A pointer to the protocol interface.
-
-  @retval EFI_SUCCESS           The protocol interface was installed.
-  @retval EFI_OUT_OF_RESOURCES  Space for a new handle could not be allocated.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
-  IN OUT EFI_HANDLE               *Handle,
-  IN     EFI_GUID                 *Protocol,
-  IN     EFI_INTERFACE_TYPE       InterfaceType,
-  IN     VOID                     *Interface
-  );
-
-/**
-  Installs one or more protocol interfaces into the boot services environment.
-
-  @param  Handle                The handle to install the new protocol interfaces on, or NULL if a new
-                                handle is to be allocated.
-  @param  ...                   A variable argument list containing pairs of protocol GUIDs and protocol
-                                interfaces.
-
-  @retval EFI_SUCCESS           All the protocol interface was installed.
-  @retval EFI_OUT_OF_RESOURCES  There was not enough memory in pool to install all the protocols.
-  @retval EFI_ALREADY_STARTED   A Device Path Protocol instance was passed in that is already present in
-                                the handle database.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
-  IN OUT EFI_HANDLE           *Handle,
-  ...
-  );
-
-/**
-  Reinstalls a protocol interface on a device handle.
-
-  @param  Handle                Handle on which the interface is to be reinstalled.
-  @param  Protocol              The numeric ID of the interface.
-  @param  OldInterface          A pointer to the old interface. NULL can be used if a structure is not
-                                associated with Protocol.
-  @param  NewInterface          A pointer to the new interface.
-
-  @retval EFI_SUCCESS           The protocol interface was reinstalled.
-  @retval EFI_NOT_FOUND         The OldInterface on the handle was not found.
-  @retval EFI_ACCESS_DENIED     The protocol interface could not be reinstalled,
-                                because OldInterface is still being used by a
-                                driver that will not release it.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
-  IN EFI_HANDLE               Handle,
-  IN EFI_GUID                 *Protocol,
-  IN VOID                     *OldInterface,
-  IN VOID                     *NewInterface
-  );
-
-/**
-  Removes a protocol interface from a device handle. It is recommended that
-  UninstallMultipleProtocolInterfaces() be used in place of
-  UninstallProtocolInterface().
-
-  @param  Handle                The handle on which the interface was installed.
-  @param  Protocol              The numeric ID of the interface.
-  @param  Interface             A pointer to the interface.
-
-  @retval EFI_SUCCESS           The interface was removed.
-  @retval EFI_NOT_FOUND         The interface was not found.
-  @retval EFI_ACCESS_DENIED     The interface was not removed because the interface
-                                is still being used by a driver.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
-  IN EFI_HANDLE               Handle,
-  IN EFI_GUID                 *Protocol,
-  IN VOID                     *Interface
-  );
-
-/**
-  Removes one or more protocol interfaces into the boot services environment.
-
-  @param  Handle                The handle to remove the protocol interfaces from.
-  @param  ...                   A variable argument list containing pairs of protocol GUIDs and
-                                protocol interfaces.
-
-  @retval EFI_SUCCESS           All the protocol interfaces were removed.
-  @retval EFI_INVALID_PARAMETER One of the protocol interfaces was not previously installed on Handle.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
-  IN EFI_HANDLE           Handle,
-  ...
-  );
-
-/**
-  Queries a handle to determine if it supports a specified protocol.
-
-  @param  Handle                The handle being queried.
-  @param  Protocol              The published unique identifier of the protocol.
-  @param  Interface             Supplies the address where a pointer to the corresponding Protocol
-                                Interface is returned.
-  @retval EFI_SUCCESS           The interface information for the specified protocol was returned.
-  @retval EFI_UNSUPPORTED       The device does not support the specified protocol.
-  @retval EFI_INVALID_PARAMETER One of the protocol interfaces was not previously installed on Handle.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_HANDLE_PROTOCOL) (
-  IN  EFI_HANDLE               Handle,
-  IN  EFI_GUID                 *Protocol,
-  OUT VOID                     **Interface
-  );
-
-#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL  0x00000001
-#define EFI_OPEN_PROTOCOL_GET_PROTOCOL        0x00000002
-#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL       0x00000004
-#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
-#define EFI_OPEN_PROTOCOL_BY_DRIVER           0x00000010
-#define EFI_OPEN_PROTOCOL_EXCLUSIVE           0x00000020
-
-/**
-  Queries a handle to determine if it supports a specified protocol. If the protocol is supported by the
-  handle, it opens the protocol on behalf of the calling agent.
-
-  @param  Handle                The handle for the protocol interface that is being opened.
-  @param  Protocol              The published unique identifier of the protocol.
-  @param  Interface             Supplies the address where a pointer to the corresponding Protocol
-                                Interface is returned.
-  @param  AgentHandle           The handle of the agent that is opening the protocol interface
-                                specified by Protocol and Interface.
-  @param  ControllerHandle      If the agent that is opening a protocol is a driver that follows the
-                                UEFI Driver Model, then this parameter is the controller handle
-                                that requires the protocol interface. If the agent does not follow
-                                the UEFI Driver Model, then this parameter is optional and may
-                                be NULL.
-  @param  Attributes            The open mode of the protocol interface specified by Handle
-                                and Protocol.
-
-  @retval EFI_SUCCESS           An item was added to the open list for the protocol interface, and the
-                                protocol interface was returned in Interface.
-  @retval EFI_UNSUPPORTED       Handle does not support Protocol.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-  @retval EFI_ACCESS_DENIED     Required attributes can't be supported in current environment.
-  @retval EFI_ALREADY_STARTED   Item on the open list already has requierd attributes whose agent
-                                handle is the same as AgentHandle.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_OPEN_PROTOCOL) (
-  IN  EFI_HANDLE                Handle,
-  IN  EFI_GUID                  *Protocol,
-  OUT VOID                      **Interface,
-  IN  EFI_HANDLE                AgentHandle,
-  IN  EFI_HANDLE                ControllerHandle, OPTIONAL
-  IN  UINT32                    Attributes
-  );
-
-
-/**
-  Closes a protocol on a handle that was opened using OpenProtocol().
-
-  @param  Handle                The handle for the protocol interface that was previously opened
-                                with OpenProtocol(), and is now being closed.
-  @param  Protocol              The published unique identifier of the protocol.
-  @param  Interface             Supplies the address where a pointer to the corresponding Protocol
-                                Interface is returned.
-  @param  AgentHandle           The handle of the agent that is closing the protocol interface.
-  @param  ControllerHandle      If the agent that opened a protocol is a driver that follows the
-                                UEFI Driver Model, then this parameter is the controller handle
-                                that required the protocol interface.
-
-  @retval EFI_SUCCESS           The protocol instance was closed.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-  @retval EFI_NOT_FOUND         1) Handle does not support the protocol specified by Protocol.
-                                2) The protocol interface specified by Handle and Protocol is not
-                                   currently open by AgentHandle and ControllerHandle.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CLOSE_PROTOCOL) (
-  IN EFI_HANDLE               Handle,
-  IN EFI_GUID                 *Protocol,
-  IN EFI_HANDLE               AgentHandle,
-  IN EFI_HANDLE               ControllerHandle
-  );
-
-
-typedef struct {
-  EFI_HANDLE  AgentHandle;
-  EFI_HANDLE  ControllerHandle;
-  UINT32      Attributes;
-  UINT32      OpenCount;
-} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
-
-/**
-  Retrieves the list of agents that currently have a protocol interface opened.
-
-  @param  Handle                The handle for the protocol interface that is being queried.
-  @param  Protocol              The published unique identifier of the protocol.
-  @param  EntryBuffer           A pointer to a buffer of open protocol information in the form of
-                                EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures.
-  @param  EntryCount            A pointer to the number of entries in EntryBuffer.
-
-  @retval EFI_SUCCESS           The open protocol information was returned in EntryBuffer, and the
-                                number of entries was returned EntryCount.
-  @retval EFI_OUT_OF_RESOURCES  There are not enough resources available to allocate EntryBuffer.
-  @retval EFI_NOT_FOUND         Handle does not support the protocol specified by Protocol.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
-  IN  EFI_HANDLE                          Handle,
-  IN  EFI_GUID                            *Protocol,
-  IN  EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
-  OUT UINTN                               *EntryCount
-  );
-
-/**
-  Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated
-  from pool.
-
-  @param  Handle                The handle from which to retrieve the list of protocol interface
-                                GUIDs.
-  @param  ProtocolBuffer        A pointer to the list of protocol interface GUID pointers that are
-                                installed on Handle.
-  @param  ProtocolBufferCount   A pointer to the number of GUID pointers present in
-                                ProtocolBuffer.
-
-  @retval EFI_SUCCESS           The list of protocol interface GUIDs installed on Handle was returned in
-                                ProtocolBuffer. The number of protocol interface GUIDs was
-                                returned in ProtocolBufferCount.
-  @retval EFI_OUT_OF_RESOURCES  There is not enough pool memory to store the results.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
-  IN  EFI_HANDLE      Handle,
-  OUT EFI_GUID        ***ProtocolBuffer,
-  OUT UINTN           *ProtocolBufferCount
-  );
-
-/**
-  Creates an event that is to be signaled whenever an interface is installed for a specified protocol.
-
-  @param  Protocol              The numeric ID of the protocol for which the event is to be registered.
-  @param  Event                 Event that is to be signaled whenever a protocol interface is registered
-                                for Protocol.
-  @param  Registration          A pointer to a memory location to receive the registration value.
-
-  @retval EFI_SUCCESS           The notification event has been registered.
-  @retval EFI_OUT_OF_RESOURCES  Space for the notification event could not be allocated.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
-  IN  EFI_GUID                 *Protocol,
-  IN  EFI_EVENT                Event,
-  OUT VOID                     **Registration
-  );
-
-
-typedef enum {
-  AllHandles,
-  ByRegisterNotify,
-  ByProtocol
-} EFI_LOCATE_SEARCH_TYPE;
-
-/**
-  Returns an array of handles that support a specified protocol.
-
-  @param  SearchType            Specifies which handle(s) are to be returned.
-  @param  Protocol              Specifies the protocol to search by.
-  @param  SearchKey             Specifies the search key.
-  @param  BufferSize            On input, the size in bytes of Buffer. On output, the size in bytes of
-                                the array returned in Buffer (if the buffer was large enough) or the
-                                size, in bytes, of the buffer needed to obtain the array (if the buffer was
-                                not large enough).
-  @param  Buffer                The buffer in which the array is returned.
-
-  @retval EFI_SUCCESS           The array of handles was returned.
-  @retval EFI_NOT_FOUND         No handles match the search.
-  @retval EFI_BUFFER_TOO_SMALL  The BufferSize is too small for the result.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_HANDLE) (
-  IN     EFI_LOCATE_SEARCH_TYPE   SearchType,
-  IN     EFI_GUID                 *Protocol,    OPTIONAL
-  IN     VOID                     *SearchKey,   OPTIONAL
-  IN OUT UINTN                    *BufferSize,
-  OUT    EFI_HANDLE               *Buffer
-  );
-
-/**
-  Locates the handle to a device on the device path that supports the specified protocol.
-
-  @param  Protocol              Specifies the protocol to search for.
-  @param  DevicePath            On input, a pointer to a pointer to the device path. On output, the device
-                                path pointer is modified to point to the remaining part of the device
-                                path.
-  @param  Device                A pointer to the returned device handle.
-
-  @retval EFI_SUCCESS           The resulting handle was returned.
-  @retval EFI_NOT_FOUND         No handles match the search.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_DEVICE_PATH) (
-  IN     EFI_GUID                         *Protocol,
-  IN OUT EFI_DEVICE_PATH_PROTOCOL         **DevicePath,
-  OUT    EFI_HANDLE                       *Device
-  );
-
-/**
-  Adds, updates, or removes a configuration table entry from the EFI System Table.
-
-  @param  Guid                  A pointer to the GUID for the entry to add, update, or remove.
-  @param  Table                 A pointer to the configuration table for the entry to add, update, or
-                                remove. May be NULL.
-
-  @retval EFI_SUCCESS           The (Guid, Table) pair was added, updated, or removed.
-  @retval EFI_NOT_FOUND         An attempt was made to delete a nonexistent entry.
-  @retval EFI_INVALID_PARAMETER Guid is not valid.
-  @retval EFI_OUT_OF_RESOURCES  There is not enough memory available to complete the operation.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
-  IN EFI_GUID                 *Guid,
-  IN VOID                     *Table
-  );
-
-
-/**
-  Returns an array of handles that support the requested protocol in a buffer allocated from pool.
-
-  @param  SearchType            Specifies which handle(s) are to be returned.
-  @param  Protocol              Specifies the protocol to search by.
-  @param  SearchKey             Supplies the search key depending on the SearchType.
-  @param  NoHandles             The number of handles returned in Buffer.
-  @param  Buffer                A pointer to the buffer to return the requested array of handles that
-                                support Protocol.
-
-  @retval EFI_SUCCESS           The array of handles was returned in Buffer, and the number of
-                                handles in Buffer was returned in NoHandles.
-  @retval EFI_NOT_FOUND         No handles match the search.
-  @retval EFI_OUT_OF_RESOURCES  There is not enough pool memory to store the matching results.
-  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
-  IN     EFI_LOCATE_SEARCH_TYPE       SearchType,
-  IN     EFI_GUID                     *Protocol,      OPTIONAL
-  IN     VOID                         *SearchKey,     OPTIONAL
-  IN OUT UINTN                        *NoHandles,
-  OUT    EFI_HANDLE                   **Buffer
-  );
-
-/**
-  Returns the first protocol instance that matches the given protocol.
-
-  @param  Protocol              Provides the protocol to search for.
-  @param  Registration          Optional registration key returned from
-                                RegisterProtocolNotify().
-  @param  Interface             On return, a pointer to the first interface that matches Protocol and
-                                Registration.
-
-  @retval EFI_SUCCESS           A protocol instance matching Protocol was found and returned in
-                                Interface.
-  @retval EFI_NOT_FOUND         No protocol instances were found that match Protocol and
-                                Registration.
-  @retval EFI_INVALID_PARAMETER Interface is NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_PROTOCOL) (
-  IN  EFI_GUID  *Protocol,
-  IN  VOID      *Registration, OPTIONAL
-  OUT VOID      **Interface
-  );
-
-typedef struct {
-  UINT64                            Length;
-  union {
-    EFI_PHYSICAL_ADDRESS  DataBlock;
-    EFI_PHYSICAL_ADDRESS  ContinuationPointer;
-  } Union;
-} UEFI_CAPSULE_BLOCK_DESCRIPTOR;
-
-typedef struct {
-  EFI_GUID          CapsuleGuid;
-  UINT32            HeaderSize;
-  UINT32            Flags;
-  UINT32            CapsuleImageSize;
-} UEFI_CAPSULE_HEADER;
-
-#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET          0x00010000
-#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE         0x00020000
-
-/**
-  Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended
-  consumption, the firmware may process the capsule immediately. If the payload should persist
-  across a system reset, the reset value returned from EFI_QueryCapsuleCapabilities must
-  be passed into ResetSystem() and will cause the capsule to be processed by the firmware as
-  part of the reset process.
-
-  @param  CapsuleHeaderArray    Virtual pointer to an array of virtual pointers to the capsules
-                                being passed into update capsule.
-  @param  CapsuleCount          Number of pointers to EFI_CAPSULE_HEADER in
-                                CaspuleHeaderArray.
-  @param  ScatterGatherList     Physical pointer to a set of
-                                EFI_CAPSULE_BLOCK_DESCRIPTOR that describes the
-                                location in physical memory of a set of capsules.
-
-  @retval EFI_SUCCESS           Valid capsule was passed. If
-                                CAPSULE_FLAGS_PERSIT_ACROSS_RESET is not set, the
-                                capsule has been successfully processed by the firmware.
-  @retval EFI_DEVICE_ERROR      The capsule update was started, but failed due to a device error.
-  @retval EFI_INVALID_PARAMETER CapsuleSize is NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_UPDATE_CAPSULE) (
-  IN UEFI_CAPSULE_HEADER    **CapsuleHeaderArray,
-  IN UINTN                  CapsuleCount,
-  IN EFI_PHYSICAL_ADDRESS   ScatterGatherList   OPTIONAL
-  );
-
-/**
-  Returns if the capsule can be supported via UpdateCapsule().
-
-  @param  CapsuleHeaderArray    Virtual pointer to an array of virtual pointers to the capsules
-                                being passed into update capsule.
-  @param  CapsuleCount          Number of pointers to EFI_CAPSULE_HEADER in
-                                CaspuleHeaderArray.
-  @param  MaxiumCapsuleSize     On output the maximum size that UpdateCapsule() can
-                                support as an argument to UpdateCapsule() via
-                                CapsuleHeaderArray and ScatterGatherList.
-  @param  ResetType             Returns the type of reset required for the capsule update.
-
-  @retval EFI_SUCCESS           Valid answer returned.
-  @retval EFI_UNSUPPORTED       The capsule type is not supported on this platform, and
-                                MaximumCapsuleSize and ResetType are undefined.
-  @retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES) (
-  IN  UEFI_CAPSULE_HEADER    **CapsuleHeaderArray,
-  IN  UINTN                  CapsuleCount,
-  OUT UINT64                 *MaximumCapsuleSize,
-  OUT EFI_RESET_TYPE         *ResetType
-  );
-
-/**
-  Returns information about the EFI variables.
-
-  @param  Attributes                   Attributes bitmask to specify the type of variables on
-                                       which to return information.
-  @param  MaximumVariableStorageSize   On output the maximum size of the storage space
-                                       available for the EFI variables associated with the
-                                       attributes specified.
-  @param  RemainingVariableStorageSize Returns the remaining size of the storage space
-                                       available for the EFI variables associated with the
-                                       attributes specified.
-  @param  MaximumVariableSize          Returns the maximum size of the individual EFI
-                                       variables associated with the attributes specified.
-
-  @retval EFI_SUCCESS                  Valid answer returned.
-  @retval EFI_INVALID_PARAMETER        An invalid combination of attribute bits was supplied
-  @retval EFI_UNSUPPORTED              The attribute is not supported on this platform, and the
-                                       MaximumVariableStorageSize,
-                                       RemainingVariableStorageSize, MaximumVariableSize
-                                       are undefined.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_QUERY_VARIABLE_INFO) (
-  IN  UINT32            Attributes,
-  OUT UINT64            *MaximumVariableStorageSize,
-  OUT UINT64            *RemainingVariableStorageSize,
-  OUT UINT64            *MaximumVariableSize
-  );
-
-
-//
-// EFI Runtime Services Table
-//
-#define EFI_SYSTEM_TABLE_SIGNATURE 			0x5453595320494249
-#define EFI_SYSTEM_TABLE_REVISION 			((2<<16) | (10))
-#define EFI_2_10_SYSTEM_TABLE_REVISION 	((2<<16) | (10))
-#define EFI_2_00_SYSTEM_TABLE_REVISION 	((2<<16) | (00))
-#define EFI_1_10_SYSTEM_TABLE_REVISION 	((1<<16) | (10))
-#define EFI_1_02_SYSTEM_TABLE_REVISION 	((1<<16) | (02))
-
-#define EFI_RUNTIME_SERVICES_SIGNATURE 	0x56524553544e5552
-#define EFI_RUNTIME_SERVICES_REVISION 	EFI_2_00_SYSTEM_TABLE_REVISION
-
-typedef struct {
-	EFI_TABLE_HEADER Hdr;
-
-	//
-	// Time Services
-	//
-	EFI_GET_TIME 										GetTime;
-	EFI_SET_TIME 										SetTime;
-	EFI_GET_WAKEUP_TIME 						GetWakeupTime;
-	EFI_SET_WAKEUP_TIME 						SetWakeupTime;
-
-	//
-	// Virtual Memory Services
-	//
-	EFI_SET_VIRTUAL_ADDRESS_MAP			SetVirtualAddressMap;
-	EFI_CONVERT_POINTER 						ConvertPointer;
-
-	//
-	// Variable Services
-	//
-	EFI_GET_VARIABLE 								GetVariable;
-	EFI_GET_NEXT_VARIABLE_NAME 			GetNextVariableName;
-	EFI_SET_VARIABLE 								SetVariable;
-
-	//
-	// Miscellaneous Services
-	//
-	EFI_GET_NEXT_HIGH_MONO_COUNT 		GetNextHighMonotonicCount;
-	EFI_RESET_SYSTEM 								ResetSystem;
-
-	//
-	// UEFI 2.0 Capsule Services
-	//
-	EFI_UPDATE_CAPSULE 							UpdateCapsule;
-	EFI_QUERY_CAPSULE_CAPABILITIES 	QueryCapsuleCapabilities;
-
-	//
-	// Miscellaneous UEFI 2.0 Service
-	//
-	EFI_QUERY_VARIABLE_INFO 				QueryVariableInfo;
-} EFI_RUNTIME_SERVICES;
-
-
-#define EFI_BOOT_SERVICES_SIGNATURE 	0x56524553544f4f42
-#define EFI_BOOT_SERVICES_REVISION 		((2<<16) | (00))
-
-typedef struct {
-	EFI_TABLE_HEADER 	Hdr;
-	
-	//
-	// Task Priority Services
-	//
-	EFI_RAISE_TPL 									RaiseTPL;
-	EFI_RESTORE_TPL 								RestoreTPL;
-
-	//
-	// Memory Services
-	//
-	EFI_ALLOCATE_PAGES 							AllocatePages;
-	EFI_FREE_PAGES 									FreePages;
-	EFI_GET_MEMORY_MAP 							GetMemoryMap;
-	EFI_ALLOCATE_POOL 							AllocatePool;
-	EFI_FREE_POOL 									FreePool;
-
-	//
-	// Event & Timer Services
-	//
-	EFI_CREATE_EVENT 									CreateEvent;
-	EFI_SET_TIMER 										SetTimer;
-	EFI_WAIT_FOR_EVENT 								WaitForEvent;
-	EFI_SIGNAL_EVENT 									SignalEvent;
-	EFI_CLOSE_EVENT 									CloseEvent;
-	EFI_CHECK_EVENT 									CheckEvent;
-
-	//
-	// Protocol Handler Services
-	//
-	EFI_INSTALL_PROTOCOL_INTERFACE 		InstallProtocolInterface;
-	EFI_REINSTALL_PROTOCOL_INTERFACE 	ReinstallProtocolInterface;
-	EFI_UNINSTALL_PROTOCOL_INTERFACE 	UninstallProtocolInterface;
-	EFI_HANDLE_PROTOCOL 							HandleProtocol;
-	VOID															*Reserved;
-	EFI_REGISTER_PROTOCOL_NOTIFY 			RegisterProtocolNotify;
-	EFI_LOCATE_HANDLE 								LocateHandle;
-	EFI_LOCATE_DEVICE_PATH 						LocateDevicePath;
-	EFI_INSTALL_CONFIGURATION_TABLE 	InstallConfigurationTable;
-
-	//
-	// Image Services
-	//
-	EFI_IMAGE_LOAD 										LoadImage;
-	EFI_IMAGE_START 									StartImage;
-	EFI_EXIT 													Exit;
-	EFI_IMAGE_UNLOAD 									UnloadImage;
-	EFI_EXIT_BOOT_SERVICES 						ExitBootServices;
-
-	//
-	// Miscellaneous Services
-	//
-	EFI_GET_NEXT_MONOTONIC_COUNT 			GetNextMonotonicCount;
-	EFI_STALL 												Stall;
-	EFI_SET_WATCHDOG_TIMER 						SetWatchdogTimer;
-
-	//
-	// DriverSupport Services
-	//
-	EFI_CONNECT_CONTROLLER 						ConnectController;
-	EFI_DISCONNECT_CONTROLLER 				DisconnectController;
-
-	//
-	// Open and Close Protocol Services
-	//
-	EFI_OPEN_PROTOCOL 								OpenProtocol;
-	EFI_CLOSE_PROTOCOL 								CloseProtocol;
-	EFI_OPEN_PROTOCOL_INFORMATION 		OpenProtocolInformation;
-
-	//
-	// Library Services
-	//
-	EFI_PROTOCOLS_PER_HANDLE 					ProtocolsPerHandle;
-	EFI_LOCATE_HANDLE_BUFFER 					LocateHandleBuffer;
-	EFI_LOCATE_PROTOCOL 							LocateProtocol;
-	EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES 		InstallMultipleProtocolInterfaces;
-	EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES 	UninstallMultipleProtocolInterfaces;
-
-	//
-	// 32-bit CRC Services
-	//
-	EFI_CALCULATE_CRC32 							CalculateCrc32;
-
-	//
-	// Miscellaneous Services
-	//
-	EFI_COPY_MEM 											CopyMem;
-	EFI_SET_MEM 											SetMem;
-
-	EFI_CREATE_EVENT_EX 							CreateEventEx;
-} EFI_BOOT_SERVICES;
-
-//
-// Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the 
-// EFI System Table.
-// 
-typedef struct{
-	EFI_GUID 													VendorGuid;
-	VOID 															*VendorTable;
-} EFI_CONFIGURATION_TABLE;
-
-struct _EFI_SYSTEM_TABLE {
-	EFI_TABLE_HEADER 	Hdr;
-	CHAR16 														*FirmwareVendor;
-	UINT32 														FirmwareRevision;
-	EFI_HANDLE 												ConsoleInHandle;
-	EFI_SIMPLE_TEXT_INPUT_PROTOCOL 		*ConIn;
-	EFI_HANDLE 												ConsoleOutHandle;
-	EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL 	*ConOut;
-	EFI_HANDLE 												StandardErrorHandle;
-	EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL 	*StdErr;
-	EFI_RUNTIME_SERVICES 							*RuntimeServices;
-	EFI_BOOT_SERVICES 								*BootServices;
-	UINTN 														NumberOfTableEntries;
-	EFI_CONFIGURATION_TABLE 					*ConfigurationTable;
-};
-
-//
-// EFI File location to boot from on removable media devices
-//
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32    L"\\EFI\\BOOT\\BOOTIA32.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64    L"\\EFI\\BOOT\\BOOTIA64.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64     L"\\EFI\\BOOT\\BOOTX64.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_EBC     L"\\EFI\\BOOT\\BOOTEBC.EFI"
-
-#if   defined (MDE_CPU_IA32)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_IA32
-#elif defined (MDE_CPU_IPF)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_IA64
-#elif defined (MDE_CPU_X64)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_X64
-#elif defined (MDE_CPU_EBC)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_EBC
-#else
-  #error Unknown Processor Type
-#endif
-
-#include <Uefi/UefiDevicePath.h>
-#include <Uefi/UefiPxe.h>
-#include <Uefi/UefiGpt.h>
-#include <Uefi/UefiInternalFormRepresentation.h>
-
-#endif
diff --git a/MdePkg/x64/ProcessorBind.h b/MdePkg/x64/ProcessorBind.h
deleted file mode 100644
index 34b35a89b8..0000000000
--- a/MdePkg/x64/ProcessorBind.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/** @file
-  Processor or Compiler specific defines and types x64 (Intel(r) EM64T, AMD64).
-
-  Copyright (c) 2006, Intel Corporation                                                         
-  All rights reserved. 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:  ProcessorBind.h
-
-**/
-
-#ifndef __PROCESSOR_BIND_H__
-#define __PROCESSOR_BIND_H__
-
-//
-// Define the processor type so other code can make processor based choices
-//
-#define MDE_CPU_X64
-
-
-//
-// Make sure we are useing the correct packing rules per EFI specification
-//
-#ifndef __GNUC__
-#pragma pack()
-#endif
-
-#if _MSC_EXTENSIONS 
-    
-//
-// Disable warning that make it impossible to compile at /W4
-// This only works for Microsoft* tools
-//
-
-//
-// 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 )
-
-//
-// This warning is caused by functions defined but not used. For precompiled header only.
-//
-#pragma warning ( disable : 4505 )
-
-//
-// This warning is caused by empty (after preprocessing) souce file. For precompiled header only.
-//
-#pragma warning ( disable : 4206 )
-
-#endif
-
-
-#if !defined(__GNUC__) && (__STDC_VERSION__ < 199901L)
-  //
-  // No ANSI C 2000 stdint.h integer width declarations, so define equivalents
-  //
- 
-  #if _MSC_EXTENSIONS 
-    
-
-    //
-    // use Microsoft C complier dependent interger width types 
-    //
-    typedef unsigned __int64    UINT64;
-    typedef __int64             INT64;
-    typedef unsigned __int32    UINT32;
-    typedef __int32             INT32;
-    typedef unsigned short      UINT16;
-    typedef unsigned short      CHAR16;
-    typedef short               INT16;
-    typedef unsigned char       BOOLEAN;
-    typedef unsigned char       UINT8;
-    typedef char                CHAR8;
-    typedef char                INT8;
-  #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;
-      typedef long long           INT64;
-      typedef unsigned int        UINT32;
-      typedef int                 INT32;
-      typedef unsigned short      CHAR16;
-      typedef unsigned short      UINT16;
-      typedef short               INT16;
-      typedef unsigned char       BOOLEAN;
-      typedef unsigned char       UINT8;
-      typedef char                CHAR8;
-      typedef char                INT8;
-    #else
-      //
-      // Assume LP64 - longs and pointers are 64-bit. Ints are 32-bit.
-      //
-      typedef unsigned long   UINT64;
-      typedef long            INT64;
-      typedef unsigned int    UINT32;
-      typedef int             INT32;
-      typedef unsigned short  UINT16;
-      typedef unsigned short  CHAR16;
-      typedef short           INT16;
-      typedef unsigned char   BOOLEAN;
-      typedef unsigned char   UINT8;
-      typedef char            CHAR8;
-      typedef char            INT8;
-    #endif
-  #endif
-
-  #define UINT8_MAX 0xff
-
-#else
-  //
-  // Use ANSI C 2000 stdint.h integer width declarations
-  //
-  #include <stdint.h>
-  typedef uint8_t   BOOLEAN;
-  typedef int8_t    INT8;
-  typedef uint8_t   UINT8;
-  typedef int16_t   INT16;
-  typedef uint16_t  UINT16;
-  typedef int32_t   INT32;
-  typedef uint32_t  UINT32;
-  typedef int64_t   INT64;
-  typedef uint64_t  UINT64;
-  typedef char      CHAR8;
-  typedef uint16_t  CHAR16;
-
-#endif
-
-typedef UINT64  UINTN;
-typedef INT64   INTN;
-
-
-//
-// Processor specific defines
-//
-#define MAX_BIT     0x8000000000000000ULL
-#define MAX_2_BITS  0xC000000000000000ULL
-
-//
-// Maximum legal X64 address
-//
-#define MAX_ADDRESS   0xFFFFFFFFFFFFFFFFULL
-
-//
-// The stack alignment required for X64
-//
-#define CPU_STACK_ALIGNMENT   16
-
-//
-// Modifier to ensure that all protocol member functions and EFI intrinsics
-// use the correct C calling convention. All protocol member functions and
-// EFI intrinsics are required to modify thier member functions with EFIAPI.
-//
-#if _MSC_EXTENSIONS 
-  ///
-  /// Define the standard calling convention reguardless of optimization level.
-  /// __cdecl is Microsoft* specific C extension.
-  /// 
-  #define EFIAPI __cdecl  
-#elif __GNUC__
-  ///
-  /// Define the standard calling convention reguardless of optimization level.
-  /// The GCC support assumes a GCC compiler that supports the EFI ABI. The EFI
-  /// ABI is much closer to the x64 Microsoft* ABI than standard x64 (x86-64) 
-  /// GCC ABI. Thus a standard x64 (x86-64) GCC compiler can not be used for 
-  /// x64. Warning the assembly code in the MDE x64 does not follow the correct 
-  /// ABI for the standard x64 (x86-64) GCC.
-  ///
-  #define EFIAPI 
-#else
-  ///
-  /// The default for a non Microsoft* or GCC compiler is to assume the EFI ABI
-  /// is the standard. 
-  ///
-  #define EFIAPI       
-#endif
-
-//
-// 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 _MSC_EXTENSIONS
-  #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)
-#else
-  #define GLOBAL_REMOVE_IF_UNREFERENCED
-#endif
-
-#endif
-