@@ -922,7 +922,6 @@ endfunction()
922922set (multilib_yaml_content "" )
923923
924924# Define which library variants to build and which flags to use.
925- # The order is <arch> <name suffix> <compile flags> <multilib selection flags> <qemu params>
926925add_library_variant(
927926 aarch64
928927 COMPILE_FLAGS "-march=armv8-a"
@@ -937,9 +936,12 @@ add_library_variant(
937936 RAM_SIZE 2M
938937 STACK_SIZE 8K
939938)
939+ # For AArch32, clang uses different defaults for FPU selection than GCC, both
940+ # when "+fp" or "+fp.dp" are used and when no FPU specifier is provided in
941+ # "-march=". Using "-mfpu=" explicitly.
940942add_library_variant(
941943 armv4t
942- COMPILE_FLAGS "-march=armv4t"
944+ COMPILE_FLAGS "-march=armv4t -mfpu=none "
943945 MULTILIB_FLAGS "--target=armv4t-none-unknown-eabi -mfpu=none"
944946 QEMU_MACHINE "none"
945947 QEMU_CPU "ti925t"
@@ -954,7 +956,7 @@ add_library_variant(
954956)
955957add_library_variant(
956958 armv5te
957- COMPILE_FLAGS "-march=armv5te"
959+ COMPILE_FLAGS "-march=armv5te -mfpu=none "
958960 MULTILIB_FLAGS "--target=armv5e-none-unknown-eabi -mfpu=none"
959961 QEMU_MACHINE "none"
960962 QEMU_CPU "arm926"
@@ -970,7 +972,7 @@ add_library_variant(
970972add_library_variant(
971973 armv6m
972974 SUFFIX soft_nofp
973- COMPILE_FLAGS "-mfloat-abi=soft -march=armv6m"
975+ COMPILE_FLAGS "-mfloat-abi=soft -march=armv6m -mfpu=none "
974976 MULTILIB_FLAGS "--target=thumbv6m-none-unknown-eabi -mfpu=none"
975977 QEMU_MACHINE "mps2-an385"
976978 BOOT_FLASH_ADDRESS 0x00000000
@@ -981,8 +983,6 @@ add_library_variant(
981983 RAM_SIZE 2M
982984 STACK_SIZE 4K
983985)
984- # clang does not correctly handle +nofp and +fp for armv7a and armv7r in march.
985- # Using mfpu as a workaround.
986986add_library_variant(
987987 armv7a
988988 SUFFIX soft_nofp
@@ -1071,7 +1071,7 @@ add_library_variant(
10711071add_library_variant(
10721072 armv7m
10731073 SUFFIX soft_nofp
1074- COMPILE_FLAGS "-mfloat-abi=soft -march=armv7m+nofp "
1074+ COMPILE_FLAGS "-mfloat-abi=soft -march=armv7m -mfpu=none "
10751075 MULTILIB_FLAGS "--target=thumbv7m-none-unknown-eabi -mfpu=none"
10761076 QEMU_MACHINE "mps2-an385"
10771077 QEMU_CPU "cortex-m3"
@@ -1137,7 +1137,7 @@ add_library_variant(
11371137add_library_variant(
11381138 armv8m.main
11391139 SUFFIX soft_nofp
1140- COMPILE_FLAGS "-mfloat-abi=soft -march=armv8m.main+nofp "
1140+ COMPILE_FLAGS "-mfloat-abi=soft -march=armv8m.main -mfpu=none "
11411141 MULTILIB_FLAGS "--target=thumbv8m.main-none-unknown-eabi -mfpu=none"
11421142 QEMU_MACHINE "mps2-an505"
11431143 QEMU_CPU "cortex-m33"
@@ -1152,8 +1152,8 @@ add_library_variant(
11521152add_library_variant(
11531153 armv8m.main
11541154 SUFFIX hard_fp
1155- COMPILE_FLAGS "-mfloat-abi=hard -march=armv8m.main+fp "
1156- MULTILIB_FLAGS "--target=thumbv8m.main-none-unknown-eabihf -mfpu=fpv5-d16"
1155+ COMPILE_FLAGS "-mfloat-abi=hard -march=armv8m.main -mfpu=fpv5-sp-d16 "
1156+ MULTILIB_FLAGS "--target=thumbv8m.main-none-unknown-eabihf -mfpu=fpv5-sp- d16"
11571157 QEMU_MACHINE "mps2-an505"
11581158 QEMU_CPU "cortex-m33"
11591159 BOOT_FLASH_ADDRESS 0x10000000
@@ -1167,7 +1167,7 @@ add_library_variant(
11671167add_library_variant(
11681168 armv8.1m.main
11691169 SUFFIX soft_nofp_nomve
1170- COMPILE_FLAGS "-mfloat-abi=soft -march=armv8.1m.main+nofp+ nomve"
1170+ COMPILE_FLAGS "-mfloat-abi=soft -march=armv8.1m.main+nomve -mfpu=none "
11711171 MULTILIB_FLAGS "--target=thumbv8.1m.main-none-unknown-eabi -mfpu=none"
11721172 QEMU_MACHINE "mps3-an547"
11731173 QEMU_CPU "cortex-m55"
@@ -1181,8 +1181,8 @@ add_library_variant(
11811181)
11821182add_library_variant(
11831183 armv8.1m.main
1184- SUFFIX hard_fp
1185- COMPILE_FLAGS "-mfloat-abi=hard -march=armv8.1m.main+fp "
1184+ SUFFIX hard_fp_nomve
1185+ COMPILE_FLAGS "-mfloat-abi=hard -march=armv8.1m.main+nomve -mfpu=fp-armv8-fullfp16-sp-d16 "
11861186 MULTILIB_FLAGS "--target=thumbv8.1m.main-none-unknown-eabihf -march=thumbv8.1m.main+fp16 -mfpu=fp-armv8-fullfp16-sp-d16"
11871187 QEMU_MACHINE "mps3-an547"
11881188 QEMU_CPU "cortex-m55"
@@ -1194,10 +1194,25 @@ add_library_variant(
11941194 RAM_SIZE 2M
11951195 STACK_SIZE 4K
11961196)
1197+ add_library_variant(
1198+ armv8.1m.main
1199+ SUFFIX hard_fpdp_nomve
1200+ COMPILE_FLAGS "-mfloat-abi=hard -march=armv8.1m.main+nomve -mfpu=fp-armv8-fullfp16-d16"
1201+ MULTILIB_FLAGS "--target=thumbv8.1m.main-none-unknown-eabihf -march=thumbv8.1m.main+fp16 -mfpu=fp-armv8-fullfp16-d16"
1202+ QEMU_MACHINE "mps3-an547"
1203+ QEMU_CPU "cortex-m55"
1204+ BOOT_FLASH_ADDRESS 0x00000000
1205+ BOOT_FLASH_SIZE 512K
1206+ FLASH_ADDRESS 0x01000000
1207+ FLASH_SIZE 2M
1208+ RAM_ADDRESS 0x60000000
1209+ RAM_SIZE 2M
1210+ STACK_SIZE 4K
1211+ )
11971212add_library_variant(
11981213 armv8.1m.main
11991214 SUFFIX hard_nofp_mve
1200- COMPILE_FLAGS "-mfloat-abi=hard -march=armv8.1m.main+nofp+ mve"
1215+ COMPILE_FLAGS "-mfloat-abi=hard -march=armv8.1m.main+mve -mfpu=none "
12011216 MULTILIB_FLAGS "--target=thumbv8.1m.main-none-unknown-eabihf -march=thumbv8.1m.main+dsp+mve -mfpu=none"
12021217 QEMU_MACHINE "mps3-an547"
12031218 QEMU_CPU "cortex-m55"
0 commit comments