1# MISRA-C Deviations {#coreMISRA_Exceptions_pg}
2
3CMSIS-Core (Cortex-A) uses the common coding rules for CMSIS components that are documented in
4[CMSIS Introduction](../General/index.html).
5
6CMSIS-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.
34