forked from Minki/linux
xtensa: fix arch_irqs_disabled_flags implementation
IRQs are disabled when PS.EXCM is set or PS.INTLEVEL is equal to or higher than LOCKLEVEL. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Chris Zankel <chris@zankel.net>
This commit is contained in:
parent
c92931b200
commit
031d0112d7
@ -47,7 +47,10 @@ static inline void arch_local_irq_restore(unsigned long flags)
|
|||||||
|
|
||||||
static inline bool arch_irqs_disabled_flags(unsigned long flags)
|
static inline bool arch_irqs_disabled_flags(unsigned long flags)
|
||||||
{
|
{
|
||||||
return (flags & 0xf) != 0;
|
#if XCHAL_EXCM_LEVEL < LOCKLEVEL || (1 << PS_EXCM_BIT) < LOCKLEVEL
|
||||||
|
#error "XCHAL_EXCM_LEVEL and 1<<PS_EXCM_BIT must be no less than LOCKLEVEL"
|
||||||
|
#endif
|
||||||
|
return (flags & (PS_INTLEVEL_MASK | (1 << PS_EXCM_BIT))) >= LOCKLEVEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool arch_irqs_disabled(void)
|
static inline bool arch_irqs_disabled(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user