xref: /linux/arch/openrisc/kernel/irq.c (revision 418360b2)
1*2874c5fdSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
2816ebaa8SJonas Bonn /*
3816ebaa8SJonas Bonn  * OpenRISC irq.c
4816ebaa8SJonas Bonn  *
5816ebaa8SJonas Bonn  * Linux architectural port borrowing liberally from similar works of
6816ebaa8SJonas Bonn  * others.  All original copyrights apply as per the original source
7816ebaa8SJonas Bonn  * declaration.
8816ebaa8SJonas Bonn  *
9816ebaa8SJonas Bonn  * Modifications for the OpenRISC architecture:
10816ebaa8SJonas Bonn  * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
11816ebaa8SJonas Bonn  */
12816ebaa8SJonas Bonn 
13816ebaa8SJonas Bonn #include <linux/interrupt.h>
14816ebaa8SJonas Bonn #include <linux/init.h>
15816ebaa8SJonas Bonn #include <linux/ftrace.h>
16816ebaa8SJonas Bonn #include <linux/irq.h>
174db8e6d2SStefan Kristiansson #include <linux/irqchip.h>
18abdf8b5eSJonas Bonn #include <linux/export.h>
19816ebaa8SJonas Bonn #include <linux/irqflags.h>
20816ebaa8SJonas Bonn 
21816ebaa8SJonas Bonn /* read interrupt enabled status */
arch_local_save_flags(void)22816ebaa8SJonas Bonn unsigned long arch_local_save_flags(void)
23816ebaa8SJonas Bonn {
24816ebaa8SJonas Bonn 	return mfspr(SPR_SR) & (SPR_SR_IEE|SPR_SR_TEE);
25816ebaa8SJonas Bonn }
26816ebaa8SJonas Bonn EXPORT_SYMBOL(arch_local_save_flags);
27816ebaa8SJonas Bonn 
28816ebaa8SJonas Bonn /* set interrupt enabled status */
arch_local_irq_restore(unsigned long flags)29816ebaa8SJonas Bonn void arch_local_irq_restore(unsigned long flags)
30816ebaa8SJonas Bonn {
31816ebaa8SJonas Bonn 	mtspr(SPR_SR, ((mfspr(SPR_SR) & ~(SPR_SR_IEE|SPR_SR_TEE)) | flags));
32816ebaa8SJonas Bonn }
33816ebaa8SJonas Bonn EXPORT_SYMBOL(arch_local_irq_restore);
34816ebaa8SJonas Bonn 
init_IRQ(void)35816ebaa8SJonas Bonn void __init init_IRQ(void)
36816ebaa8SJonas Bonn {
374db8e6d2SStefan Kristiansson 	irqchip_init();
38816ebaa8SJonas Bonn }
39