/** @file Copyright (c) 2015 - 2016, Linaro Ltd. All rights reserved.
Copyright (c) 2023, Ventana Micro Systems Inc. All Rights Reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef BASE_RISCV_MMU_LIB_H_ #define BASE_RISCV_MMU_LIB_H_ /** The API to flush all local TLBs. **/ VOID EFIAPI RiscVLocalTlbFlushAll ( VOID ); /** The API to flush local TLB at a virtual address. @param VirtAddr The virtual address. **/ VOID EFIAPI RiscVLocalTlbFlush ( UINTN VirtAddr ); /** The API to set a GCD attribute on an memory region. @param BaseAddress The base address of the region. @param Length The length of the region. @param Attributes The GCD attributes. @retval EFI_INVALID_PARAMETER The BaseAddress or Length was not valid. @retval EFI_OUT_OF_RESOURCES Not enough resource. @retval EFI_SUCCESS The operation succesfully. **/ EFI_STATUS EFIAPI RiscVSetMemoryAttributes ( IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes ); /** The API to configure and enable RISC-V MMU with the highest mode supported. @retval EFI_OUT_OF_RESOURCES Not enough resource. @retval EFI_SUCCESS The operation succesfully. **/ EFI_STATUS EFIAPI RiscVConfigureMmu ( VOID ); #endif /* BASE_RISCV_MMU_LIB_H_ */