1 // SPDX-License-Identifier: GPL-2.0-only << 2 /* 1 /* 3 * Copyright (C) 2011-12 Synopsys, Inc. (www.s !! 2 * irq.c >> 3 * >> 4 * (C) Copyright 2007, Greg Ungerer <gerg@snapgear.com> >> 5 * >> 6 * This file is subject to the terms and conditions of the GNU General Public >> 7 * License. See the file COPYING in the main directory of this archive >> 8 * for more details. 4 */ 9 */ 5 10 >> 11 #include <linux/types.h> >> 12 #include <linux/init.h> >> 13 #include <linux/kernel.h> >> 14 #include <linux/kernel_stat.h> 6 #include <linux/interrupt.h> 15 #include <linux/interrupt.h> 7 #include <linux/irqchip.h> !! 16 #include <linux/irq.h> 8 #include <asm/mach_desc.h> !! 17 #include <linux/seq_file.h> >> 18 #include <asm/traps.h> 9 19 10 #include <asm/irq_regs.h> !! 20 asmlinkage void do_IRQ(int irq, struct pt_regs *regs) 11 #include <asm/smp.h> << 12 << 13 /* << 14 * Late Interrupt system init called from star << 15 * << 16 * Since slab must already be initialized, pla << 17 * needed request_irq( )s << 18 */ << 19 void __init init_IRQ(void) << 20 { 21 { 21 /* !! 22 struct pt_regs *oldregs = set_irq_regs(regs); 22 * process the entire interrupt tree i !! 23 23 * Any external intc will be setup pro !! 24 irq_enter(); 24 * properly !! 25 generic_handle_irq(irq); 25 */ !! 26 irq_exit(); 26 irqchip_init(); << 27 << 28 #ifdef CONFIG_SMP << 29 /* a SMP H/w block could do IPI IRQ re << 30 if (plat_smp_ops.init_per_cpu) << 31 plat_smp_ops.init_per_cpu(smp_ << 32 #endif << 33 27 34 if (machine_desc->init_per_cpu) !! 28 set_irq_regs(oldregs); 35 machine_desc->init_per_cpu(smp << 36 } 29 } 37 30 38 /* << 39 * "C" Entry point for any ARC ISR, called fro << 40 * @irq is the vector number read from ICAUSE << 41 */ << 42 void arch_do_IRQ(unsigned int hwirq, struct pt << 43 { << 44 struct pt_regs *old_regs; << 45 31 46 irq_enter(); !! 32 /* The number of spurious interrupts */ 47 old_regs = set_irq_regs(regs); !! 33 atomic_t irq_err_count; 48 generic_handle_domain_irq(NULL, hwirq) !! 34 49 set_irq_regs(old_regs); !! 35 int arch_show_interrupts(struct seq_file *p, int prec) 50 irq_exit(); !! 36 { >> 37 seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count)); >> 38 return 0; 51 } 39 } 52 40
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.