/*----------------------------------------------------------------------------- * Name: cmsis_cv.c * Purpose: Driver validation test cases entry point *---------------------------------------------------------------------------- * Copyright (c) 2017 - 2021 Arm Limited. All rights reserved. *----------------------------------------------------------------------------*/ #include "cmsis_cv.h" #include "RTE_Components.h" #include "CV_Framework.h" #include "CV_Config.h" /*----------------------------------------------------------------------------- * Prototypes *----------------------------------------------------------------------------*/ void Interrupt0_Handler(void); /*----------------------------------------------------------------------------- * Variables declarations *----------------------------------------------------------------------------*/ void (*TST_IRQHandler)(void); void Interrupt0_Handler(void) { if (TST_IRQHandler != NULL) TST_IRQHandler(); } /*----------------------------------------------------------------------------- * Init test suite *----------------------------------------------------------------------------*/ static void TS_Init (void) { TST_IRQHandler = NULL; #ifdef RTE_CV_MEASURETICKS StartCortexCycleCounter(); #endif } /*----------------------------------------------------------------------------- * Test cases list *----------------------------------------------------------------------------*/ static TEST_CASE TC_LIST[] = { #if defined(RTE_CV_COREINSTR) && RTE_CV_COREINSTR #if defined(__CORTEX_M) TCD ( TC_CoreInstr_NOP, TC_COREINSTR_NOP_EN ), TCD ( TC_CoreInstr_WFI, TC_COREINSTR_WFI_EN ), TCD ( TC_CoreInstr_WFE, TC_COREINSTR_WFE_EN ), TCD ( TC_CoreInstr_SEV, TC_COREINSTR_SEV_EN ), TCD ( TC_CoreInstr_BKPT, TC_COREINSTR_BKPT_EN ), TCD ( TC_CoreInstr_ISB, TC_COREINSTR_ISB_EN ), TCD ( TC_CoreInstr_DSB, TC_COREINSTR_DSB_EN ), TCD ( TC_CoreInstr_DMB, TC_COREINSTR_DMB_EN ), TCD ( TC_CoreInstr_REV, TC_COREINSTR_REV_EN ), TCD ( TC_CoreInstr_REV16, TC_COREINSTR_REV16_EN ), TCD ( TC_CoreInstr_REVSH, TC_COREINSTR_REVSH_EN ), TCD ( TC_CoreInstr_ROR, TC_COREINSTR_ROR_EN ), TCD ( TC_CoreInstr_RBIT, TC_COREINSTR_RBIT_EN ), TCD ( TC_CoreInstr_CLZ, TC_COREINSTR_CLZ_EN ), TCD ( TC_CoreInstr_SSAT, TC_COREINSTR_SSAT_EN ), TCD ( TC_CoreInstr_USAT, TC_COREINSTR_USAT_EN ), TCD ( TC_CoreInstr_RRX, TC_COREINSTR_RRX_EN ), TCD ( TC_CoreInstr_LoadStoreExclusive, TC_COREINSTR_LOADSTOREEXCLUSIVE_EN ), TCD ( TC_CoreInstr_LoadStoreUnpriv, TC_COREINSTR_LOADSTOREUNPRIV_EN ), TCD ( TC_CoreInstr_LoadStoreAcquire, TC_COREINSTR_LOADSTOREACQUIRE_EN ), TCD ( TC_CoreInstr_LoadStoreAcquireExclusive, TC_COREINSTR_LOADSTOREACQUIREEXCLUSIVE_EN ), TCD ( TC_CoreInstr_UnalignedUint16, TC_COREINSTR_UNALIGNEDUINT16_EN ), TCD ( TC_CoreInstr_UnalignedUint32, TC_COREINSTR_UNALIGNEDUINT32_EN ), #elif defined(__CORTEX_A) TCD (TC_CoreInstr_NOP, TC_COREINSTR_NOP_EN ), TCD (TC_CoreInstr_REV, TC_COREINSTR_REV_EN ), TCD (TC_CoreInstr_REV16, TC_COREINSTR_REV16_EN ), TCD (TC_CoreInstr_REVSH, TC_COREINSTR_REVSH_EN ), TCD (TC_CoreInstr_ROR, TC_COREINSTR_ROR_EN ), TCD (TC_CoreInstr_RBIT, TC_COREINSTR_RBIT_EN ), TCD (TC_CoreInstr_CLZ, TC_COREINSTR_CLZ_EN ), TCD (TC_CoreInstr_SSAT, TC_COREINSTR_SSAT_EN ), TCD (TC_CoreInstr_USAT, TC_COREINSTR_USAT_EN ), TCD (TC_CoreInstr_LoadStoreExclusive, TC_COREINSTR_EXCLUSIVES_EN ), #endif #endif /* RTE_CV_COREINSTR */ #if defined (RTE_CV_CORESIMD) && RTE_CV_CORESIMD TCD ( TC_CoreSimd_SatAddSub, TC_CORESIMD_SATADDSUB_EN ), TCD ( TC_CoreSimd_ParSat16, TC_CORESIMD_PARSAT16_EN ), TCD ( TC_CoreSimd_PackUnpack, TC_CORESIMD_PACKUNPACK_EN ), TCD ( TC_CoreSimd_ParSel, TC_CORESIMD_PARSEL_EN ), TCD ( TC_CoreSimd_ParAddSub8, TC_CORESIMD_PARADDSUB8_EN ), TCD ( TC_CoreSimd_AbsDif8, TC_CORESIMD_ABSDIF8_EN ), TCD ( TC_CoreSimd_ParAddSub16, TC_CORESIMD_PARADDSUB16_EN ), TCD ( TC_CoreSimd_ParMul16, TC_CORESIMD_PARMUL16_EN ), TCD ( TC_CoreSimd_Pack16, TC_CORESIMD_PACK16_EN ), TCD ( TC_CoreSimd_MulAcc32, TC_CORESIMD_MULACC32_EN ), #endif /* RTE_CV_CORESIMD */ #if defined(RTE_CV_COREFUNC) && RTE_CV_COREFUNC #if defined(__CORTEX_M) TCD ( TC_CoreFunc_EnDisIRQ, TC_COREFUNC_ENDISIRQ_EN ), TCD ( TC_CoreFunc_IRQPrio, TC_COREFUNC_IRQPRIO_EN ), TCD ( TC_CoreFunc_EncDecIRQPrio, TC_COREFUNC_ENCDECIRQPRIO_EN ), TCD ( TC_CoreFunc_IRQVect, TC_COREFUNC_IRQVECT_EN ), TCD ( TC_CoreFunc_Control, TC_COREFUNC_CONTROL_EN ), TCD ( TC_CoreFunc_IPSR, TC_COREFUNC_IPSR_EN ), TCD ( TC_CoreFunc_APSR, TC_COREFUNC_APSR_EN ), TCD ( TC_CoreFunc_PSP, TC_COREFUNC_PSP_EN ), TCD ( TC_CoreFunc_MSP, TC_COREFUNC_MSP_EN ), TCD ( TC_CoreFunc_PSPLIM, TC_COREFUNC_PSPLIM_EN ), TCD ( TC_CoreFunc_PSPLIM_NS, TC_COREFUNC_PSPLIM_NS_EN ), TCD ( TC_CoreFunc_MSPLIM, TC_COREFUNC_MSPLIM_EN ), TCD ( TC_CoreFunc_MSPLIM_NS, TC_COREFUNC_MSPLIM_NS_EN ), TCD ( TC_CoreFunc_PRIMASK, TC_COREFUNC_PRIMASK_EN ), TCD ( TC_CoreFunc_FAULTMASK, TC_COREFUNC_FAULTMASK_EN ), TCD ( TC_CoreFunc_BASEPRI, TC_COREFUNC_BASEPRI_EN ), TCD ( TC_CoreFunc_FPUType, TC_COREFUNC_FPUTYPE_EN ), TCD ( TC_CoreFunc_FPSCR, TC_COREFUNC_FPSCR_EN ), #elif defined(__CORTEX_A) TCD ( TC_CoreAFunc_IRQ, TC_COREAFUNC_IRQ ), TCD ( TC_CoreAFunc_FaultIRQ, TC_COREAFUNC_FAULTIRQ ), TCD ( TC_CoreAFunc_FPSCR, TC_COREAFUNC_FPSCR ), TCD ( TC_CoreAFunc_CPSR, TC_COREAFUNC_CPSR ), TCD ( TC_CoreAFunc_Mode, TC_COREAFUNC_MODE ), TCD ( TC_CoreAFunc_FPEXC, TC_COREAFUNC_FPEXC ), TCD ( TC_CoreAFunc_ACTLR, TC_COREAFUNC_ACTLR ), TCD ( TC_CoreAFunc_CPACR, TC_COREAFUNC_CPACR ), TCD ( TC_CoreAFunc_DFSR, TC_COREAFUNC_DFSR ), TCD ( TC_CoreAFunc_IFSR, TC_COREAFUNC_IFSR ), TCD ( TC_CoreAFunc_ISR, TC_COREAFUNC_ISR ), TCD ( TC_CoreAFunc_CBAR, TC_COREAFUNC_CBAR ), TCD ( TC_CoreAFunc_TTBR0, TC_COREAFUNC_TTBR0 ), TCD ( TC_CoreAFunc_DACR, TC_COREAFUNC_DACR ), TCD ( TC_CoreAFunc_SCTLR, TC_COREAFUNC_SCTLR ), TCD ( TC_CoreAFunc_MPIDR, TC_COREAFUNC_MPIDR ), TCD ( TC_CoreAFunc_VBAR, TC_COREAFUNC_VBAR ), TCD ( TC_CoreAFunc_MVBAR, TC_COREAFUNC_MVBAR ), TCD ( TC_CoreAFunc_FPU_Enable, TC_COREAFUNC_FPU_ENABLE ), #endif #endif /* RTE_CV_COREFUNC */ #if defined(RTE_CV_MPUFUNC) && RTE_CV_MPUFUNC TCD ( TC_MPU_SetClear, TC_MPU_SETCLEAR_EN ), TCD ( TC_MPU_Load, TC_MPU_LOAD_EN ), #endif /* RTE_CV_MPUFUNC */ #if defined(RTE_CV_GENTIMER) && RTE_CV_GENTIMER TCD ( TC_GenTimer_CNTFRQ, TC_GENTIMER_CNTFRQ ), TCD ( TC_GenTimer_CNTP_TVAL, TC_GENTIMER_CNTP_TVAL ), TCD ( TC_GenTimer_CNTP_CTL, TC_GENTIMER_CNTP_CTL ), TCD ( TC_GenTimer_CNTPCT, TC_GENTIMER_CNTPCT ), TCD ( TC_GenTimer_CNTP_CVAL, TC_GENTIMER_CNTP_CVAL ), #endif /* RTE_CV_GENTIMER */ #if defined(RTE_CV_L1CACHE) && RTE_CV_L1CACHE #if defined(__CORTEX_M) TCD ( TC_CML1Cache_EnDisableICache, TC_CML1CACHE_ENDISABLE_ICACHE ), TCD ( TC_CML1Cache_EnDisableDCache, TC_CML1CACHE_ENDISABLE_DCACHE ), TCD ( TC_CML1Cache_CleanDCacheByAddrWhileDisabled, TC_CML1CACHE_CLEANDCACHEBYADDRWHILEDISABLED), #elif defined(__CORTEX_A) TCD ( TC_CAL1Cache_EnDisable, TC_CAL1CACHE_ENDISABLE ), TCD ( TC_CAL1Cache_EnDisableBTAC, TC_CAL1CACHE_ENDISABLEBTAC ), TCD ( TC_CAL1Cache_log2_up, TC_CAL1CACHE_LOG2_UP ), TCD ( TC_CAL1Cache_InvalidateDCacheAll, TC_CAL1CACHE_INVALIDATEDCACHEALL ), TCD ( TC_CAL1Cache_CleanDCacheAll, TC_CAL1CACHE_CLEANDCACHEALL ), TCD ( TC_CAL1Cache_CleanInvalidateDCacheAll, TC_CAL1CACHE_CLEANINVALIDATEDCACHEALL ), #endif #endif /* RTE_CV_L1CACHE */ }; #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdate-time" #endif /*----------------------------------------------------------------------------- * Test suite description *----------------------------------------------------------------------------*/ TEST_SUITE ts = { __FILE__, __DATE__, __TIME__, "CMSIS-CORE Test Suite", TS_Init, 1, TC_LIST, ARRAY_SIZE (TC_LIST), }; #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) #pragma clang diagnostic pop #endif