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

TOMOYO Linux Cross Reference
Linux/arch/s390/include/asm/irq.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 */
  2 #ifndef _ASM_IRQ_H
  3 #define _ASM_IRQ_H
  4 
  5 #define EXT_INTERRUPT   0
  6 #define IO_INTERRUPT    1
  7 #define THIN_INTERRUPT  2
  8 
  9 #define NR_IRQS_BASE    3
 10 
 11 #define NR_IRQS NR_IRQS_BASE
 12 #define NR_IRQS_LEGACY NR_IRQS_BASE
 13 
 14 /* External interruption codes */
 15 #define EXT_IRQ_INTERRUPT_KEY   0x0040
 16 #define EXT_IRQ_CLK_COMP        0x1004
 17 #define EXT_IRQ_CPU_TIMER       0x1005
 18 #define EXT_IRQ_WARNING_TRACK   0x1007
 19 #define EXT_IRQ_MALFUNC_ALERT   0x1200
 20 #define EXT_IRQ_EMERGENCY_SIG   0x1201
 21 #define EXT_IRQ_EXTERNAL_CALL   0x1202
 22 #define EXT_IRQ_TIMING_ALERT    0x1406
 23 #define EXT_IRQ_MEASURE_ALERT   0x1407
 24 #define EXT_IRQ_SERVICE_SIG     0x2401
 25 #define EXT_IRQ_CP_SERVICE      0x2603
 26 #define EXT_IRQ_IUCV            0x4000
 27 
 28 #ifndef __ASSEMBLY__
 29 
 30 #include <linux/hardirq.h>
 31 #include <linux/percpu.h>
 32 #include <linux/cache.h>
 33 #include <linux/types.h>
 34 #include <asm/ctlreg.h>
 35 
 36 enum interruption_class {
 37         IRQEXT_CLK,
 38         IRQEXT_EXC,
 39         IRQEXT_EMS,
 40         IRQEXT_TMR,
 41         IRQEXT_TLA,
 42         IRQEXT_PFL,
 43         IRQEXT_DSD,
 44         IRQEXT_VRT,
 45         IRQEXT_SCP,
 46         IRQEXT_IUC,
 47         IRQEXT_CMS,
 48         IRQEXT_CMC,
 49         IRQEXT_FTP,
 50         IRQIO_CIO,
 51         IRQIO_DAS,
 52         IRQIO_C15,
 53         IRQIO_C70,
 54         IRQIO_TAP,
 55         IRQIO_VMR,
 56         IRQIO_LCS,
 57         IRQIO_CTC,
 58         IRQIO_ADM,
 59         IRQIO_CSC,
 60         IRQIO_VIR,
 61         IRQIO_QAI,
 62         IRQIO_APB,
 63         IRQIO_PCF,
 64         IRQIO_PCD,
 65         IRQIO_MSI,
 66         IRQIO_VAI,
 67         IRQIO_GAL,
 68         NMI_NMI,
 69         CPU_RST,
 70         NR_ARCH_IRQS
 71 };
 72 
 73 struct irq_stat {
 74         unsigned int irqs[NR_ARCH_IRQS];
 75 };
 76 
 77 DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);
 78 
 79 static __always_inline void inc_irq_stat(enum interruption_class irq)
 80 {
 81         __this_cpu_inc(irq_stat.irqs[irq]);
 82 }
 83 
 84 struct ext_code {
 85         union {
 86                 struct {
 87                         unsigned short subcode;
 88                         unsigned short code;
 89                 };
 90                 unsigned int int_code;
 91         };
 92 };
 93 
 94 typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long);
 95 
 96 int register_external_irq(u16 code, ext_int_handler_t handler);
 97 int unregister_external_irq(u16 code, ext_int_handler_t handler);
 98 
 99 enum irq_subclass {
100         IRQ_SUBCLASS_MEASUREMENT_ALERT = 5,
101         IRQ_SUBCLASS_SERVICE_SIGNAL = 9,
102 };
103 
104 #define CR0_IRQ_SUBCLASS_MASK                                     \
105         (CR0_WARNING_TRACK                                      | \
106          CR0_MALFUNCTION_ALERT_SUBMASK                          | \
107          CR0_EMERGENCY_SIGNAL_SUBMASK                           | \
108          CR0_EXTERNAL_CALL_SUBMASK                              | \
109          CR0_CLOCK_COMPARATOR_SUBMASK                           | \
110          CR0_CPU_TIMER_SUBMASK                                  | \
111          CR0_SERVICE_SIGNAL_SUBMASK                             | \
112          CR0_INTERRUPT_KEY_SUBMASK                              | \
113          CR0_MEASUREMENT_ALERT_SUBMASK                          | \
114          CR0_ETR_SUBMASK                                        | \
115          CR0_IUCV)
116 
117 void irq_subclass_register(enum irq_subclass subclass);
118 void irq_subclass_unregister(enum irq_subclass subclass);
119 
120 #define irq_canonicalize(irq)  (irq)
121 
122 #endif /* __ASSEMBLY__ */
123 
124 #endif /* _ASM_IRQ_H */
125 

~ [ 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