Convert 485 macros to generic BUS macros;
[bertos.git] / compiler.h
index cb821279ac787170198aee770c755d90e5108775..0683d7e29cca7cb5e286e9a9e9fe21b8972dcb5e 100755 (executable)
  * \brief Additional support macros for compiler independance
  */
 
-/*
- * $Log$
- * Revision 1.17  2004/08/24 13:32:14  bernie
- * PP_CAT(), PP_STRINGIZE(): Move back to compiler.h to break circular dependency between cpu.h/compiler.h/macros.h;
- * offsetof(), countof(): Move back to compiler.h to avoid including macros.h almost everywhere;
- * Trim CVS log;
- * Rename header guards;
- * Don't include arch_config.h in compiler.h as it's not needed there.
- *
- * Revision 1.16  2004/08/14 19:37:57  rasky
- * Merge da SC: macros.h, pool.h, BIT_CHANGE, nome dei processi, etc.
- *
- * Revision 1.15  2004/08/13 03:23:26  bernie
- * Adjust a few MSVC tweaks from older projects.
- *
- * Revision 1.14  2004/08/10 06:56:29  bernie
- * RESTRICT: New C99-like macro; STATIC_ASSERT: Fix warning for multiple invocation in one file.
- *
- * Revision 1.13  2004/08/02 20:20:29  aleph
- * Merge from project_ks
- *
- * Revision 1.12  2004/08/01 01:21:17  bernie
- * LIKELY(), UNLIKELY(): New compiler-specific macros.
- *
- * Revision 1.11  2004/07/30 14:34:10  rasky
- * Vari fix per documentazione e commenti
- * Aggiunte PP_CATn e STATIC_ASSERT
- *
- * Revision 1.10  2004/07/30 14:15:53  rasky
- * Nuovo supporto unificato per detect della CPU
- *
- * Revision 1.9  2004/07/29 22:57:09  bernie
- * vsprintf(): Remove prototype for backwards compatibility with GCC 3.4; ssize_t: Add definition for inferior compilers.
- */
+/*#*
+ *#* $Log$
+ *#* Revision 1.20  2004/08/29 21:57:58  bernie
+ *#* Move back STATIC_ASSERT() to compiler.h as it's needed in cpu.h;
+ *#* iptr_t, const_iptr_t: Replace IPTR macro with a real typedef.
+ *#*
+ *#* Revision 1.19  2004/08/25 14:12:08  rasky
+ *#* Aggiornato il comment block dei log RCS
+ *#*
+ *#* Revision 1.18  2004/08/24 16:32:37  bernie
+ *#* Document custom types.
+ *#*
+ *#* Revision 1.17  2004/08/24 13:32:14  bernie
+ *#* PP_CAT(), PP_STRINGIZE(): Move back to compiler.h to break circular dependency between cpu.h/compiler.h/macros.h;
+ *#* offsetof(), countof(): Move back to compiler.h to avoid including macros.h almost everywhere;
+ *#* Trim CVS log;
+ *#* Rename header guards;
+ *#* Don't include arch_config.h in compiler.h as it's not needed there.
+ *#*
+ *#* Revision 1.16  2004/08/14 19:37:57  rasky
+ *#* Merge da SC: macros.h, pool.h, BIT_CHANGE, nome dei processi, etc.
+ *#*
+ *#* Revision 1.15  2004/08/13 03:23:26  bernie
+ *#* Adjust a few MSVC tweaks from older projects.
+ *#*
+ *#* Revision 1.14  2004/08/10 06:56:29  bernie
+ *#* RESTRICT: New C99-like macro; STATIC_ASSERT: Fix warning for multiple invocation in one file.
+ *#*
+ *#* Revision 1.13  2004/08/02 20:20:29  aleph
+ *#* Merge from project_ks
+ *#*
+ *#* Revision 1.12  2004/08/01 01:21:17  bernie
+ *#* LIKELY(), UNLIKELY(): New compiler-specific macros.
+ *#*
+ *#* Revision 1.11  2004/07/30 14:34:10  rasky
+ *#* Vari fix per documentazione e commenti
+ *#* Aggiunte PP_CATn e STATIC_ASSERT
+ *#*
+ *#* Revision 1.10  2004/07/30 14:15:53  rasky
+ *#* Nuovo supporto unificato per detect della CPU
+ *#*
+ *#* Revision 1.9  2004/07/29 22:57:09  bernie
+ *#* vsprintf(): Remove prototype for backwards compatibility with GCC 3.4; ssize_t: Add definition for inferior compilers.
+ *#*/
 #ifndef DEVLIB_COMPILER_H
 #define DEVLIB_COMPILER_H
 
 
 
 /*
- * Standard type definitions
+ * Standard type definitions.
  * These should be in <sys/types.h>, but many compilers lack them.
  */
 #if !(defined(size_t) || defined(_SIZE_T_DEFINED))
        typedef long time_t;
 #endif /* _TIME_T_DEFINED || __time_t_defined */
 
-/*! Storage for pointers and integers */
-/* FIXME: turn this into a typedef? */
-#define IPTR void *
+/*! Bulk storage large enough for both pointers or integers */
+typedef void * iptr_t;
+typedef const void * const_iptr_t;
+#define IPTR iptr_t  /* OBSOLETE */
 
-typedef long utime_t;
-typedef unsigned char sig_t;
-typedef unsigned char sigset_t;
-typedef unsigned char page_t;
+typedef long utime_t;            /*!< Type for time expressed in microseconds */
+typedef unsigned char sig_t;     /*!< Type for signal bits */
+typedef unsigned char sigset_t;  /*!< Type for signal masks */
+typedef unsigned char page_t;    /*!< Type for banked memory pages */
 
 #if (defined(_MSC_VER) || defined(__IAR_SYSTEMS_ICC) || defined(__IAR_SYSTEMS_ICC__))
        /*!
@@ -341,4 +352,8 @@ typedef unsigned char page_t;
        #define countof(a)  (sizeof(a) / sizeof(*(a)))
 #endif
 
+/*! Issue a compilation error if the \a condition is false */
+#define STATIC_ASSERT(condition)  \
+       extern char PP_CAT(CT_ASSERT___, __LINE__)[(condition) ? 1 : -1]
+
 #endif /* DEVLIB_COMPILER_H */