diff options
Diffstat (limited to 'docs/process/coding-guidelines.rst')
-rw-r--r-- | docs/process/coding-guidelines.rst | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/docs/process/coding-guidelines.rst b/docs/process/coding-guidelines.rst index f7d53a97eb..ef319e441d 100644 --- a/docs/process/coding-guidelines.rst +++ b/docs/process/coding-guidelines.rst @@ -19,6 +19,7 @@ support its functionality through plugins. Use of the EditorConfig file is suggested but is not required. +.. _automatic-compliance-checking: Automatic Compliance Checking ----------------------------- @@ -95,10 +96,13 @@ By default, all logging statements with a log level ``<= LOG_LEVEL_INFO`` will be compiled into debug builds and all statements with a log level ``<= LOG_LEVEL_NOTICE`` will be compiled into release builds. This can be overridden from the command line or by the platform makefile (although it may be -necessary to clean the build directory first). For example, to enable -``VERBOSE`` logging on FVP: +necessary to clean the build directory first). -``make PLAT=fvp LOG_LEVEL=50 all`` +For example, to enable ``VERBOSE`` logging on FVP: + +.. code:: shell + + make PLAT=fvp LOG_LEVEL=50 all Use const data where possible ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -438,6 +442,25 @@ unsigned integer on all systems, cast it to ``unsigned int``. These guidelines should be updated if additional types are needed. +Favor C language over assembly language +--------------------------------------- + +Generally, prefer code written in C over assembly. Assembly code is less +portable, harder to understand, maintain and audit security wise. Also, static +analysis tools generally don't analyze assembly code. + +There are, however, legitimate uses of assembly language. These include: + + - Early boot code executed before the C runtime environment is setup. + + - Exception handling code. + + - Low-level code where the exact sequence of instructions executed on the CPU + matters, such as CPU reset sequences. + + - Low-level code where specific system-level instructions must be used, such + as cache maintenance operations. + -------------- *Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.* |