cmsis_cv.c 12 KB

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