Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--newlib/ChangeLog5
-rw-r--r--newlib/libc/include/sys/_intsup.h11
2 files changed, 15 insertions, 1 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index fe583625e..94b1f7b81 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-19 Nick Clifton <nickc@redhat.com>
+
+ * libc/include/sys/_intsup.h: Add support for 16-bit and 20-bit
+ pointers.
+
2015-10-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libc/stdlib/Makefile.am (GENERAL_SOURCES): Add alloc_aligned.c.c.
diff --git a/newlib/libc/include/sys/_intsup.h b/newlib/libc/include/sys/_intsup.h
index ea10431f7..b979d5c4d 100644
--- a/newlib/libc/include/sys/_intsup.h
+++ b/newlib/libc/include/sys/_intsup.h
@@ -50,6 +50,7 @@
#pragma push_macro("unsigned")
#pragma push_macro("char")
#pragma push_macro("short")
+#pragma push_macro("__int20")
#pragma push_macro("int")
#pragma push_macro("long")
#undef signed
@@ -57,19 +58,26 @@
#undef char
#undef short
#undef int
+#undef __int20
#undef long
#define signed +0
#define unsigned +0
#define char +0
#define short +1
+#define __int20 +2
#define int +2
#define long +4
#if (__INTPTR_TYPE__ == 8 || __INTPTR_TYPE__ == 10)
#define _INTPTR_EQ_LONGLONG
#elif (__INTPTR_TYPE__ == 4 || __INTPTR_TYPE__ == 6)
#define _INTPTR_EQ_LONG
+/* Note - the tests for _INTPTR_EQ_INT and _INTPTR_EQ_SHORT are currently
+ redundant as the values are not used. But one day they may be needed
+ and so the tests remain. */
#elif __INTPTR_TYPE__ == 2
-/* Nothing to define because intptr_t is safe to print as an int. */
+#define _INTPTR_EQ_INT
+#elif (__INTPTR_TYPE__ == 1 || __INTPTR_TYPE__ == 3)
+#define _INTPTR_EQ_SHORT
#else
#error "Unable to determine type definition of intptr_t"
#endif
@@ -194,6 +202,7 @@
#pragma pop_macro("unsigned")
#pragma pop_macro("char")
#pragma pop_macro("short")
+#pragma pop_macro("__int20")
#pragma pop_macro("int")
#pragma pop_macro("long")