Files
system76-edk2/MdePkg/Library/BaseLib/X86SpeculationBarrier.c
Michael D Kinney aec7465689 MdePkg/BaseLib: Use PcdSpeculationBarrierType
Use PcdSpeculationBarrierType in the x86 implementation
of SpeculationBarrier() to select between AsmLfence(),
AsmCpuid(), and no operation.

Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Brian J. Johnson <brian.johnson@hpe.com>
2019-04-30 16:39:15 -07:00

31 lines
648 B
C

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