blob: 797e1f27835c07328204dcb7bce651da4cd0568f [file] [log] [blame]
/****************************************************************************
global project definition file
12.06.1998 -rs
11.02.2002 r.d. Erweiterungen, Ergaenzungen
20.08.2002 SYS TEC electronic -as
Definition Schluesselwort 'GENERIC'
fuer das Erzeugen von Generic Pointer
28.08.2002 r.d. erweiterter SYS TEC Debug Code
16.09.2002 r.d. komplette Uebersetzung in Englisch
11.04.2003 f.j. Ergaenzung fuer Mitsubishi NC30 Compiler
17.06.2003 -rs Definition von Basistypen in <#ifndef _WINDEF_> gesetzt
16.04.2004 r.d. Ergaenzung fuer Borland C++ Builder
30.08.2004 -rs TRACE5 eingefügt
23.12.2005 d.k. Definitions for IAR compiler
$Id: global.h,v 1.6 2008/11/07 13:55:56 D.Krueger Exp $
****************************************************************************/
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
//---------------------------------------------------------------------------
// elements of defines for development system
//---------------------------------------------------------------------------
// these defines are necessary to check some of characteristics of the development system
#define _DEV_BIGEND_ 0x80000000L // big endian (motorolla format)
#define _DEV_ALIGNMENT_4_ 0x00400000L // the CPU needs alignment of 4 bytes
#define _DEV_ONLY_INT_MAIN_ 0x00004000L // the compiler needs "int main(int)" instead of "void main(void)"
#define _DEV_COMMA_EXT_ 0x00002000L // support of last comma in struct predefinition
#define _DEV_64BIT_SUPPORT_ 0x00001000L // support of 64 bit operations
#define _DEV_BIT64_ 0x00000400L // count of bits: 64 bit
#define _DEV_BIT32_ 0x00000300L // 32 bit
#define _DEV_BIT16_ 0x00000200L // 16 bit
#define _DEV_BIT8_ 0x00000100L // 8 bit
#define _DEV_RVCT_ARM_ 0x0000001CL // RealView ARM
#define _DEV_RENESASM32C 0x0000001BL // compiler from: Renesas
#define _DEV_GNUC_MIPS2_ 0x0000001AL // GNU for MIPS2
#define _DEV_MPLAB_C30_ 0x00000019L // MPLAB C30 for Microchip dsPIC33F series
#define _DEV_GNUC_TC_ 0x00000018L // GNU for Infineon TriCore
#define _DEV_GNUC_X86_ 0x00000017L // GNU for I386
#define _DEV_IAR_ARM_ 0x00000016L // ARM IAR C/C++ Compiler
#define _DEV_PARADGM_X86 0x00000015L // Paradigm C/C++ for Beck 1x3
#define _DEV_GNUC_CF_ 0x00000014L // GNU for Coldfire
#define _DEV_KEIL_ARM_ 0x00000013L // Keil ARM
#define _DEV_MSEVC_ 0x00000012L // Microsoft embedded Visual C/C++
#define _DEV_HIGHTEC_GNUC_X86_ 0x00000011L // Hightec elf386 gcc
#define _DEV_MSVC_RTX_ 0x00000010L // VC600 + RTX
#define _DEV_MSVC_V1_5_ 0x0000000FL // Microsoft Visual C/C++ V1.5
#define _DEV_GNUC_ARM7_ 0x0000000EL // GNU Compiler gcc for ARM7
#define _DEV_METROWERKS_CW_ 0x0000000DL // Metrowerks Code Warrior
#define _DEV_MITSUBISHIM16C_ 0x0000000CL //compiler from: Mitsubishi
#define _DEV_GNUC_C16X_ 0x0000000BL // GNU Compiler gcc166 for Infineon C16x
#define _DEV_LINUX_GCC_ 0x0000000AL // Linux GNU Compiler gcc
#define _DEV_GNUC_MPC5X5 0x00000009L // GNU for Motorola PPC5x5
#define _DEV_TASKINGM16C_ 0x00000008L // Tasking for Mitsubishi M16C
#define _DEV_FUJITSU_ 0x00000007L // Fujitsu
#define _DEV_TASKING8_ 0x00000006L // Tasking 8051
#define _DEV_TASKING16_ 0x00000005L // Tasking 166
#define _DEV_KEIL8_ 0x00000004L // Keil C51
#define _DEV_KEIL16_ 0x00000003L // Keil C166
#define _DEV_BORLANDC_ 0x00000002L // Borland C/C++
#define _DEV_MSVC16_ 0x00000001L // Microsoft Visual C/C++
#define _DEV_MSVC32_ 0x00000000L // Microsoft Visual C/C++
// these defines can be used to mask previous elements
#define _DEV_MASK_COMPILER 0x000000FFL
#define _DEV_MASK_BITCOUNT 0x00000F00L
#define _DEV_MASK_ADDSUPPORT 0x0000F000L
#define _DEV_MASK_ALIGNMENT 0x00F00000L
//---------------------------------------------------------------------------
// defines for development system (DEV_SYSTEM) including previous elements
//---------------------------------------------------------------------------
#define _DEV_WIN16_ (_DEV_BIT16_ | _DEV_MSVC16_ )
#define _DEV_WIN32_ (_DEV_BIT32_ | _DEV_MSVC32_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_MSVC_DOS_ (_DEV_BIT32_ | _DEV_MSVC_V1_5_ )
#define _DEV_BORLAND_DOS_ (_DEV_BIT32_ | _DEV_BORLANDC_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_KEIL_C51X_ (_DEV_BIT8_ | _DEV_KEIL8_ | _DEV_BIGEND_ | _DEV_COMMA_EXT_) // at least C51 version 7.05 supports comma extension
#define _DEV_KEIL_C16X_ (_DEV_BIT16_ | _DEV_KEIL16_ | _DEV_COMMA_EXT_) // at least C166 version 5.03 supports comma extension
#define _DEV_TASKING_C51X_ (_DEV_BIT8_ | _DEV_TASKING8_ | _DEV_BIGEND_)
#define _DEV_TASKING_C16X_ (_DEV_BIT16_ | _DEV_TASKING16_ )
#define _DEV_FUJITSU_F590_ (_DEV_BIT8_ | _DEV_FUJITSU_ | _DEV_COMMA_EXT_) // softune is not able to support 64 bit variables QWORD !!!
//f.j.29.04.03 M16C kann effektiv mit Bytes umgehen
//#define _DEV_TASKING_M16C_ (_DEV_BIT16_ | _DEV_TASKINGM16C_ )
#define _DEV_TASKING_M16C_ (_DEV_BIT8_ | _DEV_TASKINGM16C_ )
#define _DEV_MITSUBISHI_M16C_ (_DEV_BIT8_ | _DEV_MITSUBISHIM16C_ )
#define _DEV_GNU_MPC5X5_ (_DEV_BIT32_ | _DEV_GNUC_MPC5X5| _DEV_BIGEND_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_LINUX_ (_DEV_BIT32_ | _DEV_LINUX_GCC_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_C16X_ (_DEV_BIT16_ | _DEV_GNUC_C16X_ ) //| _DEV_COMMA_EXT_)
#define _DEV_MCW_MPC5X5_ (_DEV_BIT32_ | _DEV_METROWERKS_CW_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_ARM7_ (_DEV_BIT32_ | _DEV_GNUC_ARM7_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_)
#define _DEV_WIN32_RTX_ (_DEV_BIT32_ | _DEV_MSVC_RTX_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_HIGHTEC_X86_ (_DEV_BIT32_ | _DEV_HIGHTEC_GNUC_X86_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_WIN_CE_ (_DEV_BIT32_ | _DEV_MSEVC_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_KEIL_CARM_ (_DEV_BIT32_ | _DEV_KEIL_ARM_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_IAR_CARM_ (_DEV_BIT32_ | _DEV_IAR_ARM_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_RVCT_CARM_ (_DEV_BIT32_ | _DEV_RVCT_ARM_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_)
#define _DEV_MCW_MCF5XXX_ (_DEV_BIT32_ | _DEV_METROWERKS_CW_ ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_CF5282_ (_DEV_BIT32_ | _DEV_GNUC_CF_ | _DEV_BIGEND_)
#define _DEV_PAR_BECK1X3_ (_DEV_BIT16_ | _DEV_PARADGM_X86)
#define _DEV_GNU_CF548X_ (_DEV_BIT32_ | _DEV_GNUC_CF_ | _DEV_BIGEND_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_I386_ (_DEV_BIT32_ | _DEV_GNUC_X86_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_)
#define _DEV_GNU_TRICORE_ (_DEV_BIT32_ | _DEV_GNUC_TC_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_ | _DEV_ALIGNMENT_4_)
#define _DEV_MPLAB_DSPIC33F_ (_DEV_BIT16_ | _DEV_MPLAB_C30_ ) //| _DEV_COMMA_EXT_)
#define _DEV_GNU_MIPSEL_ (_DEV_BIT32_ | _DEV_GNUC_MIPS2_ | _DEV_BIGEND_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_)
#define _DEV_RENESAS_M32C_ (_DEV_BIT32_ | _DEV_RENESASM32C)
//---------------------------------------------------------------------------
// usefull macros
//---------------------------------------------------------------------------
#define CHECK_IF_ONLY_INT_MAIN() (DEV_SYSTEM & _DEV_ONLY_INT_MAIN_)
#define CHECK_MEMORY_ALINMENT() (DEV_SYSTEM & _DEV_MASK_ALIGNMENT)
//---------------------------------------------------------------------------
// defines for target system (TARGET_SYSTEM)
//---------------------------------------------------------------------------
#define _DOS_ (16 + 0x10000)
#define _WIN16_ 16
#define _WIN32_ 32
#define _WINCE_ (32 + 0x20000)
#define _NO_OS_ 0
#define _LINUX_ 1
#define _PXROS_ 2
#define _ECOSPRO_ 3
//---------------------------------------------------------------------------
// definitions for function inlining
//---------------------------------------------------------------------------
#define INLINE_FUNCTION // empty define
#undef INLINE_ENABLED // disable actual inlining of functions
#undef INLINE_FUNCTION_DEF // disable inlining for all compilers per default
//---------------------------------------------------------------------------
// definitions for Keil C51
//---------------------------------------------------------------------------
#ifdef __C51__
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_KEIL_C51X_
#pragma DEBUG OBJECTEXTEND
#pragma WARNINGLEVEL(2) // maximum warning level
#define NEAR idata // variables mapped to internal data storage location
#define FAR xdata // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM code // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC xdata // hardware access through external memory (i.e. CAN)
#define LARGE large // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM xdata // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT reentrant
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for GNU Compiler for Infineon C16x
// - it have to be befor Keil (it has __C166__ too)
//---------------------------------------------------------------------------
#elif defined (__GNUC__) && defined (__C166__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_GNU_C16X_
// #define NEAR idata // variables mapped to internal data storage location
#define NEAR near // variables mapped to internal data storage location
// #define FAR xhuge // variables mapped to external data storage location
#define FAR huge // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
// #define HWACC sdata // hardware access through external memory (i.e. CAN)
#define HWACC huge // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
// #define GENERIC xhuge // generic pointer to point to application data
#define GENERIC huge // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#define ASSERT(p) \
if (p) \
{ \
; \
} \
else \
{ \
PRINTF0("Assert failed: " #p " (file %s line %d)\n", __FILE__, (int) __LINE__ ); \
while (1); \
}
#else
#define ASSERT(p)
#endif
//---------------------------------------------------------------------------
// definitions for Keil C166
//---------------------------------------------------------------------------
#elif defined (__C166__) // 24.01.2005 r.d.: Keil ARM7 needs directive 'defined'
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_KEIL_C16X_
#pragma CODE
#pragma MOD167
#pragma NOINIT
#pragma DEBUG
#pragma WARNINGLEVEL(3) // maximum warning level
#pragma WARNING DISABLE = 47 // warning <unreferenced parameter> = OFF
#pragma WARNING DISABLE = 38 // warning <empty translation unit> = OFF
// #pragma WARNING DISABLE = 102 // warning <different const/volatile qualifiers> = OFF
#pragma WARNING DISABLE = 174 // warning <unreferenced 'static' function> = OFF
#pragma WARNING DISABLE = 183 // warning <dead assignement eliminated> = OFF
#define NEAR idata // variables mapped to internal data storage location
#define FAR xhuge // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
// #define HWACC sdata // hardware access through external memory (i.e. CAN)
#define HWACC huge // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC xhuge // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for MPLAB C30 for dsPIC33F series
//---------------------------------------------------------------------------
#elif defined (__C30__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_MPLAB_DSPIC33F_
#define NEAR // variables mapped to internal data storage location
#define FAR // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
// #ifndef QWORD
// #define QWORD long long
// #endif
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for Keil ARM
//---------------------------------------------------------------------------
#elif defined (__CA__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_KEIL_CARM_
#define NEAR // variables mapped to internal data storage location
#define FAR // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef QWORD
#define QWORD long long
#endif
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for RealView ARM compilation tools (provided by recent Keil Microcontroller Development Kits)
//---------------------------------------------------------------------------
#elif defined (__ARMCC_VERSION)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_RVCT_CARM_
#define NEAR // variables mapped to internal data storage location
#define FAR // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef QWORD
#define QWORD long long
#endif
#ifndef NDEBUG
#define ASSERT(expr) if (!(expr)) {\
TRACE0 ("Assertion failed: " #expr );\
while (1);}
#else
#define ASSERT(expr)
#endif
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for ARM IAR C Compiler
//---------------------------------------------------------------------------
#elif defined (__ICCARM__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_IAR_CARM_
#define NEAR // variables mapped to internal data storage location
#define FAR // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef QWORD
#define QWORD long long
#endif
// Workaround:
// If we use IAR and want to debug but don't want to use C-Spy Debugger
// assert() doesn't work in debug mode because it needs support for FILE descriptors
// (_DLIB_FILE_DESCRIPTOR == 1).
#ifndef NDEBUG
#define ASSERT(expr) if (!(expr)) {\
TRACE0 ("Assertion failed: " #expr );\
while (1);}
#else
#define ASSERT(expr)
#endif
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
// #define TRACE PRINTF4
#endif
//---------------------------------------------------------------------------
// definitions for Tasking 8051
//---------------------------------------------------------------------------
#elif defined (_CC51)
#include <cc51.h>
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_TASKING_C51X_
#define NEAR _data // variables mapped to internal data storage location
#define FAR _xdat // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC _xdat // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM _xdat // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT _reentrant
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for Tasking C167CR and C164CI
//---------------------------------------------------------------------------
#elif defined (_C166)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_TASKING_C16X_
#define NEAR near // variables mapped to internal data storage location
#define FAR far // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC /* to be defined */ // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
// Stdio.h has to be alway included here. If printf() is used stdio.h defines NULL
// without checking if it is already included. So an error occurs while compiling.
// (r.d.)
#include <stdio.h> // prototype printf() (for TRACE)
#ifndef NDEBUG
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for FUJITSU FFMC-16LX MB90590
//---------------------------------------------------------------------------
//#elif (defined (F590) || defined (F543) || defined (F598) || defined (F495) || defined (F350))
#elif defined(__COMPILER_FCC907__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_FUJITSU_F590_
#define NEAR /* to be defined */ // variables mapped to internal data storage location
#define FAR /* to be defined */ // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM /* to be defined */ // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC /* to be defined */ // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
// softune is not able to support 64 bit variables QWORD !!!
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for Mitsubishi M16C family for TASKING Compiler CM16
//---------------------------------------------------------------------------
#elif defined (_CM16C)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_TASKING_M16C_
#define NEAR _near // variables mapped to internal data storage location
#define FAR _far // variables mapped to external data storage location
#define CONST _farrom // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC _near // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC _far // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
// do you use memory model SMALL, than you have to set _far
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
// Stdio.h has to be alway included here. If printf() is used stdio.h defines NULL
// without checking if it is already included. So an error occurs while compiling.
// (r.d.)
#include <stdio.h> // prototype printf() (for TRACE)
#ifndef NDEBUG
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for Mitsubishi M16C family for Mitsubishi Compiler NC30
//---------------------------------------------------------------------------
// name NC30, andere Form will der Compiler nicht !!
#elif defined (NC30)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_MITSUBISHI_M16C_
#define NEAR near // variables mapped to internal data storage location
#define FAR far // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC near // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC far // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for Renesas M32C family for Renesas Compiler
//---------------------------------------------------------------------------
#elif defined (NC308)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_RENESAS_M32C_
#define NEAR near // variables mapped to internal data storage location
#define FAR far // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
#define HWACC // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM far // Memory attribute to optimize speed and code of pointer access.
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
// #error ("RENESAS o.k.")
//---------------------------------------------------------------------------
// definitions for ARM7 family with GNU compiler
//---------------------------------------------------------------------------
#elif defined(__GNUC__) && defined(__arm__) && !defined(__LINUX_ARM_ARCH__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_GNU_ARM7_
#define NEAR // variables mapped to internal data storage location
#define FAR // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define HWACC // hardware access through external memory (i.e. CAN)
#define REENTRANT
#define PUBLIC
#ifndef QWORD
#define QWORD long long // i.A. durch Herr Kuschel
#endif
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for Motorola PowerPC family 5x5 (555/565)
// definitions Linux-PC
//---------------------------------------------------------------------------
#elif defined (__GNUC__)
#if defined (LINUX) || defined (linux) || defined (__linux__)
#define LINUX_SYSTEM // define 'LINUX_SYSTEM' uniform for all Linux based systems
// r.d.: We will need an other solution here! There are two sections here which do check the preproc-definitions:
// LINUX and __linux__ . The first one was Linux for PC, the second one is this section for embedded Linux (MCF5xxx).
// But Linux for PC does not need the definitions for embedded Linux.
#endif
// GNU C compiler supports function inlining
#define INLINE_FUNCTION_DEF extern inline
// to actually enable inlining just include the following three lines
// #undef INLINE_FUNCTION
// #define INLINE_FUNCTION INLINE_FUNCTION_DEF
// #define INLINE_ENABLED TRUE
#ifdef PXROS
#define TARGET_SYSTEM _PXROS_
#ifdef __i386__
#undef LINUX // this define seems to be set from compiler
#define DEV_SYSTEM _DEV_HIGHTEC_X86_
#elif defined (__tricore__)
#define DEV_SYSTEM _DEV_GNU_TRICORE_
#else // MPC5x5
#define DEV_SYSTEM _DEV_GNU_MPC5X5_
#endif
#elif defined (LINUX) || defined (__linux__)
#define TARGET_SYSTEM _LINUX_ // Linux definition
#define DEV_SYSTEM _DEV_LINUX_
#elif defined (GNU_CF5282)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_GNU_CF5282_
#elif defined (ECOSPRO_I386_PEAK_PCI)
#define TARGET_SYSTEM _ECOSPRO_
#define DEV_SYSTEM _DEV_GNU_I386_
#elif defined (GNU_CF548X)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_GNU_CF548X_
#else
#error 'ERROR: DEV_SYSTEM not found!'
#endif
#ifndef QWORD
#define QWORD long long int
#endif
#if (TARGET_SYSTEM == _PXROS_)
#ifndef __KERNEL__
#include <string.h>
#endif
#define NEAR // variables mapped to internal data storage location
#define FAR // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM /* to be defined */ // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define HWACC // hardware access through external memory (i.e. CAN)
#define REENTRANT
#define PUBLIC
#ifndef QWORD
#define QWORD long long int
#endif
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
#endif
// ------------------ GNUC for I386 ---------------------------------------------
#if (TARGET_SYSTEM == _LINUX_) || (TARGET_SYSTEM == _ECOSPRO_)
#ifndef __KERNEL__
#include <string.h>
#endif
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#ifndef NEAR
#define NEAR // variables mapped to internal data storage location
#endif
#ifndef FAR
#define FAR // variables mapped to external data storage location
#endif
#ifndef CONST
#define CONST const // variables mapped to ROM (i.e. flash)
#endif
#define LARGE
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#ifndef __KERNEL__
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#else
#define TRACE printk
#endif
#endif
#endif
// ------------------ GNU without OS ---------------------------------------------
#if (TARGET_SYSTEM == _NO_OS_)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#ifndef NEAR
#define NEAR // variables mapped to internal data storage location
#endif
#ifndef FAR
#define FAR // variables mapped to external data storage location
#endif
#ifndef CONST
#define CONST const // variables mapped to ROM (i.e. flash)
#endif
#define LARGE
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
// #include "xuartdrv.h"
// #include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
// #define TRACE mprintf
// #ifndef TRACE
// #define TRACE trace
// void trace (char *fmt, ...);
// #endif
#endif
#endif
//---------------------------------------------------------------------------
// definitions for MPC565
//---------------------------------------------------------------------------
#elif __MWERKS__
#ifdef __MC68K__
#define TARGET_SYSTEM = _MCF548X_
#define DEV_SYSTEM _DEV_MCW_MCF5XXX_
#else
#define TARGET_SYSTEM = _MPC565_
#define DEV_SYSTEM _DEV_MCW_MPC5X5_
#endif
#define NEAR // variables mapped to internal data storage location
#define FAR // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define LARGE // functions set parameters to external data storage location
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define HWACC // hardware access through external memory (i.e. CAN)
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#include <stdio.h> // prototype printf() (for TRACE)
#define TRACE printf
#endif
//---------------------------------------------------------------------------
// definitions for BECK 1x3
//---------------------------------------------------------------------------
#elif defined (__BORLANDC__) && defined (__PARADIGM__)
#define TARGET_SYSTEM _NO_OS_
#define DEV_SYSTEM _DEV_PAR_BECK1X3_
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define NEAR __near // variables mapped to internal data storage location
#define FAR __far // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define LARGE
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#ifndef TRACE
#include <stdio.h>
#define TRACE printf
#endif
#endif
//---------------------------------------------------------------------------
// definitions for PC
//---------------------------------------------------------------------------
#elif defined (__BORLANDC__)
// ------------------ definition target system --------------------------
#ifdef _WIN32
#define TARGET_SYSTEM _WIN32_ // WIN32 definition
#define DEV_SYSTEM _DEV_WIN32_
#else
#define TARGET_SYSTEM _DOS_
#define DEV_SYSTEM _DEV_BORLAND_DOS_
#endif
// ------------------ WIN32 ---------------------------------------------
#if (TARGET_SYSTEM == _WIN32_)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#ifndef NEAR
#define NEAR // variables mapped to internal data storage location
#endif
#ifndef FAR
#define FAR // variables mapped to external data storage location
#endif
#ifndef CONST
#define CONST const // variables mapped to ROM (i.e. flash)
#endif
#define LARGE
#define REENTRANT
#define PUBLIC __stdcall
#ifndef NDEBUG
#ifndef TRACE
#include <stdio.h>
#define TRACE printf
#endif
#endif
#elif (TARGET_SYSTEM == _DOS_)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define NEAR near // variables mapped to internal data storage location
#define FAR far // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define LARGE
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#ifndef TRACE
#include <stdio.h>
#define TRACE printf
#endif
#endif
#endif
#elif (_MSC_VER == 800) // PC MS Visual C/C++ for DOS applications
#define TARGET_SYSTEM _DOS_
#define DEV_SYSTEM _DEV_MSVC_DOS_
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC near // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#define NEAR near // variables mapped to internal data storage location
#define FAR far // variables mapped to external data storage location
#define CONST const // variables mapped to ROM (i.e. flash)
#define LARGE
#define REENTRANT
#define PUBLIC
#ifndef NDEBUG
#ifndef TRACE
#include <stdio.h>
#define TRACE printf
#endif
#endif
//---------------------------------------------------------------------------
// definitions for RTX under WIN32
//---------------------------------------------------------------------------
#elif (defined (UNDER_RTSS) && defined (WIN32))
// ------------------ definition target system --------------------------
#define TARGET_SYSTEM _WIN32_RTX_
#define DEV_SYSTEM _DEV_WIN32_RTX_
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#ifndef NEAR
#define NEAR // variables mapped to internal data storage location
#endif
#ifndef FAR
#define FAR // variables mapped to external data storage location
#endif
#ifndef CONST
#define CONST const // variables mapped to ROM (i.e. flash)
#endif
#define LARGE
#define REENTRANT
#define PUBLIC __stdcall
#ifndef NDEBUG
#ifndef TRACE
#define TRACE RtPrintf
#endif
#endif
//---------------------------------------------------------------------------
// definitions for WinCE
//---------------------------------------------------------------------------
#elif defined (_WIN32_WCE)
// ------------------ definition target system --------------------------
#define TARGET_SYSTEM _WINCE_
#define DEV_SYSTEM _DEV_WIN_CE_
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#ifndef NEAR
#define NEAR // variables mapped to internal data storage location
#endif
#ifndef FAR
#define FAR // variables mapped to external data storage location
#endif
#ifndef CONST
#define CONST const // variables mapped to ROM (i.e. flash)
#endif
#define LARGE
#ifndef QWORD
//#define QWORD long long int // MSVC .NET can use "long long int" too (like GNU)
#define QWORD __int64
#endif
#define REENTRANT
#define PUBLIC __cdecl
#ifdef ASSERTMSG
#undef ASSERTMSG
#endif
#ifndef NDEBUG
#ifndef TRACE
#define TRACE printf
// void trace (char *fmt, ...);
#endif
#endif
#else // ===> PC MS Visual C/C++
// ------------------ definition target system --------------------------
#ifdef _WIN32
#define TARGET_SYSTEM _WIN32_ // WIN32 definition
#define DEV_SYSTEM _DEV_WIN32_
#else
#define TARGET_SYSTEM _WIN16_ // WIN16 definition
#define DEV_SYSTEM _DEV_WIN16_
#endif
// ------------------ WIN16 ---------------------------------------------
#if (TARGET_SYSTEM == _WIN16_)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#ifndef NEAR
#define NEAR // variables mapped to internal data storage location
#endif
#ifndef FAR
#define FAR far // variables mapped to external data storage location
#endif
#ifndef CONST
#define CONST const // variables mapped to ROM (i.e. flash)
#endif
#define LARGE
#define REENTRANT
#define PUBLIC _far _pascal _export
#ifndef NDEBUG
#ifndef TRACE
#define TRACE trace
#ifdef __cplusplus
extern "C"
{
#endif
void trace (const char *fmt, ...);
#ifdef __cplusplus
}
#endif
#endif
#endif
#endif
// ------------------ WIN32 ---------------------------------------------
#if (TARGET_SYSTEM == _WIN32_)
#define ROM // code or variables mapped to ROM (i.e. flash)
// usage: CONST BYTE ROM foo = 0x00;
#define HWACC // hardware access through external memory (i.e. CAN)
// These types can be adjusted by users to match application requirements. The goal is to
// minimize code memory and maximize speed.
#define GENERIC // generic pointer to point to application data
// Variables with this attribute can be located in external
// or internal data memory.
#define MEM // Memory attribute to optimize speed and code of pointer access.
#ifndef NEAR
#define NEAR // variables mapped to internal data storage location
#endif
#ifndef FAR
#define FAR // variables mapped to external data storage location
#endif
#ifndef CONST
#define CONST const // variables mapped to ROM (i.e. flash)
#endif
#define LARGE
#define REENTRANT
#define PUBLIC __stdcall
#ifndef QWORD
//#define QWORD long long int // MSVC .NET can use "long long int" too (like GNU)
#define QWORD __int64
#endif
#ifndef NDEBUG
#ifndef TRACE
#define TRACE trace
#ifdef __cplusplus
extern "C"
{
#endif
void trace (const char *fmt, ...);
#ifdef __cplusplus
}
#endif
#endif
#endif
// MS Visual C++ compiler supports function inlining
#define INLINE_FUNCTION_DEF __forceinline
// to actually enable inlining just include the following two lines
// #define INLINE_FUNCTION INLINE_FUNCTION_DEF
// #define INLINE_ENABLED TRUE
#endif
#endif // ===> PC
//---------------------------------------------------------------------------
// definitions of basic types
//---------------------------------------------------------------------------
#ifndef _WINDEF_ // defined in WINDEF.H, included by <windows.h>
// --- arithmetic types ---
#ifndef SHORT
#define SHORT short int
#endif
#ifndef USHORT
#define USHORT unsigned short int
#endif
#ifndef INT
#define INT int
#endif
#ifndef UINT
#define UINT unsigned int
#endif
#ifndef LONG
#define LONG long int
#endif
#ifndef ULONG
#define ULONG unsigned long int
#endif
// --- logic types ---
#ifndef BYTE
#define BYTE unsigned char
#endif
#ifndef WORD
#define WORD unsigned short int
#endif
#ifndef DWORD
#define DWORD unsigned long int
#endif
#ifndef BOOL
#define BOOL unsigned char
#endif
// --- alias types ---
#ifndef TRUE
#define TRUE 0xFF
#endif
#ifndef FALSE
#define FALSE 0x00
#endif
#ifndef NULL
#define NULL ((void *) 0)
#endif
#endif
#ifndef _TIME_OF_DAY_DEFINED_
typedef struct
{
unsigned long int m_dwMs;
unsigned short int m_wDays;
} tTimeOfDay;
#define _TIME_OF_DAY_DEFINED_
#endif
//---------------------------------------------------------------------------
// Definition von TRACE
//---------------------------------------------------------------------------
#ifndef NDEBUG
#ifndef TRACE0
#define TRACE0(p0) TRACE(p0)
#endif
#ifndef TRACE1
#define TRACE1(p0, p1) TRACE(p0, p1)
#endif
#ifndef TRACE2
#define TRACE2(p0, p1, p2) TRACE(p0, p1, p2)
#endif
#ifndef TRACE3
#define TRACE3(p0, p1, p2, p3) TRACE(p0, p1, p2, p3)
#endif
#ifndef TRACE4
#define TRACE4(p0, p1, p2, p3, p4) TRACE(p0, p1, p2, p3, p4)
#endif
#ifndef TRACE5
#define TRACE5(p0, p1, p2, p3, p4, p5) TRACE(p0, p1, p2, p3, p4, p5)
#endif
#ifndef TRACE6
#define TRACE6(p0, p1, p2, p3, p4, p5, p6) TRACE(p0, p1, p2, p3, p4, p5, p6)
#endif
#else
#ifndef TRACE0
#define TRACE0(p0)
#endif
#ifndef TRACE1
#define TRACE1(p0, p1)
#endif
#ifndef TRACE2
#define TRACE2(p0, p1, p2)
#endif
#ifndef TRACE3
#define TRACE3(p0, p1, p2, p3)
#endif
#ifndef TRACE4
#define TRACE4(p0, p1, p2, p3, p4)
#endif
#ifndef TRACE5
#define TRACE5(p0, p1, p2, p3, p4, p5)
#endif
#ifndef TRACE6
#define TRACE6(p0, p1, p2, p3, p4, p5, p6)
#endif
#endif
//---------------------------------------------------------------------------
// definition of ASSERT
//---------------------------------------------------------------------------
#ifndef ASSERT
#if !defined (__linux__) && !defined (__KERNEL__)
#include <assert.h>
#ifndef ASSERT
#define ASSERT(p) assert(p)
#endif
#else
#define ASSERT(p)
#endif
#endif
//---------------------------------------------------------------------------
// SYS TEC extensions
//---------------------------------------------------------------------------
// This macro doesn't print out C-file and line number of the failed assertion
// but a string, which exactly names the mistake.
#ifndef NDEBUG
#define ASSERTMSG(expr,string) if (!(expr)) {\
PRINTF0 ("Assertion failed: " string );\
while (1);}
#else
#define ASSERTMSG(expr,string)
#endif
//---------------------------------------------------------------------------
#endif // #ifndef _GLOBAL_H_
// Please keep an empty line at the end of this file.