This patch series adds support for the kv3-1 CPU architecture of the
kvx family
 found in the Coolidge (aka MPPA3-80) SoC of Kalray.
 
 This is an RFC, since kvx support is not yet upstreamed into gcc/binutils,
 therefore this patch series cannot be merged into Linux for now.
 
 The goal is to have preliminary reviews and to fix problems early.
 
 The Kalray VLIW processor family (kvx) has the following features:
 * 32/64 bits execution mode
 * 6-issue VLIW architecture
 * 64 x 64bits general purpose registers
 * SIMD instructions
 * little-endian
 * deep learning co-processor
 
 Kalray kv3-1 core which is the third of the kvx family is embedded in Kalray
 Coolidge SoC currently used on K200 and K200-LP boards.
 
 The Coolidge SoC contains 5 clusters each of which is made of:
 * 4MiB of on-chip memory (SMEM)
 * 1 dedicated safety/security core (kv3-1 core).
 * 16 PEs (Processing Elements) (kv3-1 cores).
 * 16 Co-processors (one per PE)
 * 2 Crypto accelerators
 
 The Coolidge SoC contains the following features:
 * 5 Clusters
 * 2 100G Ethernet controllers
 * 8 PCIe GEN4 controllers (Root Complex and Endpoint capable)
 * 2 USB 2.0 controllers
 * 1 Octal SPI-NOR flash controller
 * 1 eMMC controller
 * 3 Quad SPI controllers
 * 6 UART
 * 5 I2C controllers (3 of which are SMBus capable)
 * 4 CAN controllers
 * 1 OTP memory
 
 A kvx toolchain can be built using:
 # install dependencies: texinfo bison flex libgmp-dev libmpc-dev libmpfr-dev
 $ git clone 
https://github.com/kalray/build-scripts
 $ cd build-scripts
 $ source last.refs
 $ ./build-kvx-xgcc.sh output
 
 The kvx toolchain will be installed in the "output" directory.
 
 A buildroot image (kernel+rootfs) and toolchain can be built using:
 $ git clone -b coolidge-for-upstream 
https://github.com/kalray/buildroot
 $ cd buildroot
 $ make O=build_kvx kvx_defconfig
 $ make O=build_kvx
 
 The vmlinux image can be found in buildroot/build_kvx/images/vmlinux.
 
 If you are just interested in building the Linux kernel with no rootfs you can
 just do this with the kvx-elf- toolchain:
 $ make ARCH=kvx O=build_kvx CROSS_COMPILE=kvx-elf- default_defconfig
 $ make ARCH=kvx O=build_kvx CROSS_COMPILE=kvx-elf- -j$(($(nproc) + 1))
 
 The vmlinux ELF can be run with qemu by doing:
 # install dependencies: ninja pkg-config libglib-2.0-dev cmake libfdt-dev libpixman-1-dev
zlib1g-dev
 $ git clone 
https://github.com/kalray/qemu-builder
 $ cd qemu-builder
 $ git submodule update --init
 $ make -j$(($(nproc) + 1))
 $ ./qemu-system-kvx -m 1024 -nographic -kernel <path/to/vmlinux>
 
 Yann Sionneau (25):
   Documentation: kvx: Add basic documentation
   kvx: Add ELF-related definitions
   kvx: Add build infrastructure
   kvx: Add CPU definition headers
   kvx: Add atomic/locking headers
   kvx: Add other common headers
   kvx: Add boot and setup routines
   kvx: Add exception/interrupt handling
   kvx: irqchip: Add support for irq controllers
   kvx: Add process management
   kvx: Add memory management
   kvx: Add system call support
   kvx: Add signal handling support
   kvx: Add ELF relocations and module support
   kvx: Add misc common routines
   kvx: Add some library functions
   kvx: Add multi-processor (SMP) support
   kvx: Add kvx default config file
   kvx: power: scall poweroff driver
   kvx: gdb: add kvx related gdb helpers
   kvx: Add support for ftrace
   kvx: Add support for jump labels
   kvx: Add debugging related support
   kvx: Add support for CPU Perf Monitors
   kvx: Add support for cpuinfo 
You should strip this series down to just what's needed to boot. You 
don't need the last 7 patches at least.
Rob