historical/m0-applesillicon.git/xnu-qemu-arm64-5.1.0/roms/edk2/MdePkg/Library/BaseLib/X86SpeculationBarrier.c

31 lines
618 B
C
Raw Normal View History

2024-01-16 17:20:27 +00:00
/** @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);
}
}