/** @file | |
Library that provides service to read/write CPU specific smram save state registers. | |
Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR> | |
Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR> | |
@note | |
SaveState(Read/Write) of EFI_SMM_SAVE_STATE_REGISTER_PROCESSOR_ID/EFI_MM_SAVE_STATE_REGISTER_PROCESSOR_ID | |
is handled by PiSmmCpuDxeSmm driver. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef MM_SAVE_STATE_LIB_H_ | |
#define MM_SAVE_STATE_LIB_H_ | |
#include <Protocol/MmCpu.h> | |
#include <Uefi/UefiBaseType.h> | |
/** | |
Read a save state register on the target processor. If this function | |
returns EFI_UNSUPPORTED, then the caller is responsible for reading the | |
MM Save State register. | |
@param[in] CpuIndex The index of the CPU to read the Save State register. | |
The value must be between 0 and the NumberOfCpus field in | |
the System Management System Table (SMST). | |
@param[in] Register The MM Save State register to read. | |
@param[in] Width The number of bytes to read from the CPU save state. | |
@param[out] Buffer Upon return, this holds the CPU register value read | |
from the save state. | |
@retval EFI_SUCCESS The register was read from Save State. | |
@retval EFI_INVALID_PARAMTER Buffer is NULL. | |
@retval EFI_UNSUPPORTED This function does not support reading Register. | |
@retval EFI_NOT_FOUND If desired Register not found. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
MmSaveStateReadRegister ( | |
IN UINTN CpuIndex, | |
IN EFI_MM_SAVE_STATE_REGISTER Register, | |
IN UINTN Width, | |
OUT VOID *Buffer | |
); | |
/** | |
Writes a save state register on the target processor. If this function | |
returns EFI_UNSUPPORTED, then the caller is responsible for writing the | |
MM save state register. | |
@param[in] CpuIndex The index of the CPU to write the MM Save State. The | |
value must be between 0 and the NumberOfCpus field in | |
the System Management System Table (SMST). | |
@param[in] Register The MM Save State register to write. | |
@param[in] Width The number of bytes to write to the CPU save state. | |
@param[in] Buffer Upon entry, this holds the new CPU register value. | |
@retval EFI_SUCCESS The register was written to Save State. | |
@retval EFI_INVALID_PARAMTER Buffer is NULL. | |
@retval EFI_UNSUPPORTED This function does not support writing Register. | |
@retval EFI_NOT_FOUND If desired Register not found. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
MmSaveStateWriteRegister ( | |
IN UINTN CpuIndex, | |
IN EFI_MM_SAVE_STATE_REGISTER Register, | |
IN UINTN Width, | |
IN CONST VOID *Buffer | |
); | |
#endif |