audk/MdePkg/Library/BaseLib/LoongArch64/EnableInterrupts.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
864 B
ArmAsm

#------------------------------------------------------------------------------
#
# LoongArch interrupt enable 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(EnableLocalInterrupts)
ASM_GLOBAL ASM_PFX(EnableInterrupts)
#/**
# Enables local CPU interrupts.
#
# @param Needs to enable local interrupt bit.
#**/
ASM_PFX(EnableLocalInterrupts):
csrxchg $a0, $a0, LOONGARCH_CSR_ECFG
jirl $zero, $ra, 0
#/**
# Enables global CPU interrupts.
#**/
ASM_PFX(EnableInterrupts):
li.w $t0, BIT2
csrxchg $t0, $t0, LOONGARCH_CSR_CRMD
jirl $zero, $ra, 0
.end