mirror of
https://github.com/micropython/micropython.git
synced 2025-12-16 01:40:14 +01:00
shared/runtime/mpirq: Check separate hard IRQ stack correctly.
On the zephyr port, hard IRQ handlers run with a separate stack on a different thread, so each call to mp_irq_dispatch() and mp_irq_handler() has to be wrapped with adjustments to the stack-limit checker. Move these adjustments into the shared mp_irq_dispatch(), introducing MICROPY_STACK_SIZE_HARD_IRQ which a port can define to non-zero if it uses a separate stack for hard IRQ handlers. We only need wrap the hard dispatch case. This should reduce binary size on zephyr without affecting other ports. Signed-off-by: Chris Webb <chris@arachsys.com>
This commit is contained in:
committed by
Damien George
parent
b9523fd58c
commit
81985d20c9
@@ -717,6 +717,13 @@
|
||||
#define MICROPY_STACK_CHECK_MARGIN (0)
|
||||
#endif
|
||||
|
||||
// The size of a separate stack used for hard IRQ handlers, which should be
|
||||
// checked instead of the main stack when running a hard callback. 0 implies
|
||||
// there is no separate ISR stack to check.
|
||||
#ifndef MICROPY_STACK_SIZE_HARD_IRQ
|
||||
#define MICROPY_STACK_SIZE_HARD_IRQ (0)
|
||||
#endif
|
||||
|
||||
// Whether to have an emergency exception buffer
|
||||
#ifndef MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF
|
||||
#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (0)
|
||||
|
||||
Reference in New Issue
Block a user