:orphan: .. title:: CONFIG_ARC_FIRQ .. kconfig:: CONFIG_ARC_FIRQ CONFIG_ARC_FIRQ ############### *FIRQ enable* Type: ``bool`` Help ==== .. code-block:: none Fast interrupts are supported (FIRQ). If FIRQ enabled, for interrupts with highest priority, status32 and pc will be saved in aux regs, other regs will be saved according to the number of register bank; If FIRQ is disabled, the handle of interrupts with highest priority will be same with other interrupts. NOTE: we don't allow the configuration with FIRQ enabled and only one interrupt priority level (so all interrupts are FIRQ). Such configuration isn't supported in software and it is not beneficial from the performance point of view. Direct dependencies =================== \ :kconfig:`SOC_ARC_HSDK ` || \ :kconfig:`SOC_ARC_IOT ` || (\ :kconfig:`SOC_EMSDP_EM4 ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM5D ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM6 ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM7D ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM7D_ESP ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM9D ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM11D ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSK_EM7D ` && \ :kconfig:`SOC_EMSK `) || (\ :kconfig:`SOC_NSIM_EM ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_EM7D_V22 ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_SEM ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_HS ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_HS_SMP ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_HS_MPUV6 ` && \ :kconfig:`SOC_NSIM `) || \ :kconfig:`SOC_QEMU_ARC ` || \ :kconfig:`SOC_ARC_HSDK ` || \ :kconfig:`SOC_ARC_IOT ` || (\ :kconfig:`SOC_EMSDP_EM4 ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM5D ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM6 ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM7D ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM7D_ESP ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM9D ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSDP_EM11D ` && \ :kconfig:`SOC_ARC_EMSDP `) || (\ :kconfig:`SOC_EMSK_EM7D ` && \ :kconfig:`SOC_EMSK `) || (\ :kconfig:`SOC_NSIM_EM ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_EM7D_V22 ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_SEM ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_HS ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_HS_SMP ` && \ :kconfig:`SOC_NSIM `) || (\ :kconfig:`SOC_NSIM_HS_MPUV6 ` && \ :kconfig:`SOC_NSIM `) || \ :kconfig:`SOC_QEMU_ARC ` || (\ :kconfig:`ISA_ARCV2 ` && \ :kconfig:`NUM_IRQ_PRIO_LEVELS ` > 1 && \ :kconfig:`ARC `) *(Includes any dependencies from ifs and menus.)* Defaults ======== - y - y - y - y - y - y - n - y - y - n if \ :kconfig:`BOARD_EM_STARTERKIT_R23 ` - y if \ :kconfig:`BOARD_EM_STARTERKIT_R22 ` - y - y - n - y - y - y - n - y - y - y - y - y - y - n - y - y - n if \ :kconfig:`BOARD_EM_STARTERKIT_R23 ` - y if \ :kconfig:`BOARD_EM_STARTERKIT_R22 ` - y - y - n - y - y - y - n - y Kconfig definitions =================== At ``/arc/snps_arc_hsdk/Kconfig.defconfig:27`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_ARC_HSDK ---- At ``/arc/snps_arc_iot/Kconfig.defconfig:34`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_ARC_IOT ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em4:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_emsdp/Kconfig.defconfig:14`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM4 && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em5d:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_emsdp/Kconfig.defconfig:15`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM5D && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em6:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_emsdp/Kconfig.defconfig:16`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM6 && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em7d:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_emsdp/Kconfig.defconfig:17`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM7D && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em7d_esp:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_emsdp/Kconfig.defconfig:18`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default n depends on SOC_EMSDP_EM7D_ESP && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em9d:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_emsdp/Kconfig.defconfig:19`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM9D && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em11d:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_emsdp/Kconfig.defconfig:20`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM11D && SOC_ARC_EMSDP ---- At ``/arc/snps_emsk/Kconfig.defconfig.em7d:34`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_emsk/Kconfig.defconfig:10`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default n if BOARD_EM_STARTERKIT_R23 default y if BOARD_EM_STARTERKIT_R22 depends on SOC_EMSK_EM7D && SOC_EMSK ---- At ``/arc/snps_nsim/Kconfig.defconfig.em:30`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_nsim/Kconfig.defconfig:12`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_EM && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.em7d_v22:30`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_nsim/Kconfig.defconfig:13`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_EM7D_V22 && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.sem:30`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_nsim/Kconfig.defconfig:14`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default n depends on SOC_NSIM_SEM && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.hs:27`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_nsim/Kconfig.defconfig:15`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_HS && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.hs_smp:28`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_nsim/Kconfig.defconfig:16`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_HS_SMP && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.hs_mpuv6:33`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` → ``/arc/snps_nsim/Kconfig.defconfig:19`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_HS_MPUV6 && SOC_NSIM ---- At ``/arc/snps_qemu/Kconfig.defconfig:17`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:25`` → ``/kconfig/Kconfig.soc.defconfig:1`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default n depends on SOC_QEMU_ARC ---- At ``/arc/snps_arc_hsdk/Kconfig.defconfig:27`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_ARC_HSDK ---- At ``/arc/snps_arc_iot/Kconfig.defconfig:34`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_ARC_IOT ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em4:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_emsdp/Kconfig.defconfig:14`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM4 && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em5d:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_emsdp/Kconfig.defconfig:15`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM5D && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em6:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_emsdp/Kconfig.defconfig:16`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM6 && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em7d:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_emsdp/Kconfig.defconfig:17`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM7D && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em7d_esp:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_emsdp/Kconfig.defconfig:18`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default n depends on SOC_EMSDP_EM7D_ESP && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em9d:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_emsdp/Kconfig.defconfig:19`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM9D && SOC_ARC_EMSDP ---- At ``/arc/snps_emsdp/Kconfig.defconfig.em11d:21`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_emsdp/Kconfig.defconfig:20`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_EMSDP_EM11D && SOC_ARC_EMSDP ---- At ``/arc/snps_emsk/Kconfig.defconfig.em7d:34`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_emsk/Kconfig.defconfig:10`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default n if BOARD_EM_STARTERKIT_R23 default y if BOARD_EM_STARTERKIT_R22 depends on SOC_EMSK_EM7D && SOC_EMSK ---- At ``/arc/snps_nsim/Kconfig.defconfig.em:30`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_nsim/Kconfig.defconfig:12`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_EM && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.em7d_v22:30`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_nsim/Kconfig.defconfig:13`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_EM7D_V22 && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.sem:30`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_nsim/Kconfig.defconfig:14`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default n depends on SOC_NSIM_SEM && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.hs:27`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_nsim/Kconfig.defconfig:15`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_HS && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.hs_smp:28`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_nsim/Kconfig.defconfig:16`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_HS_SMP && SOC_NSIM ---- At ``/arc/snps_nsim/Kconfig.defconfig.hs_mpuv6:33`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` → ``/arc/snps_nsim/Kconfig.defconfig:19`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default y depends on SOC_NSIM_HS_MPUV6 && SOC_NSIM ---- At ``/arc/snps_qemu/Kconfig.defconfig:17`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:27`` Menu path: (Top) .. code-block:: kconfig config ARC_FIRQ bool default n depends on SOC_QEMU_ARC ---- At ``/arc/Kconfig:154`` Included via ``Kconfig:8`` → ``Kconfig.zephyr:39`` → ``/Kconfig:12`` Menu path: (Top) → ARC Options → ARC CPU Options .. code-block:: kconfig config ARC_FIRQ bool "FIRQ enable" default y depends on ISA_ARCV2 && NUM_IRQ_PRIO_LEVELS > 1 && ARC help Fast interrupts are supported (FIRQ). If FIRQ enabled, for interrupts with highest priority, status32 and pc will be saved in aux regs, other regs will be saved according to the number of register bank; If FIRQ is disabled, the handle of interrupts with highest priority will be same with other interrupts. NOTE: we don't allow the configuration with FIRQ enabled and only one interrupt priority level (so all interrupts are FIRQ). Such configuration isn't supported in software and it is not beneficial from the performance point of view. *(The 'depends on' condition includes propagated dependencies from ifs and menus.)*