summaryrefslogtreecommitdiff
path: root/toolchain/gcc/patches/5.3.0/tile-fix-libgcc.patch
blob: 0745ebbc7aeec3204afc52e1c92ceba87896e9d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
diff -Nur gcc-5.3.0.orig/gcc/config/tilegx/linux.h gcc-5.3.0/gcc/config/tilegx/linux.h
--- gcc-5.3.0.orig/gcc/config/tilegx/linux.h	2015-01-05 13:33:28.000000000 +0100
+++ gcc-5.3.0/gcc/config/tilegx/linux.h	2016-01-25 12:53:51.975221940 +0100
@@ -55,8 +55,6 @@
 /* For __clear_cache in libgcc2.c.  */
 #ifdef IN_LIBGCC2
 
-#include <arch/icache.h>
-
 /* Use the minimum page size of 4K.  Alternatively we can call
    getpagesize() but it introduces a libc dependence.  */
 #undef CLEAR_INSN_CACHE
diff -Nur gcc-5.3.0.orig/gcc/config/tilepro/linux.h gcc-5.3.0/gcc/config/tilepro/linux.h
--- gcc-5.3.0.orig/gcc/config/tilepro/linux.h	2015-01-05 13:33:28.000000000 +0100
+++ gcc-5.3.0/gcc/config/tilepro/linux.h	2016-01-25 12:56:33.687363200 +0100
@@ -47,8 +47,6 @@
 /* For __clear_cache in libgcc2.c.  */
 #ifdef IN_LIBGCC2
 
-#include <arch/icache.h>
-
 /* Use the minimum page size of 4K.  Alternatively we can call getpagesize()
    but it introduces a libc dependence.  */
 #undef CLEAR_INSN_CACHE
diff -Nur gcc-5.3.0.orig/libgcc/config/tilepro/atomic.h gcc-5.3.0/libgcc/config/tilepro/atomic.h
--- gcc-5.3.0.orig/libgcc/config/tilepro/atomic.h	2015-01-05 13:33:28.000000000 +0100
+++ gcc-5.3.0/libgcc/config/tilepro/atomic.h	2016-01-25 13:16:09.116389975 +0100
@@ -46,6 +46,11 @@
    The "exchange" and "compare and exchange" macros may also take
    pointer values.  We use the pseudo-type "VAL" in the documentation
    to indicate the use of an appropriate type.  */
+
+#ifndef SPR_CMPEXCH_VALUE
+#define SPR_CMPEXCH_VALUE 0x2780
+#endif
+
 #else
 /* Atomic instruction macros
 
@@ -90,14 +95,12 @@
    syscall, as is the 64-bit compare-and-exchange.  The other 64-bit
    routines are implemented by looping over the 64-bit
    compare-and-exchange routine, so may be potentially less efficient.  */
-#endif
 
-#ifdef __tilegx__
-#include <arch/spr_def.h>
-#else
-#include <asm/unistd.h>
-#endif
+#define __NR_FAST_cmpxchg	-1
+#define __NR_FAST_atomic_update	-2
+#define __NR_FAST_cmpxchg64	-3
 
+#endif
 
 /* 32-bit integer compare-and-exchange.  */
 static __inline __attribute__ ((always_inline))