// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2012 Regents of the University of California * Copyright (C) 2017 SiFive * Copyright (C) 2018 Christoph Hellwig */ #include #include #include #include #include #include static struct fwnode_handle *(*__get_intc_node)(void); void riscv_set_intc_hwnode_fn(struct fwnode_handle *(*fn)(void)) { __get_intc_node = fn; } struct fwnode_handle *riscv_get_intc_hwnode(void) { if (__get_intc_node) return __get_intc_node(); return NULL; } EXPORT_SYMBOL_GPL(riscv_get_intc_hwnode); int arch_show_interrupts(struct seq_file *p, int prec) { show_ipi_stats(p, prec); return 0; } void __init init_IRQ(void) { irqchip_init(); if (!handle_arch_irq) panic("No interrupt controller found."); sbi_ipi_init(); }