]> begriffs open source - cmsis/blob - CMSIS/CoreValidation/Source/cmsis_cv.c
Added SIMD tests for Cortex-M devices.
[cmsis] / CMSIS / CoreValidation / Source / cmsis_cv.c
1 /*-----------------------------------------------------------------------------
2  *      Name:         cmsis_cv.c
3  *      Purpose:      Driver validation test cases entry point
4  *----------------------------------------------------------------------------
5  *      Copyright (c) 2017 - 2018 Arm Limited. All rights reserved.
6  *----------------------------------------------------------------------------*/
7 #include "cmsis_cv.h"
8 #include "RTE_Components.h"
9 #include "CV_Framework.h"
10 #include "CV_Config.h"
11
12 /*-----------------------------------------------------------------------------
13  *      Prototypes
14  *----------------------------------------------------------------------------*/
15
16 void WDT_IRQHandler(void);
17
18 /*-----------------------------------------------------------------------------
19  *      Variables declarations
20  *----------------------------------------------------------------------------*/
21
22 void (*TST_IRQHandler)(void);
23
24 void WDT_IRQHandler(void) {
25   if (TST_IRQHandler != NULL) TST_IRQHandler();
26 }
27
28 /*-----------------------------------------------------------------------------
29  *      Init test suite
30  *----------------------------------------------------------------------------*/
31 static void TS_Init (void) {
32   TST_IRQHandler = NULL;
33
34 #ifdef RTE_CV_MEASURETICKS
35   StartCortexCycleCounter();
36 #endif
37 }
38
39 /*-----------------------------------------------------------------------------
40  *      Test cases list
41  *----------------------------------------------------------------------------*/
42 static TEST_CASE TC_LIST[] = {
43 #if defined(RTE_CV_COREINSTR) && RTE_CV_COREINSTR
44     TCD ( TC_CoreInstr_NOP,                        TC_COREINSTR_NOP_EN                       ),
45     TCD ( TC_CoreInstr_WFI,                        TC_COREINSTR_WFI_EN                       ),
46     TCD ( TC_CoreInstr_WFE,                        TC_COREINSTR_WFE_EN                       ),
47     TCD ( TC_CoreInstr_SEV,                        TC_COREINSTR_SEV_EN                       ),
48     TCD ( TC_CoreInstr_BKPT,                       TC_COREINSTR_BKPT_EN                      ),
49     TCD ( TC_CoreInstr_ISB,                        TC_COREINSTR_ISB_EN                       ),
50     TCD ( TC_CoreInstr_DSB,                        TC_COREINSTR_DSB_EN                       ),
51     TCD ( TC_CoreInstr_DMB,                        TC_COREINSTR_DMB_EN                       ),
52     TCD ( TC_CoreInstr_REV,                        TC_COREINSTR_REV_EN                       ),
53     TCD ( TC_CoreInstr_REV16,                      TC_COREINSTR_REV16_EN                     ),
54     TCD ( TC_CoreInstr_REVSH,                      TC_COREINSTR_REVSH_EN                     ),
55     TCD ( TC_CoreInstr_ROR,                        TC_COREINSTR_ROR_EN                       ),
56     TCD ( TC_CoreInstr_RBIT,                       TC_COREINSTR_RBIT_EN                      ),
57     TCD ( TC_CoreInstr_CLZ,                        TC_COREINSTR_CLZ_EN                       ),
58     TCD ( TC_CoreInstr_SSAT,                       TC_COREINSTR_SSAT_EN                      ),
59     TCD ( TC_CoreInstr_USAT,                       TC_COREINSTR_USAT_EN                      ),
60     TCD ( TC_CoreInstr_RRX,                        TC_COREINSTR_RRX_EN                       ),
61     TCD ( TC_CoreInstr_LoadStoreExclusive,         TC_COREINSTR_LOADSTOREEXCLUSIVE_EN        ),
62     TCD ( TC_CoreInstr_LoadStoreUnpriv,            TC_COREINSTR_LOADSTOREUNPRIV_EN           ),
63     TCD ( TC_CoreInstr_LoadStoreAcquire,           TC_COREINSTR_LOADSTOREACQUIRE_EN          ),
64     TCD ( TC_CoreInstr_LoadStoreAcquireExclusive,  TC_COREINSTR_LOADSTOREACQUIREEXCLUSIVE_EN ),
65 #endif /* RTE_CV_COREINSTR */
66
67 #if defined (RTE_CV_CORESIMD) && RTE_CV_CORESIMD
68     TCD ( TC_CoreSimd_SatAddSub,                   TC_CORESIMD_SATADDSUB_EN                  ),
69     TCD ( TC_CoreSimd_ParSat16,                    TC_CORESIMD_PARSAT16_EN                   ),
70     TCD ( TC_CoreSimd_PackUnpack,                  TC_CORESIMD_PACKUNPACK_EN                 ),
71     TCD ( TC_CoreSimd_ParSel,                      TC_CORESIMD_PARSEL_EN                     ),
72     TCD ( TC_CoreSimd_ParAddSub8,                  TC_CORESIMD_PARADDSUB8_EN                 ),
73     TCD ( TC_CoreSimd_AbsDif8,                     TC_CORESIMD_ABSDIF8_EN                    ),
74     TCD ( TC_CoreSimd_ParAddSub16,                 TC_CORESIMD_PARADDSUB16_EN                ),
75     TCD ( TC_CoreSimd_ParMul16,                    TC_CORESIMD_PARMUL16_EN                   ),
76     TCD ( TC_CoreSimd_Pack16,                      TC_CORESIMD_PACK16_EN                     ),
77     TCD ( TC_CoreSimd_MulAcc32,                    TC_CORESIMD_MULACC32_EN                   ),
78 #endif /* RTE_CV_CORESIMD */
79
80 #if defined(RTE_CV_COREFUNC) && RTE_CV_COREFUNC
81   #if defined(__CORTEX_M)
82     TCD ( TC_CoreFunc_EnDisIRQ,                    TC_COREFUNC_ENDISIRQ_EN                   ),
83     TCD ( TC_CoreFunc_IRQPrio,                     TC_COREFUNC_IRQPRIO_EN                    ),
84     TCD ( TC_CoreFunc_EncDecIRQPrio,               TC_COREFUNC_ENCDECIRQPRIO_EN              ),
85     TCD ( TC_CoreFunc_IRQVect,                     TC_COREFUNC_IRQVECT_EN                    ),
86     TCD ( TC_CoreFunc_Control,                     TC_COREFUNC_CONTROL_EN                    ),
87     TCD ( TC_CoreFunc_IPSR,                        TC_COREFUNC_IPSR_EN                       ),
88     TCD ( TC_CoreFunc_APSR,                        TC_COREFUNC_APSR_EN                       ),
89     TCD ( TC_CoreFunc_PSP,                         TC_COREFUNC_PSP_EN                        ),
90     TCD ( TC_CoreFunc_MSP,                         TC_COREFUNC_MSP_EN                        ),
91     TCD ( TC_CoreFunc_PSPLIM,                      TC_COREFUNC_PSPLIM_EN                     ),
92     TCD ( TC_CoreFunc_PSPLIM_NS,                   TC_COREFUNC_PSPLIM_NS_EN                  ),
93     TCD ( TC_CoreFunc_MSPLIM,                      TC_COREFUNC_MSPLIM_EN                     ),
94     TCD ( TC_CoreFunc_MSPLIM_NS,                   TC_COREFUNC_MSPLIM_NS_EN                  ),
95     TCD ( TC_CoreFunc_PRIMASK,                     TC_COREFUNC_PRIMASK_EN                    ),
96     TCD ( TC_CoreFunc_FAULTMASK,                   TC_COREFUNC_FAULTMASK_EN                  ),
97     TCD ( TC_CoreFunc_BASEPRI,                     TC_COREFUNC_BASEPRI_EN                    ),
98     TCD ( TC_CoreFunc_FPUType,                     TC_COREFUNC_FPUTYPE_EN                    ),
99     TCD ( TC_CoreFunc_FPSCR,                       TC_COREFUNC_FPSCR_EN                      ),
100
101   #elif defined(__CORTEX_A)
102     TCD ( TC_CoreAFunc_IRQ,                        TC_COREAFUNC_IRQ                          ),
103     TCD ( TC_CoreAFunc_FPSCR,                      TC_COREAFUNC_FPSCR                        ),
104     TCD ( TC_CoreAFunc_CPSR,                       TC_COREAFUNC_CPSR                         ),
105     TCD ( TC_CoreAFunc_Mode,                       TC_COREAFUNC_MODE                         ),
106     TCD ( TC_CoreAFunc_SP,                         TC_COREAFUNC_SP                           ),
107     TCD ( TC_CoreAFunc_SP_usr,                     TC_COREAFUNC_SP_USR                       ),
108     TCD ( TC_CoreAFunc_FPEXC,                      TC_COREAFUNC_FPEXC                        ),
109     TCD ( TC_CoreAFunc_ACTLR,                      TC_COREAFUNC_ACTLR                        ),
110     TCD ( TC_CoreAFunc_CPACR,                      TC_COREAFUNC_CPACR                        ),
111     TCD ( TC_CoreAFunc_DFSR,                       TC_COREAFUNC_DFSR                         ),
112     TCD ( TC_CoreAFunc_IFSR,                       TC_COREAFUNC_IFSR                         ),
113     TCD ( TC_CoreAFunc_ISR,                        TC_COREAFUNC_ISR                          ),
114     TCD ( TC_CoreAFunc_CBAR,                       TC_COREAFUNC_CBAR                         ),
115     TCD ( TC_CoreAFunc_TTBR0,                      TC_COREAFUNC_TTBR0                        ),
116     TCD ( TC_CoreAFunc_DACR,                       TC_COREAFUNC_DACR                         ),
117     TCD ( TC_CoreAFunc_SCTLR,                      TC_COREAFUNC_SCTLR                        ),
118     TCD ( TC_CoreAFunc_ACTRL,                      TC_COREAFUNC_ACTRL                        ),
119     TCD ( TC_CoreAFunc_MPIDR,                      TC_COREAFUNC_MPIDR                        ),
120     TCD ( TC_CoreAFunc_VBAR,                       TC_COREAFUNC_VBAR                         ),
121     TCD ( TC_CoreAFunc_MVBAR,                      TC_COREAFUNC_MVBAR                        ),
122   #endif
123 #endif /* RTE_CV_COREFUNC */
124
125 #if defined(RTE_CV_MPUFUNC) && RTE_CV_MPUFUNC
126     TCD ( TC_MPU_SetClear,                         TC_MPU_SETCLEAR_EN                        ),
127     TCD ( TC_MPU_Load,                             TC_MPU_LOAD_EN                            ),
128 #endif /* RTE_CV_MPUFUNC */
129
130 #if defined(RTE_CV_GENTIMER) && RTE_CV_GENTIMER
131     TCD ( TC_GenTimer_CNTFRQ,                      TC_GENTIMER_CNTFRQ                        ),
132     TCD ( TC_GenTimer_CNTP_TVAL,                   TC_GENTIMER_CNTP_TVAL                     ),
133     TCD ( TC_GenTimer_CNTP_CTL,                    TC_GENTIMER_CNTP_CTL                      ),
134     TCD ( TC_GenTimer_CNTPCT,                      TC_GENTIMER_CNTPCT                        ),
135     TCD ( TC_GenTimer_CNTP_CVAL,                   TC_GENTIMER_CNTP_CVAL                     ),
136 #endif /* RTE_CV_GENTIMER */
137
138 #if defined(RTE_CV_L1CACHE) && RTE_CV_L1CACHE
139     TCD ( TC_L1Cache_EnDisable,                    TC_L1CACHE_ENDISABLE                      ),
140     TCD ( TC_L1Cache_EnDisableBTAC,                TC_L1CACHE_ENDISABLEBTAC                  ),
141     TCD ( TC_L1Cache_log2_up,                      TC_L1CACHE_LOG2_UP                        ),
142     TCD ( TC_L1Cache_InvalidateDCacheAll,          TC_L1CACHE_INVALIDATEDCACHEALL            ),
143     TCD ( TC_L1Cache_CleanDCacheAll,               TC_L1CACHE_CLEANDCACHEALL                 ),
144     TCD ( TC_L1Cache_CleanInvalidateDCacheAll,     TC_L1CACHE_CLEANINVALIDATEDCACHEALL       ),
145 #endif /* RTE_CV_L1CACHE */
146 };
147
148 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
149 #pragma clang diagnostic push
150 #pragma clang diagnostic ignored "-Wdate-time"
151 #endif
152 /*-----------------------------------------------------------------------------
153  *      Test suite description
154  *----------------------------------------------------------------------------*/
155 TEST_SUITE ts = {
156   __FILE__, __DATE__, __TIME__,
157   "CMSIS-CORE Test Suite",
158   TS_Init,
159   1,
160   TC_LIST,
161   ARRAY_SIZE (TC_LIST),
162 };
163 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
164 #pragma clang diagnostic pop
165 #endif