diff options
Diffstat (limited to 'arch/s390/include/asm/irq.h')
| -rw-r--r-- | arch/s390/include/asm/irq.h | 78 | 
1 files changed, 48 insertions, 30 deletions
diff --git a/arch/s390/include/asm/irq.h b/arch/s390/include/asm/irq.h index e6972f85d2b..7def77302d6 100644 --- a/arch/s390/include/asm/irq.h +++ b/arch/s390/include/asm/irq.h @@ -2,43 +2,61 @@  #define _ASM_IRQ_H  #include <linux/hardirq.h> +#include <linux/percpu.h> +#include <linux/cache.h>  #include <linux/types.h> -enum interruption_class { +enum interruption_main_class {  	EXTERNAL_INTERRUPT,  	IO_INTERRUPT, -	EXTINT_CLK, -	EXTINT_EXC, -	EXTINT_EMS, -	EXTINT_TMR, -	EXTINT_TLA, -	EXTINT_PFL, -	EXTINT_DSD, -	EXTINT_VRT, -	EXTINT_SCP, -	EXTINT_IUC, -	EXTINT_CMS, -	EXTINT_CMC, -	EXTINT_CMR, -	IOINT_CIO, -	IOINT_QAI, -	IOINT_DAS, -	IOINT_C15, -	IOINT_C70, -	IOINT_TAP, -	IOINT_VMR, -	IOINT_LCS, -	IOINT_CLW, -	IOINT_CTC, -	IOINT_APB, -	IOINT_ADM, -	IOINT_CSC, -	IOINT_PCI, -	IOINT_MSI, +	NR_IRQS +}; + +enum interruption_class { +	IRQEXT_CLK, +	IRQEXT_EXC, +	IRQEXT_EMS, +	IRQEXT_TMR, +	IRQEXT_TLA, +	IRQEXT_PFL, +	IRQEXT_DSD, +	IRQEXT_VRT, +	IRQEXT_SCP, +	IRQEXT_IUC, +	IRQEXT_CMS, +	IRQEXT_CMC, +	IRQEXT_CMR, +	IRQIO_CIO, +	IRQIO_QAI, +	IRQIO_DAS, +	IRQIO_C15, +	IRQIO_C70, +	IRQIO_TAP, +	IRQIO_VMR, +	IRQIO_LCS, +	IRQIO_CLW, +	IRQIO_CTC, +	IRQIO_APB, +	IRQIO_ADM, +	IRQIO_CSC, +	IRQIO_PCI, +	IRQIO_MSI,  	NMI_NMI, -	NR_IRQS, +	CPU_RST, +	NR_ARCH_IRQS  }; +struct irq_stat { +	unsigned int irqs[NR_ARCH_IRQS]; +}; + +DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat); + +static __always_inline void inc_irq_stat(enum interruption_class irq) +{ +	__get_cpu_var(irq_stat).irqs[irq]++; +} +  struct ext_code {  	unsigned short subcode;  	unsigned short code;  |