11549Srgrimes/* SPDX-License-Identifier: GPL-2.0-only */ 21549Srgrimes/* 31549Srgrimes * IRQ support for the Hexagon architecture 41541Srgrimes * 51541Srgrimes * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. 61541Srgrimes */ 71541Srgrimes 81541Srgrimes#ifndef _ASM_IRQFLAGS_H 91541Srgrimes#define _ASM_IRQFLAGS_H 101541Srgrimes 111541Srgrimes#include <asm/hexagon_vm.h> 121541Srgrimes#include <linux/types.h> 131541Srgrimes 141541Srgrimesstatic inline unsigned long arch_local_save_flags(void) 151549Srgrimes{ 161549Srgrimes return __vmgetie(); 171549Srgrimes} 181541Srgrimes 191549Srgrimesstatic inline unsigned long arch_local_irq_save(void) 201541Srgrimes{ 211541Srgrimes return __vmsetie(VM_INT_DISABLE); 221549Srgrimes} 231541Srgrimes 241541Srgrimesstatic inline bool arch_irqs_disabled_flags(unsigned long flags) 251541Srgrimes{ 261541Srgrimes return !flags; 271541Srgrimes} 281541Srgrimes 291541Srgrimesstatic inline bool arch_irqs_disabled(void) 301541Srgrimes{ 3114235Speter return !__vmgetie(); 321541Srgrimes} 331541Srgrimes 341541Srgrimesstatic inline void arch_local_irq_enable(void) 351549Srgrimes{ 3612221Sbde __vmsetie(VM_INT_ENABLE); 371549Srgrimes} 381549Srgrimes 391549Srgrimesstatic inline void arch_local_irq_disable(void) 403308Sphk{ 4111607Sdg __vmsetie(VM_INT_DISABLE); 421549Srgrimes} 431549Srgrimes 441549Srgrimesstatic inline void arch_local_irq_restore(unsigned long flags) 451549Srgrimes{ 461549Srgrimes __vmsetie(flags); 476380Ssos} 481549Srgrimes 493308Sphk#endif 5014235Speter