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
00039 #define strcasecmp(s1, s2) strcmp(s1, s2)
00040
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
00057 #define parity_even_bit(x) (0)
00058
00059
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
00096
00097 #include <iom103.h>
00098
00099 #ifndef DOR
00100 #define DOR OVR
00101 #endif
00102
00103 #endif
00104
00105
00106
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
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
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