File Index
Files and directories
Sign in
FILE

irq.h

File preview with syntax highlighting.

linux-6.19.14/arch/s390/include/asm/irq.h C
  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 __ASSEMBLER__
 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
 36enum 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	IRQEXT_WTI,
 51	IRQIO_CIO,
 52	IRQIO_DAS,
 53	IRQIO_C15,
 54	IRQIO_C70,
 55	IRQIO_TAP,
 56	IRQIO_VMR,
 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
 73struct irq_stat {
 74	unsigned int irqs[NR_ARCH_IRQS];
 75};
 76
 77DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);
 78
 79static __always_inline void inc_irq_stat(enum interruption_class irq)
 80{
 81	__this_cpu_inc(irq_stat.irqs[irq]);
 82}
 83
 84struct ext_code {
 85	union {
 86		struct {
 87			unsigned short subcode;
 88			unsigned short code;
 89		};
 90		unsigned int int_code;
 91	};
 92};
 93
 94typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long);
 95
 96int register_external_irq(u16 code, ext_int_handler_t handler);
 97int unregister_external_irq(u16 code, ext_int_handler_t handler);
 98
 99enum irq_subclass {
100	IRQ_SUBCLASS_MEASUREMENT_ALERT = 5,
101	IRQ_SUBCLASS_SERVICE_SIGNAL = 9,
102	IRQ_SUBCLASS_WARNING_TRACK = 33,
103};
104
105#define CR0_IRQ_SUBCLASS_MASK					  \
106	(CR0_WARNING_TRACK					| \
107	 CR0_MALFUNCTION_ALERT_SUBMASK				| \
108	 CR0_EMERGENCY_SIGNAL_SUBMASK				| \
109	 CR0_EXTERNAL_CALL_SUBMASK				| \
110	 CR0_CLOCK_COMPARATOR_SUBMASK				| \
111	 CR0_CPU_TIMER_SUBMASK					| \
112	 CR0_SERVICE_SIGNAL_SUBMASK				| \
113	 CR0_INTERRUPT_KEY_SUBMASK				| \
114	 CR0_MEASUREMENT_ALERT_SUBMASK				| \
115	 CR0_ETR_SUBMASK					| \
116	 CR0_IUCV)
117
118void irq_subclass_register(enum irq_subclass subclass);
119void irq_subclass_unregister(enum irq_subclass subclass);
120
121#define irq_canonicalize(irq)  (irq)
122
123#endif /* __ASSEMBLER__ */
124
125#endif /* _ASM_IRQ_H */
~/ Read-only file preview.