/*#*
*#* $Log$
+ *#* Revision 1.6 2005/07/19 07:27:31 bernie
+ *#* Don't use CPU_REG_BITS from cpu.h to avoid circular header dependendy.
+ *#*
+ *#* Revision 1.5 2005/06/27 21:24:37 bernie
+ *#* ticks_t: New typedef.
+ *#*
+ *#* Revision 1.4 2005/06/14 06:15:10 bernie
+ *#* Add X86_64 support.
+ *#*
*#* Revision 1.3 2005/04/12 01:37:01 bernie
*#* Metrowerks touchups from HeCo.
*#*
#define DEPRECATED __attribute__((__deprecated__))
#endif
- #if CPU_AVR
- #include <stddef.h>
- #include <stdbool.h>
- #else
- /* Include some standard C89/C99 stuff */
- #include <stddef.h>
- #include <stdbool.h>
- #endif
+ /* Include some standard C89/C99 stuff */
+ #include <stddef.h>
+ #include <stdbool.h>
#ifndef __cplusplus
/*
* \{
*/
typedef signed char int8_t;
- typedef short int int16_t;
- typedef long int int32_t;
typedef unsigned char uint8_t;
+ typedef short int int16_t;
typedef unsigned short int uint16_t;
- typedef unsigned long int uint32_t;
+ typedef long int int32_t; /* _WIN64 safe */
+ typedef unsigned long int uint32_t; /* _WIN64 safe */
+
+ #ifdef _MSC_VER
+ typedef __int64 int64_t;
+ typedef unsigned __int64 uint64_t;
+ #else
+ typedef long long int64_t;
+ typedef unsigned long long uint64_t;
+ #endif
/* \} */
#elif defined(__GNUC__) && CPU_AVR
- /* avr-libc is weird... */
+ /* avr-libc is weird... (Fixed in avr-libc-1.2, hack to be removed soon) */
#include <inttypes.h>
#else
/* This is the correct location. */
* The ATmega8 has a very small Flash, so we can't afford
* to link in support routines for 32bit integer arithmetic.
*/
+ typedef int16_t ticks_t; /*!< Type for time expressed in ticks. */
typedef int16_t mtime_t; /*!< Type for time expressed in milliseconds. */
typedef int16_t utime_t; /*!< Type for time expressed in microseconds. */
#define SIZEOF_MTIME_T (16 / CPU_BITS_PER_CHAR)
#define SIZEOF_UTIME_T (16 / CPU_BITS_PER_CHAR)
#define MTIME_INFINITE 0x7FFFL
#else
+ typedef int32_t ticks_t; /*!< Type for time expressed in ticks. */
typedef int32_t mtime_t; /*!< Type for time expressed in milliseconds. */
typedef int32_t utime_t; /*!< Type for time expressed in microseconds. */
#define SIZEOF_MTIME_T (32 / CPU_BITS_PER_CHAR)
/*! Bulk storage large enough for both pointers or integers. */
typedef void * iptr_t;
+
+/*! Bulk storage large enough for both pointers to constants or integers. */
typedef const void * const_iptr_t;
typedef unsigned char sig_t; /*!< Type for signal bits. */
* \{
*/
#if !(defined(size_t) || defined(_SIZE_T_DEFINED) || defined(_BSD_SIZE_T_DEFINED_))
- #if CPU_REG_BITS > 32
- /* 64bit. */
+ #if CPU_X86
+ /* 32bit or 64bit (32bit for _WIN64). */
typedef unsigned long size_t;
- typedef long ssize_t;
#else
- /* 32bit or 16bit. */
- typedef unsigned int size_t;
+ #error Unknown CPU
+ #endif
+#endif
+
+#if !(defined(ssize_t) || defined(__ssize_t_defined))
+ #if CPU_X86
+ /* 32bit or 64bit (32bit for _WIN64). */
+ typedef long ssize_t;
+ #elif CPU_AVR
+ /* 16bit (missing in avr-libc's sys/types.h). */
typedef int ssize_t;
+ #else
+ #error Unknown CPU
#endif
#endif
/*\}*/