]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseLib/AArch64/GetInterruptsState.asm
MdePkg/Library/BaseLib: Enable VS2017/ARM64 builds
[mirror_edk2.git] / MdePkg / Library / BaseLib / AArch64 / GetInterruptsState.asm
CommitLineData
da351bdb
PB
1;------------------------------------------------------------------------------\r
2;\r
3; GetInterruptState() function for AArch64\r
4;\r
5; Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
6; Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
7; Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>\r
8; This program and the accompanying materials\r
9; are licensed and made available under the terms and conditions of the BSD License\r
10; which accompanies this distribution. The full text of the license may be found at\r
11; http://opensource.org/licenses/bsd-license.php.\r
12;\r
13; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
14; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
15;\r
16;------------------------------------------------------------------------------\r
17\r
18 EXPORT GetInterruptState\r
19 AREA BaseLib_LowLevel, CODE, READONLY\r
20\r
21DAIF_RD_IRQ_BIT EQU (1 << 7)\r
22\r
23;/**\r
24; Retrieves the current CPU interrupt state.\r
25;\r
26; Returns TRUE is interrupts are currently enabled. Otherwise\r
27; returns FALSE.\r
28;\r
29; @retval TRUE CPU interrupts are enabled.\r
30; @retval FALSE CPU interrupts are disabled.\r
31;\r
32;**/\r
33;\r
34;BOOLEAN\r
35;EFIAPI\r
36;GetInterruptState (\r
37; VOID\r
38; );\r
39;\r
40GetInterruptState\r
41 mrs x0, daif\r
42 mov w0, wzr\r
43 tst x0, #DAIF_RD_IRQ_BIT // Check IRQ mask; set Z=1 if clear/unmasked\r
44 bne exit // if Z=1 (eq) return 1, else 0\r
45 mov w0, #1\r
46exit\r
47 ret\r
48\r
49 END\r