]> begriffs open source - cmsis/blob - CMSIS/DoxyGen/Core_A/src/misra.md
Reworked CMSIS-Core(M) and Core(A) docs for CMSIS 6. (#47)
[cmsis] / CMSIS / DoxyGen / Core_A / src / misra.md
1 # MISRA-C Deviations {#coreMISRA_Exceptions_pg}
2
3 CMSIS-Core (Cortex-A) uses the common coding rules for CMSIS components that are documented in 
4 [CMSIS Introduction](../../General/html/index.html).
5
6 CMSIS-Core (Cortex-A) violates the following MISRA-C:2012 rules:
7
8  - Directive 4.9, function-like macro defined.<br>
9    - Violated since function-like macros are used to generate more efficient code. 
10    
11  - Rule 1.3, multiple use of '#/##' operators in macro definition.<br>
12    - Violated since function-like macros are used to generate more efficient code. 
13    
14  - Rule 11.4, conversion between a pointer and integer type.<br>
15    - Violated because of core register access. 
16    
17  - Rule 11.6, cast from unsigned long to pointer.<br>
18    - Violated because of core register access. 
19    
20  - Rule 13.5, side effects on right hand side of logical operator.<br>
21    - Violated because of shift operand is used in macros and functions. 
22    
23  - Rule 14.4, conditional expression should have essentially Boolean type.<br>
24    - Violated since macros with several instructions are used.
25   
26  - Rule 15.5, return statement before end of function.<br>
27    - Violated to simplify code logic. 
28
29  - Rule 20.10, '#/##' operators used.<br>
30    - Violated since function-like macros are used to generate more efficient code. 
31    
32  - Rule 21.1, reserved to the compiler.<br>
33    - Violated since macros with leading underscores are used.