Build: Update FP support

Update FP support in pp_test and nightly tests.

Signed-off-by: Feder Liang <Feder.Liang@arm.com>
Change-Id: Ic17207e5c2ba68a6abdb4c68e0839fccb05afdc5
diff --git a/build_helper/build_helper_configs.py b/build_helper/build_helper_configs.py
index 89f7af3..2b3fe48 100755
--- a/build_helper/build_helper_configs.py
+++ b/build_helper/build_helper_configs.py
@@ -42,7 +42,9 @@
                    "profile",
                    "partition_ps",
                    "nsce",
-                   "mmio"],
+                   "mmio",
+                   "fp",
+                   "lazy"],
 
     # Keys for the templace will come from the combinations of parameters
     # provided in the seed dictionary.
@@ -66,6 +68,8 @@
         "-DTFM_PARTITION_PROTECTED_STORAGE=%(partition_ps)s " + \
         "-DTFM_NS_MANAGE_NSID=%(nsce)s " + \
         "-DPSA_FRAMEWORK_HAS_MM_IOVEC=%(mmio)s " + \
+        "-DCONFIG_TFM_SPE_FP=%(fp)s " + \
+        "-DCONFIG_TFM_LAZY_STACKING_SPE=%(lazy)s " + \
         "%(codebase_root_dir)s",
 
     # A small subset of  string substitution params is allowed in commands.
@@ -144,98 +148,103 @@
 # List of all build configs that are impossible under all circumstances
 _common_tfm_invalid_configs = [
     # LR_CODE size exceeds limit on MUSCA_B1 & MUSCA_S1 with regression tests in Debug mode built with ARMCLANG
-    ("arm/musca_b1/sse_200", "toolchain_ARMCLANG.cmake", "*", "*", True, "OFF", "Debug", "*", "*", "*", "", "*", "*", "*"),
-    ("arm/musca_s1", "toolchain_ARMCLANG.cmake", "*", "*", True, "OFF", "Debug", "*", "*", "*", "", "*", "*", "*"),
+    ("arm/musca_b1/sse_200", "toolchain_ARMCLANG.cmake", "*", "*", True, "OFF", "Debug", "*", "*", "*", "", "*", "*", "*", "*", "*"),
+    ("arm/musca_s1", "toolchain_ARMCLANG.cmake", "*", "*", True, "OFF", "Debug", "*", "*", "*", "", "*", "*", "*", "*", "*"),
     # Load range overlap on Musca for IPC Debug type: T895
-    ("arm/musca_b1/sse_200", "toolchain_ARMCLANG.cmake", "*", "*", "*", "IPC", "Debug", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_s1", "toolchain_ARMCLANG.cmake", "*", "*", "*", "IPC", "Debug", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/sse_200", "toolchain_ARMCLANG.cmake", "*", "*", "*", "IPC", "Debug", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_s1", "toolchain_ARMCLANG.cmake", "*", "*", "*", "IPC", "Debug", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # Oversize issue on config lpcxpresso55s69_GNUARM_IPC_2_Relwithdebinfo_BL2_NS_MEDIUM
     ("nxp/lpcxpresso55s69", "toolchain_GNUARM.cmake", False, "2", False, "OFF",
-     "Relwithdebinfo", "off", True, True, "profile_medium", "ON", "OFF", "OFF"),
+     "Relwithdebinfo", "off", True, True, "profile_medium", "ON", "OFF", "OFF", "*", "*"),
     # Oversize issue on config stm32l562e_dk_ARMCLANG_LIB_1_REG_Release_BL2_NS
     ("stm/stm32l562e_dk", "toolchain_ARMCLANG.cmake", True, "1", True, "OFF",
-     "Release", "off", True, True, "", "ON", "OFF", "OFF"),
+     "Release", "off", True, True, "", "ON", "OFF", "OFF", "*", "*"),
     # LVL2 and LVL3 requires IPC model
