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.
This commit is contained in:
Nick Clifton 2015-10-19 14:48:30 +01:00
parent f86afe5a3a
commit c3b6da1781
2 changed files with 15 additions and 1 deletions

View File

@ -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> 2015-10-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libc/stdlib/Makefile.am (GENERAL_SOURCES): Add alloc_aligned.c.c. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add alloc_aligned.c.c.

View File

@ -50,6 +50,7 @@
#pragma push_macro("unsigned") #pragma push_macro("unsigned")
#pragma push_macro("char") #pragma push_macro("char")
#pragma push_macro("short") #pragma push_macro("short")
#pragma push_macro("__int20")
#pragma push_macro("int") #pragma push_macro("int")
#pragma push_macro("long") #pragma push_macro("long")
#undef signed #undef signed
@ -57,19 +58,26 @@
#undef char #undef char
#undef short #undef short
#undef int #undef int
#undef __int20
#undef long #undef long
#define signed +0 #define signed +0
#define unsigned +0 #define unsigned +0
#define char +0 #define char +0
#define short +1 #define short +1
#define __int20 +2
#define int +2 #define int +2
#define long +4 #define long +4
#if (__INTPTR_TYPE__ == 8 || __INTPTR_TYPE__ == 10) #if (__INTPTR_TYPE__ == 8 || __INTPTR_TYPE__ == 10)
#define _INTPTR_EQ_LONGLONG #define _INTPTR_EQ_LONGLONG
#elif (__INTPTR_TYPE__ == 4 || __INTPTR_TYPE__ == 6) #elif (__INTPTR_TYPE__ == 4 || __INTPTR_TYPE__ == 6)
#define _INTPTR_EQ_LONG #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 #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 #else
#error "Unable to determine type definition of intptr_t" #error "Unable to determine type definition of intptr_t"
#endif #endif
@ -194,6 +202,7 @@
#pragma pop_macro("unsigned") #pragma pop_macro("unsigned")
#pragma pop_macro("char") #pragma pop_macro("char")
#pragma pop_macro("short") #pragma pop_macro("short")
#pragma pop_macro("__int20")
#pragma pop_macro("int") #pragma pop_macro("int")
#pragma pop_macro("long") #pragma pop_macro("long")