static char *fReturn8051[] = {"dpl","dph","b","a" };
static char *fReturn390[] = {"dpl","dph","dpx", "b","a" };
-static unsigned fReturnSize = 4;
+unsigned fReturnSize = 4; /* shared with ralloc.c */
static char **fReturn = fReturn8051;
static char *accUse[] = {"a","b"};
{
port->s.fptr_size = 3;
port->s.gptr_size = 4;
+ port->stack.isr_overhead++; /* Will save dpx on ISR entry. */
+ #if 1
+ port->stack.call_overhead++; /* This acounts for the extra byte
+ * of return addres on the stack.
+ * but is ugly. There must be a
+ * better way.
+ */
+ #endif
+
}
}
/* only upto 2 bytes since we cannot predict
the usage of b, & acc */
- if (getSize(operandType(op)) > 2 &&
+ if (getSize(operandType(op)) > (fReturnSize - 2) &&
ic->op != RETURN &&
ic->op != SEND)
return NULL;