summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Brodkin <abrodkin@synopsys.com>2017-05-19 16:55:24 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-05-19 10:55:24 -0400
commit27b09f1f1ed29edb9c52ad8414c2344974a07a23 (patch)
tree442a6e52577778b902e682c8e7be295a4a476dac /src
parent4e6b9b2049188bca6d413818856ac130dd773097 (diff)
downloadsystemd-27b09f1f1ed29edb9c52ad8414c2344974a07a23.tar.gz
architecture: add Synopsys DesignWare ARC cores support (#5992)
DesignWare ARC Processors are a family of 32-bit CPUs from Synopsys used extensively in SoCs of different vendors.
Diffstat (limited to 'src')
-rw-r--r--src/basic/architecture.c5
-rw-r--r--src/basic/architecture.h10
-rw-r--r--src/basic/missing_syscall.h12
3 files changed, 27 insertions, 0 deletions
diff --git a/src/basic/architecture.c b/src/basic/architecture.c
index 5a3dc08a4a..2518dd8112 100644
--- a/src/basic/architecture.c
+++ b/src/basic/architecture.c
@@ -132,6 +132,9 @@ int uname_architecture(void) {
# elif __SIZEOF_POINTER__ == 8
{ "riscv", ARCHITECTURE_RISCV64 },
# endif
+#elif defined(__arc__)
+ { "arc", ARCHITECTURE_ARC },
+ { "arceb", ARCHITECTURE_ARC_BE },
#else
#error "Please register your architecture here!"
#endif
@@ -185,6 +188,8 @@ static const char *const architecture_table[_ARCHITECTURE_MAX] = {
[ARCHITECTURE_NIOS2] = "nios2",
[ARCHITECTURE_RISCV32] = "riscv32",
[ARCHITECTURE_RISCV64] = "riscv64",
+ [ARCHITECTURE_ARC] = "arc",
+ [ARCHITECTURE_ARC_BE] = "arc-be",
};
DEFINE_STRING_TABLE_LOOKUP(architecture, int);
diff --git a/src/basic/architecture.h b/src/basic/architecture.h
index db7e03f02a..40a2ce6448 100644
--- a/src/basic/architecture.h
+++ b/src/basic/architecture.h
@@ -60,6 +60,8 @@ enum {
ARCHITECTURE_NIOS2,
ARCHITECTURE_RISCV32,
ARCHITECTURE_RISCV64,
+ ARCHITECTURE_ARC,
+ ARCHITECTURE_ARC_BE,
_ARCHITECTURE_MAX,
_ARCHITECTURE_INVALID = -1
};
@@ -237,6 +239,14 @@ int uname_architecture(void);
# else
# error "Unrecognized riscv architecture variant"
# endif
+#elif defined(__arc__)
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define native_architecture() ARCHITECTURE_ARC_BE
+# define LIB_ARCH_TUPLE "arceb-linux"
+# else
+# define native_architecture() ARCHITECTURE_ARC
+# define LIB_ARCH_TUPLE "arc-linux"
+# endif
#else
# error "Please register your architecture here!"
#endif
diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h
index 9fc4156564..d4096b8cae 100644
--- a/src/basic/missing_syscall.h
+++ b/src/basic/missing_syscall.h
@@ -52,6 +52,8 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
# endif
# elif defined __i386__
# define __NR_memfd_create 356
+# elif defined __arc__
+# define __NR_memfd_create 279
# else
# warning "__NR_memfd_create unknown for your architecture"
# endif
@@ -97,6 +99,8 @@ static inline int memfd_create(const char *name, unsigned int flags) {
# if _MIPS_SIM == _MIPS_SIM_ABI64
# define __NR_getrandom 5313
# endif
+# elif defined(__arc__)
+# define __NR_getrandom 278
# else
# warning "__NR_getrandom unknown for your architecture"
# endif
@@ -132,6 +136,8 @@ static inline pid_t gettid(void) {
# define __NR_name_to_handle_at 370
# elif defined(__powerpc__)
# define __NR_name_to_handle_at 345
+# elif defined(__arc__)
+# define __NR_name_to_handle_at 264
# else
# error "__NR_name_to_handle_at is not defined"
# endif
@@ -161,6 +167,8 @@ static inline int name_to_handle_at(int fd, const char *name, struct file_handle
# define __NR_setns 308
# elif defined(__i386__)
# define __NR_setns 346
+# elif defined(__arc__)
+# define __NR_setns 268
# else
# error "__NR_setns is not defined"
# endif
@@ -208,6 +216,8 @@ static inline pid_t raw_getpid(void) {
# endif
# elif defined __i386__
# define __NR_renameat2 353
+# elif defined __arc__
+# define __NR_renameat2 276
# else
# warning "__NR_renameat2 unknown for your architecture"
# endif
@@ -283,6 +293,8 @@ static inline key_serial_t request_key(const char *type, const char *description
# define __NR_copy_file_range 285
# elif defined __powerpc__
# define __NR_copy_file_range 379
+# elif defined __arc__
+# define __NR_copy_file_range 285
# else
# warning "__NR_copy_file_range not defined for your architecture"
# endif