diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index fc29a65359f..a22c31e2248 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -12,17 +12,25 @@ menu "ARC Options" config ARCH default "arc" -menu "ARC processor options" +choice + prompt "ARC core family" + default CPU_ARCEM config CPU_ARCEM - bool - default y + bool "ARC EM cores" select CPU_ARCV2 select ATOMIC_OPERATIONS_C help This option signifies the use of an ARC EM CPU -endmenu +config CPU_ARCHS + bool "ARC HS cores" + select CPU_ARCV2 + select ATOMIC_OPERATIONS_BUILTIN + help + This option signifies the use of an ARC HS CPU + +endchoice menu "ARCv2 Family Options" @@ -119,7 +127,8 @@ config ARC_STACK_PROTECTION config ARC_USE_UNALIGNED_MEM_ACCESS bool "Enable unaligned access in HW" default n if CPU_ARCEM - depends on (CPU_ARCEM && !ARC_HAS_SECURE) + default y if CPU_ARCHS + depends on (CPU_ARCEM && !ARC_HAS_SECURE) || CPU_ARCHS help ARC EM cores w/o secure shield 2+2 mode support might be configured to support unaligned memory access which is then disabled by default. diff --git a/boards/arc/em_starterkit/Kconfig.defconfig b/boards/arc/em_starterkit/Kconfig.defconfig index 332f166a39c..c2e53f4aa01 100644 --- a/boards/arc/em_starterkit/Kconfig.defconfig +++ b/boards/arc/em_starterkit/Kconfig.defconfig @@ -5,9 +5,6 @@ if BOARD_EM_STARTERKIT config BOARD default "em_starterkit" -config CPU_ARCEM - default y - if GPIO config GPIO_DW diff --git a/boards/arc/em_starterkit/em_starterkit_defconfig b/boards/arc/em_starterkit/em_starterkit_defconfig index 09fc75787a9..ceb7616d0b5 100644 --- a/boards/arc/em_starterkit/em_starterkit_defconfig +++ b/boards/arc/em_starterkit/em_starterkit_defconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 CONFIG_ARC=y +CONFIG_CPU_ARCEM=y CONFIG_SOC_EMSK=y CONFIG_SOC_EMSK_EM9D=y CONFIG_BOARD_EM_STARTERKIT=y diff --git a/boards/arc/em_starterkit/em_starterkit_em11d_defconfig b/boards/arc/em_starterkit/em_starterkit_em11d_defconfig index 52c89a9dfde..a4ff67f3528 100644 --- a/boards/arc/em_starterkit/em_starterkit_em11d_defconfig +++ b/boards/arc/em_starterkit/em_starterkit_em11d_defconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 CONFIG_ARC=y +CONFIG_CPU_ARCEM=y CONFIG_SOC_EMSK=y CONFIG_SOC_EMSK_EM11D=y CONFIG_BOARD_EM_STARTERKIT=y diff --git a/boards/arc/em_starterkit/em_starterkit_em7d_defconfig b/boards/arc/em_starterkit/em_starterkit_em7d_defconfig index 457315494d4..316aca2c399 100644 --- a/boards/arc/em_starterkit/em_starterkit_em7d_defconfig +++ b/boards/arc/em_starterkit/em_starterkit_em7d_defconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 CONFIG_ARC=y +CONFIG_CPU_ARCEM=y CONFIG_SOC_EMSK=y CONFIG_SOC_EMSK_EM7D=y CONFIG_BOARD_EM_STARTERKIT=y diff --git a/boards/arc/em_starterkit/em_starterkit_em7d_v22_defconfig b/boards/arc/em_starterkit/em_starterkit_em7d_v22_defconfig index 2b41c70d692..546f207e0fd 100644 --- a/boards/arc/em_starterkit/em_starterkit_em7d_v22_defconfig +++ b/boards/arc/em_starterkit/em_starterkit_em7d_v22_defconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 CONFIG_ARC=y +CONFIG_CPU_ARCEM=y CONFIG_SOC_EMSK=y CONFIG_SOC_EMSK_EM7D=y CONFIG_BOARD_EM_STARTERKIT=y diff --git a/boards/arc/iotdk/Kconfig.defconfig b/boards/arc/iotdk/Kconfig.defconfig index 1a739360ef7..88b51005dd7 100644 --- a/boards/arc/iotdk/Kconfig.defconfig +++ b/boards/arc/iotdk/Kconfig.defconfig @@ -5,7 +5,4 @@ if BOARD_IOTDK config BOARD default "iotdk" -config CPU_ARCEM - default y - endif # BOARD_IOTDK diff --git a/boards/arc/iotdk/iotdk_defconfig b/boards/arc/iotdk/iotdk_defconfig index 686b1264cfb..63e8dad2a19 100644 --- a/boards/arc/iotdk/iotdk_defconfig +++ b/boards/arc/iotdk/iotdk_defconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 CONFIG_ARC=y +CONFIG_CPU_ARCEM=y CONFIG_SOC_ARC_IOT=y CONFIG_BOARD_IOTDK=y CONFIG_XIP=n diff --git a/cmake/gcc-m-cpu.cmake b/cmake/gcc-m-cpu.cmake index 9a572824164..f2d44b3369b 100644 --- a/cmake/gcc-m-cpu.cmake +++ b/cmake/gcc-m-cpu.cmake @@ -32,5 +32,7 @@ elseif("${ARCH}" STREQUAL "arc") set(GCC_M_CPU em4_dmips) elseif(CONFIG_CPU_EM4_FPUDA) set(GCC_M_CPU em4_fpuda) + elseif(CONFIG_CPU_ARCHS) + set(GCC_M_CPU hs) endif() endif() diff --git a/soc/arc/snps_nsim/CMakeLists.txt b/soc/arc/snps_nsim/CMakeLists.txt index 0b533641829..d010e157c1b 100644 --- a/soc/arc/snps_nsim/CMakeLists.txt +++ b/soc/arc/snps_nsim/CMakeLists.txt @@ -1,5 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 -zephyr_compile_options(-mcpu=${GCC_M_CPU} -mno-sdata -mmpy-option=6) +zephyr_compile_options(-mcpu=${GCC_M_CPU} -mno-sdata) +zephyr_compile_options_ifdef(CONFIG_CPU_ARCEM -mmpy-option=wlh1) +zephyr_compile_options_ifdef(CONFIG_CPU_ARCHS -mmpy-option=plus_qmacw) zephyr_compile_options_ifdef(CONFIG_FLOAT -mfpu=fpuda_all) zephyr_sources(