~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/irqchip/arm-gic-v3-prio.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 
  3 #ifndef __LINUX_IRQCHIP_ARM_GIC_V3_PRIO_H
  4 #define __LINUX_IRQCHIP_ARM_GIC_V3_PRIO_H
  5 
  6 /*
  7  * GIC priorities from the view of the PMR/RPR.
  8  *
  9  * These values are chosen to be valid in either the absolute priority space or
 10  * the NS view of the priority space. The value programmed into the distributor
 11  * and ITS will be chosen at boot time such that these values appear in the
 12  * PMR/RPR.
 13  *
 14  * GICV3_PRIO_UNMASKED is the PMR view of the priority to use to permit both
 15  * IRQs and pseudo-NMIs.
 16  *
 17  * GICV3_PRIO_IRQ is the PMR view of the priority of regular interrupts. This
 18  * can be written to the PMR to mask regular IRQs.
 19  *
 20  * GICV3_PRIO_NMI is the PMR view of the priority of pseudo-NMIs. This can be
 21  * written to the PMR to mask pseudo-NMIs.
 22  *
 23  * On arm64 some code sections either automatically switch back to PSR.I or
 24  * explicitly require to not use priority masking. If bit GICV3_PRIO_PSR_I_SET
 25  * is included in the priority mask, it indicates that PSR.I should be set and
 26  * interrupt disabling temporarily does not rely on IRQ priorities.
 27  */
 28 #define GICV3_PRIO_UNMASKED     0xe0
 29 #define GICV3_PRIO_IRQ          0xc0
 30 #define GICV3_PRIO_NMI          0x80
 31 
 32 #define GICV3_PRIO_PSR_I_SET    (1 << 4)
 33 
 34 #ifndef __ASSEMBLER__
 35 
 36 #define __gicv3_prio_to_ns(p)   (0xff & ((p) << 1))
 37 #define __gicv3_ns_to_prio(ns)  (0x80 | ((ns) >> 1))
 38 
 39 #define __gicv3_prio_valid_ns(p) \
 40         (__gicv3_ns_to_prio(__gicv3_prio_to_ns(p)) == (p))
 41 
 42 static_assert(__gicv3_prio_valid_ns(GICV3_PRIO_NMI));
 43 static_assert(__gicv3_prio_valid_ns(GICV3_PRIO_IRQ));
 44 
 45 static_assert(GICV3_PRIO_NMI < GICV3_PRIO_IRQ);
 46 static_assert(GICV3_PRIO_IRQ < GICV3_PRIO_UNMASKED);
 47 
 48 static_assert(GICV3_PRIO_IRQ < (GICV3_PRIO_IRQ | GICV3_PRIO_PSR_I_SET));
 49 
 50 #endif /* __ASSEMBLER */
 51 
 52 #endif /* __LINUX_IRQCHIP_ARM_GIC_V3_PRIO_H */
 53 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php