aboutsummaryrefslogtreecommitdiff
path: root/docs/user_guides/os_migration_guide_armv8m.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/user_guides/os_migration_guide_armv8m.rst')
-rw-r--r--docs/user_guides/os_migration_guide_armv8m.rst42
1 files changed, 42 insertions, 0 deletions
diff --git a/docs/user_guides/os_migration_guide_armv8m.rst b/docs/user_guides/os_migration_guide_armv8m.rst
new file mode 100644
index 0000000000..752c33284f
--- /dev/null
+++ b/docs/user_guides/os_migration_guide_armv8m.rst
@@ -0,0 +1,42 @@
+#########################################################
+Generic OS migration from Armv7-M to Armv8-M architecture
+#########################################################
+The purpose of this document is to list a set of requirements needed for
+migrating a generic OS kernel running on Armv7-M to the Armv8-M architecture.
+
+********************
+List of requirements
+********************
+- If the same OS codebase is used for both Secure and Non Secure builds, it is
+ suggested to put specific code targeted to the Non Secure build under a
+ compile time switch, e.g. ``#if (DOMAIN_NS == 1U)``. The OS build system in
+ this case needs to be amended accordingly to support this new switch.
+- If the OS implements stack limit checking, the ``PSPLIM`` register
+ needs to be initialized and properly handled during thread context switch
+ operations.
+- If the OS manipulates directly the Link Register, the default Link Register
+ value used in Handler mode transitions needs to be differentiated between
+ Secure and Non Secure builds, i.e. ``0xFD`` and ``0xBC``, respectively.
+- If the OS supports the Thread Context Management for Armv8-M TrustZone APIs,
+ as described
+ `here <https://www.keil.com/pack/doc/CMSIS/Core/html/group__context__trustzone__functions.html>`__
+ , and would like to use the non-secure client identification feature of TF-M,
+ then it also have to use the
+ ``enum tfm_status_e tfm_register_client_id (int32_t ns_client_id)``
+ API function provided by TF-M, as described in
+ :doc:`NS client identification documentation <tfm_ns_client_identification>`.
+- if the OS doesn't support the API mentioned above, it should set
+ ``TFM_NS_CLIENT_IDENTIFICATION`` to ``OFF`` in the cmake system.
+- .. Note::
+
+ This is NOT REQUIRED when the Non Secure OS build is meant
+ to be integrated with TF-M running in Secure world.
+
+ If generic function calls into Secure world have to be supported in Non Secure
+ builds, integrate an API for secure stack memory management (e.g. the
+ TrustZone API for secure stack memory management described in
+ ``tz_context.h``).
+
+--------------
+
+*Copyright (c) 2018-2019, Arm Limited. All rights reserved.*