diff --git a/src/arch/arm/config.cmake b/src/arch/arm/config.cmake
index 2e81703a162731b9a994b16c57bb37d8b518b418..80d32d594a526cb00a16e01f161e7588499d0f0f 100644
--- a/src/arch/arm/config.cmake
+++ b/src/arch/arm/config.cmake
@@ -311,7 +311,7 @@ config_option(
     DEFAULT_DISABLED OFF
 )
 
-if(KernelAArch32FPUEnableContextSwitch)
+if(KernelAArch32FPUEnableContextSwitch OR KernelSel4ArchAarch64)
     set(KernelHaveFPU ON)
 endif()
 
diff --git a/src/plat/bcm2837/config.cmake b/src/plat/bcm2837/config.cmake
index e700a5d6e622f3685dd0976e1703203a649bf5fc..df284a119b0a5a0fdaafe3680a9f144f7c390992 100644
--- a/src/plat/bcm2837/config.cmake
+++ b/src/plat/bcm2837/config.cmake
@@ -17,9 +17,6 @@ if(KernelPlatformRpi3)
     set(KernelArchArmV8a ON)
     config_set(KernelPlatform PLAT "bcm2837")
     set(KernelArmMachFeatureModifiers "+crc" CACHE INTERNAL "")
-    if(KernelSel4ArchAarch64)
-        set(KernelHaveFPU ON)
-    endif()
     list(APPEND KernelDTSList "tools/dts/rpi3.dts")
     list(APPEND KernelDTSList "src/plat/bcm2837/overlay-rpi3.dts")
 
diff --git a/src/plat/hikey/config.cmake b/src/plat/hikey/config.cmake
index 72e0cc1a58dd38704d80c75fa3ddee45b0fb747e..67591134458639060efa9c7d5dff6cdeaca3d7d1 100644
--- a/src/plat/hikey/config.cmake
+++ b/src/plat/hikey/config.cmake
@@ -69,9 +69,6 @@ if(KernelPlatformHikey)
     set(KernelArchArmV8a ON)
     config_set(KernelPlatform PLAT "hikey")
     set(KernelArmMachFeatureModifiers "+crc" CACHE INTERNAL "")
-    if(KernelSel4ArchAarch64)
-        set(KernelHaveFPU ON)
-    endif()
     list(APPEND KernelDTSList "tools/dts/hikey.dts")
     list(APPEND KernelDTSList "src/plat/hikey/overlay-hikey.dts")
     declare_default_headers(
diff --git a/src/plat/odroidc2/config.cmake b/src/plat/odroidc2/config.cmake
index 6ed5414bdb7eea2162f2db33bde2e6e69003c313..f19cb3a911f3c6b32b5887c42cc9f681b5216274 100644
--- a/src/plat/odroidc2/config.cmake
+++ b/src/plat/odroidc2/config.cmake
@@ -17,9 +17,6 @@ if(KernelPlatformOdroidc2)
     set(KernelArchArmV8a ON)
     config_set(KernelPlatform PLAT "odroidc2")
     set(KernelArmMachFeatureModifiers "+crc" CACHE INTERNAL "")
-    if(KernelSel4ArchAarch64)
-        set(KernelHaveFPU ON)
-    endif()
     list(APPEND KernelDTSList "tools/dts/odroidc2.dts")
     declare_default_headers(
         TIMER_FREQUENCY 24000000llu
diff --git a/src/plat/tx1/config.cmake b/src/plat/tx1/config.cmake
index b5756ea9440d140b20fe0cee93fc74224850ef42..677c358838d88316b3f5da5eb219bc9632dafd71 100644
--- a/src/plat/tx1/config.cmake
+++ b/src/plat/tx1/config.cmake
@@ -17,7 +17,6 @@ if(KernelPlatformTx1)
     set(KernelArchArmV8a ON)
     config_set(KernelPlatform PLAT "tx1")
     config_set(KernelArmMach MACH "nvidia")
-    set(KernelHaveFPU ON)
     set(KernelArmPASizeBits44 ON)
     list(APPEND KernelDTSList "tools/dts/tx1.dts")
     list(APPEND KernelDTSList "src/plat/tx1/overlay-tx1.dts")
diff --git a/src/plat/tx2/config.cmake b/src/plat/tx2/config.cmake
index ae299f14a4fad8ca19711740ac3d5664a77a788c..3a339be7f2236fd578edd05708d1ebe0b4316557 100644
--- a/src/plat/tx2/config.cmake
+++ b/src/plat/tx2/config.cmake
@@ -17,7 +17,6 @@ if(KernelPlatformTx2)
     set(KernelArchArmV8a ON)
     config_set(KernelPlatform PLAT "tx2")
     config_set(KernelArmMach MACH "nvidia")
-    set(KernelHaveFPU ON)
     # Note that the 44-bit PA is only for Cortex-A57 cores.
     # If we enable the Denver 2 cores, which support 40-bit PA,
     # KernelArmPASizeBits40 should be enabled instead.
diff --git a/src/plat/zynqmp/config.cmake b/src/plat/zynqmp/config.cmake
index d4ffed1350acf2201ffa4df96e1732d813dee0b2..bb71f16f4197ba008124e5e48713e437949a8cf4 100644
--- a/src/plat/zynqmp/config.cmake
+++ b/src/plat/zynqmp/config.cmake
@@ -24,9 +24,6 @@ if(KernelPlatformZynqmp)
     set(KernelArchArmV8a ON)
     config_set(KernelPlatform PLAT "zynqmp")
     config_set(KernelArmMach MACH "zynq")
-    if(KernelSel4ArchAarch64)
-        set(KernelHaveFPU ON)
-    endif()
 
     if(NOT KernelPlatformUltra96)
         list(APPEND KernelDTSList "tools/dts/zynqmp.dts")