cmsis_cv.c 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /*-----------------------------------------------------------------------------
  2. * Name: cmsis_cv.c
  3. * Purpose: Driver validation test cases entry point
  4. *----------------------------------------------------------------------------
  5. * Copyright (c) 2017 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 WDT_IRQHandler(void);
  15. /*-----------------------------------------------------------------------------
  16. * Variables declarations
  17. *----------------------------------------------------------------------------*/
  18. void (*TST_IRQHandler)(void);
  19. void WDT_IRQHandler(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. TCD ( TC_CoreInstr_NOP, TC_COREINSTR_NOP_EN ),
  37. TCD ( TC_CoreInstr_REV, TC_COREINSTR_REV_EN ),
  38. TCD ( TC_CoreInstr_REV16, TC_COREINSTR_REV16_EN ),
  39. TCD ( TC_CoreInstr_REVSH, TC_COREINSTR_REVSH_EN ),
  40. TCD ( TC_CoreInstr_ROR, TC_COREINSTR_ROR_EN ),
  41. TCD ( TC_CoreInstr_RBIT, TC_COREINSTR_RBIT_EN ),
  42. TCD ( TC_CoreInstr_CLZ, TC_COREINSTR_CLZ_EN ),
  43. #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
  44. (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
  45. (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
  46. (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \
  47. (defined(__CORTEX_A)) )
  48. TCD ( TC_CoreInstr_Exclusives, TC_COREINSTR_EXCLUSIVES_EN ),
  49. #endif
  50. TCD ( TC_CoreInstr_SSAT, TC_COREINSTR_SSAT_EN ),
  51. TCD ( TC_CoreInstr_USAT, TC_COREINSTR_USAT_EN ),
  52. #endif
  53. #if defined(RTE_CV_COREFUNC) && RTE_CV_COREFUNC
  54. #if defined(__CORTEX_M)
  55. TCD ( TC_CoreFunc_EnDisIRQ, TC_COREFUNC_ENDISIRQ_EN ),
  56. TCD ( TC_CoreFunc_IRQPrio, TC_COREFUNC_IRQPRIO_EN ),
  57. TCD ( TC_CoreFunc_EncDecIRQPrio, TC_COREFUNC_ENCDECIRQPRIO_EN ),
  58. TCD ( TC_CoreFunc_IRQVect, TC_COREFUNC_IRQVECT_EN ),
  59. TCD ( TC_CoreFunc_Control, TC_COREFUNC_CONTROL_EN ),
  60. TCD ( TC_CoreFunc_IPSR, TC_COREFUNC_IPSR_EN ),
  61. TCD ( TC_CoreFunc_APSR, TC_COREFUNC_APSR_EN ),
  62. TCD ( TC_CoreFunc_PSP, TC_COREFUNC_PSP_EN ),
  63. TCD ( TC_CoreFunc_MSP, TC_COREFUNC_MSP_EN ),
  64. #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
  65. (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )
  66. TCD ( TC_CoreFunc_PSPLIM, TC_COREFUNC_PSPLIM_EN ),
  67. TCD ( TC_CoreFunc_PSPLIM_NS, TC_COREFUNC_PSPLIM_NS_EN ),
  68. TCD ( TC_CoreFunc_MSPLIM, TC_COREFUNC_MSPLIM_EN ),
  69. TCD ( TC_CoreFunc_MSPLIM_NS, TC_COREFUNC_MSPLIM_NS_EN ),
  70. #endif
  71. TCD ( TC_CoreFunc_PRIMASK, TC_COREFUNC_PRIMASK_EN ),
  72. #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
  73. (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
  74. (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )
  75. TCD ( TC_CoreFunc_FAULTMASK, TC_COREFUNC_FAULTMASK_EN ),
  76. TCD ( TC_CoreFunc_BASEPRI, TC_COREFUNC_BASEPRI_EN ),
  77. #endif
  78. TCD ( TC_CoreFunc_FPUType, TC_COREFUNC_FPUTYPE_EN ),
  79. TCD ( TC_CoreFunc_FPSCR, TC_COREFUNC_FPSCR_EN ),
  80. #elif defined(__CORTEX_A)
  81. TCD ( TC_CoreAFunc_IRQ, TC_COREAFUNC_IRQ ),
  82. TCD ( TC_CoreAFunc_FPSCR, TC_COREAFUNC_FPSCR ),
  83. TCD ( TC_CoreAFunc_CPSR, TC_COREAFUNC_CPSR ),
  84. TCD ( TC_CoreAFunc_Mode, TC_COREAFUNC_MODE ),
  85. TCD ( TC_CoreAFunc_SP, TC_COREAFUNC_SP ),
  86. TCD ( TC_CoreAFunc_SP_usr, TC_COREAFUNC_SP_USR ),
  87. TCD ( TC_CoreAFunc_FPEXC, TC_COREAFUNC_FPEXC ),
  88. TCD ( TC_CoreAFunc_ACTLR, TC_COREAFUNC_ACTLR ),
  89. TCD ( TC_CoreAFunc_CPACR, TC_COREAFUNC_CPACR ),
  90. TCD ( TC_CoreAFunc_DFSR, TC_COREAFUNC_DFSR ),
  91. TCD ( TC_CoreAFunc_IFSR, TC_COREAFUNC_IFSR ),
  92. TCD ( TC_CoreAFunc_ISR, TC_COREAFUNC_ISR ),
  93. TCD ( TC_CoreAFunc_CBAR, TC_COREAFUNC_CBAR ),
  94. TCD ( TC_CoreAFunc_TTBR0, TC_COREAFUNC_TTBR0 ),
  95. TCD ( TC_CoreAFunc_DACR, TC_COREAFUNC_DACR ),
  96. TCD ( TC_CoreAFunc_SCTLR, TC_COREAFUNC_SCTLR ),
  97. TCD ( TC_CoreAFunc_ACTRL, TC_COREAFUNC_ACTRL ),
  98. TCD ( TC_CoreAFunc_MPIDR, TC_COREAFUNC_MPIDR ),
  99. TCD ( TC_CoreAFunc_VBAR, TC_COREAFUNC_VBAR ),
  100. TCD ( TC_CoreAFunc_MVBAR, TC_COREAFUNC_MVBAR ),
  101. #endif
  102. #endif
  103. #if defined(RTE_CV_MPUFUNC) && RTE_CV_MPUFUNC
  104. TCD ( TC_MPU_SetClear, TC_MPU_SETCLEAR_EN ),
  105. TCD ( TC_MPU_Load, TC_MPU_LOAD_EN ),
  106. #endif
  107. #if defined(RTE_CV_GENTIMER) && RTE_CV_GENTIMER
  108. TCD ( TC_GenTimer_CNTFRQ, TC_GENTIMER_CNTFRQ ),
  109. TCD ( TC_GenTimer_CNTP_TVAL, TC_GENTIMER_CNTP_TVAL ),
  110. TCD ( TC_GenTimer_CNTP_CTL, TC_GENTIMER_CNTP_CTL ),
  111. TCD ( TC_GenTimer_CNTPCT, TC_GENTIMER_CNTPCT ),
  112. TCD ( TC_GenTimer_CNTP_CVAL, TC_GENTIMER_CNTP_CVAL ),
  113. #endif
  114. #if defined(RTE_CV_L1CACHE) && RTE_CV_L1CACHE
  115. TCD ( TC_L1Cache_EnDisable, TC_L1CACHE_ENDISABLE ),
  116. TCD ( TC_L1Cache_EnDisableBTAC, TC_L1CACHE_ENDISABLEBTAC ),
  117. TCD ( TC_L1Cache_log2_up, TC_L1CACHE_LOG2_UP ),
  118. TCD ( TC_L1Cache_InvalidateDCacheAll, TC_L1CACHE_INVALIDATEDCACHEALL ),
  119. TCD ( TC_L1Cache_CleanDCacheAll, TC_L1CACHE_CLEANDCACHEALL ),
  120. TCD ( TC_L1Cache_CleanInvalidateDCacheAll, TC_L1CACHE_CLEANINVALIDATEDCACHEALL ),
  121. #endif
  122. };
  123. #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
  124. #pragma clang diagnostic push
  125. #pragma clang diagnostic ignored "-Wdate-time"
  126. #endif
  127. /*-----------------------------------------------------------------------------
  128. * Test suite description
  129. *----------------------------------------------------------------------------*/
  130. TEST_SUITE ts = {
  131. __FILE__, __DATE__, __TIME__,
  132. "CMSIS-CORE Test Suite",
  133. TS_Init,
  134. 1,
  135. TC_LIST,
  136. ARRAY_SIZE (TC_LIST),
  137. };
  138. #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
  139. #pragma clang diagnostic pop
  140. #endif