CoreValidation: Added test case for __FPU_Enable.
Change-Id: I7d478282cb0f85a348866b411ae0a3db724b4f5c
diff --git a/CMSIS/CoreValidation/Include/cmsis_cv.h b/CMSIS/CoreValidation/Include/cmsis_cv.h
index 8a2660b..e310874 100644
--- a/CMSIS/CoreValidation/Include/cmsis_cv.h
+++ b/CMSIS/CoreValidation/Include/cmsis_cv.h
@@ -102,6 +102,7 @@
extern void TC_CoreAFunc_MPIDR (void);
extern void TC_CoreAFunc_VBAR (void);
extern void TC_CoreAFunc_MVBAR (void);
+ extern void TC_CoreAFunc_FPU_Enable (void);
#endif
extern void TC_MPU_SetClear (void);
diff --git a/CMSIS/CoreValidation/Source/CV_CoreAFunc.c b/CMSIS/CoreValidation/Source/CV_CoreAFunc.c
index 07cfdf9..cb8559a 100644
--- a/CMSIS/CoreValidation/Source/CV_CoreAFunc.c
+++ b/CMSIS/CoreValidation/Source/CV_CoreAFunc.c
@@ -245,3 +245,25 @@
__set_MVBAR(mvbar);
}
+
+/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
+
+void TC_CoreAFunc_FPU_Enable(void) {
+ uint32_t fpexc = __get_FPEXC();
+ __set_FPEXC(fpexc & ~0x40000000u); // disable FPU
+
+ uint32_t cp15;
+ __get_CP(15, 0, cp15, 1, 0, 2);
+
+ cp15 &= ~0x00F00000u;
+ __set_CP(15, 0, cp15, 1, 0, 2); // disable FPU access
+
+ __FPU_Enable();
+
+ __get_CP(15, 0, cp15, 1, 0, 2);
+ ASSERT_TRUE((cp15 & 0x00F00000u) == 0x00F00000u);
+
+ fpexc = __get_FPEXC();
+ ASSERT_TRUE((fpexc & 0x40000000u) == 0x40000000u);
+}
+
diff --git a/CMSIS/CoreValidation/Source/ConfigA/CV_Config.h b/CMSIS/CoreValidation/Source/ConfigA/CV_Config.h
index 5551b62..a31a72b 100644
--- a/CMSIS/CoreValidation/Source/ConfigA/CV_Config.h
+++ b/CMSIS/CoreValidation/Source/ConfigA/CV_Config.h
@@ -64,6 +64,7 @@
// <q25> TC_CoreAFunc_MPIDR
// <q26> TC_CoreAFunc_VBAR
// <q27> TC_CoreAFunc_MVBAR
+// <q28> TC_CoreAFunc_FPU_Enable
#define TC_COREAFUNC_IRQ 1
#define TC_COREAFUNC_FPSCR 1
@@ -85,12 +86,13 @@
#define TC_COREAFUNC_MPIDR 1
#define TC_COREAFUNC_VBAR 1
#define TC_COREAFUNC_MVBAR 1
+#define TC_COREAFUNC_FPU_ENABLE 1
-// <q28> TC_GenTimer_CNTFRQ
-// <q29> TC_GenTimer_CNTP_TVAL
-// <q30> TC_GenTimer_CNTP_CTL
-// <q31> TC_GenTimer_CNTPCT
-// <q32> TC_GenTimer_CNTP_CVAL
+// <q29> TC_GenTimer_CNTFRQ
+// <q30> TC_GenTimer_CNTP_TVAL
+// <q31> TC_GenTimer_CNTP_CTL
+// <q32> TC_GenTimer_CNTPCT
+// <q33> TC_GenTimer_CNTP_CVAL
#define TC_GENTIMER_CNTFRQ 1
#define TC_GENTIMER_CNTP_TVAL 1
@@ -98,12 +100,12 @@
#define TC_GENTIMER_CNTPCT 1
#define TC_GENTIMER_CNTP_CVAL 1
-// <q33> TC_L1Cache_EnDisable
-// <q34> TC_L1Cache_EnDisableBTAC
-// <q35> TC_L1Cache_log2_up
-// <q36> TC_L1Cache_InvalidateDCacheAll
-// <q37> TC_L1Cache_CleanDCacheAll
-// <q38> TC_L1Cache_CleanInvalidateDCacheAll
+// <q34> TC_L1Cache_EnDisable
+// <q35> TC_L1Cache_EnDisableBTAC
+// <q36> TC_L1Cache_log2_up
+// <q37> TC_L1Cache_InvalidateDCacheAll
+// <q38> TC_L1Cache_CleanDCacheAll
+// <q39> TC_L1Cache_CleanInvalidateDCacheAll
#define TC_L1CACHE_ENDISABLE 1
#define TC_L1CACHE_ENDISABLEBTAC 1
diff --git a/CMSIS/CoreValidation/Source/cmsis_cv.c b/CMSIS/CoreValidation/Source/cmsis_cv.c
index 9c46627..30b6e9a 100644
--- a/CMSIS/CoreValidation/Source/cmsis_cv.c
+++ b/CMSIS/CoreValidation/Source/cmsis_cv.c
@@ -135,6 +135,7 @@
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 */
diff --git a/CMSIS/CoreValidation/Tests/config/core_a/CV_Config.h b/CMSIS/CoreValidation/Tests/config/core_a/CV_Config.h
index 48b4760..397ae38 100644
--- a/CMSIS/CoreValidation/Tests/config/core_a/CV_Config.h
+++ b/CMSIS/CoreValidation/Tests/config/core_a/CV_Config.h
@@ -70,6 +70,7 @@
// <q25> TC_CoreAFunc_MPIDR
// <q26> TC_CoreAFunc_VBAR
// <q27> TC_CoreAFunc_MVBAR
+// <q28> TC_CoreAFunc_FPU_Enable
#define TC_COREAFUNC_IRQ 1
#define TC_COREAFUNC_FPSCR 1
@@ -91,12 +92,13 @@
#define TC_COREAFUNC_MPIDR 1
#define TC_COREAFUNC_VBAR 1
#define TC_COREAFUNC_MVBAR 1
+#define TC_COREAFUNC_FPU_ENABLE 1
-// <q28> TC_GenTimer_CNTFRQ
-// <q29> TC_GenTimer_CNTP_TVAL
-// <q30> TC_GenTimer_CNTP_CTL
-// <q31> TC_GenTimer_CNTPCT
-// <q32> TC_GenTimer_CNTP_CVAL
+// <q29> TC_GenTimer_CNTFRQ
+// <q30> TC_GenTimer_CNTP_TVAL
+// <q31> TC_GenTimer_CNTP_CTL
+// <q32> TC_GenTimer_CNTPCT
+// <q33> TC_GenTimer_CNTP_CVAL
#define TC_GENTIMER_CNTFRQ 1
#define TC_GENTIMER_CNTP_TVAL 1
@@ -104,12 +106,12 @@
#define TC_GENTIMER_CNTPCT 1
#define TC_GENTIMER_CNTP_CVAL 1
-// <q33> TC_L1Cache_EnDisable
-// <q34> TC_L1Cache_EnDisableBTAC
-// <q35> TC_L1Cache_log2_up
-// <q36> TC_L1Cache_InvalidateDCacheAll
-// <q37> TC_L1Cache_CleanDCacheAll
-// <q38> TC_L1Cache_CleanInvalidateDCacheAll
+// <q34> TC_L1Cache_EnDisable
+// <q35> TC_L1Cache_EnDisableBTAC
+// <q36> TC_L1Cache_log2_up
+// <q37> TC_L1Cache_InvalidateDCacheAll
+// <q38> TC_L1Cache_CleanDCacheAll
+// <q39> TC_L1Cache_CleanInvalidateDCacheAll
#define TC_L1CACHE_ENDISABLE 1
#define TC_L1CACHE_ENDISABLEBTAC 1