Browse Source

Vlv2TbltDevicePkg: Add GCC IA32 build support

* 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>
Reviewed-by: Zailiang Sun <zailiang.sun@intel.com>
Michael D Kinney 4 years ago
parent
commit
6a728b4b7d
30 changed files with 1375 additions and 1567 deletions
  1. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/AcpiPlatform/AcpiPlatform.c
  2. 4 0
      Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh
  3. 10 6
      Platform/Intel/Vlv2TbltDevicePkg/Include/Guid/PlatformCpuInfo.h
  4. 0 345
      Platform/Intel/Vlv2TbltDevicePkg/Include/Library/CpuIA32.h
  5. 0 41
      Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
  6. 0 70
      Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/EfiCpuVersion.c
  7. 0 223
      Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.S
  8. 0 206
      Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.asm
  9. 0 177
      Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.c
  10. 0 207
      Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.S
  11. 0 222
      Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.asm
  12. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf
  13. 6 5
      Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/MemoryCallback.c
  14. 1 3
      Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.h
  15. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf
  16. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf
  17. 1289 0
      Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc
  18. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
  19. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
  20. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc
  21. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.h
  22. 1 1
      Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf
  23. 26 18
      Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c
  24. 4 8
      Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.c
  25. 1 0
      Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf
  26. 23 16
      Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x90Function.c
  27. 4 6
      Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x94Function.c
  28. 1 2
      Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscProcessorInformationFunction.c
  29. 0 1
      Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf
  30. 5 2
      Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh

+ 0 - 1
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>

+ 4 - 0
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

+ 10 - 6
Platform/Intel/Vlv2TbltDevicePkg/Include/Guid/PlatformCpuInfo.h

@@ -1,11 +1,8 @@
 /*++
 
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

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

+  Copyright (c) 2004  - 2019, Intel Corporation. All rights reserved.<BR>
 
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 Module Name:
 
@@ -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)

+ 0 - 345
Platform/Intel/Vlv2TbltDevicePkg/Include/Library/CpuIA32.h

@@ -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

+ 0 - 41
Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf

@@ -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

+ 0 - 70
Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/EfiCpuVersion.c

@@ -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));
-      }
-    }
-  }
-}

+ 0 - 223
Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.S

@@ -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
-
-
-

+ 0 - 206
Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.asm

@@ -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
-

+ 0 - 177
Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/IA32/CpuIA32.c

@@ -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
-  }
-}

+ 0 - 207
Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.S

@@ -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

+ 0 - 222
Platform/Intel/Vlv2TbltDevicePkg/Library/CpuIA32Lib/X64/Cpu.asm

@@ -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

+ 0 - 1
Platform/Intel/Vlv2TbltDevicePkg/MonoStatusCode/MonoStatusCode.inf

@@ -58,7 +58,6 @@
   gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam
 
 [Guids]
-  gEfiPlatformCpuInfoGuid
   gEfiStatusCodeDataTypeStringGuid              ## CONSUMES
 
 [Depex]

+ 6 - 5
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);

+ 1 - 3
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
 //

+ 0 - 1
Platform/Intel/Vlv2TbltDevicePkg/PlatformInitPei/PlatformInitPei.inf

@@ -78,7 +78,6 @@ ENTRY_POINT               = PlatformEarlyInitEntry
   gEfiSetupVariableGuid
   gEfiPlatformInfoGuid
   gEfiPlatformBootModeGuid
-  gEfiPlatformCpuInfoGuid
   gEfiGlobalVariableGuid
   gRecoveryOnFatFloppyDiskGuid
   gRecoveryOnFatUsbDiskGuid

+ 0 - 1
Platform/Intel/Vlv2TbltDevicePkg/PlatformPei/PlatformPei.inf

@@ -100,7 +100,6 @@
   gEfiSetupVariableGuid
   gEfiPlatformInfoGuid
   gEfiPlatformBootModeGuid
-  gEfiPlatformCpuInfoGuid
   gEfiGlobalVariableGuid
   gRecoveryOnFatFloppyDiskGuid
   gRecoveryOnFatUsbDiskGuid

File diff suppressed because it is too large
+ 1289 - 0
Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccIA32.dsc


+ 0 - 1
Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc

@@ -222,7 +222,6 @@
 !endif
 
  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
- CpuIA32Lib|Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 

+ 0 - 1
Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc

@@ -220,7 +220,6 @@
 !endif
 
  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
- CpuIA32Lib|Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 

+ 0 - 1
Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc

@@ -222,7 +222,6 @@
 !endif
 
  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
- CpuIA32Lib|Vlv2TbltDevicePkg/Library/CpuIA32Lib/CpuIA32Lib.inf
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 

+ 0 - 1
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>

+ 1 - 1
Platform/Intel/Vlv2TbltDevicePkg/PlatformSetupDxe/PlatformSetupDxe.inf

@@ -61,6 +61,7 @@
   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 @@
   UefiRuntimeServicesTableLib
   PrintLib
   BiosIdLib
-  CpuIA32Lib
   IoLib
   HobLib
 

+ 26 - 18
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
-
-  EfiCpuVersion (&FamilyId, &Model, &SteppingId, &ProcessorType);
-
-  //
-  //we need raw Model data
-  //
-  Model = Model & 0xf;
+  CPUID_VERSION_INFO_EAX  Eax;
+  CPUID_VERSION_INFO_EBX  Ebx;
+  CPUID_VERSION_INFO_ECX  Ecx;
+  CPUID_VERSION_INFO_EDX  Edx;
+
+  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);
 

+ 4 - 8
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

+ 1 - 0
Platform/Intel/Vlv2TbltDevicePkg/PpmPolicy/PpmPolicy.inf

@@ -27,6 +27,7 @@
 
 [Packages]
   MdePkg/MdePkg.dec
+  UefiCpuPkg/UefiCpuPkg.dec
   Vlv2TbltDevicePkg/PlatformPkg.dec
   Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
 

+ 23 - 16
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;
-
-
-  EfiCpuVersion (&FamilyId, &Model, &SteppingId, &ProcessorType);
-
-  //
-  //we need raw Model data
-  //
-  Model = Model & 0xf;
+  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;
+
+  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);
 }

+ 4 - 6
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);
 

+ 1 - 2
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)];
 
 }

+ 0 - 1
Platform/Intel/Vlv2TbltDevicePkg/SmBiosMiscDxe/SmBiosMiscDxe.inf

@@ -103,7 +103,6 @@
   UefiLib
   BiosIdLib
   PrintLib
-  CpuIA32Lib
   PchPlatformLib
   NetLib
   HobLib

+ 5 - 2
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

Some files were not shown because too many files changed in this diff