-/** @file main.c
- xa51 specific general functions.
-
- Note that mlh prepended _xa51_ on the static functions. Makes
- it easier to set a breakpoint using the debugger.
+/* @file main.c
+ xa51 specific general functions.
*/
+
#include "common.h"
#include "main.h"
#include "ralloc.h"
{
port->mem.default_local_map = istack;
port->mem.default_globl_map = xdata;
+ if (options.model!=MODEL_PAGE0) {
+ fprintf (stderr, "-mxa51 only supports --model-page0\n");
+ exit (1);
+ }
}
static void
options.intlong_rent=1;
options.float_rent=1;
options.stack_loc=0x100;
+ options.data_loc=0;
}
static const char *
symbol *mainExists=newSymbol("main", 0);
mainExists->block=0;
- fprintf (of, "_errno\tsfr\t0x00; to keep the fp-lib's happy for now\n\n");
-
if ((mainExists=findSymWithLevel(SymbolTab, mainExists))) {
- fprintf (of, "\t.area CSEG\t(CODE)\n");
+ fprintf (of, "\t.area GSINIT\t(CODE)\n");
fprintf (of, "__interrupt_vect:\n");
fprintf (of, "\t.dw\t0x8f00\n");
fprintf (of, "\t.dw\t__sdcc_gsinit_startup\n");
fprintf (of, "\n");
fprintf (of, "__sdcc_gsinit_startup:\n");
- fprintf (of, "\tmov.b\t_SCR,#0x01\t; page zero mode\n");
+ //fprintf (of, ";\tmov.b\t_SCR,#0x01\t; page zero mode\n");
+ fprintf (of, "\t.db 0x96,0x48,0x40,0x01\n");
fprintf (of, "\tmov\tr7,#0x%04x\n", options.stack_loc);
fprintf (of, "\tcall\t_external_startup\n");
_xa51_genXINIT(of);
+ fprintf (of, "\t.area CSEG\t(CODE)\n");
fprintf (of, "\tcall\t_main\n");
fprintf (of, "\treset\t;main should not return\n");
}
return 1;
}
-#if 0
/** $1 is always the basename.
$2 is always the output file.
$3 varies
*/
static const char *_linkCmd[] =
{
- "{bindir}{sep}aslink", "-nf", "$1", NULL
+ "xa_link", "", "$1", NULL
};
-#endif
/* $3 is replaced by assembler.debug_opts resp. port->assembler.plain_opts */
static const char *_asmCmd[] =
{
- "xa_asm", "$l", "$3", "$1.xa", NULL
+ "xa_rasm", "$l", "$3", "$1.asm", NULL
};
/* Globals */
"MCU 80C51XA", /* Target name */
{
FALSE, /* Emit glue around main */
- MODEL_LARGE,
- MODEL_LARGE
+ MODEL_PAGE0,
+ MODEL_PAGE0
},
{
_asmCmd,
"", /* Options with debug */
"", /* Options without debug */
0,
- ".xa",
+ ".asm",
NULL /* no do_assemble function */
},
{
- NULL, //_linkCmd,
+ _linkCmd,
+ NULL,
NULL,
- xa_link,
".rel"
},
{
{
-1, // stack grows down
0, // bank overhead NUY
- 6, // isr overhead
- 4, // function call overhead
+ 4, // isr overhead, page zero mode
+ 2, // function call overhead, page zero mode
0, // reentrant overhead NUY
0 // banked overhead NUY
},
TRUE, // use_dw_for_init
0, /* leave lt */
0, /* leave gt */
- 0, /* transform <= to ! > */
- 0, /* transform >= to ! < */
- 0, /* transform != to !(a == b) */
+ 1, /* transform <= to ! > */
+ 1, /* transform >= to ! < */
+ 1, /* transform != to !(a == b) */
0, /* leave == */
FALSE, /* No array initializer support. */
cseCostEstimation,