/* * \file * This file contains a set of configuration for using SDCC as a compiler. * Modified from z80 port for cc2430 port. * * \author * Takahide Matsutsuka (Original) * George Oikonomou - * (recent updates for the sensinode/cc2430 port) */ #ifndef E051_DEF_H_ #define E051_DEF_H_ #include /* This port no longer implements the legacy clock_delay. Hack its usages * outta the way till it gets phased out completely * NB: This also overwrites the prototype so delay_usec() is declared twice */ #define clock_delay(t) clock_delay_usec(t) /* * lint - style defines to help syntax parsers with sdcc-specific 8051 code * They don't interfere with actual compilation */ #if !defined(__SDCC_mcs51) && !defined(SDCC_mcs51) #define __data #define __xdata #define __code #define __bit bool #define __sfr volatile unsigned char #define __sbit volatile bool #define __critical #define __at(x) #define __using(x) #define __interrupt(x) #define __naked #endif #define CC_CONF_FUNCTION_POINTER_ARGS 1 #define CC_CONF_VA_ARGS 1 #define CC_CONF_UNSIGNED_CHAR_BUGS 0 #define CC_CONF_REGISTER_ARGS 0 #define CC_CONF_FUNCTION_POINTER_KEYWORD __reentrant #define CC_CONF_NON_BANKED_OPTIMIZATION 1 #if (defined(__SDCC_mcs51) || defined(SDCC_mcs51)) && CC_CONF_NON_BANKED_OPTIMIZATION #define CC_NON_BANKED __nonbanked #else #define CC_NON_BANKED #endif /* * Max Stack Depth manipulation. It is possible to get up to 247 bytes * allocated for the stack if: * - You set this to 1 and * - You have a patched toolchain and * - You don't use __bit variables * - You do not link libraries using BIT registers (e.g. printf_large) * Enabling this will mean ISRs will NOT push bits (#pragma exclude bits) so * make sure you know what you're doing * * More information on the wiki */ #define CC_CONF_OPTIMIZE_STACK_SIZE 0 #if CC_CONF_OPTIMIZE_STACK_SIZE #define CC_AT_DATA #else #define CC_AT_DATA __data #endif /* Generic types. */ typedef unsigned short uip_stats_t; /* Time type. */ typedef unsigned short clock_time_t; #define MAX_TICKS (~((clock_time_t)0) / 2) /* Defines tick counts for a second. */ #define CLOCK_CONF_SECOND 128 /* Compiler configurations */ #define CCIF #define CLIF /* Single asm instruction without messing up syntax highlighting */ #if defined(__SDCC_mcs51) || defined(SDCC_mcs51) #define ASM(x) __asm \ x \ __endasm #else #define ASM(x) #endif /* Critical section management */ #define DISABLE_INTERRUPTS() do {EA = 0;} while(0) #define ENABLE_INTERRUPTS() do {EA = 1;} while(0) /* Macro for a soft reset. */ #define SOFT_RESET() do {((void (__code *) (void)) 0x0000) ();} while(0) /* We don't provide architecture-specific checksum calculations */ #define UIP_ARCH_ADD32 0 #define UIP_ARCH_CHKSUM 0 #define CC_CONF_ASSIGN_AGGREGATE(dest, src) \ memcpy(dest, src, sizeof(*dest)) #define uip_ipaddr_copy(dest, src) \ memcpy(dest, src, sizeof(*dest)) #endif /* E051_DEF_H_ */