]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseLib/AArch64/GetInterruptsState.S
bf8b829bb2b1749d839b2ad3c7f84f53ad33c783
[mirror_edk2.git] / MdePkg / Library / BaseLib / AArch64 / GetInterruptsState.S
1 #------------------------------------------------------------------------------
2 #
3 # GetInterruptState() function for AArch64
4 #
5 # Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
6 # Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
7 # Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>
8 # SPDX-License-Identifier: BSD-2-Clause-Patent
9 #
10 #------------------------------------------------------------------------------
11
12 .text
13 .p2align 2
14 GCC_ASM_EXPORT(GetInterruptState)
15
16 .set DAIF_RD_IRQ_BIT, (1 << 7)
17
18 #/**
19 # Retrieves the current CPU interrupt state.
20 #
21 # Returns TRUE is interrupts are currently enabled. Otherwise
22 # returns FALSE.
23 #
24 # @retval TRUE CPU interrupts are enabled.
25 # @retval FALSE CPU interrupts are disabled.
26 #
27 #**/
28 #
29 #BOOLEAN
30 #EFIAPI
31 #GetInterruptState (
32 # VOID
33 # );
34 #
35 ASM_PFX(GetInterruptState):
36 mrs x0, daif
37 tst x0, #DAIF_RD_IRQ_BIT // Check IRQ mask; set Z=1 if clear/unmasked
38 cset w0, eq // if Z=1 (eq) return 1, else 0
39 ret