hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/** @file
  Source code file for Report CPU HOB library.
 
Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
#include <PiPei.h>
#include <Library/BaseLib.h>
#include <Library/HobLib.h>
#include <Register/Intel/Cpuid.h>
 
 
/**
  Build a HOB for the CPU.
**/
VOID
EFIAPI
ReportCpuHob (
  VOID
  )
{
  UINT8                           PhysicalAddressBits;
  CPUID_VIR_PHY_ADDRESS_SIZE_EAX  AddressSizeEax;
 
  AsmCpuid (CPUID_VIR_PHY_ADDRESS_SIZE, &AddressSizeEax.Uint32, NULL, NULL, NULL);
  if (AddressSizeEax.Uint32 >= CPUID_VIR_PHY_ADDRESS_SIZE) {
    AsmCpuid (CPUID_VIR_PHY_ADDRESS_SIZE, &AddressSizeEax.Uint32, NULL, NULL, NULL);
    PhysicalAddressBits = (UINT8)AddressSizeEax.Bits.PhysicalAddressBits;
  } else {
    PhysicalAddressBits = 36;
  }
 
  ///
  /// Create a CPU hand-off information
  ///
  BuildCpuHob (PhysicalAddressBits, 16);
}