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#/** 23# Retrieves the current CPU interrupt state. 24# 25# Returns TRUE is interrupts are currently enabled. Otherwise 26# returns FALSE. 27# 28# @retval TRUE CPU interrupts are enabled. 29# @retval FALSE CPU interrupts are disabled. 30# 31#**/ 32# 33#BOOLEAN 34#EFIAPI 35#GetInterruptState ( 36# VOID 37# ); 38# 39ASM_PFX(GetInterruptState): 40 mrs x0, daif 41 tst x0, #2 // Check if IRQ is enabled. Enabled if 0. 42 mov w0, #0 43 mov w1, #1 44 csel w0, w1, w0, ne 45 ret 46