linux/arch/sparc/include/asm/irqflags_32.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * include/asm/irqflags.h
   4 *
   5 * IRQ flags handling
   6 *
   7 * This file gets included from lowlevel asm headers too, to provide
   8 * wrapped versions of the local_irq_*() APIs, based on the
   9 * arch_local_irq_*() functions from the lowlevel headers.
  10 */
  11#ifndef _ASM_IRQFLAGS_H
  12#define _ASM_IRQFLAGS_H
  13
  14#ifndef __ASSEMBLY__
  15
  16#include <linux/types.h>
  17#include <asm/psr.h>
  18
  19void arch_local_irq_restore(unsigned long);
  20unsigned long arch_local_irq_save(void);
  21void arch_local_irq_enable(void);
  22
  23static inline notrace unsigned long arch_local_save_flags(void)
  24{
  25        unsigned long flags;
  26
  27        asm volatile("rd        %%psr, %0" : "=r" (flags));
  28        return flags;
  29}
  30
  31static inline notrace void arch_local_irq_disable(void)
  32{
  33        arch_local_irq_save();
  34}
  35
  36static inline notrace bool arch_irqs_disabled_flags(unsigned long flags)
  37{
  38        return (flags & PSR_PIL) != 0;
  39}
  40
  41static inline notrace bool arch_irqs_disabled(void)
  42{
  43        return arch_irqs_disabled_flags(arch_local_save_flags());
  44}
  45
  46#endif /* (__ASSEMBLY__) */
  47
  48#endif /* !(_ASM_IRQFLAGS_H) */
  49