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# This program and the accompanying materials 9# are licensed and made available under the terms and conditions of the BSD License 10# which accompanies this distribution. The full text of the license may be found at 11# http://opensource.org/licenses/bsd-license.php. 12# 13# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 14# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 15# 16#------------------------------------------------------------------------------ 17 18.text 19.p2align 2 20GCC_ASM_EXPORT(GetInterruptState) 21 22.set DAIF_RD_IRQ_BIT, (1 << 7) 23 24#/** 25# Retrieves the current CPU interrupt state. 26# 27# Returns TRUE is interrupts are currently enabled. Otherwise 28# returns FALSE. 29# 30# @retval TRUE CPU interrupts are enabled. 31# @retval FALSE CPU interrupts are disabled. 32# 33#**/ 34# 35#BOOLEAN 36#EFIAPI 37#GetInterruptState ( 38# VOID 39# ); 40# 41ASM_PFX(GetInterruptState): 42 mrs x0, daif 43 tst x0, #DAIF_RD_IRQ_BIT // Check IRQ mask; set Z=1 if clear/unmasked 44 cset w0, eq // if Z=1 (eq) return 1, else 0 45 ret 46