python-numpy: Add support of ARC architecture

This enables support for ARC cores in numpy.
Cherry-picked from
8edd610ffa

Hopefully becomes a part of the next major release (like 1.14).

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Alexey Brodkin 2017-10-21 21:47:26 +03:00 committed by Thomas Petazzoni
parent acc3a2c725
commit 19bf0087ec
2 changed files with 69 additions and 1 deletions

View File

@ -0,0 +1,68 @@
From 9a225e7d4fb1de5c99c6b5b17cae2fc4c2d1c59a Mon Sep 17 00:00:00 2001
From: Alexey Brodkin <abrodkin@synopsys.com>
Date: Fri, 15 Sep 2017 11:59:14 +0300
Subject: [PATCH] Add support of ARC
Synopsys DesignWare ARC Processors are a family of 32-bit CPUs
which in some configurations may run Linux kernel and full stack
of applications on top of it. Among other things is Python.
With that change we allow building and usage of Numpy on ARC.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
---
numpy/core/include/numpy/npy_cpu.h | 6 ++++++
numpy/core/include/numpy/npy_endian.h | 6 ++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h
index 60abae4e0b0e..84653ea183ce 100644
--- a/numpy/core/include/numpy/npy_cpu.h
+++ b/numpy/core/include/numpy/npy_cpu.h
@@ -15,6 +15,8 @@
* NPY_CPU_ARMEB
* NPY_CPU_SH_LE
* NPY_CPU_SH_BE
+ * NPY_CPU_ARCEL
+ * NPY_CPU_ARCEB
*/
#ifndef _NPY_CPUARCH_H_
#define _NPY_CPUARCH_H_
@@ -76,6 +78,10 @@
#define NPY_CPU_AARCH64
#elif defined(__mc68000__)
#define NPY_CPU_M68K
+#elif defined(__arc__) && defined(__LITTLE_ENDIAN__)
+ #define NPY_CPU_ARCEL
+#elif defined(__arc__) && defined(__BIG_ENDIAN__)
+ #define NPY_CPU_ARCEB
#else
#error Unknown CPU, please report this to numpy maintainers with \
information about your platform (OS, CPU and compiler)
diff --git a/numpy/core/include/numpy/npy_endian.h b/numpy/core/include/numpy/npy_endian.h
index e34b1d97e655..1a42121db92e 100644
--- a/numpy/core/include/numpy/npy_endian.h
+++ b/numpy/core/include/numpy/npy_endian.h
@@ -45,7 +45,8 @@
|| defined(NPY_CPU_AARCH64) \
|| defined(NPY_CPU_SH_LE) \
|| defined(NPY_CPU_MIPSEL) \
- || defined(NPY_CPU_PPC64LE)
+ || defined(NPY_CPU_PPC64LE) \
+ || defined(NPY_CPU_ARCEL)
#define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN
#elif defined(NPY_CPU_PPC) \
|| defined(NPY_CPU_SPARC) \
@@ -56,7 +57,8 @@
|| defined(NPY_CPU_SH_BE) \
|| defined(NPY_CPU_MIPSEB) \
|| defined(NPY_CPU_OR1K) \
- || defined(NPY_CPU_M68K)
+ || defined(NPY_CPU_M68K) \
+ || defined(NPY_CPU_ARCEB)
#define NPY_BYTE_ORDER NPY_BIG_ENDIAN
#else
#error Unknown CPU: can not set endianness
--
2.7.5

View File

@ -1,7 +1,7 @@
config BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS
bool
# Numpy has some CPU specific code
default y if BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 \
default y if BR2_arc || BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 \
|| BR2_mips || BR2_mipsel || BR2_powerpc || BR2_powerpc64 \
|| BR2_sh || BR2_x86_64