[Feature][T106]ZXW P56U09 code

Only Configure: Yes
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: No
Doc Update: No

Change-Id: I3cbd8b420271eb20c2b40ebe5c78f83059cd42f3
diff --git a/ap/libc/glibc/glibc-2.23/sysdeps/tile/stackguard-macros.h b/ap/libc/glibc/glibc-2.23/sysdeps/tile/stackguard-macros.h
new file mode 100644
index 0000000..f2e041b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/sysdeps/tile/stackguard-macros.h
@@ -0,0 +1,20 @@
+#include <bits/wordsize.h>
+
+#ifdef __tilegx__
+# if __WORDSIZE == 64
+#  define STACK_CHK_GUARD \
+  ({ uintptr_t x; asm ("addi %0, tp, -16; ld %0, %0" : "=r" (x)); x; })
+#  define POINTER_CHK_GUARD \
+  ({ uintptr_t x; asm ("addi %0, tp, -24; ld %0, %0" : "=r" (x)); x; })
+# else
+#  define STACK_CHK_GUARD \
+  ({ uintptr_t x; asm ("addi %0, tp, -8; ld4s %0, %0" : "=r" (x)); x; })
+#  define POINTER_CHK_GUARD \
+  ({ uintptr_t x; asm ("addi %0, tp, -12; ld4s %0, %0" : "=r" (x)); x; })
+# endif
+#else
+# define STACK_CHK_GUARD \
+  ({ uintptr_t x; asm ("addi %0, tp, -8; lw %0, %0" : "=r" (x)); x; })
+# define POINTER_CHK_GUARD \
+  ({ uintptr_t x; asm ("addi %0, tp, -12; lw %0, %0" : "=r" (x)); x; })
+#endif