select ARCH_HAS_CURRENT_STACK_POINTER
        select ARCH_HAS_FORTIFY_SOURCE
        select ARCH_HAS_KCOV
+       select ARCH_HAS_KERNEL_FPU_SUPPORT if CPU_HAS_FPU
        select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS
        select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
        select ARCH_HAS_PTE_SPECIAL
 
 32bit-emul             = elf32loongarch
 64bit-emul             = elf64loongarch
 
+CC_FLAGS_FPU           := -mfpu=64
+CC_FLAGS_NO_FPU                := -msoft-float
+
 ifdef CONFIG_UNWINDER_ORC
 orc_hash_h := arch/$(SRCARCH)/include/generated/asm/orc_hash.h
 orc_hash_sh := $(srctree)/scripts/orc_hash.sh
 cflags-y               += -mabi=lp64s
 endif
 
-cflags-y                       += -pipe -msoft-float
+cflags-y                       += -pipe $(CC_FLAGS_NO_FPU)
 LDFLAGS_vmlinux                        += -static -n -nostdlib
 
 # When the assembler supports explicit relocation hint, we must use it.