arch.inc
/*
arch.inc
AVA Micro-controller (MCU) Declarations
This file is automatically included to every assembler source
immediately after architecture definition line:
#arch MCU_NAME
Uros Platise (c) 1998-1999
Last update: Sat Jun 12 03:34:55 CEST 1999
AVR FAMILY MICRO-CONTROLLERS
Supported models:
- ATtiny10
- ATtiny11
- ATtiny12
- ATtiny22
- AT90S1200
- AT90S2313
- AT90S2323
- AT90S2333
- AT90S2343
- AT90S4414
- AT90S4433
- AT90S4434
- AT90S8515
- AT90C8534
- AT90S8535
- ATmega603
- ATmega103
The following macros are set for the AVR family:
* __AVR 1|2|3 ; instruction power
* __ERAM_SIZE ; size of the internal SRAM data memory
; The __ERAM_SIZE should be daclared before
; calling the #arch <model> if system provides more
; memory
* __ERAM_END ; address of the last byte in the data memory
* __AVR_IOMAP ; if AVR features standard I/O mapped registers
* __AVR_WRAP_AROUND ; special feature of the 8 kb flash device
*/
/*
Current Version
Produce error if arch versions do not match between object files.
*/
#define public __AVA_ARCH_VER 5
#if ATtiny10 | ATtiny11
device AVR 1
#define __AVR 1
#define __ERAM_SIZE 0 /* no memory no option */
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=1024 align=2 flash
#endif
#if AT90S1200 | ATtiny12
device AVR 1
#define __AVR 1
#define __ERAM_SIZE 0 /* no memory no option */
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=64 eeprom
seg abs=0 size=1024 align=2 flash /* the default segment! */
#endif
#if AT90S2313 | AT90S2323 | AT90S2333 | AT90S2343 | ATtiny22
device AVR 2
#define __AVR 2
#ifndef __ERAM_SIZE
#define __ERAM_SIZE 224 /* 128 of sram + 96 of i/o mapped */
#endif
#define __AVR_IOMAP
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=128 eeprom
seg abs=0 size=2048 align=2 flash
#endif
#if AT90S4414 | AT90S4434
device AVR 2
#define __AVR 2
#ifndef __ERAM_SIZE
# define __ERAM_SIZE 0x160 /* defaults to internal memory size */
#endif
#define __AVR_IOMAP
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=256 eeprom
seg abs=0 size=4096 align=2 flash
#endif
#if AT90S4433
device AVR 2
#define __AVR 2
#ifndef __ERAM_SIZE
# define __ERAM_SIZE 224
#endif
#define __AVR_IOMAP
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=256 eeprom
seg abs=0 size=4096 align=2 flash
#endif
#if AT90C8534
device AVR 2
#define __AVR 2
#define public __AVR_WRAP_AROUND
#ifndef __ERAM_SIZE
# define __ERAM_SIZE 0x160
#endif
#define __AVR_IOMAP
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=512 eeprom
seg abs=0 size=8192 align=2 flash
#endif
#if AT90S8515 | AT90S8535
device AVR 2
#define __AVR 2
#define public __AVR_WRAP_AROUND
#ifndef __ERAM_SIZE
# define __ERAM_SIZE 0x260
#endif
#define __AVR_IOMAP
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=512 eeprom
seg abs=0 size=8192 align=2 flash
#endif
/* AVR MEGA FAMILY 64kb and 128kb FLASH */
#if ATmega603
device AVR 3
#define __AVR 3
#ifndef __ERAM_SIZE
# define __ERAM_SIZE 0x1000
#endif
#define __AVR_IOMAP
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=2048 eeprom
seg abs=0 size=0x10000 align=2 flash
#endif
#if ATmega103
device AVR 3
#define __AVR 3
#ifndef __ERAM_SIZE
# define __ERAM_SIZE 0x1000
#endif
#define __AVR_IOMAP
seg abstract abs=0 size=__ERAM_SIZE eram
seg abs=0 size=4096 eeprom
seg abs=0 size=0x20000 align=2 flash
#endif
/*
AVR Standard Memory Mapped Registers
*/
#ifdef __AVR_IOMAP
seg abs=0 size=32 eram.registers
seg abs=32 size=64 eram.io_space
seg flash /* set default segment */
#endif
#ifdef __ERAM_SIZE
# ifndef __ERAM_END /* if end of ram is not explicitly defined */
# define __ERAM_END (__ERAM_SIZE - 1)
# endif
#endif
/*
AVR - AVA Default Settings
*/
#ifdef __AVR
#ifndef __avr_noendianbug
# define public __avr_noendianbug 0 /* 0 = With Endian Bug */
#endif /* 1 = No Endian Bug */
#endif
/*
Update Default Settings
*/
#configure
/* end of arch.inc */
Back
|