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,
