More AVR stuff
[fw/sdcc] / src / z80 / main.c
index dca80167512afcaff0c88052a10ee479f9466489..bad1c014aa8aec75353aa60881854e915f4d9d30 100644 (file)
@@ -15,6 +15,25 @@ 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)
 {
     return FALSE;
@@ -22,6 +41,8 @@ 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)
@@ -98,7 +119,10 @@ PORT z80_port = {
        "_RSEG",
        "_GSINIT",
        "_OVERLAY",
-       "_GSFINAL"
+       "_GSFINAL",
+       NULL,
+       NULL,
+       1
     },
     { 
        -1, 0, 0, 8, 0
@@ -116,5 +140,7 @@ PORT z80_port = {
     _z80_keywords,
     0, /* no assembler preamble */
     0, /* no local IVT generation code */
+    _z80_reset_regparm,
+    _z80_reg_parm
 };