-#include "common.h"
-#include "ralloc.h"
+#include "z80.h"
static char _defaultRules[] =
{
#include "peeph.rul"
+#include "peeph-z80.rul"
};
+Z80_OPTS z80_opts;
+
static char *_z80_keywords[] = { NULL };
-void z80_assignRegisters (eBBlock **ebbs, int count);
+static void _z80_init(void)
+{
+ z80_opts.sub = SUB_Z80;
+}
+
+static int regParmFlg = 0; /* determine if we can register a parameter */
+
+static void _z80_reset_regparm()
+{
+ regParmFlg = 0;
+}
+
+static int _z80_reg_parm(link *l)
+{
+ /* for this processor it is simple
+ can pass only the first parameter in a register */
+ if (regParmFlg)
+ return 0;
+
+ regParmFlg = 1;
+ return 1;
+
+}
static bool _z80_parseOptions(int *pargc, char **argv, int *i)
{
static void _z80_finaliseOptions(void)
{
+ port->mem.default_local_map = data;
+ port->mem.default_globl_map = data;
}
static void _z80_setDefaultOptions(void)
PORT z80_port = {
"z80",
"Zilog Z80", /* Target name */
+ {
+ FALSE,
+ },
{
_asmCmd,
"-plosgff", /* Options with debug */
"_BSEG",
"_RSEG",
"_GSINIT",
- "_OVERLAY"
+ "_OVERLAY",
+ "_GSFINAL",
+ NULL,
+ NULL,
+ 1
},
{
-1, 0, 0, 8, 0
{
0
},
+ _z80_init,
_z80_parseOptions,
_z80_finaliseOptions,
_z80_setDefaultOptions,
_z80_keywords,
0, /* no assembler preamble */
0, /* no local IVT generation code */
+ _z80_reset_regparm,
+ _z80_reg_parm
};