Skip to content

Commit 0a4322d

Browse files
abrodkingalak
authored andcommitted
Add ARC64 support
Add patches for GCC and binutils to enable ARC64 support. We also update crosstool-ng reference to support building ARC64. The binutils patches are not a clean and probably break support for none-ARC platforms currently. As such we create a unique patch dir (patches-arc64) to be used when building the ARC64 toolchain. We symlink in the gcc and gdb patches and just have a unique binutils patch for ARC64 in there. Additionally GDB isn't currently supported on ARC64. Signed-off-by: Alexey Brodkin <[email protected]>
1 parent 9e48736 commit 0a4322d

File tree

10 files changed

+44210
-3
lines changed

10 files changed

+44210
-3
lines changed

.buildkite/pipeline-template.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ steps:
2121
14) TARGET="xtensa_intel_s1000";;
2222
15) TARGET="mips";;
2323
16) TARGET="cmake";;
24+
17) TARGET="arc64";;
2425
esac
2526
- ./go.sh $${TARGET}
2627
- >
@@ -43,7 +44,7 @@ steps:
4344
cd ../..
4445
buildkite-agent artifact upload $${TARGET}.$MACHINE.tar.bz2;
4546
fi
46-
parallelism: 17
47+
parallelism: 18
4748
env:
4849
BUILDKITE_CLEAN_CHECKOUT: "true"
4950
retry:

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Currently we build the following toolchains:
1111
- i586
1212
- nios2
1313
- arc
14+
- arc64
1415
- arm
1516
- arm64
1617
- riscv64

cmake/zephyr/target.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@ set(CROSS_COMPILE_TARGET_nios2 nios2-zephyr-elf)
1111
set(CROSS_COMPILE_TARGET_riscv riscv64-zephyr-elf)
1212
set(CROSS_COMPILE_TARGET_mips mips-zephyr-elf)
1313
set(CROSS_COMPILE_TARGET_xtensa xtensa-zephyr-elf)
14+
15+
# ARC uses the same source tree for both ARCv2 & ARCv3 architectures,
16+
# while toolchain differ significantly and so their cross-compile prefixes
17+
if(CONFIG_ISA_ARCV3 AND CONFIG_64BIT)
18+
set(CROSS_COMPILE_TARGET_arc arc64-zephyr-elf)
19+
else()
1420
set(CROSS_COMPILE_TARGET_arc arc-zephyr-elf)
21+
endif()
1522
set(CROSS_COMPILE_TARGET_x86 x86_64-zephyr-elf)
1623
set(CROSS_COMPILE_TARGET_sparc sparc-zephyr-elf)
1724

