10#ifndef ZEPHYR_INCLUDE_ARCH_ARC_V2_ARCV2_IRQ_UNIT_H_
11#define ZEPHYR_INCLUDE_ARCH_ARC_V2_ARCV2_IRQ_UNIT_H_
18#define _ARC_V2_INT_PRIO_MASK 0xf
19#define _ARC_V2_INT_DISABLE 0
20#define _ARC_V2_INT_ENABLE 1
22#define _ARC_V2_INT_LEVEL 0
23#define _ARC_V2_INT_PULSE 1
47void z_arc_v2_irq_unit_irq_enable_set(
54 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_SELECT, irq);
55 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_ENABLE, enable);
67void z_arc_v2_irq_unit_int_enable(
int irq)
69 z_arc_v2_irq_unit_irq_enable_set(irq, _ARC_V2_INT_ENABLE);
79void z_arc_v2_irq_unit_int_disable(
int irq)
81 z_arc_v2_irq_unit_irq_enable_set(irq, _ARC_V2_INT_DISABLE);
93bool z_arc_v2_irq_unit_int_enabled(
int irq)
98 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_SELECT, irq);
99 ret = z_arc_v2_aux_reg_read(_ARC_V2_IRQ_ENABLE) & 0x1;
114void z_arc_v2_irq_unit_prio_set(
int irq,
unsigned char prio)
119 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_SELECT, irq);
120#if defined(CONFIG_ARC_SECURE_FIRMWARE)
121 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_PRIORITY,
122 (z_arc_v2_aux_reg_read(_ARC_V2_IRQ_PRIORITY) & (~_ARC_V2_INT_PRIO_MASK))
125 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_PRIORITY, prio);
130#if defined(CONFIG_ARC_SECURE_FIRMWARE)
137void z_arc_v2_irq_uinit_secure_set(
int irq,
bool secure)
141 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_SELECT, irq);
144 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_PRIORITY,
145 z_arc_v2_aux_reg_read(_ARC_V2_IRQ_PRIORITY) |
146 _ARC_V2_IRQ_PRIORITY_SECURE);
148 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_PRIORITY,
149 z_arc_v2_aux_reg_read(_ARC_V2_IRQ_PRIORITY) &
150 _ARC_V2_INT_PRIO_MASK);
167void z_arc_v2_irq_unit_sensitivity_set(
int irq,
int s)
171 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_SELECT, irq);
172 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_TRIGGER,
s);
185bool z_arc_v2_irq_unit_is_in_isr(
void)
187 uint32_t act = z_arc_v2_aux_reg_read(_ARC_V2_AUX_IRQ_ACT);
190 if (z_arc_v2_aux_reg_read(_ARC_V2_STATUS32) & _ARC_V2_STATUS32_AE) {
194 return ((act & 0xffff) != 0U);
205void z_arc_v2_irq_unit_trigger_set(
int irq,
unsigned int trigger)
209 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_SELECT, irq);
210 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_TRIGGER, trigger);
224unsigned int z_arc_v2_irq_unit_trigger_get(
int irq)
229 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_SELECT, irq);
230 ret = z_arc_v2_aux_reg_read(_ARC_V2_IRQ_TRIGGER);
244void z_arc_v2_irq_unit_int_eoi(
int irq)
248 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_SELECT, irq);
249 z_arc_v2_aux_reg_write(_ARC_V2_IRQ_PULSE_CANCEL, 1);
irp nz macro MOVR cc s mov cc s endm endr irp aw macro LDR aa s
Definition: asm-macro-32-bit-gnu.h:17
#define ALWAYS_INLINE
Definition: common.h:129
static unsigned int arch_irq_lock(void)
Lock interrupts on the current CPU.
static void arch_irq_unlock(unsigned int key)
Unlock interrupts on the current CPU.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90