From 86bbb146495c46ccc355778f1504cade4c3627dc Mon Sep 17 00:00:00 2001 From: Alexey Brodkin Date: Mon, 14 May 2018 22:09:31 +0300 Subject: Add ARC architecture support Synopsys' DesignWare ARC Processors are a family of 32-bit CPUs that SoC designers can optimize for a wide range of uses, from deeply embedded to high-performance host applications in a variety of market segments. Signed-off-by: Alexey Brodkin diff --git a/config/arch/arc.in b/config/arch/arc.in new file mode 100644 index 0000000..fc4e64f --- /dev/null +++ b/config/arch/arc.in @@ -0,0 +1,15 @@ +# ARC specific configuration file + +## no-package +## select ARCH_SUPPORTS_32 +## select ARCH_DEFAULT_32 +## select ARCH_SUPPORTS_BOTH_MMU +## select ARCH_DEFAULT_HAS_MMU +## select ARCH_SUPPORTS_EITHER_ENDIAN +## select ARCH_DEFAULT_LE +## select ARCH_SUPPORTS_WITH_CPU +## select GCC_REQUIRE_7_or_later +## select BINUTILS_REQUIRE_2_30_or_later +## +## help The Synopsys DesignWare ARC architecture, see more info here: +## help https://www.synopsys.com/designware-ip/processor-solutions/arc-processors.html diff --git a/scripts/build/arch/arc.sh b/scripts/build/arch/arc.sh new file mode 100644 index 0000000..fb9d93b --- /dev/null +++ b/scripts/build/arch/arc.sh @@ -0,0 +1,34 @@ +# Compute ARC-specific values + +CT_DoArchTupleValues() { + # The architecture part of the tuple: + CT_TARGET_ARCH="${CT_ARCH}${CT_ARCH_SUFFIX:-${target_endian_eb}}" + + # The system part of the tuple: + case "${CT_LIBC}" in + glibc) CT_TARGET_SYS=gnu;; + uClibc) CT_TARGET_SYS=uclibc;; + esac +} + +CT_DoArchUClibcConfig() { + local cfg="${1}" + + CT_DoArchUClibcSelectArch "${cfg}" "arc" +} + +CT_DoArchUClibcCflags() { + local cfg="${1}" + local cflags="${2}" + local f + + CT_KconfigDeleteOption "CONFIG_ARC_HAS_ATOMICS" "${cfg}" + + for f in ${cflags}; do + case "${f}" in + -matomic) + CT_KconfigEnableOption "CONFIG_ARC_HAS_ATOMICS" "${cfg}" + ;; + esac + done +} -- cgit v0.10.2-6-g49f6 From 66e0a25fd3cdba9b392cc371786a1df211b81076 Mon Sep 17 00:00:00 2001 From: Alexey Brodkin Date: Tue, 15 May 2018 16:37:24 +0300 Subject: Add ARC700 and ARC HS38 Linux samples ARC700 is based on ARCompact (AKA ARCv1 ISA) while ARC HS38 is based on modern ARCv2 ISA. Signed-off-by: Alexey Brodkin diff --git a/samples/arc-arc700-linux-uclibc/crosstool.config b/samples/arc-arc700-linux-uclibc/crosstool.config new file mode 100644 index 0000000..e7b298b --- /dev/null +++ b/samples/arc-arc700-linux-uclibc/crosstool.config @@ -0,0 +1,7 @@ +CT_ARCH_ARC=y +CT_TARGET_ALIAS="arc-linux" +CT_TARGET_CFLAGS="-matomic" +CT_TARGET_VENDOR="snps" +CT_KERNEL_LINUX=y +CT_LIBC_UCLIBC=y +CT_ARCH_CPU="arc700" diff --git a/samples/arc-arc700-linux-uclibc/reported.by b/samples/arc-arc700-linux-uclibc/reported.by new file mode 100644 index 0000000..9019567 --- /dev/null +++ b/samples/arc-arc700-linux-uclibc/reported.by @@ -0,0 +1,3 @@ +reporter_name="Alexey Brodkin" +reporter_url="http://embarc.org" +reporter_comment="ARCompact default Linux toolchain" diff --git a/samples/arc-archs-linux-uclibc/crosstool.config b/samples/arc-archs-linux-uclibc/crosstool.config new file mode 100644 index 0000000..b1792e1 --- /dev/null +++ b/samples/arc-archs-linux-uclibc/crosstool.config @@ -0,0 +1,7 @@ +CT_ARCH_ARC=y +CT_TARGET_ALIAS="arc-linux" +CT_TARGET_CFLAGS="-matomic" +CT_TARGET_VENDOR="snps" +CT_KERNEL_LINUX=y +CT_LIBC_UCLIBC=y +CT_ARCH_CPU="hs38" diff --git a/samples/arc-archs-linux-uclibc/reported.by b/samples/arc-archs-linux-uclibc/reported.by new file mode 100644 index 0000000..59f194c --- /dev/null +++ b/samples/arc-archs-linux-uclibc/reported.by @@ -0,0 +1,3 @@ +reporter_name="Alexey Brodkin" +reporter_url="http://embarc.org" +reporter_comment="ARCv2 default Linux toolchain" -- cgit v0.10.2-6-g49f6