irqflags.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * IRQ support for the Hexagon architecture
  3. *
  4. * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License version 2 and
  8. * only version 2 as published by the Free Software Foundation.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program; if not, write to the Free Software
  17. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  18. * 02110-1301, USA.
  19. */
  20. #ifndef _ASM_IRQFLAGS_H
  21. #define _ASM_IRQFLAGS_H
  22. #include <asm/hexagon_vm.h>
  23. #include <linux/types.h>
  24. static inline unsigned long arch_local_save_flags(void)
  25. {
  26. return __vmgetie();
  27. }
  28. static inline unsigned long arch_local_irq_save(void)
  29. {
  30. return __vmsetie(VM_INT_DISABLE);
  31. }
  32. static inline bool arch_irqs_disabled_flags(unsigned long flags)
  33. {
  34. return !flags;
  35. }
  36. static inline bool arch_irqs_disabled(void)
  37. {
  38. return !__vmgetie();
  39. }
  40. static inline void arch_local_irq_enable(void)
  41. {
  42. __vmsetie(VM_INT_ENABLE);
  43. }
  44. static inline void arch_local_irq_disable(void)
  45. {
  46. __vmsetie(VM_INT_DISABLE);
  47. }
  48. static inline void arch_local_irq_restore(unsigned long flags)
  49. {
  50. __vmsetie(flags);
  51. }
  52. #endif