public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: devel@edk2.groups.io
Cc: Zailiang Sun <zailiang.sun@intel.com>,
	Yi Qian <yi.qian@intel.com>, Gary Lin <glin@suse.com>
Subject: [edk2-platforms Patch 22/28] Vlv2TbltDevicePkg: Add GCC IA32 build support
Date: Wed, 10 Jul 2019 12:05:10 -0700	[thread overview]
Message-ID: <20190710190516.6012-23-michael.d.kinney@intel.com> (raw)
In-Reply-To: <20190710190516.6012-1-michael.d.kinney@intel.com>

* Remove CpuIa32Lib that contains inline assembly
  that is not compatible with GCC builds.  Use BaseLib
  functions for CPUID and MSR access and the CPUID and
  MSR defintions from the UefiCpuPkg.
* Add PlatformPkgGccIa32.dsc
* Add /IA32 flag to Build_IFWI.sh
* Add /IA32 flag to bld_vlv.sh
* Remove unused references to gEfiPlatformCpuInfoGuid

Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Cc: Gary Lin <glin@suse.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 .../AcpiPlatform/AcpiPlatform.c               |   1 -
 .../Intel/Vlv2TbltDevicePkg/Build_IFWI.sh     |   4 +
 .../Include/Guid/PlatformCpuInfo.h            |  16 +-
 .../Include/Library/CpuIA32.h                 | 345 ------------------
 .../Library/CpuIA32Lib/CpuIA32Lib.inf         |  41 ---
 .../Library/CpuIA32Lib/EfiCpuVersion.c        |  70 ----
 .../Library/CpuIA32Lib/IA32/CpuIA32.S         | 223 -----------
 .../Library/CpuIA32Lib/IA32/CpuIA32.asm       | 206 -----------
 .../Library/CpuIA32Lib/IA32/CpuIA32.c         | 177 ---------
 .../Library/CpuIA32Lib/X64/Cpu.S              | 207 -----------
 .../Library/CpuIA32Lib/X64/Cpu.asm            | 222 -----------
 .../MonoStatusCode/MonoStatusCode.inf         |   1 -
 .../PlatformInitPei/MemoryCallback.c          |  11 +-
 .../PlatformInitPei/PlatformEarlyInit.h       |   4 +-
 .../PlatformInitPei/PlatformInitPei.inf       |   1 -
 .../PlatformPei/PlatformPei.inf               |   1 -
 ...formPkgIA32.dsc => PlatformPkgGccIA32.dsc} |  28 +-
 .../Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc   |   1 -
 .../Vlv2TbltDevicePkg/PlatformPkgIA32.dsc     |   1 -
 .../Vlv2TbltDevicePkg/PlatformPkgX64.dsc      |   1 -
 .../PlatformSetupDxe/PlatformSetupDxe.h       |   1 -
 .../PlatformSetupDxe/PlatformSetupDxe.inf     |   2 +-
 .../PlatformSetupDxe/SetupInfoRecords.c       |  42 ++-
 .../Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.c   |  12 +-
 .../Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf |   1 +
 .../SmBiosMiscDxe/MiscOemType0x90Function.c   |  37 +-
 .../SmBiosMiscDxe/MiscOemType0x94Function.c   |  10 +-
 .../MiscProcessorInformationFunction.c        |   3 +-
 .../SmBiosMiscDxe/SmBiosMiscDxe.inf           |   1 -
 Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh   |   7 +-
 30 files changed, 97 insertions(+), 1580 deletions(-)
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Include/Library/CpuIA32.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/EfiCpuVersion.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.S
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.asm
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.S
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.asm
 copy Platform/Intel/Vlv2TbltDevicePkg/{PlatformPkgIA32.dsc => PlatformPkgGccIA32.dsc} (96%)

diff --git a/Platform/Intel/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c b/Platform/Intel/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c
index 72edc1bc1e..479ffa61a0 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c
@@ -36,7 +36,6 @@ Abstract:
 #include <Guid/PlatformInfo.h>
 #include <Guid/BoardFeatures.h>
 #include <Protocol/AcpiTable.h>
