.. _hardware_arch_arc_support_status: Zephyr support status on ARC processors ####################################### Overview ******** This page describes current state of Zephyr for ARC processors and some future plans. Please note that * plans are given without exact deadlines * software features require corresponding hardware to be present and configured the proper way * not all the features can be enabled at the same time Support status ************** Legend: **Y** - yes, supported; **N** - no, not supported; **WIP** - Work In Progress; **TBD** - to be decided +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | | **Processor families** | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | | **EM** | **HS3x/4x** | **VPX** | **HS5x** | **HS6x** | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Port status | upstreamed | upstreamed | upstreamed [#f6]_ | upstreamed | upstreamed | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | **Features** | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Closely coupled memories (ICCM, DCCM) [#f1]_ | Y | Y | Y | TBD | TBD | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Execution with caches - Instruction/Data, L1/L2 caches | Y | Y | Y | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Hardware-assisted unaligned memory access | Y [#f2]_ | Y | Y | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Regular interrupts with multiple priority levels, direct interrupts | Y | Y | Y | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Fast interrupts, separate register banks for fast interrupts | Y | Y | TBD | N | N | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Hardware floating point unit (FPU) | Y | Y | TBD [#f6]_ | TBD | TBD | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Symmetric multiprocessing (SMP) support, switch-based | N/A | Y | TBD | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Hardware-assisted stack checking | Y | Y | Y | N | N | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Hardware-assisted atomic operations | N/A | Y | Y | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | DSP ISA | Y | N [#f3]_ | TBD [#f6]_ | TBD | TBD | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | DSP AGU/XY extensions | Y | N [#f3]_ | N/A | TBD | TBD | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Userspace | Y | Y | N | TBD | TBD | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Memory protection unit (MPU) | Y | Y | TBD | N | N | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Memory management unit (MMU) | N/A | N | TBD | N | N | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | SecureShield | Y | N/A | N/A | N/A | N/A | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | Single-thread kernel support [#f5]_ | Y | Y | Y | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | **Toolchains** | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | GNU (open source GCC-based) | Y | Y | N | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | MetaWare (proprietary Clang-based) | Y | Y | Y | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | **Simulators** | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | QEMU (open source) [#f4]_ | Y | Y | N | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ | nSIM (proprietary, provided by MetaWare Development Tools) | Y | Y | Y | Y | Y | +---------------------------------------------------------------------+------------+-------------+-------------------+------------+------------+ Notes ***** .. [#f1] usage of CCMs is limited on SMP systems .. [#f2] except the systems with secure features (SecureShield) due to HW limitation .. [#f3] We only support save/restore ACCL/ACCH registers in task's context. Rest of DSP/AGU registers save/restore isn't implemented but kernel itself does not use these registers. This allows single task per core to use DSP/AGU safely. .. [#f4] QEMU doesn't support all the ARC processor's HW features. For the detailed info please check the ARC QEMU documentation .. [#f5] Single-thread kernel is support only for single core targets .. [#f6] currently only ARC VPX scalar port is supported. The support of VPX vector pipeline, VCCM, STU is not included in this port, and require additional development and / or other runtime integration.