12#ifndef ZEPHYR_INCLUDE_ARCH_OR1K_IRQ_H_
13#define ZEPHYR_INCLUDE_ARCH_OR1K_IRQ_H_
15#include <openrisc/openriscregs.h>
17#define SPR_SR_IRQ_MASK (SPR_SR_IEE | SPR_SR_TEE)
19#define OR1K_PIC_NUM_INTERRUPTS 32
21#ifdef CONFIG_MULTI_LEVEL_INTERRUPTS
26#ifdef CONFIG_2ND_LEVEL_INTERRUPTS
27#ifdef CONFIG_3RD_LEVEL_INTERRUPTS
28#define CONFIG_NUM_IRQS (OR1K_PIC_NUM_INTERRUPTS +\
29 (CONFIG_NUM_2ND_LEVEL_AGGREGATORS +\
30 CONFIG_NUM_3RD_LEVEL_AGGREGATORS) *\
31 CONFIG_MAX_IRQ_PER_AGGREGATOR)
33#define CONFIG_NUM_IRQS (OR1K_PIC_NUM_INTERRUPTS +\
34 CONFIG_NUM_2ND_LEVEL_AGGREGATORS *\
35 CONFIG_MAX_IRQ_PER_AGGREGATOR)
38#define CONFIG_NUM_IRQS OR1K_PIC_NUM_INTERRUPTS
41void z_soc_irq_init(
void);
42void z_soc_irq_enable(
unsigned int irq);
43void z_soc_irq_disable(
unsigned int irq);
44int z_soc_irq_is_enabled(
unsigned int irq);
46#define arch_irq_enable(irq) z_soc_irq_enable(irq)
47#define arch_irq_disable(irq) z_soc_irq_disable(irq)
49#define arch_irq_is_enabled(irq) z_soc_irq_is_enabled(irq)
51#ifdef CONFIG_DYNAMIC_INTERRUPTS
52extern int z_soc_irq_connect_dynamic(
unsigned int irq,
unsigned int priority,
53 void (*routine)(
const void *parameter),
59#define CONFIG_NUM_IRQS OR1K_PIC_NUM_INTERRUPTS
61#define arch_irq_enable(irq) openrisc_irq_enable(irq)
62#define arch_irq_disable(irq) openrisc_irq_disable(irq)
64#define arch_irq_is_enabled(irq) openrisc_irq_is_enabled(irq)
70 const uint32_t sr = openrisc_read_spr(SPR_SR);
78 const uint32_t sr = openrisc_read_spr(SPR_SR);
97 openrisc_write_spr(SPR_PICMR, openrisc_read_spr(SPR_PICMR) |
BIT(irq));
110 openrisc_write_spr(SPR_PICMR, openrisc_read_spr(SPR_PICMR) & ~
BIT(irq));
116 return (openrisc_read_spr(SPR_PICMR) &
BIT(irq)) != 0;
#define arch_irq_disable(irq)
Definition irq.h:59
#define arch_irq_enable(irq)
Definition irq.h:58
#define arch_irq_is_enabled(irq)
Definition irq.h:60
static ALWAYS_INLINE unsigned int arch_irq_lock(void)
Definition irq.h:68
static ALWAYS_INLINE void arch_irq_unlock(unsigned int key)
Definition irq.h:76
#define SPR_SR_IRQ_MASK
Definition irq.h:17
static ALWAYS_INLINE bool arch_irq_unlocked(unsigned int key)
Definition irq.h:83
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition util_macro.h:44
flags
Definition parser.h:97
__UINT32_TYPE__ uint32_t
Definition stdint.h:90