configs/arc64.config

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
CT_CONFIG_VERSION="3"
2+
CT_EXPERIMENTAL=y
3+
CT_LOCAL_TARBALLS_DIR="${CT_PREFIX:-${HOME}/x-tools}/sources"
4+
# CT_PREFIX_DIR_RO is not set
5+
CT_PATCH_BUNDLED_LOCAL=y
6+
CT_LOCAL_PATCH_DIR="${CT_TOP_DIR}/../../patches-arc64"
7+
# CT_LOG_PROGRESS_BAR is not set
8+
CT_ARCH_ARC=y
9+
CT_MULTILIB=y
10+
CT_ARCH_64=y
11+
CT_TARGET_VENDOR="zephyr"
12+
CT_BINUTILS_V_2_35=y
13+
CT_NEWLIB_SRC_DEVEL=y
14+
CT_NEWLIB_DEVEL_URL="https://github.com/zephyrproject-rtos/newlib-cygwin.git"
15+
CT_NEWLIB_DEVEL_REVISION="4f5997d3c0f9011135e9627dad700c9d64be4a4b"
16+
CT_LIBC_NEWLIB_TARGET_CFLAGS="-O2"
17+
# CT_LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE is not set
18+
CT_LIBC_NEWLIB_IO_LL=y
19+
CT_LIBC_NEWLIB_IO_FLOAT=y
20+
# CT_LIBC_NEWLIB_FSEEK_OPTIMIZATION is not set
21+
CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS=y
22+
CT_LIBC_NEWLIB_GLOBAL_ATEXIT=y
23+
CT_LIBC_NEWLIB_LITE_EXIT=y
24+
# CT_LIBC_NEWLIB_MULTITHREAD is not set
25+
CT_LIBC_NEWLIB_RETARGETABLE_LOCKING=y
26+
# CT_LIBC_NEWLIB_WIDE_ORIENT is not set
27+
# CT_LIBC_NEWLIB_NANO_MALLOC is not set
28+
# CT_LIBC_NEWLIB_NANO_FORMATTED_IO is not set
29+
CT_LIBC_NEWLIB_EXTRA_SECTIONS=y
30+
CT_GCC_V_10=y
31+
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--with-gnu-ld --with-gnu-as --enable-initfini-array"
32+
CT_CC_LANG_CXX=y
33+
CT_COMP_LIBS_NEWLIB_NANO=y
34+
CT_NEWLIB_NANO_SRC_DEVEL=y
35+
CT_NEWLIB_NANO_DEVEL_URL="https://github.com/zephyrproject-rtos/newlib-cygwin.git"
36+
CT_NEWLIB_NANO_DEVEL_REVISION="4f5997d3c0f9011135e9627dad700c9d64be4a4b"
37+
CT_NEWLIB_NANO_GCC_LIBSTDCXX=y
38+
CT_NEWLIB_NANO_INSTALL_IN_TARGET=y
39+
# CT_LIBC_NEWLIB_NANO_IO_C99FMT is not set
40+
# CT_LIBC_NEWLIB_NANO_IO_LL is not set
41+
CT_LIBC_NEWLIB_NANO_IO_FLOAT=y
42+
# CT_LIBC_NEWLIB_NANO_IO_LDBL is not set
43+
# CT_LIBC_NEWLIB_NANO_IO_POS_ARGS is not set
44+
CT_LIBC_NEWLIB_NANO_FVWRITE_IN_STREAMIO=y
45+
# CT_LIBC_NEWLIB_NANO_UNBUF_STREAM_OPT is not set
46+
# CT_LIBC_NEWLIB_NANO_FSEEK_OPTIMIZATION is not set
47+
CT_LIBC_NEWLIB_NANO_DISABLE_SUPPLIED_SYSCALLS=y
48+
# CT_LIBC_NEWLIB_NANO_REGISTER_FINI is not set
49+
CT_LIBC_NEWLIB_NANO_ATEXIT_DYNAMIC_ALLOC=y
50+
CT_LIBC_NEWLIB_NANO_GLOBAL_ATEXIT=y
51+
CT_LIBC_NEWLIB_NANO_LITE_EXIT=y
52+
CT_LIBC_NEWLIB_NANO_REENT_SMALL=y
53+
# CT_LIBC_NEWLIB_NANO_MULTITHREAD is not set
54+
CT_LIBC_NEWLIB_NANO_RETARGETABLE_LOCKING=y
55+
CT_LIBC_NEWLIB_NANO_EXTRA_SECTIONS=y
56+
# CT_LIBC_NEWLIB_NANO_WIDE_ORIENT is not set
57+
CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE=y
58+
# CT_LIBC_NEWLIB_NANO_LTO is not set
59+
CT_LIBC_NEWLIB_NANO_NANO_MALLOC=y
60+
CT_LIBC_NEWLIB_NANO_NANO_FORMATTED_IO=y

go.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ if [ "$TARGETS" == "all" ]; then
1212
TARGETS=${TARGETS}" tools"
1313
fi
1414

15-
COMMIT="6c9f44116fc7deb8637479ac27fde02629ec0a2e"
15+
COMMIT="dded2f648af7eca10223df7b162a1f19c6757759"
1616
GITDIR=${PWD}
1717
JOBS=$(python -c 'import multiprocessing as mp; print(mp.cpu_count())')
1818

0 commit comments

Comments
 (0)