hc
2024-03-26 e0728245c89800c2038c23308f2d88969d5b41c8
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
/** @file
  SpeculationBarrier() function for IA32 and x64.
 
  Copyright (C) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
#include <Library/BaseLib.h>
 
/**
  Uses as a barrier to stop speculative execution.
 
  Ensures that no later instruction will execute speculatively, until all prior
  instructions have completed.
 
**/
VOID
EFIAPI
SpeculationBarrier (
  VOID
  )
{
  if (PcdGet8 (PcdSpeculationBarrierType) == 0x01) {
    AsmLfence ();
  } else if (PcdGet8 (PcdSpeculationBarrierType) == 0x02) {
    AsmCpuid (0x01, NULL, NULL, NULL, NULL);
  }
}