2021-02-13 14:12:46 +00:00
|
|
|
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>
|
|
|
|
---
|
2022-02-11 02:00:59 +00:00
|
|
|
sysdeps/arc/atomic-machine.h | 4 ++++
|
|
|
|
sysdeps/unix/sysv/linux/arc/syscall.S | 5 +++++
|
|
|
|
sysdeps/unix/sysv/linux/arc/sysdep.h | 8 ++++++++
|
2021-02-13 14:12:46 +00:00
|
|
|
3 files changed, 17 insertions(+)
|
|
|
|
|
|
|
|
--- a/sysdeps/arc/atomic-machine.h
|
|
|
|
+++ b/sysdeps/arc/atomic-machine.h
|
2022-02-11 02:00:59 +00:00
|
|
|
@@ -64,6 +64,10 @@
|
2021-02-13 14:12:46 +00:00
|
|
|
__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
|
2022-02-11 02:00:59 +00:00
|
|
|
@@ -24,8 +24,13 @@
|
2021-02-13 14:12:46 +00:00
|
|
|
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
|
2022-02-11 02:00:59 +00:00
|
|
|
@@ -128,7 +128,11 @@
|
2021-02-13 14:12:46 +00:00
|
|
|
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__ */
|
|
|
|
|
2022-02-11 02:00:59 +00:00
|
|
|
@@ -139,7 +143,11 @@
|
2021-02-13 14:12:46 +00:00
|
|
|
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...) \
|