Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages   Examples  

compiler.h

00001 #ifndef _COMPILER_H_
00002 #define _COMPILER_H_
00003 
00004 #ifdef __IMAGECRAFT__
00005 
00006 #include <macros.h>
00007 #include <eeprom.h>
00008 
00009 #ifndef CONST
00010 #define CONST
00011 #endif
00012 
00013 #ifndef INLINE
00014 #define INLINE
00015 #endif
00016 
00017 #define __bss_end   _bss_end
00018 
00019 #define __attribute__(x)  
00020 
00021 #define PSTR(p)     (p)
00022 #define PRG_RDB(p)  (*p)
00023 
00024 #define prog_char const char
00025 #define PGM_P prog_char *
00026 
00027 #define strlen_P(x) cstrlen(x)
00028 
00029 #define memcpy_P(dst, src, size)    \
00030 {                                   \
00031     u_short _i;                     \
00032     u_char *d = dst;                \
00033     const u_char *s = src;          \
00034     for(_i = 0; _i < size; _i++)    \
00035         *d++ = *s++ ;               \
00036 }
00037 
00038 /* FIXME */
00039 #define strcasecmp(s1, s2)  strcmp(s1, s2)
00040 /* FIXME */
00041 #define strncasecmp(s1, s2, n)  strncmp(s1, s2, n)
00042 
00043 #define BV(x)       BIT(x)
00044 
00045 #define cli()           CLI()
00046 #define sei()           SEI()
00047 #define cbi(reg, bit)   (reg &= ~BIT(bit))
00048 #define sbi(reg, bit)   (reg |= BIT(bit))
00049 
00050 
00051 #define loop_until_bit_is_set(reg, bit) while((reg & BIT(bit)) == 0)
00052 
00053 #define bit_is_clear(reg, bit)  ((reg & BIT(bit)) == 0)
00054 #define bit_is_set(reg, bit)    ((reg & BIT(bit)) != 0)
00055 
00056 /* FIXME */
00057 #define parity_even_bit(x)  (0)
00058 
00059 /* FIXME */
00060 #define SIGNAL(x)   void x(void)  
00061 
00062 #define outp(val, reg)  (reg = val)
00063 #define inp(reg)        (reg)
00064 
00065 #include <eeprom.h>
00066 
00067 #ifdef _MCU_enhanced
00068 
00069 #include <iom128.h>
00070 #define __AVR_ATmega128__
00071 #ifndef RAMEND
00072 #define RAMEND  0x10FF
00073 
00074 #ifndef UDR
00075 #define UDR     UDR0
00076 #define UBRR    UBRR0L
00077 #define USR     UCSR0A
00078 #define UCR     UCSR0B
00079 #define EICR    EICRB
00080 #define RXC     RXC0
00081 #define UDRE    UDRE0
00082 #define FE      FE0
00083 #define DOR     DOR0
00084 #define RXCIE   RXCIE0
00085 #define TXCIE   TXCIE0
00086 #define RXEN    RXEN0
00087 #define TXEN    TXEN0
00088 #endif
00089 
00090 #endif
00091 #ifndef SRW
00092 #define SRW  6
00093 #endif
00094 
00095 #else   /* ATmega103 */
00096 
00097 #include <iom103.h>
00098 
00099 #ifndef DOR
00100 #define DOR  OVR
00101 #endif
00102 
00103 #endif
00104 
00105 //#define eeprom_read_block(dst, addr, size)  EEPROMReadBytes(addr, (void *)dst, size)
00106 //#define eeprom_wb(addr, src)                EEPROMWriteBytes(addr, (void *)src, 1)
00107 
00108 #define eeprom_read_block(dst, addr, size)  EEPROMReadBytes(addr, dst, size)
00109 #define eeprom_wb(addr, src)                EEPROMWriteBytes(addr, &src, 1)
00110 
00111 #else   /* GCC -------------------------------------------------------------- */
00112 
00113 #define CONST   const
00114 #define INLINE  inline
00115 
00116 #include <avr/io.h>
00117 #include <avr/interrupt.h>
00118 #include <avr/signal.h>
00119 #include <avr/eeprom.h>
00120 #include <avr/pgmspace.h>
00121 
00122 #ifndef __SFR_OFFSET
00123 #define __SFR_OFFSET    0
00124 #endif
00125 
00126 #endif  /* GCC */
00127 
00128 
00129 
00130 extern void * __bss_end;
00131 extern void * __heap_start;
00132 
00133 #ifdef __AVR_ATmega128__
00134 #define RAMSTART    ((void *)0x100)
00135 #else
00136 #define RAMSTART    ((void *)0x60)
00137 #endif
00138 
00139 #endif
00140 

Generated on Thu Jan 30 22:30:44 2003 for EduNet by doxygen1.2.18