/* ACC -- Automatic Compiler Configuration Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer All Rights Reserved. This software is a copyrighted work licensed under the terms of the GNU General Public License. Please consult the file "ACC_LICENSE" for details. Markus F.X.J. Oberhumer http://www.oberhumer.com/ */ /* * Memory Model - exactly one of: * * ACC_MM_FLAT [default] * ACC_MM_TINY * ACC_MM_SMALL * ACC_MM_MEDIUM * ACC_MM_COMPACT * ACC_MM_LARGE * ACC_MM_HUGE */ #if (ACC_OS_DOS16 || ACC_OS_OS216 || ACC_OS_WIN16) #if (UINT_MAX != ACC_0xffffL) # error "this should not happen" #endif #if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM) # define ACC_MM_TINY 1 #elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM) # define ACC_MM_HUGE 1 #elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL) # define ACC_MM_SMALL 1 #elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM) # define ACC_MM_MEDIUM 1 #elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM) # define ACC_MM_COMPACT 1 #elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL) # define ACC_MM_LARGE 1 #elif (ACC_CC_AZTECC) # if defined(_LARGE_CODE) && defined(_LARGE_DATA) # define ACC_MM_LARGE 1 # elif defined(_LARGE_CODE) # define ACC_MM_MEDIUM 1 # elif defined(_LARGE_DATA) # define ACC_MM_COMPACT 1 # else # define ACC_MM_SMALL 1 # endif #elif (ACC_CC_ZORTECHC && defined(__VCM__)) # define ACC_MM_LARGE 1 #else # error "unknown memory model" #endif /* ACC_HAVE_MM_HUGE_PTR ... working __huge pointers * ACC_HAVE_MM_HUGE_ARRAY ... char __huge x[256*1024L] works */ #define ACC_HAVE_MM_HUGE_PTR 1 #define ACC_HAVE_MM_HUGE_ARRAY 1 #if (ACC_MM_TINY) # undef ACC_HAVE_MM_HUGE_ARRAY #endif #if (ACC_CC_AZTECC || ACC_CC_PACIFICC || ACC_CC_ZORTECHC) # undef ACC_HAVE_MM_HUGE_PTR # undef ACC_HAVE_MM_HUGE_ARRAY #elif (ACC_CC_DMC || ACC_CC_SYMANTECC) # undef ACC_HAVE_MM_HUGE_ARRAY #elif (ACC_CC_MSC && defined(_QC)) # undef ACC_HAVE_MM_HUGE_ARRAY # if (_MSC_VER < 600) # undef ACC_HAVE_MM_HUGE_PTR # endif #elif (ACC_CC_TURBOC && (__TURBOC__ < 0x0295)) # undef ACC_HAVE_MM_HUGE_ARRAY #elif (ACC_CC_WATCOMC && (__WATCOMC__ >= 1200)) /* pointer arithmetics with __huge arrays seems broken in OpenWatcom 1.x */ # undef ACC_HAVE_MM_HUGE_ARRAY #endif #ifdef __cplusplus extern "C" { #endif #if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0200)) extern void __near __cdecl _AHSHIFT(void); # define ACC_MM_AHSHIFT ((unsigned) _AHSHIFT) #elif (ACC_CC_DMC || ACC_CC_SYMANTECC || ACC_CC_ZORTECHC) extern void __near __cdecl _AHSHIFT(void); # define ACC_MM_AHSHIFT ((unsigned) _AHSHIFT) #elif (ACC_CC_MSC || ACC_CC_TOPSPEEDC) extern void __near __cdecl _AHSHIFT(void); # define ACC_MM_AHSHIFT ((unsigned) _AHSHIFT) #elif (ACC_CC_TURBOC && (__TURBOC__ >= 0x0295)) extern void __near __cdecl _AHSHIFT(void); # define ACC_MM_AHSHIFT ((unsigned) _AHSHIFT) #elif ((ACC_CC_AZTECC || ACC_CC_PACIFICC || ACC_CC_TURBOC) && ACC_OS_DOS16) # define ACC_MM_AHSHIFT 12 #elif (ACC_CC_WATCOMC) extern unsigned char _HShift; # define ACC_MM_AHSHIFT ((unsigned) _HShift) #else # error "FIXME - implement ACC_MM_AHSHIFT" #endif #ifdef __cplusplus } /* extern "C" */ #endif #elif (ACC_ARCH_C166) #if !defined(__MODEL__) # error "FIXME - C166 __MODEL__" #elif ((__MODEL__) == 0) # define ACC_MM_SMALL 1 #elif ((__MODEL__) == 1) # define ACC_MM_SMALL 1 #elif ((__MODEL__) == 2) # define ACC_MM_LARGE 1 #elif ((__MODEL__) == 3) # define ACC_MM_TINY 1 #elif ((__MODEL__) == 4) # define ACC_MM_XTINY 1 #elif ((__MODEL__) == 5) # define ACC_MM_XSMALL 1 #else # error "FIXME - C166 __MODEL__" #endif #elif (ACC_ARCH_MCS251) #if !defined(__MODEL__) # error "FIXME - MCS251 __MODEL__" #elif ((__MODEL__) == 0) # define ACC_MM_SMALL 1 #elif ((__MODEL__) == 2) # define ACC_MM_LARGE 1 #elif ((__MODEL__) == 3) # define ACC_MM_TINY 1 #elif ((__MODEL__) == 4) # define ACC_MM_XTINY 1 #elif ((__MODEL__) == 5) # define ACC_MM_XSMALL 1 #else # error "FIXME - MCS251 __MODEL__" #endif #elif (ACC_ARCH_MCS51) #if !defined(__MODEL__) # error "FIXME - MCS51 __MODEL__" #elif ((__MODEL__) == 1) # define ACC_MM_SMALL 1 #elif ((__MODEL__) == 2) # define ACC_MM_LARGE 1 #elif ((__MODEL__) == 3) # define ACC_MM_TINY 1 #elif ((__MODEL__) == 4) # define ACC_MM_XTINY 1 #elif ((__MODEL__) == 5) # define ACC_MM_XSMALL 1 #else # error "FIXME - MCS51 __MODEL__" #endif #else # define ACC_MM_FLAT 1 #endif #if (ACC_MM_FLAT) # define ACC_INFO_MM "flat" #elif (ACC_MM_TINY) # define ACC_INFO_MM "tiny" #elif (ACC_MM_SMALL) # define ACC_INFO_MM "small" #elif (ACC_MM_MEDIUM) # define ACC_INFO_MM "medium" #elif (ACC_MM_COMPACT) # define ACC_INFO_MM "compact" #elif (ACC_MM_LARGE) # define ACC_INFO_MM "large" #elif (ACC_MM_HUGE) # define ACC_INFO_MM "huge" #else # error "unknown memory model" #endif /* vi:ts=4:et */