-#include <Library/CpuIA32.h>
 #include <SetupMode.h>
 #include <Guid/AcpiTableStorage.h>
 #include <Guid/EfiVpdData.h>
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
index 422e90ca6c..349f0c7ba7 100755
--- a/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
+++ b/Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
@@ -63,6 +63,10 @@ for (( i=1; i<=$#; ))
       Arch=X64
       Build_Flags="$Build_Flags /x64"
       shift
+    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
+      Arch=IA32
+      Build_Flags="$Build_Flags /IA32"
+      shift
     elif [ "$1" == "/nG" ]; then
       Stitch_Flags="$Stitch_Flags /nG"
       shift
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Include/Guid/PlatformCpuInfo.h b/Platform/Intel/Vlv2TbltDevicePkg/Include/Guid/PlatformCpuInfo.h
index f1756662bd..eec167da3a 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/Include/Guid/PlatformCpuInfo.h
+++ b/Platform/Intel/Vlv2TbltDevicePkg/Include/Guid/PlatformCpuInfo.h
@@ -1,12 +1,9 @@
 /*++
 
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

+  Copyright (c) 2004  - 2019, Intel Corporation. All rights reserved.<BR>
+
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
-                                                                                   

-
-
 Module Name:
 
   PlatformCpuInfo.h
@@ -21,7 +18,6 @@ Abstract:
 #define _PLATFORM_CPU_INFO_GUID_H_
 
 #include "CpuType.h"
-#include <Library/CpuIA32.h>
 
 #define EFI_PLATFORM_CPU_INFO_GUID \
   {\
@@ -95,6 +91,14 @@ typedef struct {
   UINT8               HwCoordinationFeedback;   // ECX [0]
 } EFI_CPU_POWER_MANAGEMENT; // CPUID.6.EAX
 
+
+typedef struct {
+  UINT32  RegEax;
+  UINT32  RegEbx;
+  UINT32  RegEcx;
+  UINT32  RegEdx;
+} EFI_CPUID_REGISTER;
+
 //
 // IMPORTANT: Each CPU feature enabling entry is assumed a tri-state variable.
 //   - Keep the respective feature entry variable as default value (0x00)
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Include/Library/CpuIA32.h b/Platform/Intel/Vlv2TbltDevicePkg/Include/Library/CpuIA32.h
deleted file mode 100644
index 78c78319ce..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Include/Library/CpuIA32.h
+++ /dev/null
@@ -1,345 +0,0 @@
-/*++
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-
-Module Name:
-
-  CpuIA32.h
-
-Abstract:
-
---*/
-
-#ifndef _CPU_IA32_H
-#define _CPU_IA32_H
-
-typedef struct {
-  UINT32  RegEax;
-  UINT32  RegEbx;
-  UINT32  RegEcx;
-  UINT32  RegEdx;
-} EFI_CPUID_REGISTER;
-
-typedef struct {
-  UINT32  HeaderVersion;
-  UINT32  UpdateRevision;
-  UINT32  Date;
-  UINT32  ProcessorId;
-  UINT32  Checksum;
-  UINT32  LoaderRevision;
-  UINT32  ProcessorFlags;
-  UINT32  DataSize;
-  UINT32  TotalSize;
-  UINT8   Reserved[12];
-} EFI_CPU_MICROCODE_HEADER;
-
-typedef struct {
-  UINT32  ExtendedSignatureCount;
-  UINT32  ExtendedTableChecksum;
-  UINT8   Reserved[12];
-} EFI_CPU_MICROCODE_EXTENDED_TABLE_HEADER;
-
-typedef struct {
-  UINT32  ProcessorSignature;
-  UINT32  ProcessorFlag;
-  UINT32  ProcessorChecksum;
-} EFI_CPU_MICROCODE_EXTENDED_TABLE;
-
-typedef struct {
-  UINT32  Stepping       : 4;
-  UINT32  Model          : 4;
-  UINT32  Family         : 4;
-  UINT32  Type           : 2;
-  UINT32  Reserved1      : 2;
-  UINT32  ExtendedModel  : 4;
-  UINT32  ExtendedFamily : 8;
-  UINT32  Reserved2      : 4;
-} EFI_CPU_VERSION;
-
-#define EFI_CPUID_SIGNATURE                   0x0
-#define EFI_CPUID_VERSION_INFO                0x1
-#define EFI_CPUID_CACHE_INFO                  0x2
-#define EFI_CPUID_SERIAL_NUMBER               0x3
-#define EFI_CPUID_EXTENDED_FUNCTION           0x80000000
-#define EFI_CPUID_EXTENDED_CPU_SIG            0x80000001
-#define EFI_CPUID_BRAND_STRING1               0x80000002
-#define EFI_CPUID_BRAND_STRING2               0x80000003
-#define EFI_CPUID_BRAND_STRING3               0x80000004
-
-#define EFI_MSR_IA32_PLATFORM_ID              0x17
-#define EFI_MSR_IA32_APIC_BASE                0x1B
-#define EFI_MSR_EBC_HARD_POWERON              0x2A
-#define EFI_MSR_EBC_SOFT_POWERON              0x2B
-#define BINIT_DRIVER_DISABLE                  0x40
-#define INTERNAL_MCERR_DISABLE                0x20
-#define INITIATOR_MCERR_DISABLE               0x10
-#define EFI_MSR_EBC_FREQUENCY_ID              0x2C
-#define EFI_MSR_IA32_BIOS_UPDT_TRIG           0x79
-#define EFI_MSR_IA32_BIOS_SIGN_ID             0x8B
-#define EFI_MSR_PSB_CLOCK_STATUS              0xCD
-#define EFI_APIC_GLOBAL_ENABLE                0x800
-#define EFI_MSR_IA32_MISC_ENABLE              0x1A0
-#define LIMIT_CPUID_MAXVAL_ENABLE_BIT         0x00400000
-#define AUTOMATIC_THERMAL_CONTROL_ENABLE_BIT  0x00000008
-#define COMPATIBLE_FPU_OPCODE_ENABLE_BIT      0x00000004
-#define LOGICAL_PROCESSOR_PRIORITY_ENABLE_BIT 0x00000002
-#define FAST_STRING_ENABLE_BIT                0x00000001
-
-#define EFI_CACHE_VARIABLE_MTRR_BASE          0x200
-#define EFI_CACHE_VARIABLE_MTRR_END           0x20F
-#define EFI_CACHE_IA32_MTRR_DEF_TYPE          0x2FF
-#define EFI_CACHE_MTRR_VALID                  0x800
-#define EFI_CACHE_FIXED_MTRR_VALID            0x400
-#define EFI_CACHE_VALID_ADDRESS               0xFFFFFF000
-#define EFI_MSR_VALID_MASK                    0xFFFFFFFFF
-#define EFI_CACHE_VALID_EXTENDED_ADDRESS      0xFFFFFFFFFF000
-#define EFI_MSR_VALID_EXTENDED_MASK           0xFFFFFFFFFFFFF
-
-#define EFI_IA32_MTRR_FIX64K_00000            0x250
-#define EFI_IA32_MTRR_FIX16K_80000            0x258
-#define EFI_IA32_MTRR_FIX16K_A0000            0x259
-#define EFI_IA32_MTRR_FIX4K_C0000             0x268
-#define EFI_IA32_MTRR_FIX4K_C8000             0x269
-#define EFI_IA32_MTRR_FIX4K_D0000             0x26A
-#define EFI_IA32_MTRR_FIX4K_D8000             0x26B
-#define EFI_IA32_MTRR_FIX4K_E0000             0x26C
-#define EFI_IA32_MTRR_FIX4K_E8000             0x26D
-#define EFI_IA32_MTRR_FIX4K_F0000             0x26E
-#define EFI_IA32_MTRR_FIX4K_F8000             0x26F
-
-#define EFI_IA32_MCG_CAP                      0x179
-#define EFI_IA32_MCG_CTL                      0x17B
-#define EFI_IA32_MC0_CTL                      0x400
-#define EFI_IA32_MC0_STATUS                   0x401
-
-#define EFI_IA32_PERF_STATUS                  0x198
-#define EFI_IA32_PERF_CTL                     0x199
-
-#define EFI_CACHE_UNCACHEABLE                 0
-#define EFI_CACHE_WRITECOMBINING              1
-#define EFI_CACHE_WRITETHROUGH                4
-#define EFI_CACHE_WRITEPROTECTED              5
-#define EFI_CACHE_WRITEBACK                   6
-
-//
-// Combine f(FamilyId), m(Model), s(SteppingId) to a single 32 bit number
-//
-#define EfiMakeCpuVersion(f, m, s)         \
-  (((UINT32) (f) << 16) | ((UINT32) (m) << 8) | ((UINT32) (s)))
-
-/**
-  Halt the Cpu
-
-  @param[in] None
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiHalt (
-  VOID
-  );
-
-/**
-  Write back and invalidate the Cpu cache
-
-  @param[in] None
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiWbinvd (
-  VOID
-  );
-
-/**
-  Invalidate the Cpu cache
-
-   @param[in] None
-
-   @retval None
-
-**/
-VOID
-EFIAPI
-EfiInvd (
-  VOID
-  );
-
-/**
-  Get the Cpu info by execute the CPUID instruction
-
-  @param[in] RegisterInEax The input value to put into register EAX
-  @param[in] Regs          The Output value
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiCpuid (
-  IN  UINT32                 RegisterInEax,
-  OUT EFI_CPUID_REGISTER     *Regs
-  );
-
-/**
-  When RegisterInEax != 4, the functionality is the same as EfiCpuid.
-  When RegisterInEax == 4, the function return the deterministic cache
-  parameters by excuting the CPUID instruction.
-
-  @param[in]  RegisterInEax  The input value to put into register EAX.
-  @param[in]  CacheLevel     The deterministic cache level.
-  @param[in]  Regs           The Output value.
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiCpuidExt (
-  IN  UINT32                 RegisterInEax,
-  IN  UINT32                 CacheLevel,
-  OUT EFI_CPUID_REGISTER     *Regs
-  );
-
-/**
-  Read Cpu MSR
-
-  @param[in] Index  The index value to select the register
-
-  @retval           Return the read data
-
-**/
-UINT64
-EFIAPI
-EfiReadMsr (
-  IN UINT32     Index
-  );
-
-/**
-  Write Cpu MSR
-
-  @param[in] Index  The index value to select the register
-  @param[in] Value  The value to write to the selected register
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiWriteMsr (
-  IN UINT32     Index,
-  IN UINT64     Value
-  );
-
-/**
-  Read Time stamp
-
-  @param[in] None
-
-  @retval Return the read data
-
-**/
-UINT64
-EFIAPI
-EfiReadTsc (
-  VOID
-  );
-
-/**
-  Writing back and invalidate the cache,then diable it
-
-  @param[in] None
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiDisableCache (
-  VOID
-  );
-
-/**
-  Invalidate the cache,then Enable it
-
-  @param[in] None
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiEnableCache (
-  VOID
-  );
-
-/**
-  Get Eflags
-
-  @param[in] None
-
-  @retval Return the Eflags value
-
-**/
-UINT32
-EFIAPI
-EfiGetEflags (
-  VOID
-  );
-
-/**
-  Disable Interrupts
-
-  @param[in] None
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiDisableInterrupts (
-  VOID
-  );
-
-/**
-  Enable Interrupts
-
-  @param[in] None
-
-  @retval None
-
-**/
-VOID
-EFIAPI
-EfiEnableInterrupts (
-  VOID
-  );
-
-/**
-  Extract CPU detail version infomation
-
-  @param[in] FamilyId    FamilyId, including ExtendedFamilyId
-  @param[in] Model       Model, including ExtendedModel
-  @param[in] SteppingId  SteppingId
-  @param[in] Processor   Processor
-
-**/
-VOID
-EFIAPI
-EfiCpuVersion (
-  IN   UINT16  *FamilyId,    OPTIONAL
-  IN   UINT8   *Model,       OPTIONAL
-  IN   UINT8   *SteppingId,  OPTIONAL
-  IN   UINT8   *Processor    OPTIONAL
-  );
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf b/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
deleted file mode 100644
index c9f0a434ac..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-#
-# Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-#
-#   Module Name:
-#
-#     CpuIA32Lib.inf
-#
-#   Abstract:
-#
-#     Component description file for the Cpu IA32 library.
-#
-#--*/
-
-[defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = CpuIA32Lib
-  FILE_GUID                      = 98546178-64F1-4d2e-814F-6BF963DB7930
-  MODULE_TYPE                    = BASE
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = CpuIA32Lib
-  PI_SPECIFICATION_VERSION       = 0x0001000A
-
-[Sources]
-  EfiCpuVersion.c
-
-[Sources.IA32]
-  IA32/CpuIA32.c
-
-[Sources.X64]
-  X64/Cpu.asm
-  X64/Cpu.S
-
-[Packages]
-  MdePkg/MdePkg.dec
-  Vlv2TbltDevicePkg/PlatformPkg.dec
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/EfiCpuVersion.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/EfiCpuVersion.c
deleted file mode 100644
index 935f11e871..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/EfiCpuVersion.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/** @file
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-Module Name:
-
-
-  EfiCpuVersion.c
-
-Abstract:
-
-  Provide cpu version extract considering extended family & model ID.
---*/
-
-#include <Library/CpuIA32.h>
-
-/**
-  Extract CPU detail version infomation
-
-  @param  FamilyId    FamilyId, including ExtendedFamilyId
-  @param  Model       Model, including ExtendedModel
-  @param  SteppingId  SteppingId
-  @param  Processor   Processor
-
-**/
-VOID
-EFIAPI
-EfiCpuVersion (
-  IN  OUT UINT16  *FamilyId,    OPTIONAL
-  IN  OUT UINT8   *Model,       OPTIONAL
-  IN  OUT UINT8   *SteppingId,  OPTIONAL
-  IN  OUT UINT8   *Processor    OPTIONAL
-  )
-
-{
-  EFI_CPUID_REGISTER Register;
-  UINT8              TempFamilyId;
-
-  EfiCpuid (EFI_CPUID_VERSION_INFO, &Register);
-
-  if (SteppingId != NULL) {
-    *SteppingId = (UINT8) (Register.RegEax & 0xF);
-  }
-
-  if (Processor != NULL) {
-    *Processor = (UINT8) ((Register.RegEax >> 12) & 0x3);
-  }
-
-  if (Model != NULL || FamilyId != NULL) {
-    TempFamilyId = (UINT8) ((Register.RegEax >> 8) & 0xF);
-
-    if (Model != NULL) {
-      *Model = (UINT8) ((Register.RegEax >> 4) & 0xF);
-      if (TempFamilyId == 0x6 || TempFamilyId == 0xF) {
-        *Model = (UINT8) (*Model  | ((Register.RegEax >> 12) & 0xF0));
-      }
-    }
-
-    if (FamilyId != NULL) {
-      *FamilyId = TempFamilyId;
-      if (TempFamilyId == 0xF) {
-        *FamilyId = (UINT8 ) (*FamilyId + (UINT16) ((Register.RegEax >> 20) & 0xFF));
-      }
-    }
-  }
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.S b/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.S
deleted file mode 100644
index ba1bd448c0..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.S
+++ /dev/null
@@ -1,223 +0,0 @@
-#
-#
-# Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-#
-#Module Name:
-#
-#  CpuIA32.c
-#
-#Abstract:
-#
-#--*/
-
-##include "CpuIA32.h"
-#include "EfiBind.h"
-
-#---------------------------------------------------------------------------
-    .586p:
-    #.MODEL flat,C
-    .code:
-
-#---------------------------------------------------------------------------
-
-.globl ASM_PFX(EfiHalt)
-.globl ASM_PFX(EfiWbinvd)
-.globl ASM_PFX(EfiInvd)
-.globl ASM_PFX(EfiCpuid)
-.globl ASM_PFX(EfiReadMsr)
-.globl ASM_PFX(EfiWriteMsr)
-.globl ASM_PFX(EfiReadTsc)
-.globl ASM_PFX(EfiDisableCache)
-.globl ASM_PFX(EfiEnableCache)
-.globl ASM_PFX(EfiGetEflags)
-.globl ASM_PFX(EfiDisableInterrupts)
-.globl ASM_PFX(EfiEnableInterrupts)
-.globl ASM_PFX(EfiCpuidExt)
-
-
-#VOID
-#EfiHalt (
-#  VOID
-#)
-ASM_PFX(EfiHalt):
-    hlt
-    ret
-#EfiHalt ENDP
-
-#VOID
-#EfiWbinvd (
-#  VOID
-#)
-ASM_PFX(EfiWbinvd):
-    wbinvd
-    ret
-#EfiWbinvd ENDP
-
-#VOID
-#EfiInvd (
-# VOID
-#)
-ASM_PFX(EfiInvd):
-    invd
-    ret
-#EfiInvd ENDP
-
-#VOID
-#EfiCpuid (IN UINT32 RegisterInEax,
-#          OUT EFI_CPUID_REGISTER *Reg OPTIONAL)
-ASM_PFX(EfiCpuid):
-    pushl %ebp
-    movl %esp, %ebp
-    pushl %ebx
-    pushl %esi
-    pushl %edi
-    pushal
-
-    movl   8(%ebp), %eax           #RegisterInEax
-    cpuid
-    cmpl   $0, 0xC(%ebp)           # Reg
-    je     L1
-    movl        0xC(%ebp), %edi         # Reg
-
-    movl        %eax, (%edi)        # Reg->RegEax
-    movl        %ebx, 4(%edi)         # Reg->RegEbx
-    movl        %ecx, 8(%edi)         # Reg->RegEcx
-    movl        %edx, 0xC(%edi)         # Reg->RegEdx
-
-L1:
-    popal
-    popl        %edi
-    popl        %esi
-    popl        %ebx
-    popl        %ebp
-
-    ret
-#EfiCpuid ENDP
-
-
-#UINT64
-#EfiReadMsr (
-#  IN UINT32 Index
-#  );
-ASM_PFX(EfiReadMsr):
-    movl   4(%esp), %ecx           # Index
-    rdmsr
-    ret
-#EfiReadMsr ENDP
-
-#VOID
-#EfiWriteMsr (
-#  IN   UINT32  Index,
-#  IN   UINT64  Value
-#  );
-ASM_PFX(EfiWriteMsr):
-    movl   4(%esp), %ecx         # Index
-    movl   8(%esp), %eax         # DWORD PTR Value[0]
-    movl   0xC(%esp), %edx         # DWORD PTR Value[4]
-    wrmsr
-    ret
-#EfiWriteMsr ENDP
-
-#UINT64
-#EfiReadTsc (
-#  VOID
-#  )
-ASM_PFX(EfiReadTsc):
-    rdtsc
-    ret
-#EfiReadTsc ENDP
-
-#VOID
-#EfiDisableCache (
-#  VOID
-#)
-ASM_PFX(EfiDisableCache):
-    movl  %cr0, %eax
-    bswapl %eax
-    andb  $0x60, %al
-    cmpb  $0x60, %al
-    je    L2
-    movl  %cr0, %eax
-    orl   $0x60000000, %eax
-    movl  %eax, %cr0
-    wbinvd
-L2:
-    ret
-#EfiDisableCache ENDP
-
-#VOID
-#EfiEnableCache (
-#  VOID
-#  )
-ASM_PFX(EfiEnableCache):
-    wbinvd
-    movl  %cr0, %eax
-    andl  $0x9fffffff, %eax
-    movl  %eax, %cr0
-    ret
-#EfiEnableCache ENDP
-
-#UINT32
-#EfiGetEflags (
-#  VOID
-#  )
-ASM_PFX(EfiGetEflags):
-    pushfl
-    popl %eax
-    ret
-#EfiGetEflags ENDP
-
-#VOID
-#EfiDisableInterrupts (
-#  VOID
-#  )
-ASM_PFX(EfiDisableInterrupts):
-    cli
-    ret
-#EfiDisableInterrupts ENDP
-
-#VOID
-#EfiEnableInterrupts (
-#  VOID
-#  )
-ASM_PFX(EfiEnableInterrupts):
-    sti
-    ret
-#EfiEnableInterrupts ENDP
-
-#VOID
-#EfiCpuidExt (
-#  IN   UINT32              RegisterInEax,
-#  IN   UINT32              CacheLevel,
-#  OUT  EFI_CPUID_REGISTER  *Regs
-#  )
-ASM_PFX(EfiCpuidExt):
-    push   %ebx
-    push   %edi
-    push   %esi
-    pushal
-
-    movl   0x30(%esp), %eax           # RegisterInEax
-    movl   0x34(%esp), %ecx           # CacheLevel
-    cpuid
-    movl   0x38(%esp), %edi           # DWORD PTR Regs
-
-    movl   %eax, (%edi)                 # Reg->RegEax
-    movl   %ebx, 4(%edi)                # Reg->RegEbx
-    movl   %ecx, 8(%edi)                # Reg->RegEcx
-    movl   %edx, 0xC(%edi)              # Reg->RegEdx
-
-    popal
-    pop    %esi
-    pop    %edi
-    pop    %ebx
-    ret
-#EfiCpuidExt ENDP
-
-
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.asm b/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.asm
deleted file mode 100644
index 3fdf16f8ee..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.asm
+++ /dev/null
@@ -1,206 +0,0 @@
-;
-; This file contains an 'Intel Sample Driver' and is
-; licensed for Intel CPUs and chipsets under the terms of your
-; license agreement with Intel or your vendor.  This file may
-; be modified by the user, subject to additional terms of the
-; license agreement
-;
-;
-; Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
-;                                                                                  

-; SPDX-License-Identifier: BSD-2-Clause-Patent
-
-;                                                                                  

-;
-
-;Module Name:
-;
-;  CpuIA32.c
-;
-;Abstract:
-;
-;--*/
-
-;#include "CpuIA32.h"
-
-;---------------------------------------------------------------------------
-    .586p
-    .model  flat,C
-    .code
-
-;---------------------------------------------------------------------------
-;VOID
-;EfiHalt (
-;  VOID
-;)
-EfiHalt PROC C PUBLIC
-    hlt
-    ret
-EfiHalt ENDP
-
-;VOID
-;EfiWbinvd (
-;  VOID
-;)
-EfiWbinvd PROC C PUBLIC
-    wbinvd
-    ret
-EfiWbinvd ENDP
-
-;VOID
-;EfiInvd (
-; VOID
-;)
-EfiInvd PROC C PUBLIC
-    invd
-    ret
-EfiInvd ENDP
-
-;VOID
-;EfiCpuid (IN UINT32 RegisterInEax,
-;          OUT EFI_CPUID_REGISTER *Reg OPTIONAL)
-EfiCpuid PROC C PUBLIC
-    push ebp
-    mov  ebp, esp
-    push ebx
-    push esi
-    push edi
-    pushad
-
-    mov    eax, dword ptr[ebp + 8] ;egisterInEax
-    cpuid
-    cmp    dword ptr[ebp + 0Ch], 0 ; Reg
-    je     @F
-    mov         edi,dword ptr [ebp+0Ch] ; Reg
-
-    mov         dword ptr [edi],eax ; Reg->RegEax
-    mov         dword ptr [edi+4],ebx ; Reg->RegEbx
-    mov         dword ptr [edi+8],ecx ; Reg->RegEcx
-    mov         dword ptr [edi+0Ch],edx ; Reg->RegEdx
-
-@@:
-    popad
-    pop         edi
-    pop         esi
-    pop         ebx
-    pop         ebp
-
-    ret
-EfiCpuid ENDP
-
-
-;UINT64
-;EfiReadMsr (
-;  IN UINT32 Index
-;  );
-EfiReadMsr PROC C PUBLIC
-    mov    ecx, dword ptr [esp + 4]; Index
-    rdmsr
-    ret
-EfiReadMsr ENDP
-
-;VOID
-;EfiWriteMsr (
-;  IN   UINT32  Index,
-;  IN   UINT64  Value
-;  );
-EfiWriteMsr PROC C PUBLIC
-    mov    ecx, dword ptr [esp+4]; Index
-    mov    eax, dword ptr [esp+8]; DWORD PTR Value[0]
-    mov    edx, dword ptr [esp+0Ch]; DWORD PTR Value[4]
-    wrmsr
-    ret
-EfiWriteMsr  ENDP
-
-;UINT64
-;EfiReadTsc (
-;  VOID
-;  )
-EfiReadTsc PROC C PUBLIC
-    rdtsc
-    ret
-EfiReadTsc  ENDP
-
-;VOID
-;EfiDisableCache (
-;  VOID
-;)
-EfiDisableCache PROC C PUBLIC
-    mov   eax, cr0
-    bswap eax
-    and   al, 60h
-    cmp   al, 60h
-    je    @F
-    mov   eax, cr0
-    or    eax, 060000000h
-    mov   cr0, eax
-    wbinvd
-@@:
-    ret
-EfiDisableCache  ENDP
-
-;VOID
-;EfiEnableCache (
-;  VOID
-;  )
-EfiEnableCache PROC C PUBLIC
-    wbinvd
-    mov   eax, cr0
-    and   eax, 09fffffffh
-    mov   cr0, eax
-    ret
-EfiEnableCache  ENDP
-
-;UINT32
-;EfiGetEflags (
-;  VOID
-;  )
-EfiGetEflags PROC C PUBLIC
-    pushfd
-    pop  eax
-    ret
-EfiGetEflags  ENDP
-
-;VOID
-;EfiDisableInterrupts (
-;  VOID
-;  )
-EfiDisableInterrupts PROC C PUBLIC
-    cli
-    ret
-EfiDisableInterrupts  ENDP
-
-;VOID
-;EfiEnableInterrupts (
-;  VOID
-;  )
-EfiEnableInterrupts  PROC C PUBLIC
-    sti
-    ret
-EfiEnableInterrupts   ENDP
-
-;VOID
-;EfiCpuidExt (
-;  IN   UINT32              RegisterInEax,
-;  IN   UINT32              CacheLevel,
-;  OUT  EFI_CPUID_REGISTER  *Regs
-;  )
-EfiCpuidExt PROC C PUBLIC USES ebx edi esi
-    pushad
-
-    mov    eax, dword ptr [esp + 30h] ; RegisterInEax
-    mov    ecx, dword ptr [esp + 34h] ; CacheLevel
-    cpuid
-    mov    edi, dword ptr [esp + 38h] ; DWORD PTR Regs
-
-    mov    dword ptr [edi], eax   	; Reg->RegEax
-    mov    dword ptr [edi + 4], ebx   	; Reg->RegEbx
-    mov    dword ptr [edi + 8], ecx   	; Reg->RegEcx
-    mov    dword ptr [edi + 0Ch], edx   ; Reg->RegEdx
-
-    popad
-    ret
-EfiCpuidExt  ENDP
-
-	END
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.c
deleted file mode 100644
index cb8de2f9c7..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/** @file
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-Module Name:
-
-
-  CpuIA32.c
-
-Abstract:
-
---*/
-
-#include <Library/CpuIA32.h>
-
-VOID
-EfiHalt (VOID)
-{
-  __asm {
-    hlt
-  }
-}
-
-VOID
-EfiWbinvd (VOID)
-{
-  __asm {
-    wbinvd
-  }
-}
-
-VOID
-EfiInvd (VOID)
-{
-  __asm {
-    invd
-  }
-}
-
-VOID
-EfiCpuid (IN UINT32 RegisterInEax,
-          OUT EFI_CPUID_REGISTER *Reg OPTIONAL)
-{
-  __asm {
-    pushad
-
-    mov    eax, RegisterInEax
-    cpuid
-    cmp    Reg, 0
-    je     _Exit
-    mov    edi, DWORD PTR Reg
-
-    mov    DWORD PTR [edi].RegEax, eax   ; Reg->RegEax
-    mov    DWORD PTR [edi].RegEbx, ebx   ; Reg->RegEbx
-    mov    DWORD PTR [edi].RegEcx, ecx   ; Reg->RegEcx
-    mov    DWORD PTR [edi].RegEdx, edx   ; Reg->RegEdx
-
-_Exit:
-     popad
-  }
-}
-
-UINT64
-EfiReadMsr (IN UINT32 Index)
-{
-  __asm {
-    mov    ecx, Index
-    rdmsr
-  }
-}
-
-VOID
-EfiWriteMsr (
-  IN   UINT32  Index,
-  IN   UINT64  Value
-  )
-{
-  __asm {
-    mov    ecx, Index
-    mov    eax, DWORD PTR Value[0]
-    mov    edx, DWORD PTR Value[4]
-    wrmsr
-  }
-}
-
-UINT64
-EfiReadTsc (VOID)
-{
-  __asm {
-    rdtsc
-  }
-}
-
-VOID
-EfiDisableCache (VOID)
-{
-  __asm {
-    mov   eax, cr0
-    bswap eax
-    and   al, 60h
-    cmp   al, 60h
-    je    Exit
-    mov   eax, cr0
-    or    eax, 060000000h
-    mov   cr0, eax
-    wbinvd
-Exit:
-  }
-}
-
-VOID
-EfiEnableCache (VOID)
-{
-  __asm {
-    wbinvd
-    mov   eax, cr0
-    and   eax, 09fffffffh
-    mov   cr0, eax
-  }
-}
-
-UINT32
-EfiGetEflags (
-  VOID
-  )
-{
-  __asm {
-    pushfd
-    pop  eax
-  }
-}
-
-VOID
-EfiDisableInterrupts (VOID)
-{
-  __asm {
-    cli
-  }
-}
-
-VOID
-EfiEnableInterrupts (
-  VOID
-  )
-{
-  __asm {
-    sti
-  }
-}
-
-VOID
-EfiCpuidExt (
-  IN   UINT32              RegisterInEax,
-  IN   UINT32              CacheLevel,
-  OUT  EFI_CPUID_REGISTER  *Regs
-  )
-{
-  __asm {
-    pushad
-
-    mov    eax, RegisterInEax
-    mov    ecx, CacheLevel
-    cpuid
-    mov    edi, DWORD PTR Regs
-
-    mov    DWORD PTR [edi].RegEax, eax   ; Reg->RegEax
-    mov    DWORD PTR [edi].RegEbx, ebx   ; Reg->RegEbx
-    mov    DWORD PTR [edi].RegEcx, ecx   ; Reg->RegEcx
-    mov    DWORD PTR [edi].RegEdx, edx   ; Reg->RegEdx
-
-    popad
-  }
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.S b/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.S
deleted file mode 100644
index 3a8d6e6bc5..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.S
+++ /dev/null
@@ -1,207 +0,0 @@
-#
-#
-# Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-#
-#*   Module Name:
-#*
-#*    Cpu.asm
-#*
-#*   Abstract:
-#*
-#------------------------------------------------------------------------------
-##include <EfiBind.h>
-
-.globl ASM_PFX(EfiHalt)
-.globl ASM_PFX(EfiWbinvd)
-.globl ASM_PFX(EfiInvd)
-.globl ASM_PFX(EfiCpuid)
-.globl ASM_PFX(EfiReadTsc)
-.globl ASM_PFX(EfiDisableCache)
-.globl ASM_PFX(EfiEnableCache)
-.globl ASM_PFX(EfiReadMsr)
-.globl ASM_PFX(EfiWriteMsr)
-.globl ASM_PFX(EfiGetEflags)
-.globl ASM_PFX(EfiDisableInterrupts)
-.globl ASM_PFX(EfiEnableInterrupts)
-.globl ASM_PFX(EfiCpuidExt)
-
-.text
-
-
-#------------------------------------------------------------------------------
-#  VOID
-#  EfiHalt (
-#    VOID
-#    )
-#------------------------------------------------------------------------------
-ASM_PFX(EfiHalt):
-    hlt
-    retq
-
-
-#------------------------------------------------------------------------------
-#  VOID
-#  EfiWbinvd (
-#    VOID
-#    )
-#------------------------------------------------------------------------------
-ASM_PFX(EfiWbinvd):
-    wbinvd
-    retq
-
-
-#------------------------------------------------------------------------------
-#  VOID
-#  EfiInvd (
-#    VOID
-#    )
-#------------------------------------------------------------------------------
-ASM_PFX(EfiInvd):
-    invd
-    retq
-
-#------------------------------------------------------------------------------
-#  VOID
-#  EfiCpuid (
-#    IN   UINT32              RegisterInEax,          // rcx
-#    OUT  EFI_CPUID_REGISTER  *Reg           OPTIONAL // rdx
-#    )
-#------------------------------------------------------------------------------
-ASM_PFX(EfiCpuid):
-      push   %rbx
-      mov    %rdx,%r8
-      mov    %rcx,%rax
-      cpuid
-      cmp    $0x0,%r8
-      je     _Exit
-      mov    %eax,(%r8)
-      mov    %ebx,0x4(%r8)
-      mov    %ecx,0x8(%r8)
-      mov    %edx,0xc(%r8)
-_Exit:
-      pop    %rbx
-      retq
-
-#------------------------------------------------------------------------------
-#  UINT64
-#  EfiReadMsr (
-#    IN   UINT32  Index,  // rcx
-#    )
-#------------------------------------------------------------------------------
-ASM_PFX(EfiReadMsr):
-      rdmsr
-      shl    $0x20,%rdx
-      or     %rdx,%rax
-      retq
-
-#------------------------------------------------------------------------------
-#  VOID
-#  EfiWriteMsr (
-#    IN   UINT32  Index,  // rcx
-#    IN   UINT64  Value   // rdx
-#    )
-#------------------------------------------------------------------------------
-ASM_PFX(EfiWriteMsr):
-      mov    %rdx,%rax
-      sar    $0x20,%rdx
-      wrmsr
-      retq
-
-#------------------------------------------------------------------------------
-# UINT64
-# EfiReadTsc (
-#   VOID
-#   );
-#------------------------------------------------------------------------------
-ASM_PFX(EfiReadTsc):
-      rdtsc
-      shl    $0x20,%rax
-      shrd   $0x20,%rdx,%rax
-      retq
-
-#------------------------------------------------------------------------------
-# VOID
-# EfiDisableCache (
-#   VOID
-#   );
-#------------------------------------------------------------------------------
-ASM_PFX(EfiDisableCache):
-# added a check to see if cache is already disabled. If it is, then skip.
-      mov    %cr0,%rax
-      and    $0x60000000,%rax
-      cmp    $0x0,%rax
-      jne    1f
-      mov    %cr0,%rax
-      or     $0x60000000,%rax
-      mov    %rax,%cr0
-      wbinvd
-1:
-      retq
-
-#------------------------------------------------------------------------------
-# VOID
-# EfiEnableCache (
-#   VOID
-#   );
-#------------------------------------------------------------------------------
-ASM_PFX(EfiEnableCache):
-      wbinvd
-      mov    %cr0,%rax
-      and    $0xffffffff9fffffff,%rax
-      mov    %rax,%cr0
-      retq
-
-#------------------------------------------------------------------------------
-# UINTN
-# EfiGetEflags (
-#   VOID
-#   );
-#------------------------------------------------------------------------------
-ASM_PFX(EfiGetEflags):
-      pushfq
-      pop    %rax
-      retq
-
-#------------------------------------------------------------------------------
-# VOID
-# EfiDisableInterrupts (
-#   VOID
-#   );
-#------------------------------------------------------------------------------
-ASM_PFX(EfiDisableInterrupts):
-    cli
-    ret
-
-#------------------------------------------------------------------------------
-# VOID
-# EfiEnableInterrupts (
-#   VOID
-#   );
-#------------------------------------------------------------------------------
-ASM_PFX(EfiEnableInterrupts):
-    sti
-    ret
-#------------------------------------------------------------------------------
-#  VOID
-#  EfiCpuidExt (
-#    IN   UINT32              RegisterInEax,
-#    IN   UINT32              CacheLevel,
-#    OUT  EFI_CPUID_REGISTER  *Regs
-#    )
-#------------------------------------------------------------------------------
-ASM_PFX(EfiCpuidExt):
-      push   %rbx
-      mov    %rcx,%rax
-      mov    %rdx,%rcx
-      cpuid
-      mov    %eax,(%r8)
-      mov    %ebx,0x4(%r8)
-      mov    %ecx,0x8(%r8)
-      mov    %edx,0xc(%r8)
-      pop    %rbx
-      retq
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.asm b/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.asm
deleted file mode 100644
index 44aae7de64..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.asm
+++ /dev/null
@@ -1,222 +0,0 @@
-
-TITLE   Cpu.asm: Assembly code for the x64 resources
-
-;
-; This file contains an 'Intel Sample Driver' and is
-; licensed for Intel CPUs and chipsets under the terms of your
-; license agreement with Intel or your vendor.  This file may
-; be modified by the user, subject to additional terms of the
-; license agreement
-;
-;
-; Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
-;                                                                                  

-; SPDX-License-Identifier: BSD-2-Clause-Patent
-
-;                                                                                  

-;
-;
-;
-;
-;*   Module Name:
-;*
-;*    Cpu.asm
-;*
-;*   Abstract:
-;*
-;------------------------------------------------------------------------------
-
-text    SEGMENT
-
-
-;------------------------------------------------------------------------------
-;  VOID
-;  EfiHalt (
-;    VOID
-;    )
-;------------------------------------------------------------------------------
-EfiHalt PROC    PUBLIC
-    hlt
-    ret
-EfiHalt ENDP
-
-
-;------------------------------------------------------------------------------
-;  VOID
-;  EfiWbinvd (
-;    VOID
-;    )
-;------------------------------------------------------------------------------
-EfiWbinvd PROC    PUBLIC
-    wbinvd
-    ret
-EfiWbinvd ENDP
-
-
-;------------------------------------------------------------------------------
-;  VOID
-;  EfiInvd (
-;    VOID
-;    )
-;------------------------------------------------------------------------------
-EfiInvd PROC    PUBLIC
-    invd
-    ret
-EfiInvd ENDP
-
-;------------------------------------------------------------------------------
-;  VOID
-;  EfiCpuid (
-;    IN   UINT32              RegisterInEax,          // rcx
-;    OUT  EFI_CPUID_REGISTER  *Reg           OPTIONAL // rdx
-;    )
-;------------------------------------------------------------------------------
-EfiCpuid PROC   PUBLIC
-    push  rbx
-
-    mov   r8,   rdx         ; r8 = *Reg
-    mov   rax,  rcx         ; RegisterInEax
-    cpuid
-    cmp   r8,   0
-    je    _Exit
-    mov   [r8 +  0], eax    ; Reg->RegEax
-    mov   [r8 +  4], ebx    ; Reg->RegEbx
-    mov   [r8 +  8], ecx    ; Reg->RegEcx
-    mov   [r8 + 12], edx    ; Reg->RegEdx
-
-_Exit:
-    pop   rbx
-    ret
-EfiCpuid  ENDP
-
-;------------------------------------------------------------------------------
-;  UINT64
-;  EfiReadMsr (
-;    IN   UINT32  Index,  // rcx
-;    )
-;------------------------------------------------------------------------------
-EfiReadMsr PROC  PUBLIC
-    rdmsr
-    sal     rdx, 32   ; edx:eax -> rax
-    or      rax, rdx  ; rax = edx:eax
-    ret
-EfiReadMsr  ENDP
-
-;------------------------------------------------------------------------------
-;  VOID
-;  EfiWriteMsr (
-;    IN   UINT32  Index,  // rcx
-;    IN   UINT64  Value   // rdx
-;    )
-;------------------------------------------------------------------------------
-EfiWriteMsr PROC   PUBLIC
-    mov     rax,  rdx   ; rdx = Value
-    sar     rdx,  32    ; convert rdx to edx upper 32-bits
-    wrmsr               ; wrmsr[ecx] result = edx:eax
-    ret
-EfiWriteMsr  ENDP
-
-
-;------------------------------------------------------------------------------
-; UINT64
-; EfiReadTsc (
-;   VOID
-;   );
-;------------------------------------------------------------------------------
-EfiReadTsc PROC    PUBLIC
-    rdtsc
-    shl     rax, 32
-    shrd    rax, rdx, 32
-    ret
-EfiReadTsc  ENDP
-
-;------------------------------------------------------------------------------
-; VOID
-; EfiDisableCache (
-;   VOID
-;   );
-;------------------------------------------------------------------------------
-EfiDisableCache PROC    PUBLIC
-; added a check to see if cache is already disabled. If it is, then skip.
-    mov   rax, cr0
-    and   rax, 060000000h
-    cmp   rax, 0
-    jne   @f
-    mov   rax, cr0
-    or    rax, 060000000h
-    mov   cr0, rax
-    wbinvd
-@@:
-    ret
-EfiDisableCache ENDP
-
-;------------------------------------------------------------------------------
-; VOID
-; EfiEnableCache (
-;   VOID
-;   );
-;------------------------------------------------------------------------------
-EfiEnableCache PROC    PUBLIC
-    wbinvd
-    mov   rax, cr0
-    and   rax, 09fffffffh
-    mov   cr0, rax
-    ret
-EfiEnableCache ENDP
-
-;------------------------------------------------------------------------------
-; UINTN
-; EfiGetEflags (
-;   VOID
-;   );
-;------------------------------------------------------------------------------
-EfiGetEflags PROC    PUBLIC
-    pushfq
-    pop   rax
-    ret
-EfiGetEflags  ENDP
-
-;------------------------------------------------------------------------------
-; VOID
-; EfiDisableInterrupts (
-;   VOID
-;   );
-;------------------------------------------------------------------------------
-EfiDisableInterrupts PROC    PUBLIC
-    cli
-    ret
-EfiDisableInterrupts  ENDP
-
-;------------------------------------------------------------------------------
-; VOID
-; EfiEnableInterrupts (
-;   VOID
-;   );
-;------------------------------------------------------------------------------
-EfiEnableInterrupts PROC    PUBLIC
-    sti
-    ret
-EfiEnableInterrupts  ENDP
-;------------------------------------------------------------------------------
-;  VOID
-;  EfiCpuidExt (
-;    IN   UINT32              RegisterInEax,
-;    IN   UINT32              CacheLevel,
-;    OUT  EFI_CPUID_REGISTER  *Regs
-;    )
-;------------------------------------------------------------------------------
-EfiCpuidExt PROC    PUBLIC
-     push   rbx
-     mov    rax, rcx          ; rax = RegisterInEax
-     mov    rcx, rdx          ; rcx = CacheLevel
-
-     cpuid
-     mov    [r8 + 0 ],  eax   ; Reg->RegEax
-     mov    [r8 + 4 ],  ebx   ; Reg->RegEbx
-     mov    [r8 + 8 ],  ecx   ; Reg->RegEcx
-     mov    [r8 + 12],  edx   ; Reg->RegEdx
-
-     pop rbx
-     ret
-EfiCpuidExt  ENDP
-END
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf b/Platform/Intel/Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf
index c5e3cf4d55..f1e8c7f639 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf
@@ -58,7 +58,6 @@ [Pcd]
   gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam
 
 [Guids]
-  gEfiPlatformCpuInfoGuid
   gEfiStatusCodeDataTypeStringGuid              ## CONSUMES
 
 [Depex]
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/MemoryCallback.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/MemoryCallback.c
index 074bf7debb..61ecc52cb5 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/MemoryCallback.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/MemoryCallback.c
@@ -124,7 +124,8 @@ MemoryDiscoveredPpiNotifyCallback (
 {
   EFI_STATUS                  Status;
   EFI_BOOT_MODE               BootMode;
-  EFI_CPUID_REGISTER          FeatureInfo;
+  UINT32                      MaximumExtendedFunction;
+  CPUID_VIR_PHY_ADDRESS_SIZE_EAX  Eax;
   UINT8                       CpuAddressWidth;
   UINT16                      Pm1Cnt;
   EFI_PEI_HOB_POINTERS        Hob;
@@ -279,10 +280,10 @@ MemoryDiscoveredPpiNotifyCallback (
   // Create a CPU hand-off information
   //
   CpuAddressWidth = 32;
-  AsmCpuid (EFI_CPUID_EXTENDED_FUNCTION, &FeatureInfo.RegEax, &FeatureInfo.RegEbx, &FeatureInfo.RegEcx, &FeatureInfo.RegEdx);
-  if (FeatureInfo.RegEax >= EFI_CPUID_VIRT_PHYS_ADDRESS_SIZE) {
-    AsmCpuid (EFI_CPUID_VIRT_PHYS_ADDRESS_SIZE, &FeatureInfo.RegEax, &FeatureInfo.RegEbx, &FeatureInfo.RegEcx, &FeatureInfo.RegEdx);
-    CpuAddressWidth = (UINT8) (FeatureInfo.RegEax & 0xFF);
+  AsmCpuid (CPUID_EXTENDED_FUNCTION, &MaximumExtendedFunction, NULL, NULL, NULL);
+  if (MaximumExtendedFunction >= CPUID_VIR_PHY_ADDRESS_SIZE) {
+    AsmCpuid (CPUID_VIR_PHY_ADDRESS_SIZE, &Eax.Uint32, NULL, NULL, NULL);
+    CpuAddressWidth = (UINT8) (Eax.Bits.PhysicalAddressBits);
   }
 
   BuildCpuHob(CpuAddressWidth, 16);
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h
index 6a2ecf8fb4..8c02adba64 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h
@@ -53,7 +53,7 @@ Abstract:
 #include <Library/BaseLib.h>
 #include <Library/PeiServicesLib.h>
 #include <Library/MtrrLib.h>
-#include <Library/CpuIA32.h>
+#include <Register/Cpuid.h>
 
 #include <IndustryStandard/Pci22.h>
 #include <Ppi/Speaker.h>
@@ -95,8 +95,6 @@ Abstract:
 #define SMBIOS_WAKEUP_TYPE_PCI_PME            0x07
 #define SMBIOS_WAKEUP_TYPE_AC_POWER_RESTORED  0x08
 
-#define EFI_CPUID_VIRT_PHYS_ADDRESS_SIZE       0x80000008
-
 //
 // Defines for stall ppi
 //
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
index eeb9a4a023..8350cf47b7 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
@@ -78,7 +78,6 @@ [Guids]
   gEfiSetupVariableGuid
   gEfiPlatformInfoGuid
   gEfiPlatformBootModeGuid
-  gEfiPlatformCpuInfoGuid
   gEfiGlobalVariableGuid
   gRecoveryOnFatFloppyDiskGuid
   gRecoveryOnFatUsbDiskGuid
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf
index d3969f2344..aac93b0b90 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf
@@ -100,7 +100,6 @@ [Guids]
   gEfiSetupVariableGuid
   gEfiPlatformInfoGuid
   gEfiPlatformBootModeGuid
-  gEfiPlatformCpuInfoGuid
   gEfiGlobalVariableGuid
   gRecoveryOnFatFloppyDiskGuid
   gRecoveryOnFatUsbDiskGuid
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
similarity index 96%
copy from Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
copy to Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
index dc6d8b1b26..7993ee5758 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
@@ -42,7 +42,7 @@ [Defines]
   DEFINE      DXE_ARCHITECTURE        = IA32
 !endif
 
-  FLASH_DEFINITION                    = Vlv2TbltDevicePkg/PlatformPkg.fdf
+  FLASH_DEFINITION                    = Vlv2TbltDevicePkg/PlatformPkgGcc.fdf
 !if $(LFMA_ENABLE) == TRUE
   FIX_LOAD_TOP_MEMORY_ADDRESS         = 0xFFFFFFFFFFFFFFFF
   DEFINE   TOP_MEMORY_ADDRESS         = 0xFFFFFFFFFFFFFFFF
@@ -220,7 +220,6 @@ [LibraryClasses.common]
 !endif
 
  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
- CpuIA32Lib|Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 
@@ -770,7 +769,7 @@ [Components.IA32]
 !if $(RC_BINARY_RELEASE) == TRUE
   Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf {
     <BuildOptions>
-      *_*_IA32_CC_FLAGS      = /DRC_BINARY_RELEASE
+      *_*_IA32_CC_FLAGS      = -DRC_BINARY_RELEASE
   !if $(TARGET) == DEBUG
       <PcdsFixedAtBuild>
         gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E
@@ -1245,14 +1244,14 @@ [BuildOptions]
   DEFINE MINNOW2_FSP_OPTION =
 
 !if $(ENBDT_PF_BUILD) == TRUE
-  DEFINE ENBDT_PF_ENABLE = /DENBDT_PF_ENABLE=1
+  DEFINE ENBDT_PF_ENABLE = -DENBDT_PF_ENABLE=1
 !else
-  DEFINE ENBDT_PF_ENABLE = /DENBDT_PF_ENABLE=0
+  DEFINE ENBDT_PF_ENABLE = -DENBDT_PF_ENABLE=0
 !endif
 
 
 !if $(CLKGEN_CONFIG_EXTRA_ENABLE) == TRUE
-  DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION = /DCLKGEN_CONFIG_EXTRA=1
+  DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION = -DCLKGEN_CONFIG_EXTRA=1
 !else
   DEFINE CLKGEN_CONFIG_EXTRA_BUILD_OPTION =
 !endif
@@ -1260,29 +1259,29 @@ [BuildOptions]
 
 
 !if $(PCIESC_ENABLE) == TRUE
-  DEFINE PCIESC_SUPPORT_BUILD_OPTION = /DPCIESC_SUPPORT=1
+  DEFINE PCIESC_SUPPORT_BUILD_OPTION = -DPCIESC_SUPPORT=1
 !else
   DEFINE PCIESC_SUPPORT_BUILD_OPTION =
 !endif
 !if $(SATA_ENABLE) == TRUE
-  DEFINE SATA_SUPPORT_BUILD_OPTION = /DSATA_SUPPORT=1
+  DEFINE SATA_SUPPORT_BUILD_OPTION = -DSATA_SUPPORT=1
 !else
   DEFINE SATA_SUPPORT_BUILD_OPTION =
 !endif
 !if $(ENBDT_S3_SUPPORT) == TRUE
-  DEFINE ENBDT_S3_SUPPORT_OPTIONS = /DNOCS_S3_SUPPORT
+  DEFINE ENBDT_S3_SUPPORT_OPTIONS = -DNOCS_S3_SUPPORT
 !else
   DEFINE ENBDT_S3_SUPPORT_OPTIONS =
 !endif
 
 !if $(X64_CONFIG) == TRUE
-  DEFINE X64_BUILD_ENABLE = /DX64_BUILD_ENABLE=1
+  DEFINE X64_BUILD_ENABLE = -DX64_BUILD_ENABLE=1
 !else
   DEFINE X64_BUILD_ENABLE =
 !endif
 
 !if $(TPM_ENABLED) == TRUE
-  DEFINE DSC_TPM_BUILD_OPTIONS = /DTPM_ENABLED
+  DEFINE DSC_TPM_BUILD_OPTIONS = -DTPM_ENABLED
 !else
   DEFINE DSC_TPM_BUILD_OPTIONS =
 !endif
@@ -1293,13 +1292,12 @@ [BuildOptions]
   DEFINE PDB_BUILD_OPTION = /Zi
 !endif
 
+  GCC:*_*_*_CC_FLAGS = -Wno-missing-braces
 !if $(SOURCE_DEBUG_ENABLE) == TRUE
   MSFT:*_*_X64_GENFW_FLAGS  = --keepexceptiontable
   GCC:*_*_X64_GENFW_FLAGS   = --keepexceptiontable
   INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
-!if $(TARGET) == DEBUG
-  DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS = /Od /Oy-
-!endif
+  DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =
 !else
   DEFINE SOURCE_LEVEL_DEBUG_BUILD_OPTIONS =
 
@@ -1322,7 +1320,7 @@ [BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE]
   GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
 
 [BuildOptions.Common.EDKII]
-  *_*_IA32_ASM_FLAGS     = $(VP_BUILD_OPTIONS) /D EDKII_GLUE_PciExpressBaseAddress=$(PLATFORM_PCIEXPRESS_BASE)h /DNOCS_S3_SUPPORT
+  *_*_IA32_ASM_FLAGS     = $(VP_BUILD_OPTIONS) -D EDKII_GLUE_PciExpressBaseAddress=$(PLATFORM_PCIEXPRESS_BASE)h -DNOCS_S3_SUPPORT
 
   *_*_IA32_CC_FLAGS      = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
   *_*_IA32_VFRPP_FLAGS   = $(EDK_EDKII_DSC_FEATURE_BUILD_OPTIONS)
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
index 26c1caad94..ee0d055d64 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
@@ -222,7 +222,6 @@ [LibraryClasses.common]
 !endif
 
  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
- CpuIA32Lib|Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
index dc6d8b1b26..62ca4f67cc 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
@@ -220,7 +220,6 @@ [LibraryClasses.common]
 !endif
 
  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
- CpuIA32Lib|Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
index cbc87aa9be..282ff3c2e2 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
@@ -222,7 +222,6 @@ [LibraryClasses.common]
 !endif
 
  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
- CpuIA32Lib|Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.h b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.h
index b4a30511ac..1876977e4d 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.h
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.h
@@ -41,7 +41,6 @@
 #include <Library/DxeServicesTableLib.h>
 #include <Library/HiiLib.h>
 #include <Library/BiosIdLib.h>
-#include <Library/CpuIA32.h>
 #include <Library/HobLib.h>
 #include <Guid/PlatformInfo.h>
 #include <IndustryStandard/Pci22.h>
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
index 8ff246041d..ce92b9241a 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
@@ -61,6 +61,7 @@ [Packages]
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
   SecurityPkg/SecurityPkg.dec
+  UefiCpuPkg/UefiCpuPkg.dec
   BoardModulePkg/BoardModulePkg.dec
   Vlv2TbltDevicePkg/PlatformPkg.dec
   Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec    #for PchAccess.h
@@ -79,7 +80,6 @@ [LibraryClasses]
   UefiRuntimeServicesTableLib
   PrintLib
   BiosIdLib
-  CpuIA32Lib
   IoLib
   HobLib
 
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c
index be99356d0f..1770d0de42 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c
@@ -27,6 +27,8 @@ Revision History:
 #include <IndustryStandard/SmBios.h>
 #include <Library/IoLib.h>
 #include <Guid/GlobalVariable.h>
+#include <Register/Cpuid.h>
+#include <Register/Msr.h>
 
 #include "Valleyview.h"
 #include "VlvAccess.h"
@@ -74,7 +76,6 @@ SB_REV  SBRevisionTable[] = {
 #define PREFIX_ZERO   0x20
 
 #define ICH_REG_REV                 0x08
-#define MSR_IA32_PLATFORM_ID        0x17
 
 
 BOOLEAN                         mSetupInfoDone = FALSE;
@@ -495,7 +496,7 @@ UpdateAdditionalInformation (
       GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type4Record + Type4Record->Hdr.Length), StrIndex, &ProcessorVersion);
       HiiSetString (mHiiHandle, STR_PROCESSOR_VERSION_VALUE, ProcessorVersion, NULL);
 
-      MicrocodeRevision = (UINT32) RShiftU64 (AsmReadMsr64 (EFI_MSR_IA32_BIOS_SIGN_ID), 32);
+      MicrocodeRevision = (UINT32) RShiftU64 (AsmReadMsr64 (MSR_IA32_BIOS_SIGN_ID), 32);
       UnicodeSPrint (NewString, sizeof (NewString), L"%8x", MicrocodeRevision);
       HiiSetString (mHiiHandle, STR_PROCESSOR_MICROCODE_VALUE, NewString, NULL);
     }
@@ -590,22 +591,29 @@ VOID
 UpdateCPUInformation ()
 {
   CHAR16								Buffer[40];
-  UINT16                                FamilyId;
-  UINT8                                 Model;
-  UINT8                                 SteppingId;
-  UINT8                                 ProcessorType;
+  UINT32                                FamilyId;
+  UINT32                                Model;
+  UINT32                                SteppingId;
   EFI_STATUS                            Status;
   EFI_MP_SERVICES_PROTOCOL              *MpService;
   UINTN                                 MaximumNumberOfCPUs;
   UINTN                                 NumberOfEnabledCPUs;
   UINT32								Buffer32 = 0xFFFFFFFF;   // Keep buffer with unknown device
+  CPUID_VERSION_INFO_EAX  Eax;
+  CPUID_VERSION_INFO_EBX  Ebx;
+  CPUID_VERSION_INFO_ECX  Ecx;
+  CPUID_VERSION_INFO_EDX  Edx;
 
-  EfiCpuVersion (&FamilyId, &Model, &SteppingId, &ProcessorType);
-
-  //
-  //we need raw Model data
-  //
-  Model = Model & 0xf;
+  AsmCpuid (CPUID_VERSION_INFO, &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx.Uint32);
+  FamilyId = Eax.Bits.FamilyId;
+  if (Eax.Bits.FamilyId == 0x0F) {
+    FamilyId |= (Eax.Bits.ExtendedFamilyId << 4);
+  }
+  Model = Eax.Bits.Model;
+  if (Eax.Bits.FamilyId == 0x06 || Eax.Bits.FamilyId == 0x0f) {
+    Model |= (Eax.Bits.ExtendedModelId << 4);
+  }
+  SteppingId = Eax.Bits.SteppingId;
 
   //
   //Family/Model/Step
@@ -633,7 +641,7 @@ UpdateCPUInformation ()
   //
   // Update Mobile / Desktop / Tablet SKU
   //
-  Buffer32 =(UINT32) RShiftU64 (EfiReadMsr (MSR_IA32_PLATFORM_ID), 50) & 0x07;
+  Buffer32 =(UINT32) RShiftU64 (AsmReadMsr64 (MSR_IA32_PLATFORM_ID), 50) & 0x07;
 
   switch(Buffer32){
       case 0x0:
@@ -903,7 +911,7 @@ UpdatePlatformInformation (
   // VLV-QC Desktop       010
   // VLV-QC Notebook      011
   //
-  CpuFlavor = RShiftU64 (EfiReadMsr (MSR_IA32_PLATFORM_ID), 50) & 0x07;
+  CpuFlavor = RShiftU64 (AsmReadMsr64 (MSR_IA32_PLATFORM_ID), 50) & 0x07;
 
   switch(CpuFlavor){
     case 0x0:
@@ -1038,9 +1046,9 @@ UpdatePlatformInformation (
   //
   // Microcode Revision
   //
-  EfiWriteMsr (EFI_MSR_IA32_BIOS_SIGN_ID, 0);
-  EfiCpuid (EFI_CPUID_VERSION_INFO, NULL);
-  MicroCodeVersion = (UINT32) RShiftU64 (EfiReadMsr (EFI_MSR_IA32_BIOS_SIGN_ID), 32);
+  AsmWriteMsr64 (MSR_IA32_BIOS_SIGN_ID, 0);
+  AsmCpuid (CPUID_VERSION_INFO, NULL, NULL, NULL, NULL);
+  MicroCodeVersion = (UINT32) RShiftU64 (AsmReadMsr64 (MSR_IA32_BIOS_SIGN_ID), 32);
   UnicodeSPrint (Buffer, sizeof (Buffer), L"%x", MicroCodeVersion);
   HiiSetString(mHiiHandle,STRING_TOKEN(STR_PROCESSOR_MICROCODE_VALUE), Buffer, NULL);
 
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.c b/Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.c
index 3583e324e6..4fd618a9a6 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.c
@@ -18,15 +18,12 @@ Abstract:
 #include <Protocol/MpService.h>
 #include <Library/BaseLib.h>
 #include <Library/DebugLib.h>
-#include <Library/CpuIA32.h>
+#include <Register/Cpuid.h>
+#include <Register/Msr.h>
 
 #include <PchRegs.h>
 #include <Library/PchPlatformLib.h>
 
-#define EFI_CPUID_FAMILY                      0x0F00
-#define EFI_CPUID_MODEL                       0x00F0
-#define EFI_CPUID_STEPPING                    0x000F
-
 EFI_STATUS 
 EFIAPI
 PpmPolicyEntry(
@@ -36,7 +33,6 @@ PpmPolicyEntry(
 {
   EFI_BOOT_SERVICES        *pBS;
   EFI_MP_SERVICES_PROTOCOL *MpService;
-  EFI_CPUID_REGISTER        Cpuid01 = { 0, 0, 0, 0};
   EFI_HANDLE                Handle;
   EFI_STATUS                Status;
   UINTN                     CpuCount;
@@ -70,13 +66,13 @@ PpmPolicyEntry(
   //
   // Store the CPUID for use by SETUP items.
   //
-  AsmCpuid (EFI_CPUID_VERSION_INFO, &Cpuid01.RegEax, &Cpuid01.RegEbx, &Cpuid01.RegEcx, &Cpuid01.RegEdx);
+  AsmCpuid (CPUID_VERSION_INFO, NULL, NULL, NULL, NULL);
 
   mDxePlatformPpmPolicy.Revision                       = PPM_PLATFORM_POLICY_PROTOCOL_REVISION_4;
 
   //Read CPU Mobile feature from PLATFORM_ID_MSR MSR(0x17) NOTFB_I_AM_NOT_MOBILE_FUSE_CLIAMC00H Bit 28
   //Bit Description: { Disables Mobile features 0 = I am NOT a mobile part 1 = I am a mobile part (default)"}
-  CPUMobileFeature = ((RShiftU64 (AsmReadMsr64(EFI_MSR_IA32_PLATFORM_ID), 28)) & 0x1);
+  CPUMobileFeature = ((RShiftU64 (AsmReadMsr64(MSR_IA32_PLATFORM_ID), 28)) & 0x1);
 
   if (!EFI_ERROR(Status)) {
     if (CPUMobileFeature == 1){//CPU mobile feature
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf b/Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf
index 2c0a13f6af..5bcce02983 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf
@@ -27,6 +27,7 @@ [Sources]
 
 [Packages]
   MdePkg/MdePkg.dec
+  UefiCpuPkg/UefiCpuPkg.dec
   Vlv2TbltDevicePkg/PlatformPkg.dec
   Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
 
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x90Function.c b/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x90Function.c
index 684cda83ec..d5a4243624 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x90Function.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x90Function.c
@@ -23,8 +23,9 @@ Abstract:
 
 #include "MiscSubclassDriver.h"
 #include <Library/PrintLib.h>
-#include <Library/CpuIA32.h>
 #include <Protocol/DxeSmmReadyToLock.h>
+#include <Register/Cpuid.h>
+#include <Register/Msr.h>
 
 
 VOID
@@ -32,18 +33,24 @@ GetCPUStepping ( )
 {
   CHAR16    Buffer[40];
 
-  UINT16                                FamilyId;
-  UINT8                                 Model;
-  UINT8                                 SteppingId;
-  UINT8                                 ProcessorType;
+  UINT32                                FamilyId;
+  UINT32                                Model;
+  UINT32                                SteppingId;
+  CPUID_VERSION_INFO_EAX  Eax;
+  CPUID_VERSION_INFO_EBX  Ebx;
+  CPUID_VERSION_INFO_ECX  Ecx;
+  CPUID_VERSION_INFO_EDX  Edx;
 
-
-  EfiCpuVersion (&FamilyId, &Model, &SteppingId, &ProcessorType);
-
-  //
-  //we need raw Model data
-  //
-  Model = Model & 0xf;
+  AsmCpuid (CPUID_VERSION_INFO, &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx.Uint32);
+  FamilyId = Eax.Bits.FamilyId;
+  if (Eax.Bits.FamilyId == 0x0F) {
+    FamilyId |= (Eax.Bits.ExtendedFamilyId << 4);
+  }
+  Model = Eax.Bits.Model;
+  if (Eax.Bits.FamilyId == 0x06 || Eax.Bits.FamilyId == 0x0f) {
+    Model |= (Eax.Bits.ExtendedModelId << 4);
+  }
+  SteppingId = Eax.Bits.SteppingId;
 
   //
   //Family/Model/Step
@@ -243,9 +250,9 @@ GetUcodeVersion()
   //
   // Microcode Revision
   //
-  EfiWriteMsr (EFI_MSR_IA32_BIOS_SIGN_ID, 0);
-  EfiCpuid (EFI_CPUID_VERSION_INFO, NULL);
-  MicroCodeVersion = (UINT32) RShiftU64 (EfiReadMsr (EFI_MSR_IA32_BIOS_SIGN_ID), 32);
+  AsmWriteMsr64 (MSR_IA32_BIOS_SIGN_ID, 0);
+  AsmCpuid (CPUID_VERSION_INFO, NULL, NULL, NULL, NULL);
+  MicroCodeVersion = (UINT32) RShiftU64 (AsmReadMsr64 (MSR_IA32_BIOS_SIGN_ID), 32);
   UnicodeSPrint (Buffer, sizeof (Buffer), L"%x", MicroCodeVersion);
   HiiSetString(mHiiHandle,STRING_TOKEN(STR_MISC_UCODE_VERSION), Buffer, NULL);
 }
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x94Function.c b/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x94Function.c
index 97a782e362..f1bb15ae6e 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x94Function.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x94Function.c
@@ -29,7 +29,6 @@ Abstract:
 #include <Protocol/I2cBus.h>
 
 #include <Library/IoLib.h>
-#include <Library/CpuIA32.h>
 #include <Library/UefiRuntimeServicesTableLib.h>
 #include <Guid/PlatformInfo.h>
 #include <Guid/SetupVariable.h>
@@ -73,7 +72,6 @@ SB_REV  SBRevisionTable[] = {
 #define PREFIX_ZERO   0x20
 
 #define ICH_REG_REV                 0x08
-#define MSR_IA32_PLATFORM_ID        0x17
 #define CHARACTER_NUMBER_FOR_VALUE  30
 
 
@@ -565,7 +563,7 @@ UpdatePlatformInformation (
   //
   //CPU flavor
   //
-  CpuFlavor = RShiftU64 (EfiReadMsr (MSR_IA32_PLATFORM_ID), 50) & 0x07;
+  CpuFlavor = RShiftU64 (AsmReadMsr64 (MSR_IA32_PLATFORM_ID), 50) & 0x07;
 
   switch(CpuFlavor){
     case 0x0:
@@ -661,9 +659,9 @@ UpdatePlatformInformation (
   //
   // Microcode Revision
   //
-  EfiWriteMsr (EFI_MSR_IA32_BIOS_SIGN_ID, 0);
-  EfiCpuid (EFI_CPUID_VERSION_INFO, NULL);
-  MicroCodeVersion = (UINT32) RShiftU64 (EfiReadMsr (EFI_MSR_IA32_BIOS_SIGN_ID), 32);
+  AsmWriteMsr64 (MSR_IA32_BIOS_SIGN_ID, 0);
+  AsmCpuid (CPUID_VERSION_INFO, NULL, NULL, NULL, NULL);
+  MicroCodeVersion = (UINT32) RShiftU64 (AsmReadMsr64 (MSR_IA32_BIOS_SIGN_ID), 32);
   UnicodeSPrint (Buffer, sizeof (Buffer), L"%x", MicroCodeVersion);
   HiiSetString(mHiiHandle,STRING_TOKEN(STR_MISC_PROCESSOR_MICROCODE_VALUE), Buffer, NULL);
 
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscProcessorInformationFunction.c b/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscProcessorInformationFunction.c
index e71a03ceac..8a52d017c1 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscProcessorInformationFunction.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscProcessorInformationFunction.c
@@ -20,7 +20,6 @@ Abstract:
 #include "MiscSubclassDriver.h"
 
 #include <Protocol/MpService.h>
-#include <Library/CpuIA32.h>
 #include <Library/TimerLib.h>
 #include <Register/Cpuid.h>
 
@@ -102,7 +101,7 @@ DetermineiFsbFromMsr (
   // Determine the processor core frequency
   //
   UINT64	Temp;
-  Temp = (EfiReadMsr (BSEL_CR_OVERCLOCK_CONTROL)) & FUSE_BSEL_MASK;
+  Temp = (AsmReadMsr64 (BSEL_CR_OVERCLOCK_CONTROL)) & FUSE_BSEL_MASK;
   return miFSBFrequencyTable[(UINT32)(Temp)];
 
 }
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf b/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf
index 016fb53b18..94d9cd67e7 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf
@@ -103,7 +103,6 @@ [LibraryClasses]
   UefiLib
   BiosIdLib
   PrintLib
-  CpuIA32Lib
   PchPlatformLib
   NetLib
   HobLib
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
index 03fa062310..1705b1628b 100755
--- a/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
+++ b/Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh
@@ -104,6 +104,9 @@ for (( i=1; i<=$#; ))
     elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
       Arch=X64
       shift
+    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
+      Arch=IA32
+      shift
     elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/YL" ]; then
       SpiLock=1
       shift      
@@ -243,11 +246,11 @@ build
 ##**********************************************************************
 echo Skip "Running fce..."
 
+cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
+
 ##**********************************************************************
 ## Build Capsules
 ##**********************************************************************
-cp -f $WORKSPACE/Build/Vlv2TbltDevicePkg/${TARGET}_${TOOL_CHAIN_TAG}/FV/VLV.fd \
-      $WORKSPACE/Build/Vlv2TbltDevicePkg/${TARGET}_${TOOL_CHAIN_TAG}/FV/Vlv.ROM
 build -p $PLATFORM_PKG_PATH/PlatformCapsuleGcc.dsc
 
 echo
-- 
2.21.0.windows.1


  parent reply	other threads:[~2019-07-10 19:05 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-10 19:04 [edk2-platforms Patch 00/28] Vlv2TbltDevicePkg: Fix Linux build issues Michael D Kinney
2019-07-10 19:04 ` [edk2-platforms Patch 01/28] Vlv2TbltDevicePkg/Build_IFWI.sh: Add "set -e" to exit on error Michael D Kinney
2019-07-11  4:46   ` Sun, Zailiang
2019-07-12  2:59   ` [edk2-devel] " rebecca
2019-07-10 19:04 ` [edk2-platforms Patch 02/28] Vlv2TbltDevicePkg/Build_IFWI.sh: Change the root directory path Michael D Kinney
2019-07-11  4:47   ` Sun, Zailiang
2019-07-12  3:03   ` [edk2-devel] " rebecca
2019-07-12 16:23     ` Michael D Kinney
2019-07-12 16:32       ` rebecca
2019-07-10 19:04 ` [edk2-platforms Patch 03/28] Vlv2TbltDevicePkg/bld_vlv.sh: Fix the log name Michael D Kinney
2019-07-11  4:47   ` Sun, Zailiang
2019-07-10 19:04 ` [edk2-platforms Patch 04/28] Vlv2TbltDevicePkg/bld_vlv.sh: Update the gcc version detection Michael D Kinney
2019-07-11  4:47   ` Sun, Zailiang
2019-07-10 19:04 ` [edk2-platforms Patch 05/28] Vlv2TbltDevicePkg/bld_vlv.sh: Remove ECP completely Michael D Kinney
2019-07-11  4:47   ` Sun, Zailiang
2019-07-10 19:04 ` [edk2-platforms Patch 06/28] Vlv2TbltDevicePkg/bld_vlv.sh: Update the script to fit edk2-platforms Michael D Kinney
2019-07-11  4:48   ` Sun, Zailiang
2019-07-10 19:04 ` [edk2-platforms Patch 07/28] Vlv2TbltDevicePkg: Add the missing headers to inf files Michael D Kinney
2019-07-11  4:48   ` Sun, Zailiang
2019-07-10 19:04 ` [edk2-platforms Patch 08/28] Vlv2TbltDevicePkg/bld_vlv.sh: Remove BiosId.env completely Michael D Kinney
2019-07-11  4:48   ` Sun, Zailiang
2019-07-10 19:04 ` [edk2-platforms Patch 09/28] Vlv2TbltDevicePkg/bld_vlv.sh: Correct the path to PlatformCapsuleGcc.dsc Michael D Kinney
2019-07-11  4:48   ` Sun, Zailiang
2019-07-10 19:04 ` [edk2-platforms Patch 10/28] Vlv2TbltDevicePkg/bld_vlv.sh: Create Vlv.ROM Michael D Kinney
2019-07-11  4:52   ` Sun, Zailiang
2019-07-11  6:08     ` [edk2-devel] " Gary Lin
2019-07-12 23:42       ` Michael D Kinney
2019-07-13  4:17         ` Sun, Zailiang
2019-07-10 19:04 ` [edk2-platforms Patch 11/28] Vlv2TbltDevicePkg/GenerateCapsule: Fix the bash scripts Michael D Kinney
2019-07-12  2:37   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 12/28] Vlv2TbltDevicePkg/AcpiPlatform: Remove a unused variable Michael D Kinney
2019-07-12  2:37   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 13/28] Vlv2TbltDevicePkg/AcpiPlatform: Fix the error from InstallAcpiTable Michael D Kinney
2019-07-12  2:37   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 14/28] Vlv2TbltDevicePkg/SmBiosMiscDxe: Fix the indentation Michael D Kinney
2019-07-12  2:37   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 15/28] Vlv2TbltDevicePkg: Import SD/MMC drivers Michael D Kinney
2019-07-12  2:37   ` [edk2-devel] " Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 16/28] Vlv2TbltDevicePkg: Update Linux build scripts Michael D Kinney
2019-07-11  4:55   ` [edk2-devel] " Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 17/28] Vlvt2TbltDevicePkg: Fix NULL pointer access in SmbiosMiscDxe Michael D Kinney
2019-07-11  4:53   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 18/28] Vlv2TbltDevicePkg/Build_IFWI.sh: Check the WORKSPACE env variable Michael D Kinney
2019-07-12  2:37   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 19/28] Vlv2DeviceRefCodePkg: Remove redundant gEfiSpiProtocolGuid Michael D Kinney
2019-07-11  4:53   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 20/28] Vlv2TbltDevicePkg: " Michael D Kinney
2019-07-11  4:53   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 21/28] Vlv2TbltDevicePkg: Re-enable BIOS ID feature Michael D Kinney
2019-07-11  4:54   ` Sun, Zailiang
2019-07-10 19:05 ` Michael D Kinney [this message]
2019-07-11  4:54   ` [edk2-platforms Patch 22/28] Vlv2TbltDevicePkg: Add GCC IA32 build support Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 23/28] Vlv2TbltDevicePkg: Import TlsLib for HTTPS Boot Michael D Kinney
2019-07-12  2:38   ` [edk2-devel] " Sun, Zailiang
2019-07-12  3:34   ` rebecca
2019-07-10 19:05 ` [edk2-platforms Patch 24/28] Vlv2TbltDevicePkg: Reorganize the libraries Michael D Kinney
2019-07-12  2:38   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 25/28] Vlv2DeviceRefCodePlg/AcpiTablesPCAT: Fix ASL error Michael D Kinney
2019-07-11  4:54   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 26/28] Vlv2TbltDevicePkg: Clean up all build scripts Michael D Kinney
2019-07-11  4:55   ` Sun, Zailiang
2019-07-12  3:39   ` [edk2-devel] " rebecca
2019-07-12 18:16     ` Michael D Kinney
2019-07-10 19:05 ` [edk2-platforms Patch 27/28] Vlv2TbltDevicePkg: Only build capsules for X64 Michael D Kinney
2019-07-11  4:55   ` Sun, Zailiang
2019-07-10 19:05 ` [edk2-platforms Patch 28/28] Vlv2TbltDevicePkg: Update Readme.md for multiple repos Michael D Kinney
2019-07-11  4:55   ` Sun, Zailiang
2019-07-12  2:38 ` [edk2-platforms Patch 00/28] Vlv2TbltDevicePkg: Fix Linux build issues Sun, Zailiang
2019-07-13  0:18 ` [edk2-devel] " Michael D Kinney

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20190710190516.6012-23-michael.d.kinney@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

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

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