/*#*
*#* $Log$
+ *#* 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.
+ *#*
+ *#* Revision 1.2 2005/04/11 19:10:27 bernie
+ *#* Include top-level headers from cfg/ subdir.
+ *#*
*#* Revision 1.1 2005/04/11 19:04:13 bernie
*#* Move top-level headers to cfg/ subdir.
*#*
#ifndef DEVLIB_COMPILER_H
#define DEVLIB_COMPILER_H
-#include "cpu_detect.h"
+#include <cfg/cpu_detect.h>
#if defined __GNUC__ && defined __GNUC_MINOR__
#define NORETURN __attribute__((__noreturn__))
#define UNUSED_ARG(type,arg) __attribute__((__unused__)) type arg
#define UNUSED_VAR(type,name) __attribute__((__unused__)) type name
- #define USED_VAR(type,name) __attribute__((__used__)) type name
+ #define USED_VAR(type,name) __attribute__((__used__)) type name
#define INLINE static inline __attribute__((__always_inline__))
#define LIKELY(x) __builtin_expect(!!(x), 1)
#define UNLIKELY(x) __builtin_expect(!!(x), 0)
#define PURE_FUNC __attribute__((pure))
#define CONST_FUNC __attribute__((const))
#define UNUSED_FUNC __attribute__((unused))
- #define USED_FUNC __attribute__((__used__))
+ #define USED_FUNC __attribute__((__used__))
#define RESTRICT __restrict__
#define MUST_CHECK __attribute__((warn_unused_result))
#if GNUC_PREREQ(3,1)
#pragma GCC poison cin cout cerr clog
#endif
-#elif defined(__MWERKS__) && CPU_DSP56K
+#elif defined(__MWERKS__)
/* Compiler features */
#define COMPILER_VARIADIC_MACROS 1
#define typeof __typeof__
+ #define UNUSED_ARG(type,arg) type
+
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
* \{
*/
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. */
#if CPU_REG_BITS > 32
/* 64bit. */
typedef unsigned long size_t;
- typedef long ssize_t;
#else
/* 32bit or 16bit. */
typedef unsigned int size_t;
+ #endif
+#endif
+
+#if !(defined(ssize_t) || defined(__ssize_t_defined))
+ #if CPU_REG_BITS > 32
+ /* 64bit (32bit for _WIN64). */
+ typedef long ssize_t;
+ #else
+ /* 32bit or 16bit. */
typedef int ssize_t;
#endif
#endif