Skip to content

Commit e199c56

Browse files
authored
add armv7-a and armv7-r targets
1 parent 4fa53d0 commit e199c56

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

CMakeLists.txt

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,72 @@ add_library_variant(
980980
RAM_SIZE 2M
981981
STACK_SIZE 4K
982982
)
983+
# clang does not correctly handle +nofp and +fp for armv7a and armv7r in march.
984+
# Using mfpu as a workaround.
985+
add_library_variant(
986+
armv7a
987+
SUFFIX soft_nofp
988+
COMPILE_FLAGS "-mfloat-abi=soft -march=armv7a -mfpu=none"
989+
MULTILIB_FLAGS "--target=armv7-none-unknown-eabi -mfpu=none"
990+
QEMU_MACHINE "none"
991+
QEMU_CPU "cortex-a7"
992+
QEMU_PARAMS "-m 1G"
993+
BOOT_FLASH_ADDRESS 0x00000000
994+
BOOT_FLASH_SIZE 0x1000
995+
FLASH_ADDRESS 0x00001000
996+
FLASH_SIZE 0x3ff000
997+
RAM_ADDRESS 0x20000000
998+
RAM_SIZE 2M
999+
STACK_SIZE 4K
1000+
)
1001+
add_library_variant(
1002+
armv7a
1003+
SUFFIX hard_vfpv3_d16
1004+
COMPILE_FLAGS "-mfloat-abi=hard -march=armv7a -mfpu=vfpv3-d16"
1005+
MULTILIB_FLAGS "--target=armv7-none-unknown-eabihf -mfpu=vfpv3-d16"
1006+
QEMU_MACHINE "none"
1007+
QEMU_CPU "cortex-a8"
1008+
QEMU_PARAMS "-m 1G"
1009+
BOOT_FLASH_ADDRESS 0x00000000
1010+
BOOT_FLASH_SIZE 0x1000
1011+
FLASH_ADDRESS 0x00001000
1012+
FLASH_SIZE 0x3ff000
1013+
RAM_ADDRESS 0x20000000
1014+
RAM_SIZE 2M
1015+
STACK_SIZE 4K
1016+
)
1017+
add_library_variant(
1018+
armv7r
1019+
SUFFIX soft_nofp
1020+
COMPILE_FLAGS "-mfloat-abi=soft -march=armv7r -mfpu=none"
1021+
MULTILIB_FLAGS "--target=armv7r-none-unknown-eabi -mfpu=none"
1022+
QEMU_MACHINE "none"
1023+
QEMU_CPU "cortex-r5f"
1024+
QEMU_PARAMS "-m 1G"
1025+
BOOT_FLASH_ADDRESS 0x00000000
1026+
BOOT_FLASH_SIZE 0x1000
1027+
FLASH_ADDRESS 0x00001000
1028+
FLASH_SIZE 0x3ff000
1029+
RAM_ADDRESS 0x20000000
1030+
RAM_SIZE 2M
1031+
STACK_SIZE 4K
1032+
)
1033+
add_library_variant(
1034+
armv7r
1035+
SUFFIX hard_vfpv3_d16
1036+
COMPILE_FLAGS "-mfloat-abi=hard -march=armv7r -mfpu=vfpv3-d16"
1037+
MULTILIB_FLAGS "--target=armv7r-none-unknown-eabihf -mfpu=vfpv3-d16"
1038+
QEMU_MACHINE "none"
1039+
QEMU_CPU "cortex-r5f"
1040+
QEMU_PARAMS "-m 1G"
1041+
BOOT_FLASH_ADDRESS 0x00000000
1042+
BOOT_FLASH_SIZE 0x1000
1043+
FLASH_ADDRESS 0x00001000
1044+
FLASH_SIZE 0x3ff000
1045+
RAM_ADDRESS 0x20000000
1046+
RAM_SIZE 2M
1047+
STACK_SIZE 4K
1048+
)
9831049
add_library_variant(
9841050
armv7m
9851051
SUFFIX soft_nofp
@@ -1131,7 +1197,10 @@ add_custom_command(
11311197
"--clang=${LLVM_BINARY_DIR}/bin/clang${CMAKE_EXECUTABLE_SUFFIX}"
11321198
"--llvm-source=${llvmproject_SOURCE_DIR}"
11331199
>> "${CMAKE_CURRENT_BINARY_DIR}/llvm/${TARGET_LIBRARIES_DIR}/multilib.yaml"
1134-
DEPENDS clang "${CMAKE_CURRENT_SOURCE_DIR}/multilib-fpus.py")
1200+
DEPENDS
1201+
clang
1202+
"${CMAKE_CURRENT_SOURCE_DIR}/multilib-fpus.py"
1203+
"${CMAKE_CURRENT_BINARY_DIR}/multilib-without-fpus.yaml")
11351204
add_custom_target(multilib_yaml ALL DEPENDS
11361205
${CMAKE_CURRENT_BINARY_DIR}/llvm/${TARGET_LIBRARIES_DIR}/multilib.yaml)
11371206
add_dependencies(llvm-toolchain-runtimes multilib_yaml)

test/multilib/armv7a.test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# RUN: %clang -print-multi-directory --target=armv7a-none-eabi -mfpu=none | FileCheck %s
2+
# CHECK: arm-none-eabi/armv7a_soft_nofp
3+
4+
# RUN: %clang -print-multi-directory --target=armv7a-none-eabihf -mfpu=vfpv3-d16 | FileCheck --check-prefix=VFPV3 %s
5+
# VFPV3: arm-none-eabi/armv7a_hard_vfpv3_d16

test/multilib/armv7r.test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# RUN: %clang -print-multi-directory --target=armv7r-none-eabi -mfpu=none | FileCheck %s
2+
# CHECK: arm-none-eabi/armv7r_soft_nofp
3+
4+
# RUN: %clang -print-multi-directory --target=armv7r-none-eabihf -mfpu=vfpv3-d16 | FileCheck --check-prefix=VFPV3 %s
5+
# VFPV3: arm-none-eabi/armv7r_hard_vfpv3_d16

0 commit comments

Comments
 (0)