audk/MdePkg/Library/BaseLib/LoongArch64/DisableInterrupts.S
Chao Li 2ff435b264 MdePkg: Add LoongArch64 local interrupt function set into BaseLib
Adding LoongArch local interrupt function set, which is used to control
the opening or closing of the local interrupt when the global interrupt
is enabled.

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4584

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Signed-off-by: Chao Li <lichao@loongson.cn>
Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2024-02-06 23:51:47 +08:00

34 lines
876 B
ArmAsm

#------------------------------------------------------------------------------
#
# LoongArch interrupt disable operations
#
# Copyright (c) 2024, Loongson Technology Corporation Limited. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#------------------------------------------------------------------------------
#include <Base.h>
#include <Register/LoongArch64/Csr.h>
ASM_GLOBAL ASM_PFX(DisableLocalInterrupts)
ASM_GLOBAL ASM_PFX(DisableInterrupts)
#/**
# Disables local CPU interrupts.
#
# @param Needs to disable local interrupt bit.
#**/
ASM_PFX(DisableLocalInterrupts):
csrxchg $zero, $a0, LOONGARCH_CSR_ECFG
jirl $zero, $ra, 0
#/**
# Disables global CPU interrupts.
#**/
ASM_PFX(DisableInterrupts):
li.w $t0, BIT2
csrxchg $zero, $t0, LOONGARCH_CSR_CRMD
jirl $zero, $ra, 0
.end