mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-30 17:46:57 +00:00
86c2982568
This refreshes the line numbers, removes any fuzz (which would make any future forward ports easier) and standardizes the patch/file headers (which makes them easier to read). Signed-off-by: Alexey Neyman <stilor@att.net>
74 lines
2.0 KiB
Diff
74 lines
2.0 KiB
Diff
From 6349ae7c3d96c8d00179e290d1ccf8a2d8438cc8 Mon Sep 17 00:00:00 2001
|
|
From: Rosen Penev <rosenp@gmail.com>
|
|
Date: Sat, 13 Feb 2021 17:08:21 +0300
|
|
Subject: [PATCH] Add ARC700 support
|
|
|
|
glibc does not officially support ARC700 so this adds the missing
|
|
pieces. I looked at uClibc-ng and a patch by Synopsis for glibc.
|
|
|
|
[Alexey] Taken from https://github.com/openwrt/openwrt/commit/33646a51abcf15ff5c5363848287e1ed778b7467
|
|
|
|
Signed-off-by: Rosen Penev <rosenp@gmail.com>
|
|
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
|
---
|
|
sysdeps/arc/atomic-machine.h | 4 ++++
|
|
sysdeps/unix/sysv/linux/arc/syscall.S | 5 +++++
|
|
sysdeps/unix/sysv/linux/arc/sysdep.h | 8 ++++++++
|
|
3 files changed, 17 insertions(+)
|
|
|
|
--- a/sysdeps/arc/atomic-machine.h
|
|
+++ b/sysdeps/arc/atomic-machine.h
|
|
@@ -64,6 +64,10 @@
|
|
__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 @@
|
|
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 @@
|
|
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 @@
|
|
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...) \
|