interrupts: safeguard isr_wrapper and isr_install
ld linker will only resolve undefined symbols inside functions that is actually being called. However, not all linkers behaves this way. Certain linkers, for example armlink, resolves all undefined symbols even if during a later stage at the linking the function will be pruned. Therefore `ifdef CONFIG_GEN_ISR_TABLES` has been placed to safeguard functions that will call undefined symbols when CONFIG_GEN_ISR_TABLES=y. Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
This commit is contained in:
parent
f57483664b
commit
302fd804ce
2 changed files with 4 additions and 0 deletions
|
@ -51,7 +51,9 @@ GTEXT(z_arm_pendsv)
|
||||||
GTEXT(z_arm_exc_spurious)
|
GTEXT(z_arm_exc_spurious)
|
||||||
|
|
||||||
GTEXT(z_arm_prep_c)
|
GTEXT(z_arm_prep_c)
|
||||||
|
#if defined(CONFIG_GEN_ISR_TABLES)
|
||||||
GTEXT(_isr_wrapper)
|
GTEXT(_isr_wrapper)
|
||||||
|
#endif /* CONFIG_GEN_ISR_TABLES */
|
||||||
|
|
||||||
#else /* _ASMLANGUAGE */
|
#else /* _ASMLANGUAGE */
|
||||||
|
|
||||||
|
|
|
@ -291,6 +291,7 @@ void irq_target_state_set_all_non_secure(void)
|
||||||
#endif /* CONFIG_ARM_SECURE_FIRMWARE */
|
#endif /* CONFIG_ARM_SECURE_FIRMWARE */
|
||||||
|
|
||||||
#ifdef CONFIG_DYNAMIC_INTERRUPTS
|
#ifdef CONFIG_DYNAMIC_INTERRUPTS
|
||||||
|
#ifdef CONFIG_GEN_ISR_TABLES
|
||||||
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
|
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
|
||||||
void (*routine)(const void *parameter),
|
void (*routine)(const void *parameter),
|
||||||
const void *parameter, uint32_t flags)
|
const void *parameter, uint32_t flags)
|
||||||
|
@ -299,6 +300,7 @@ int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
|
||||||
z_arm_irq_priority_set(irq, priority, flags);
|
z_arm_irq_priority_set(irq, priority, flags);
|
||||||
return irq;
|
return irq;
|
||||||
}
|
}
|
||||||
|
#endif /* CONFIG_GEN_ISR_TABLES */
|
||||||
|
|
||||||
#ifdef CONFIG_DYNAMIC_DIRECT_INTERRUPTS
|
#ifdef CONFIG_DYNAMIC_DIRECT_INTERRUPTS
|
||||||
static inline void z_arm_irq_dynamic_direct_isr_dispatch(void)
|
static inline void z_arm_irq_dynamic_direct_isr_dispatch(void)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue