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** | **EV** | **HS6x**   |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Port status                                                         | upstreamed | upstreamed  | WIP    | upstreamed |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| **Features**                                                                                                         |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Closely coupled memories (ICCM, DCCM) [#f1]_                        | Y          | Y           | TBD    | TBD        |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Execution with caches - Instruction/Data, L1/L2 caches              | Y          | Y           | Y      | Y          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Hardware-assisted unaligned memory access                           | Y [#f2]_   | Y           | TBD    | Y          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Regular interrupts with multiple priority levels, direct interrupts | Y          | Y           | TBD    | Y          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Fast interrupts, separate register banks for fast interrupts        | Y          | Y           | TBD    | N          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Hardware floating point unit (FPU)                                  | Y          | Y           | N      | TBD        |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Symmetric multiprocessing (SMP) support, switch-based               | N/A        | Y           | TBD    | Y          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Hardware-assisted stack checking                                    | Y          | Y           | TBD    | N          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Hardware-assisted atomic operations                                 | N/A        | Y           | TBD    | Y          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| DSP ISA                                                             | Y          | N [#f3]_    | TBD    | TBD        |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| DSP AGU/XY extensions                                               | N [#f3]_   | N [#f3]_    | TBD    | TBD        |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Userspace                                                           | Y          | Y           | N      | TBD        |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Memory protection unit (MPU)                                        | Y          | Y           | TBD    | N          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| Memory management unit (MMU)                                        | N/A        | N           | N/A    | N          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| SecureShield                                                        | Y          | N/A         | N/A    | N/A        |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| **Toolchains**                                                                                                       |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| GNU (open source GCC-based)                                         | Y          | Y           | N      | Y          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| MetaWare (proprietary Clang-based)                                  | Y          | Y           | Y      | WIP [#f4]_ |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| **Simulators**                                                                                                       |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| QEMU (open source) [#f5]_                                           | Y          | Y           | N      | Y          |
+---------------------------------------------------------------------+------------+-------------+--------+------------+
| nSIM (proprietary, provided by MetaWare Development Tools)          | 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] MetaWare toolchain supports building for ARCv3 HS6x, however, it's
         not integrated to Zephyr itself
.. [#f5] QEMU doesn't support all the ARC processor's HW features. For the
         detailed info please check the ARC QEMU documentation
