]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
architecture: add Synopsys DesignWare ARC cores support (#5992)
authorAlexey Brodkin <abrodkin@synopsys.com>
Fri, 19 May 2017 14:55:24 +0000 (16:55 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 19 May 2017 14:55:24 +0000 (10:55 -0400)
DesignWare ARC Processors are a family of 32-bit CPUs from Synopsys
used extensively in SoCs of different vendors.

man/systemd.unit.xml
src/basic/architecture.c
src/basic/architecture.h
src/basic/missing_syscall.h

index f73e91fdb24f962de02fa6628a2c30a59a86ee9f..59d16423be965b5509f6fc73e05eb1b404692ff3 100644 (file)
         <varname>sh64</varname>,
         <varname>m68k</varname>,
         <varname>tilegx</varname>,
-        <varname>cris</varname> to test
+        <varname>cris</varname>,
+        <varname>arc</varname>,
+        <varname>arc-be</varname> to test
         against a specific architecture. The architecture is
         determined from the information returned by
         <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
index 5a3dc08a4a7bb637f5079e481fa689e696f88ac9..2518dd81125d2f030805eaea93e7bf0460e57914 100644 (file)
@@ -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);
index db7e03f02a4ff9658085364346d25dcf96d15535..40a2ce6448d58b100bbfff2eb14ef29ea922ed16 100644 (file)
@@ -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
index 9fc415656456e960b93b5c134784fbb22973854d..d4096b8cae8e771c17b89d8972044c135970ca2d 100644 (file)
@@ -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