crosstool-ng/packages/glibc/2.37/0001-Add-ARC700-support.patch
Chris Packham 4f01612e00 glibc: Add glibc-2.37
https://sourceware.org/pipermail/libc-announce/2023/000035.html

Add the new version carry through 2 patches that are not upstream.

Fixes #1885
Signed-off-by: Chris Packham <judge.packham@gmail.com>
2023-02-08 17:14:19 +13:00

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
@@ -52,6 +52,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
@@ -130,7 +130,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...) \