wassert (0);
}
}
- gbz80_port.mem.code_name = gc_strdup (buffer);
+ gbz80_port.mem.code_name = Safe_strdup (buffer);
code->sname = gbz80_port.mem.code_name;
return 0;
}
case 'o':
/* ROM bank */
sprintf (buffer, "CODE_%u", bank);
- gbz80_port.mem.code_name = gc_strdup (buffer);
+ gbz80_port.mem.code_name = Safe_strdup (buffer);
return TRUE;
case 'a':
/* RAM bank */
sprintf (buffer, "DATA_%u", bank);
- gbz80_port.mem.data_name = gc_strdup (buffer);
+ gbz80_port.mem.data_name = Safe_strdup (buffer);
return TRUE;
}
}
{
if (options.nostdlib == FALSE)
{
- setMainValue ("z80libspec", "-k{libdir}/{port} -l{port}.lib");
- setMainValue ("z80crt0", "{libdir}/{port}/crt0{objext}");
+ setMainValue ("z80libspec", "-k{libdir}{sep}{port} -l{port}.lib");
+ setMainValue ("z80crt0", "{libdir}{sep}{port}{sep}crt0{objext}");
}
else
{
options.noRegParams ? "s" : "bds"
);
- return gc_strdup(buffer);
+ return Safe_strdup(buffer);
}
static const char *
return "err";
}
+static bool
+_hasNativeMulFor (iCode *ic, sym_link *left, sym_link *right)
+{
+ sym_link *test = NULL;
+ value *val;
+
+ if ( ic->op != '*')
+ {
+ return FALSE;
+ }
+
+ if ( IS_LITERAL (left))
+ {
+ test = left;
+ val = OP_VALUE (IC_LEFT (ic));
+ }
+ else if ( IS_LITERAL (right))
+ {
+ test = left;
+ val = OP_VALUE (IC_RIGHT (ic));
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ if ( getSize (test) <= 2)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
#define LINKCMD \
- "{bindir}/link-{port} -n -c -- {z80bases} -m -j" \
+ "{bindir}{sep}link-{port} -n -c -- {z80bases} -m -j" \
" {z80libspec}" \
" {z80extralibfiles} {z80extralibpaths}" \
" {z80outputtypeflag} {srcfilename}{z80outext}" \
" {z80extraobj}"
#define ASMCMD \
- "{bindir}/as-{port} -plosgff {srcfilename}{objext} {srcfilename}{asmext}"
+ "{bindir}{sep}as-{port} -plosgff {srcfilename}{objext} {srcfilename}{asmext}"
/* Globals */
PORT z80_port =
_reg_parm,
_process_pragma,
_mangleSupportFunctionName,
+ _hasNativeMulFor,
TRUE,
0, /* leave lt */
0, /* leave gt */
_reg_parm,
_process_pragma,
_mangleSupportFunctionName,
+ _hasNativeMulFor,
TRUE,
0, /* leave lt */
0, /* leave gt */
1, /* transform >= to ! < */
1, /* transform != to !(a == b) */
0, /* leave == */
- FALSE, /* No array initializer support. */
+ TRUE, /* Array initializer support. */
PORT_MAGIC
};