From c3b6da1781011414436071bfc3a4dd9dad21d2e3 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 19 Oct 2015 14:48:30 +0100 Subject: [PATCH] Extend _intsup.h to support 16-bit and 20-bit pointers. * libc/include/sys/_intsup.h: Add support for 16-bit and 20-bit pointers. --- newlib/ChangeLog | 5 +++++ newlib/libc/include/sys/_intsup.h | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) 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 + + * libc/include/sys/_intsup.h: Add support for 16-bit and 20-bit + pointers. + 2015-10-14 Sebastian Huber * 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")