Skip to content

Commit b480595

Browse files
authored
Merge pull request #190 from tlauda/topic/interrupt_get_level
interrupt: arch_interrupt_get_level
2 parents ae793d2 + dc5e32c commit b480595

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

src/arch/host/include/arch/interrupt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ static inline int arch_interrupt_register(int irq,
4545
static inline void arch_interrupt_unregister(int irq) {}
4646
static inline uint32_t arch_interrupt_enable_mask(uint32_t mask) {return 0; }
4747
static inline uint32_t arch_interrupt_disable_mask(uint32_t mask) {return 0; }
48+
static inline uint32_t arch_interrupt_get_level(void) { return 0; }
4849
static inline void arch_interrupt_set(int irq) {}
4950
static inline void arch_interrupt_clear(int irq) {}
5051
static inline uint32_t arch_interrupt_get_enabled(void) {return 0; }

src/arch/xtensa/include/arch/interrupt.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,18 @@ static inline void arch_interrupt_unregister(int irq)
6161
#define arch_interrupt_disable_mask(mask) \
6262
_xtos_ints_off(mask)
6363

64+
static inline uint32_t arch_interrupt_get_level(void)
65+
{
66+
uint32_t level;
67+
68+
__asm__ __volatile__(
69+
" rsr.ps %0\n"
70+
" extui %0, %0, 0, 4\n"
71+
: "=&a" (level) :: "memory");
72+
73+
return level;
74+
}
75+
6476
static inline void arch_interrupt_set(int irq)
6577
{
6678
irq = SOF_IRQ_NUMBER(irq);

0 commit comments

Comments
 (0)