zephyr/arch
Carles Cufi dc006e6b5f arch: arm: cortex-m: Reduce ZLI latency by not disabling them in wrapper
The difference between __irq_disable() and irq_lock() is that the former
essentially translates to `cpsid i`, whereas `irq_lock()` translates to
setting BASEPRI (on cores with BASEPRI). This means that using
irq_lock() does not disable zero-latency interrupts (ZLIs), which
reduces the potential execution latency of ZLIs.

In both isr_wrapper and _arch_isr_direct_pm() (which is just
really an implementation of ISR_DIRECT_PM()), we were using
__irq_disable() to disable all interrups, including ZLIs. But the code
executed with interrupts disabled handles waking up from idle, and so
must only be protected against regular interrupts being executed, not
ZLIs, which should have no effect on the correct execution of the code.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2025-06-06 20:11:18 +01:00
..
arc arc: prep_c: remove dead code 2025-05-28 11:09:21 +02:00
arm arch: arm: cortex-m: Reduce ZLI latency by not disabling them in wrapper 2025-06-06 20:11:18 +01:00
arm64 arm64: reset: flush D-Cache before it is disabled 2025-06-04 16:59:43 +02:00
common arch: common: Make nocache region loadable 2025-04-21 12:42:19 +02:00
mips arch: mips: Rename _Fault to z_mips_fault 2025-01-28 23:42:06 +01:00
posix arch/posix: Add comment on empty function 2025-05-13 12:09:30 +02:00
riscv arch: riscv: core: Fix type 2025-06-05 12:33:47 +02:00
rx arch: Initial support for RX architecture support 2025-05-02 09:18:16 +02:00
sparc Revert "arch: deprecate _current" 2025-01-10 07:49:08 +01:00
x86 arch/x86/core: Use CONFIG_QEMU_TARGET for QEMU specific code 2025-05-31 05:55:41 -04:00
xtensa xtensa: allow flushing auto-refill DTLBs on page table swap 2025-05-28 20:01:58 +02:00
archs.yml scripts: hwm_v2: add full_name property for archs 2025-06-06 10:29:44 +02:00
CMakeLists.txt
Kconfig arch: Add LLVM toolchain to ISR_TABLES_LOCAL_DECLARATION_SUPPORTED 2025-06-04 08:46:35 +02:00