On 1/12/21 11:40 AM, Alexey Brodkin wrote: > Hi Paul, > > With that patch I obviously get basic target image built successfully > but then it fails to boot that way: > ------------------------------>8------------------------------ > [ 0.554310] Run /init as init process > [ 0.554665] usercopy: Kernel memory overwrite attempt detected to > kernel text (offset 98294, size 6)! > [ 0.554733] usercopy: BUG: failure at > mm/usercopy.c:99/usercopy_abort()! > [ 0.554789] > [ 0.554789] gcc generated __builtin_trap > [ 0.554833] Path: (null) > [ 0.554897] CPU: 0 PID: 1 Comm: swapper Not tainted 5.4.87 #0 > [ 0.554945] > [ 0.554945] [ECR ]: 0x00250005 => gcc generated __builtin_trap > [ 0.555058] [EFA ]: 0x807fc9f0 > [ 0.555058] [BLINK ]: usercopy_abort+0x88/0x8c > [ 0.555058] [ERET ]: usercopy_abort+0x8a/0x8c > [ 0.555121] [STAT32]: 0x00000806 : K E2 E1 > [ 0.555209] BTA: 0x807fc9f0 SP: 0x8f02bef8 FP: 0x00000000 > [ 0.555270] LPS: 0x80aedbb0 LPE: 0x80aedbbe LPC: 0x00000000 > [ 0.555487] r00: 0x0000003c r01: 0x0000000a r02: 0x00000000 > [ 0.555487] r03: 0x80c24ba4 r04: 0x00000800 r05: 0x00000000 > [ 0.555487] r06: 0x00000006 r07: 0x00000006 r08: 0x00000000 > [ 0.555487] r09: 0x00000049 r10: 0x22eeb13c r11: 0x11c05fc3 > [ 0.555487] r12: 0x00000000 r13: 0x80715ff6 r14: 0x00000006 > [ 0.555487] r15: 0x80715ffc r16: 0x00000000 r17: 0x8f120010 > [ 0.555487] r18: 0x00000000 r19: 0x8fec8d90 r20: 0x8f17be00 > [ 0.555487] r21: 0x8fec8d90 r22: 0x80714000 r23: 0x5fffe000 > [ 0.555487] r24: 0x8f02a000 r25: 0x8f038000 > [ 0.555487] > [ 0.555487] > [ 0.555884] > [ 0.555884] Stack Trace: > [ 0.555942] usercopy_abort+0x8a/0x8c > ------------------------------>8------------------------------
This could be unrelated to glibc and just be the kernel issue we've known for a while. https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/15 Try disabling CONFIG_HARDENED_USERCOPY -Vineet > > Originally I got it with GCC 8.4 but later exactly the same was > reproduced with GCC 9.3 so it seems to be not related to the compiler, > but rather hints at some corner-case in the kernel configuration which > gives such a behavior. > > I created a bug-report here about that problem: > https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/35 > <https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/35>. > > IMHO we may apply suggested patch for glibc in OpenWrt and in the > meantime debug observed problem. > > BTW we now have a free version of Synopsys proprietary simulator nSIM > (available after a simple click-through registration here > https://www.synopsys.com/cgi-bin/dwarcnsim/req1.cgi > <https://www.synopsys.com/cgi-bin/dwarcnsim/req1.cgi>) which might be > used for test runs. > > -Alexey > > ------------------------------------------------------------------------ > *From:* Paul Spooren <[email protected]> > *Sent:* Monday, December 28, 2020 11:37 PM > *To:* Alexey Brodkin <[email protected]> > *Cc:* Hans Dedecker <[email protected]>; openwrt-devel > <[email protected]>; Rosen Penev <[email protected]> > *Subject:* Re: [PATCH] glibc: add arc700 patch > Hi Alexey, > > could you please test this patch? I have no devboard at hand. > > Kind regards, > Paul > > On So, Dez 27, 2020 at 15:29, Rosen Penev <[email protected]> wrote: > > On Sat, Dec 26, 2020 at 11:50 AM Hans Dedecker <[email protected]> > > wrote: > >> > >> Hi, > >> > >> On Fri, Dec 25, 2020 at 1:37 AM Rosen Penev <[email protected]> > >> wrote: > >> > > >> > glibc does not officially support ARC700 so this adds the missing > >> > pieces. I looked at uClibc-ng and a patch by Synopsis for glibc. > >> > > >> > ran make toolchain/glibc/refresh to clean up fuzz. > >> > > >> > Signed-off-by: Rosen Penev <[email protected]> > >> > --- > >> > toolchain/glibc/common.mk | 2 +- > >> > ...use-of-DES-encryption-functions-in-n.patch | 87 > >> +++++++------------ > >> > .../glibc/patches/100-fix_cross_rpcgen.patch | 1 + > >> > toolchain/glibc/patches/300-arc.patch | 55 ++++++++++++ > >> Will the ARC700 patch be pushed upstream ? > > Up to Synopsis. > >> > >> Hans > >> > 4 files changed, 87 insertions(+), 58 deletions(-) > >> > create mode 100644 toolchain/glibc/patches/300-arc.patch > >> > > >> > diff --git a/toolchain/glibc/common.mk b/toolchain/glibc/common.mk > >> > index faf749eea3..555bd19a61 100644 > >> > --- a/toolchain/glibc/common.mk > >> > +++ b/toolchain/glibc/common.mk > >> > @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk > >> > > >> > PKG_NAME:=glibc > >> > PKG_VERSION:=2.32 > >> > -PKG_RELEASE:=1 > >> > +PKG_RELEASE:=2 > >> > > >> > PKG_SOURCE_PROTO:=git > >> > PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) > >> > diff --git > >> > a/toolchain/glibc/patches/050-Revert-Disallow-use-of-DES-encryption-functions-in-n.patch > >> > b/toolchain/glibc/patches/050-Revert-Disallow-use-of-DES-encryption-functions-in-n.patch > >> > index 002e7a1770..10d9f65d18 100644 > >> > --- > >> > a/toolchain/glibc/patches/050-Revert-Disallow-use-of-DES-encryption-functions-in-n.patch > >> > +++ > >> > b/toolchain/glibc/patches/050-Revert-Disallow-use-of-DES-encryption-functions-in-n.patch > >> > @@ -23,11 +23,9 @@ provides them. > >> > sunrpc/des_soft.c | 2 +- > >> > 13 files changed, 305 insertions(+), 90 deletions(-) > >> > > >> > -diff --git a/conform/data/stdlib.h-data > >> b/conform/data/stdlib.h-data > >> > -index 6913828196..d8fcccc2fb 100644 > >> > --- a/conform/data/stdlib.h-data > >> > +++ b/conform/data/stdlib.h-data > >> > -@@ -149,6 +149,9 @@ function {unsigned short int*} seed48 > >> (unsigned short int[3]) > >> > +@@ -149,6 +149,9 @@ function {unsigned short int*} seed48 (u > >> > #if !defined ISO && !defined ISO99 && !defined ISO11 && > >> !defined POSIX && !defined XPG4 && !defined XPG42 && !defined UNIX98 > >> > function int setenv (const char*, const char*, int) > >> > #endif > >> > @@ -37,8 +35,6 @@ index 6913828196..d8fcccc2fb 100644 > >> > #if !defined ISO && !defined ISO99 && !defined ISO11 && > >> !defined XPG4 && !defined POSIX && !defined POSIX2008 > >> > function {char*} setstate (char*) > >> > #endif > >> > -diff --git a/conform/data/unistd.h-data > >> b/conform/data/unistd.h-data > >> > -index aa070528e8..ddf4f25132 100644 > >> > --- a/conform/data/unistd.h-data > >> > +++ b/conform/data/unistd.h-data > >> > @@ -437,6 +437,9 @@ function int chroot (const char*) > >> > @@ -61,8 +57,6 @@ index aa070528e8..ddf4f25132 100644 > >> > function int execl (const char*, const char*, ...) > >> > function int execle (const char*, const char*, ...) > >> > function int execlp (const char*, const char*, ...) > >> > -diff --git a/crypt/cert.c b/crypt/cert.c > >> > -index e070ca398d..80029e9078 100644 > >> > --- a/crypt/cert.c > >> > +++ b/crypt/cert.c > >> > @@ -10,22 +10,6 @@ > >> > @@ -102,8 +96,6 @@ index e070ca398d..80029e9078 100644 > >> > -} > >> > - > >> > -#endif > >> > -diff --git a/crypt/crypt-entry.c b/crypt/crypt-entry.c > >> > -index 502b5846f0..09332c690a 100644 > >> > --- a/crypt/crypt-entry.c > >> > +++ b/crypt/crypt-entry.c > >> > @@ -35,7 +35,6 @@ > >> > @@ -114,7 +106,7 @@ index 502b5846f0..09332c690a 100644 > >> > > >> > /* Prototypes for local functions. */ > >> > #ifndef __GNU_LIBRARY__ > >> > -@@ -177,7 +176,17 @@ crypt (const char *key, const char *salt) > >> > +@@ -177,7 +176,17 @@ crypt (const char *key, const char *salt > >> > return __crypt_r (key, salt, &_ufc_foobar); > >> > } > >> > > >> > @@ -134,8 +126,6 @@ index 502b5846f0..09332c690a 100644 > >> > + return crypt (key, salt); > >> > +} > >> > #endif > >> > -diff --git a/crypt/crypt.h b/crypt/crypt.h > >> > -index ca8ad456cc..7d0de95018 100644 > >> > --- a/crypt/crypt.h > >> > +++ b/crypt/crypt.h > >> > @@ -36,6 +36,14 @@ __BEGIN_DECLS > >> > @@ -168,8 +158,6 @@ index ca8ad456cc..7d0de95018 100644 > >> > #endif > >> > > >> > __END_DECLS > >> > -diff --git a/crypt/crypt_util.c b/crypt/crypt_util.c > >> > -index 4b2f0a89cb..b012cde6bd 100644 > >> > --- a/crypt/crypt_util.c > >> > +++ b/crypt/crypt_util.c > >> > @@ -34,7 +34,6 @@ > >> > @@ -196,7 +184,7 @@ index 4b2f0a89cb..b012cde6bd 100644 > >> > > >> > /* > >> > * This is the final > >> > -@@ -788,7 +785,6 @@ _ufc_output_conversion_r (ufc_long v1, > >> ufc_long v2, const char *salt, > >> > +@@ -788,7 +785,6 @@ _ufc_output_conversion_r (ufc_long v1, u > >> > __data->crypt_3_buf[13] = 0; > >> > } > >> > > >> > @@ -204,7 +192,7 @@ index 4b2f0a89cb..b012cde6bd 100644 > >> > > >> > /* > >> > * UNIX encrypt function. Takes a bitvector > >> > -@@ -889,14 +885,12 @@ __encrypt_r (char *__block, int __edflag, > >> > +@@ -889,14 +885,12 @@ __encrypt_r (char *__block, int __edflag > >> > } > >> > } > >> > weak_alias (__encrypt_r, encrypt_r) > >> > @@ -219,7 +207,7 @@ index 4b2f0a89cb..b012cde6bd 100644 > >> > > >> > > >> > /* > >> > -@@ -921,15 +915,12 @@ __setkey_r (const char *__key, struct > >> crypt_data * __restrict __data) > >> > +@@ -921,15 +915,12 @@ __setkey_r (const char *__key, struct cr > >> > _ufc_mk_keytab_r((char *) ktab, __data); > >> > } > >> > weak_alias (__setkey_r, setkey_r) > >> > @@ -235,11 +223,9 @@ index 4b2f0a89cb..b012cde6bd 100644 > >> > > >> > void > >> > __b64_from_24bit (char **cp, int *buflen, > >> > -diff --git a/manual/conf.texi b/manual/conf.texi > >> > -index f959b00bb6..51fb2f5aa1 100644 > >> > --- a/manual/conf.texi > >> > +++ b/manual/conf.texi > >> > -@@ -780,8 +780,6 @@ Inquire about the parameter corresponding to > >> @code{_XOPEN_LEGACY}. > >> > +@@ -780,8 +780,6 @@ Inquire about the parameter correspondin > >> > @item _SC_XOPEN_CRYPT > >> > @standards{X/Open, unistd.h} > >> > Inquire about the parameter corresponding to > >> @code{_XOPEN_CRYPT}. > >> > @@ -248,11 +234,9 @@ index f959b00bb6..51fb2f5aa1 100644 > >> > > >> > @item _SC_XOPEN_ENH_I18N > >> > @standards{X/Open, unistd.h} > >> > -diff --git a/manual/crypt.texi b/manual/crypt.texi > >> > -index af23dd7847..1b151f2d74 100644 > >> > --- a/manual/crypt.texi > >> > +++ b/manual/crypt.texi > >> > -@@ -16,8 +16,19 @@ subject to them, even if you do not use the > >> functions in this chapter > >> > +@@ -16,8 +16,19 @@ subject to them, even if you do not use > >> > yourself. The restrictions vary from place to place and are > >> changed > >> > often, so we cannot give any more specific advice than this > >> warning. > >> > > >> > @@ -272,7 +256,7 @@ index af23dd7847..1b151f2d74 100644 > >> > * Unpredictable Bytes:: Randomness for cryptographic > >> purposes. > >> > @end menu > >> > > >> > -@@ -190,6 +201,199 @@ unpredictable as possible; > >> @pxref{Unpredictable Bytes}. > >> > +@@ -190,6 +201,199 @@ unpredictable as possible; @pxref{Unpred > >> > @include genpass.c.texi > >> > @end smallexample > >> > > >> > @@ -472,8 +456,6 @@ index af23dd7847..1b151f2d74 100644 > >> > The next program demonstrates how to verify a passphrase. It > >> checks a > >> > hash hardcoded into the program, because looking up real users' > >> hashed > >> > passphrases may require special privileges (@pxref{User > >> Database}). > >> > -diff --git a/manual/string.texi b/manual/string.texi > >> > -index 23f516439a..5586b52dee 100644 > >> > --- a/manual/string.texi > >> > +++ b/manual/string.texi > >> > @@ -36,8 +36,8 @@ too. > >> > @@ -487,7 +469,7 @@ index 23f516439a..5586b52dee 100644 > >> > * Encode Binary Data:: Encoding and Decoding of Binary > >> Data. > >> > * Argz and Envz Vectors:: Null-separated string vectors. > >> > @end menu > >> > -@@ -2426,73 +2426,73 @@ functionality under a different name, > >> such as @code{explicit_memset}, > >> > +@@ -2426,73 +2426,73 @@ functionality under a different name, su > >> > systems it may be in @file{strings.h} instead. > >> > @end deftypefun > >> > > >> > @@ -538,10 +520,19 @@ index 23f516439a..5586b52dee 100644 > >> > > >> > -@node Obfuscating Data > >> > -@section Obfuscating Data > >> > --@cindex Rot13 > >> > +@node Trivial Encryption > >> > +@section Trivial Encryption > >> > +@cindex encryption > >> > ++ > >> > ++ > >> > ++The @code{memfrob} function converts an array of data to > >> something > >> > ++unrecognizable and back again. It is not encryption in its > >> usual sense > >> > ++since it is easy for someone to convert the encrypted data back > >> to clear > >> > ++text. The transformation is analogous to Usenet's ``Rot13'' > >> encryption > >> > ++method for obscuring offensive jokes from sensitive eyes and > >> such. > >> > ++Unlike Rot13, @code{memfrob} works on arbitrary binary data, > >> not just > >> > ++text. > >> > + @cindex Rot13 > >> > > >> > -The @code{memfrob} function reversibly obfuscates an array of > >> binary > >> > -data. This is not true encryption; the obfuscated data still > >> bears a > >> > @@ -549,20 +540,12 @@ index 23f516439a..5586b52dee 100644 > >> > -undo the obfuscation. It is analogous to the ``Rot13'' cipher > >> used on > >> > -Usenet for obscuring offensive jokes, spoilers for works of > >> fiction, > >> > -and so on, but it can be applied to arbitrary binary data. > >> > - > >> > +- > >> > -Programs that need true encryption---a transformation that > >> completely > >> > -obscures the original and cannot be reversed without knowledge > >> of a > >> > -secret key---should use a dedicated cryptography library, such > >> as > >> > > -@uref{https://urldefense.com/v3/__https://www.gnu.org/software/libgcrypt/,,libgcrypt__;!!A4F2R9G_pg!L0pWJaBdwuz-RV1Owa4-1r5ltn0XoiGm9-1v7fhQt0WSOIZ3tFyWidJsvem-W51g$ > > }. > >> > -+The @code{memfrob} function converts an array of data to > >> something > >> > -+unrecognizable and back again. It is not encryption in its > >> usual sense > >> > -+since it is easy for someone to convert the encrypted data back > >> to clear > >> > -+text. The transformation is analogous to Usenet's ``Rot13'' > >> encryption > >> > -+method for obscuring offensive jokes from sensitive eyes and > >> such. > >> > -+Unlike Rot13, @code{memfrob} works on arbitrary binary data, > >> not just > >> > -+text. > >> > -+@cindex Rot13 > >> > - > >> > +- > >> > -Programs that need to @emph{destroy} data should use > >> > -@code{explicit_bzero} (@pxref{Erasing Sensitive Data}), or > >> possibly > >> > -@code{strfry} (@pxref{Shuffling Bytes}). > >> > @@ -579,13 +562,14 @@ index 23f516439a..5586b52dee 100644 > >> > -beginning at @var{mem}, in place. Each byte is bitwise xor-ed > >> with > >> > -the binary pattern 00101010 (hexadecimal 0x2A). The return > >> value is > >> > -always @var{mem}. > >> > +- > >> > +-@code{memfrob} a second time on the same data returns it to > >> > +-its original state. > >> > +@code{memfrob} transforms (frobnicates) each byte of the data > >> structure > >> > +at @var{mem}, which is @var{length} bytes long, by bitwise > >> exclusive > >> > +oring it with binary 00101010. It does the transformation in > >> place and > >> > +its return value is always @var{mem}. > >> > - > >> > --@code{memfrob} a second time on the same data returns it to > >> > --its original state. > >> > ++ > >> > +Note that @code{memfrob} a second time on the same data > >> structure > >> > +returns it to its original state. > >> > + > >> > @@ -600,8 +584,6 @@ index 23f516439a..5586b52dee 100644 > >> > @end deftypefun > >> > > >> > @node Encode Binary Data > >> > -diff --git a/posix/unistd.h b/posix/unistd.h > >> > -index 32b8161619..6fac59999f 100644 > >> > --- a/posix/unistd.h > >> > +++ b/posix/unistd.h > >> > @@ -107,6 +107,9 @@ __BEGIN_DECLS > >> > @@ -614,7 +596,7 @@ index 32b8161619..6fac59999f 100644 > >> > /* The enhanced internationalization capabilities according to > >> XPG4.2 > >> > are present. */ > >> > #define _XOPEN_ENH_I18N 1 > >> > -@@ -1129,17 +1132,25 @@ ssize_t copy_file_range (int __infd, > >> __off64_t *__pinoff, > >> > +@@ -1129,17 +1132,25 @@ ssize_t copy_file_range (int __infd, __o > >> > extern int fdatasync (int __fildes); > >> > #endif /* Use POSIX199309 */ > >> > > >> > @@ -643,11 +625,9 @@ index 32b8161619..6fac59999f 100644 > >> > /* Swab pairs bytes in the first N bytes of the area pointed to > >> by > >> > FROM and copy the result to TO. The value of TO must not be > >> in the > >> > range [FROM - N + 1, FROM - 1]. If N is odd the first byte > >> in FROM > >> > -diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h > >> > -index 3aa27a9d25..67e5e66f94 100644 > >> > --- a/stdlib/stdlib.h > >> > +++ b/stdlib/stdlib.h > >> > -@@ -962,6 +962,12 @@ extern int getsubopt (char **__restrict > >> __optionp, > >> > +@@ -962,6 +962,12 @@ extern int getsubopt (char **__restrict > >> > #endif > >> > > >> > > >> > @@ -660,11 +640,9 @@ index 3aa27a9d25..67e5e66f94 100644 > >> > /* X/Open pseudo terminal handling. */ > >> > > >> > #ifdef __USE_XOPEN2KXSI > >> > -diff --git a/sunrpc/des_crypt.c b/sunrpc/des_crypt.c > >> > -index 9b4bd2d5dd..a4d8b2936b 100644 > >> > --- a/sunrpc/des_crypt.c > >> > +++ b/sunrpc/des_crypt.c > >> > -@@ -86,9 +86,6 @@ common_crypt (char *key, char *buf, register > >> unsigned len, > >> > +@@ -86,9 +86,6 @@ common_crypt (char *key, char *buf, regi > >> > return desdev == DES_SW ? DESERR_NONE : DESERR_NOHWDEVICE; > >> > } > >> > > >> > @@ -674,7 +652,7 @@ index 9b4bd2d5dd..a4d8b2936b 100644 > >> > /* > >> > * CBC mode encryption > >> > */ > >> > -@@ -105,7 +102,7 @@ cbc_crypt (char *key, char *buf, unsigned > >> int len, unsigned int mode, > >> > +@@ -105,7 +102,7 @@ cbc_crypt (char *key, char *buf, unsigne > >> > COPY8 (dp.des_ivec, ivec); > >> > return err; > >> > } > >> > @@ -683,14 +661,12 @@ index 9b4bd2d5dd..a4d8b2936b 100644 > >> > > >> > /* > >> > * ECB mode encryption > >> > -@@ -118,4 +115,4 @@ ecb_crypt (char *key, char *buf, unsigned > >> int len, unsigned int mode) > >> > +@@ -118,4 +115,4 @@ ecb_crypt (char *key, char *buf, unsigne > >> > dp.des_mode = ECB; > >> > return common_crypt (key, buf, len, mode, &dp); > >> > } > >> > -hidden_nolink (ecb_crypt, libc, GLIBC_2_1) > >> > +libc_hidden_nolink_sunrpc (ecb_crypt, GLIBC_2_1) > >> > -diff --git a/sunrpc/des_soft.c b/sunrpc/des_soft.c > >> > -index a87de96cc7..f884f8f21b 100644 > >> > --- a/sunrpc/des_soft.c > >> > +++ b/sunrpc/des_soft.c > >> > @@ -71,4 +71,4 @@ des_setparity (char *p) > >> > @@ -699,6 +675,3 @@ index a87de96cc7..f884f8f21b 100644 > >> > } > >> > -hidden_nolink (des_setparity, libc, GLIBC_2_1) > >> > +libc_hidden_nolink_sunrpc (des_setparity, GLIBC_2_1) > >> > --- > >> > -2.25.1 > >> > - > >> > diff --git a/toolchain/glibc/patches/100-fix_cross_rpcgen.patch > >> b/toolchain/glibc/patches/100-fix_cross_rpcgen.patch > >> > index 6ee1e80424..9baed08139 100644 > >> > --- a/toolchain/glibc/patches/100-fix_cross_rpcgen.patch > >> > +++ b/toolchain/glibc/patches/100-fix_cross_rpcgen.patch > >> > @@ -33,3 +33,4 @@ > >> > +typedef char *caddr_t; > >> > # define __daddr_t_defined > >> > #endif > >> > + > >> > diff --git a/toolchain/glibc/patches/300-arc.patch > >> b/toolchain/glibc/patches/300-arc.patch > >> > new file mode 100644 > >> > index 0000000000..66f7aeb3ef > >> > --- /dev/null > >> > +++ b/toolchain/glibc/patches/300-arc.patch > >> > @@ -0,0 +1,55 @@ > >> > +--- a/sysdeps/arc/atomic-machine.h > >> > ++++ b/sysdeps/arc/atomic-machine.h > >> > +@@ -64,6 +64,10 @@ typedef uintmax_t uatomic_max_t; > >> > + __atomic_val_bysize (__arch_compare_and_exchange_val, int, > >> \ > >> > + mem, new, old, __ATOMIC_ACQUIRE) > >> > + > >> > ++#ifdef __ARC700__ > >> > ++#define atomic_full_barrier() ({ asm volatile > >> ("sync":::"memory"); }) > >> > ++#else > >> > + #define atomic_full_barrier() ({ asm volatile ("dmb > >> 3":::"memory"); }) > >> > ++#endif > >> > + > >> > + #endif /* _ARC_BITS_ATOMIC_H */ > >> > +--- a/sysdeps/unix/sysv/linux/arc/syscall.S > >> > ++++ b/sysdeps/unix/sysv/linux/arc/syscall.S > >> > +@@ -24,8 +24,13 @@ ENTRY (syscall) > >> > + mov_s r1, r2 > >> > + mov_s r2, r3 > >> > + mov_s r3, r4 > >> > ++#ifdef __ARC700__ > >> > ++ mov r4, r5 > >> > ++ mov r5, r6 > >> > ++#else > >> > + mov_s r4, r5 > >> > + mov_s r5, r6 > >> > ++#endif > >> > + > >> > + ARC_TRAP_INSN > >> > + brhi r0, -4096, L (call_syscall_err) > >> > +--- a/sysdeps/unix/sysv/linux/arc/sysdep.h > >> > ++++ b/sysdeps/unix/sysv/linux/arc/sysdep.h > >> > +@@ -128,7 +128,11 @@ L (call_syscall_err): > >> ASM_LINE_SEP \ > >> > + mov r8, __NR_##syscall_name ASM_LINE_SEP \ > >> > + ARC_TRAP_INSN ASM_LINE_SEP > >> > + > >> > ++# ifdef __ARC700__ > >> > ++# define ARC_TRAP_INSN trap0 > >> > ++# else > >> > + # define ARC_TRAP_INSN trap_s 0 > >> > ++# endif > >> > + > >> > + #else /* !__ASSEMBLER__ */ > >> > + > >> > +@@ -139,7 +143,11 @@ extern long int __syscall_error (long in > >> > + hidden_proto (__syscall_error) > >> > + # endif > >> > + > >> > ++# ifdef __ARC700__ > >> > ++# define ARC_TRAP_INSN "trap0 \n\t" > >> > ++# else > >> > + # define ARC_TRAP_INSN "trap_s 0 \n\t" > >> > ++#endif > >> > + > >> > + # undef INTERNAL_SYSCALL_NCS > >> > + # define INTERNAL_SYSCALL_NCS(number, nr_args, args...) \ > >> > -- > >> > 2.29.2 > >> > > >> > > >> > _______________________________________________ > >> > openwrt-devel mailing list > >> > [email protected] > >> > > https://urldefense.com/v3/__https://lists.openwrt.org/mailman/listinfo/openwrt-devel__;!!A4F2R9G_pg!L0pWJaBdwuz-RV1Owa4-1r5ltn0XoiGm9-1v7fhQt0WSOIZ3tFyWidJsvRu8SOsL$ > > <https://urldefense.com/v3/__https://lists.openwrt.org/mailman/listinfo/openwrt-devel__;!!A4F2R9G_pg!L0pWJaBdwuz-RV1Owa4-1r5ltn0XoiGm9-1v7fhQt0WSOIZ3tFyWidJsvRu8SOsL$> > > > > > > _______________________________________________ > > openwrt-devel mailing list > > [email protected] > > > https://urldefense.com/v3/__https://lists.openwrt.org/mailman/listinfo/openwrt-devel__;!!A4F2R9G_pg!L0pWJaBdwuz-RV1Owa4-1r5ltn0XoiGm9-1v7fhQt0WSOIZ3tFyWidJsvRu8SOsL$ > > <https://urldefense.com/v3/__https://lists.openwrt.org/mailman/listinfo/openwrt-devel__;!!A4F2R9G_pg!L0pWJaBdwuz-RV1Owa4-1r5ltn0XoiGm9-1v7fhQt0WSOIZ3tFyWidJsvRu8SOsL$> > > > > _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
