static int regParmFlg = 0; /* determine if we can register a parameter */
+static void _avr_init(void)
+{
+ asm_addTree(&asm_asxxxx_mapping);
+}
+
static void _avr_reset_regparm()
{
regParmFlg = 0;
BIT-ACCESS - NO
CODE-ACESS - NO
DEBUG-NAME - 'B'
- POINTER-TYPE - POINTER
+ POINTER-TYPE - FPOINTER
*/
istack = allocMap (0, 1, 0, 0, 0, 0,options.stack_loc, ISTACK_NAME,'B',FPOINTER);
+ /* also change xdata to be direct space since we can use lds/sts */
+ xdata->direct = 1;
+
}
static void _avr_setDefaultOptions(void)
"ATMEL AVR", /* Target name */
{
TRUE, /* Emit glue around main */
+ MODEL_LARGE | MODEL_SMALL,
+ MODEL_SMALL
},
{
_asmCmd,
"-plosgffc", /* Options with debug */
"-plosgff", /* Options without debug */
+ 0
},
{
- _linkCmd
+ _linkCmd,
+ NULL,
+ ".rel"
},
{
_defaultRules
"GSINIT (CODE)",
"OSEG (OVR,DATA)",
"GSFINAL (CODE)",
+ "HOME (CODE)",
NULL,
NULL,
+ 0,
},
{
- -1, 1, 4, 1, 1
+ -1, 1, 4, 1, 1, 0
},
/* avr has an 8 bit mul */
{
- 1
+ 1, 0
},
- NULL,
+ "_",
+ _avr_init,
_avr_parseOptions,
_avr_finaliseOptions,
_avr_setDefaultOptions,
_avr_genAssemblerPreamble,
_avr_genIVT,
_avr_reset_regparm,
- _avr_regparm
+ _avr_regparm,
+ NULL,
+ FALSE,
+ 0, /* leave lt */
+ 1, /* transform gt ==> not le */
+ 0, /* leave le */
+ 0, /* leave ge */
+ 0, /* leave != */
+ 0, /* leave == */
+
};