-    ("*", "*", True, "2", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("*", "*", True, "3", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", True, "2", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", True, "3", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # Regression requires NS
-    ("*", "*", "*", "*", True, "*", "*", "*", "*", False, "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "*", "*", "*", "*", False, "*", "*", "*", "*", "*", "*"),
     # psoc64 requires IPC model
-    ("cypress/psoc64", "*", True, "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
+    ("cypress/psoc64", "*", True, "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # No PSA_ACK with regression
-    ("*", "*", "*", "*", True, "IPC", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("*", "*", "*", "*", True, "CRYPTO", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("*", "*", "*", "*", True, "INITIAL_ATTESTATION", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("*", "*", "*", "*", True, "STORAGE", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "IPC", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "CRYPTO", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "INITIAL_ATTESTATION", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "STORAGE", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # PSA_ACK requires NS
-    ("*", "*", "*", "*", "*", "IPC", "*", "*", "*", False, "*", "*", "*", "*"),
-    ("*", "*", "*", "*", "*", "CRYPTO", "*", "*", "*", False, "*", "*", "*", "*"),
-    ("*", "*", "*", "*", "*", "INITIAL_ATTESTATION", "*", "*", "*", False, "*", "*", "*", "*"),
-    ("*", "*", "*", "*", "*", "STORAGE", "*", "*", "*", False, "*", "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "IPC", "*", "*", "*", False, "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "CRYPTO", "*", "*", "*", False, "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "INITIAL_ATTESTATION", "*", "*", "*", False, "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "STORAGE", "*", "*", "*", False, "*", "*", "*", "*", "*", "*"),
     # PSA_ACK IPC (FF) does not support LVL3
-    ("*", "*", "*", "3", "*", "IPC", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "3", "*", "IPC", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # Musca requires BL2
-    ("arm/musca_b1/sse_200", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*"),
-    ("arm/musca_s1", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/sse_200", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_s1", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*", "*", "*"),
     # psoc64 cannot use BL2
-    ("cypress/psoc64", "*", "*", "*", "*", "*", "*",  "*", True, "*", "*", "*", "*", "*"),
+    ("cypress/psoc64", "*", "*", "*", "*", "*", "*",  "*", True, "*", "*", "*", "*", "*", "*", "*"),
     # psoc64 does not support Debug build type
-    ("cypress/psoc64", "*", "*", "*", "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*"),
+    ("cypress/psoc64", "*", "*", "*", "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # Musca b1 SSE 200 does not support Profile S
-    ("arm/musca_b1/sse_200", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
+    ("arm/musca_b1/sse_200", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
     # Musca B1 Secure Enclave requires IPC model, BL2, and supports only Isolation Level 1
-    ("arm/musca_b1/secure_enclave", "*", True, "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "2", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", True, "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "2", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # Musca B1 Secure Enclave does not support tests, profiles, NS side building
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", True, "*", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "IPC", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "CRYPTO", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "INITIAL_ATTESTATION", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "STORAGE", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_medium", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", True, "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", True, "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "IPC", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "CRYPTO", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "INITIAL_ATTESTATION", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "STORAGE", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_medium", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", True, "*", "*", "*", "*", "*", "*"),
     # PARTITION_PS could be OFF only for Profile S and M
-    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "", "OFF", "*", "*"),
-    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "OFF", "*", "*"),
+    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "", "OFF", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "OFF", "*", "*", "*", "*"),
     # PARTITION_PS should be OFF for Profile S
-    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "ON", "*", "*"),
+    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "ON", "*", "*", "*", "*"),
     # Proile M only support for IPC model
-    ("*", "*", True, "*", "*", "*", "*", "*", "*", "*", "profile_medium", "*", "*", "*"),
+    ("*", "*", True, "*", "*", "*", "*", "*", "*", "*", "profile_medium", "*", "*", "*", "*", "*"),
     # Profile M only support for Isolation Level 2
-    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
-    ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
+    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_medium", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_medium", "*", "*", "*", "*", "*"),
     # Profile L only support for Isolation Level 3
-    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*"),
-    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*"),
+    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*", "*", "*"),
     # Profile S does not support IPC model
-    ("*", "*", False, "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
+    ("*", "*", False, "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
     # Profile S only supports Isolation Level 1
-    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
-    ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
+    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
     # Only AN521 and MUSCA_B1 support Isolation Level 3
-    ("arm/mps2/an519", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/mps3/an524", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_s1", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
-    ("cypress/psoc64", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/mps2/an519", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/mps3/an524", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_s1", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("cypress/psoc64", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # stm/stm32l562e_dk uses BL2
-    ("stm/stm32l562e_dk", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*"),
+    ("stm/stm32l562e_dk", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*", "*", "*"),
     # stm/stm32l562e_dk does not support Debug build type
-    ("stm/stm32l562e_dk", "*", "*", "*", "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*"),
+    ("stm/stm32l562e_dk", "*", "*", "*", "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # nxp/lpcxpresso55s69 only build with GCC
-    ("nxp/lpcxpresso55s69", "toolchain_ARMCLANG.cmake", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
+    ("nxp/lpcxpresso55s69", "toolchain_ARMCLANG.cmake", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # nxp/lpcxpresso55s69 only build Profile M
-    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
-    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*"),
+    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
+    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*", "*", "*"),
     # nxp/lpcxpresso55s69 have to turn off BL2 when build regression test
-    ("nxp/lpcxpresso55s69", "*", "*", "*", True, "*", "*",  "*", True, "*", "*", "*", "*", "*"),
+    ("nxp/lpcxpresso55s69", "*", "*", "*", True, "*", "*",  "*", True, "*", "*", "*", "*", "*", "*", "*"),
     # nxp/lpcxpresso55s69 turn off BL2 temporary, due to the oversize error
-    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", True, "*", "*", "*", "*", "*"),
+    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", True, "*", "*", "*", "*", "*", "*", "*"),
     # NSID does not support multi core
-    ("cypress/psoc64", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "ON", "*"),
+    ("cypress/psoc64", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "ON", "*", "*", "*"),
+    # FP support only for GCC
+    ("*", "toolchain_ARMCLANG.cmake", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "1", "*"),
+    ("*", "toolchain_ARMCLANG.cmake", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*", "2", "*"),
+    # FP soft only build for lazy stacking disabled
+    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "0", "ON")
     ]
 
 # Configure build manager to build several combinations
@@ -255,6 +264,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -276,6 +287,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -300,6 +313,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -322,6 +337,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -345,6 +362,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -366,6 +385,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -387,6 +408,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -408,6 +431,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -428,6 +453,31 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
+                },
+                "common_params": _common_tfm_builder_cfg,
+                "invalid": _common_tfm_invalid_configs + []
+                }
+
+config_FP = {"seed_params": {
+                "tfm_platform":     ["arm/musca_s1"],
+                "toolchain_file":   ["toolchain_GNUARM.cmake",
+                                     "toolchain_ARMCLANG.cmake"],
+                "lib_model":        [False],
+                "isolation_level":  ["1", "2"],
+                "test_regression":  [True],
+                "test_psa_api":     ["OFF"],
+                "cmake_build_type": ["Release"],
+                "with_otp":         ["off"],
+                "with_bl2":         [True],
+                "with_ns":          [True],
+                "profile":          [""],
+                "partition_ps":     ["ON"],
+                "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
+                "fp":               ["0", "1", "2"],
+                "lazy":             ["ON", "OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -448,6 +498,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -469,6 +521,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -491,6 +545,8 @@
                "partition_ps":     ["ON"],
                "nsce":             ["OFF"],
                "mmio":             ["OFF"],
+               "fp":               ["0"],
+               "lazy":             ["OFF"]
                },
               "common_params": _common_tfm_builder_cfg,
               "invalid": _common_tfm_invalid_configs + []
@@ -517,21 +573,23 @@
                "partition_ps":     ["ON"],
                "nsce":             ["OFF"],
                "mmio":             ["OFF"],
+               "fp":               ["0"],
+               "lazy":             ["OFF"]
                },
                "common_params": _common_tfm_builder_cfg,
                "invalid": _common_tfm_invalid_configs + [
                    ("cypress/psoc64", "*", "*", "*",
-                    "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                    ("cypress/psoc64", "*", "*", "*",
-                    "*", "*", "*",  "*", True, True, "*", "*", "*", "*"),
+                    "*", "*", "*",  "*", True, True, "*", "*", "*", "*", "*", "*"),
                    ("arm/mps2/an521", "*", "*", "*",
-                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                    ("arm/mps2/an519", "*", "*", "*",
-                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                    ("arm/musca_b1/sse_200", "*", "*", "*",
-                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                    ("arm/mps3/an524", "*", "*", "*",
-                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                ]
                }
 
@@ -552,6 +610,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -573,11 +633,13 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -598,16 +660,18 @@
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     # Profile Large is only supported by AN521
                     ("arm/mps2/an519", "*", "*",
-                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*", "*", "*"),
                     ("arm/musca_b1/sse_200", "*", "*",
-                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -627,6 +691,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -648,6 +714,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -669,6 +737,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -690,6 +760,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -713,11 +785,13 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -742,11 +816,13 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -767,11 +843,13 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -794,25 +872,27 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("cypress/psoc64", "*", "*", "*",
-                     "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("cypress/psoc64", "*", "*", "*",
-                     "*", "*", "*",  "*", True, True, "*", "*", "*", "*"),
+                     "*", "*", "*",  "*", True, True, "*", "*", "*", "*", "*", "*"),
                     ("arm/mps2/an521", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/mps2/an519", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/musca_b1/sse_200", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/musca_s1", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/mps3/an524", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -832,6 +912,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["ON"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -853,6 +935,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["ON"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -875,16 +959,18 @@
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     # Profile Large is only supported by AN521
                     ("arm/mps2/an519", "*", "*",
-                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*", "*", "*"),
                     ("arm/musca_b1/sse_200", "*", "*",
-                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -907,6 +993,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -929,6 +1017,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -950,6 +1040,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -971,6 +1063,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -992,6 +1086,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1012,6 +1108,31 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
+                },
+                "common_params": _common_tfm_builder_cfg,
+                "invalid": _common_tfm_invalid_configs + []
+                }
+
+config_nightly_FP = {"seed_params": {
+                "tfm_platform":     ["arm/musca_s1"],
+                "toolchain_file":   ["toolchain_GNUARM.cmake",
+                                     "toolchain_ARMCLANG.cmake"],
+                "lib_model":        [False],
+                "isolation_level":  ["1", "2"],
+                "test_regression":  [True],
+                "test_psa_api":     ["OFF"],
+                "cmake_build_type": ["Debug"],
+                "with_otp":         ["off"],
+                "with_bl2":         [True],
+                "with_ns":          [True],
+                "profile":          [""],
+                "partition_ps":     ["ON"],
+                "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
+                "fp":               ["0", "2"],
+                "lazy":             ["ON", "OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1034,76 +1155,82 @@
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "valid": [
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake",
                      True, "1", False, "OFF", "Debug",
-                     "off", True, True, "", "ON", "OFF", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF", "0", "OFF"),
                     ("arm/mps2/an521", "toolchain_ARMCLANG.cmake",
                      False, "2", False, "OFF", "Debug",
-                     "off", True, True, "", "ON", "OFF", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF", "0", "OFF"),
                     ("arm/mps2/an521", "toolchain_ARMCLANG.cmake",
                      False, "3", False, "OFF", "Release",
-                     "off", True, True, "", "ON", "OFF", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF", "0", "OFF"),
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake",
                      False, "2", False, "OFF", "Debug",
-                     "off", True, True, "profile_medium", "ON", "OFF", "OFF"),
+                     "off", True, True, "profile_medium", "ON", "OFF", "OFF", "0", "OFF"),
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake",
                      False, "3", False, "OFF", "Debug",
-                     "off", True, True, "profile_large", "ON", "OFF", "OFF"),
+                     "off", True, True, "profile_large", "ON", "OFF", "OFF", "0", "OFF"),
                     # AN521_GNUARM_IPC_2_REG_Release_BL2_NS_MEDIUM_PSOFF
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake",
                      False, "2", True, "OFF", "Release",
-                     "off", True, True, "profile_medium", "OFF", "OFF", "OFF"),
+                     "off", True, True, "profile_medium", "OFF", "OFF", "OFF", "0", "OFF"),
                     # MUSCA_B1_GNUARM_LIB_1_REG_Minsizerel_BL2_NS
                     ("arm/musca_b1/sse_200", "toolchain_GNUARM.cmake",
                      True, "1", True, "OFF", "Minsizerel",
-                     "off", True, True, "", "ON", "OFF", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF", "0", "OFF"),
                     # stm32l562e_dk_ARMCLANG_IPC_1_REG_Release_BL2_NS
                     ("stm/stm32l562e_dk", "toolchain_ARMCLANG.cmake",
                      False, "1", True, "OFF", "Release",
-                     "off", True, True, "", "ON", "OFF", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF", "0", "OFF"),
                     # stm32l562e_dk_GNUARM_IPC_2_REG_Release_BL2_NS
                     ("stm/stm32l562e_dk", "toolchain_GNUARM.cmake",
                      False, "2", True, "OFF", "Release",
-                     "off", True, True, "", "ON", "OFF", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF", "0", "OFF"),
                     # stm32l562e_dk_GNUARM_IPC_3_REG_Release_BL2_NS
                     ("stm/stm32l562e_dk", "toolchain_GNUARM.cmake",
                      False, "3", True, "OFF", "Release",
-                     "off", True, True, "", "ON", "OFF", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF", "0", "OFF"),
+                    # MUSCA_S1_GNUARM_IPC_2_REG_Release_BL2_NS_SFP2_SLAZY
+                    ("arm/musca_s1", "toolchain_GNUARM.cmake",
+                     False, "2", True, "OFF", "Release",
+                     "off", True, True, "", "ON", "OFF", "OFF", "2", "ON"),
                 ],
                 "invalid": _common_tfm_invalid_configs + [
                     # invalid configs that are not supported by TF-M
                     ("arm/musca_s1", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
+                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*", "*", "*"),
                     # valid configs supported by TF-M but not needed in per-patch
                     ("*", "*", "*", "1", "*", "*", "Release",
-                     "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "1", "*", "*", "Minsizerel",
-                     "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "2", "*", "*", "Debug",
-                     "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "2", "*", "*", "Minsizerel",
-                     "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "3", "*", "*", "Debug",
-                     "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "3", "*", "*", "Release",
-                     "*", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/mps2/an519", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
+                     "*",  "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
                     ("arm/musca_s1", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
+                     "*",  "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
                     ("arm/mps2/an519", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
+                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*", "*", "*"),
                     ("arm/mps2/an521", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
+                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*", "*", "*"),
                     ("*", "toolchain_GNUARM.cmake", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
+                     "*",  "*", "*", "*", "profile_small", "*", "*", "*", "*", "*"),
                     ("*", "toolchain_ARMCLANG.cmake", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
+                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*", "*", "*"),
                     ("*", "toolchain_ARMCLANG.cmake", True, "*", "*", "*",
-                     "*",  "*", "*", "*", "*", "*", "*", "*"),
+                     "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -1122,6 +1249,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1146,6 +1275,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1166,6 +1297,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1186,6 +1319,8 @@
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1206,6 +1341,8 @@
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1243,6 +1380,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1265,13 +1404,15 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("*", "toolchain_ARMCLANG.cmake", False, "*", "*", "*",
-                     "*",  "*", "*", "*", "*", "*", "*", "*"),
+                     "*",  "*", "*", "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "toolchain_ARMCLANG.cmake", True, "1", "*", "*",
-                     "*",  "*", False, "*", "*", "*", "*", "*"),
+                     "*",  "*", False, "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -1290,11 +1431,13 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake", False, "2", "*", "*",
-                     "*",  "*", True, "*", "*", "*", "*", "*")
+                     "*",  "*", True, "*", "*", "*", "*", "*", "*", "*")
                 ]
                 }
 
@@ -1313,6 +1456,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1333,6 +1478,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1353,6 +1500,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1373,6 +1522,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1393,6 +1544,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1413,6 +1566,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1433,6 +1588,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1453,6 +1610,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1473,6 +1632,8 @@
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
                 "mmio":             ["OFF"],
+                "fp":               ["0"],
+                "lazy":             ["OFF"]
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1493,6 +1654,7 @@
                     "tfm_psoc64": config_PSOC64,
                     "tfm_stm32l562e_dk": config_STM32L562E_DK,
                     "tfm_lpcxpresso55s69": config_LPCXPRESSO55S69,
+                    "tfm_fp": config_FP,
 
                     #nightly test group
                     "nightly_test": config_nightly,
@@ -1505,6 +1667,7 @@
                     "nightly_psoc64": config_nightly_psoc64,
                     "nightly_stm32l562e_dk": config_nightly_STM32L562E_DK,
                     "nightly_lpcxpresso55s69": config_nightly_LPCXPRESSO55S69,
+                    "nightly_fp":config_nightly_FP,
 
                     #per patch test group
                     "pp_test": config_pp_test,
diff --git a/tfm_ci_pylib/tfm_build_manager.py b/tfm_ci_pylib/tfm_build_manager.py
index 26b9349..b1826f4 100644
--- a/tfm_ci_pylib/tfm_build_manager.py
+++ b/tfm_ci_pylib/tfm_build_manager.py
@@ -65,6 +65,9 @@
               "profile_medium": "MEDIUM",
               "profile_large":  "LARGE"}
 
+mapSFPOption = {"0": "SFP0",
+                "1": "SFP1",
+                "2": "SFP2"}
 
 class TFM_Build_Manager(structuredTask):
     """ Class that will load a configuration out of a json file, schedule
@@ -137,7 +140,9 @@
             "PROFILE={}",
             "PARTITION_PS={}",
             "NSCE={}",
-            "MMIO={}"
+            "MMIO={}",
+            "FP={}",
+            "LAZY={}"
         ]
         print(
             "\n".join(argument_list)
@@ -156,7 +161,9 @@
                 "N.A" if not config_details.profile else config_details.profile,
                 config_details.partition_ps,
                 config_details.nsce,
-                config_details.mmio
+                config_details.mmio,
+                config_details.fp,
+                config_details.lazy
             )
             .strip()
         )
@@ -416,11 +423,15 @@
                             "profile": "" if i.profile=="N.A" else i.profile,
                             "partition_ps": i.partition_ps,
                             "nsce": i.nsce,
-                            "mmio": i.mmio}
+                            "mmio": i.mmio,
+                            "fp": i.fp,
+                            "lazy": i.lazy}
         if i.test_psa_api == "IPC":
             overwrite_params["test_psa_api"] += " -DINCLUDE_PANIC_TESTS=1"
             if i.tfm_platform == "arm/musca_b1/sse_200":
                 overwrite_params["test_psa_api"] += " -DITS_RAM_FS=ON -DPS_RAM_FS=ON"
+        if i.fp == "1" or i.fp == "2":
+            overwrite_params["test_psa_api"] += " -DTEST_S_FPU=ON -DTEST_NS_FPU=ON"
         build_cfg["config_template"] %= overwrite_params
         if len(build_cfg["build_cmds"]) > 1:
             overwrite_build_dir = {"_tbm_build_dir_": build_dir}
@@ -607,6 +618,10 @@
                 config_param.append("NSCE")
             if list(i)[13] == "ON":
                 config_param.append("MMIO")
+            if list(i)[14] == "1" or list(i)[14] == "2":
+                config_param.append(mapSFPOption[list(i)[14]]) #FP
+            if list(i)[15] == "ON": # LAZY
+                config_param.append("SLAZY")
             i_str = "_".join(config_param)
             ret_cfg[i_str] = i
         return ret_cfg