|
@@ -0,0 +1,41 @@
|
|
|
+diff -Nur gcc-5.2.0.orig/gcc/config/tilegx/linux.h gcc-5.2.0/gcc/config/tilegx/linux.h
|
|
|
+--- gcc-5.2.0.orig/gcc/config/tilegx/linux.h 2015-01-05 13:33:28.000000000 +0100
|
|
|
++++ gcc-5.2.0/gcc/config/tilegx/linux.h 2015-12-02 15:13:59.563521746 +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.2.0.orig/libgcc/config/tilepro/atomic.h gcc-5.2.0/libgcc/config/tilepro/atomic.h
|
|
|
+--- gcc-5.2.0.orig/libgcc/config/tilepro/atomic.h 2015-01-05 13:33:28.000000000 +0100
|
|
|
++++ gcc-5.2.0/libgcc/config/tilepro/atomic.h 2015-12-02 15:41:08.868942210 +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
|
|
|
+
|
|
|
+@@ -92,13 +97,6 @@
|
|
|
+ compare-and-exchange routine, so may be potentially less efficient. */
|
|
|
+ #endif
|
|
|
+
|
|
|
+-#ifdef __tilegx__
|
|
|
+-#include <arch/spr_def.h>
|
|
|
+-#else
|
|
|
+-#include <asm/unistd.h>
|
|
|
+-#endif
|
|
|
+-
|
|
|
+-
|
|
|
+ /* 32-bit integer compare-and-exchange. */
|
|
|
+ static __inline __attribute__ ((always_inline))
|
|
|
+ int arch_atomic_val_compare_and_exchange_4 (volatile int *mem,
|