* as/hc08/lkaomf51.c (OutputName),
[fw/sdcc] / src / ds390 / main.c
index 27a64e8df5ca4ac946f19ff283657b3a22fe7a49..d05c2ad08a9a94ec6fec91ee6ba9fbf2c824ed66 100644 (file)
@@ -32,6 +32,8 @@ static char *_ds390_keywords[] =
   "pdata",
   "reentrant",
   "sfr",
+  "sfr16",
+  "sfr32",
   "sbit",
   "using",
   "xdata",
@@ -59,7 +61,7 @@ static builtins __ds390_builtins[] = {
     { "__builtin_memcmp_c2x","c",3,{"cx*","cp*","i"}}, /* void __builtin_memcmp_c2x (xdata char *,code  char *,int) */
     { NULL , NULL,0, {NULL}}                      /* mark end of table */
 };
-void ds390_assignRegisters (eBBlock ** ebbs, int count);
+void ds390_assignRegisters (ebbIndex * ebbi);
 
 static int regParmFlg = 0;     /* determine if we can register a parameter */
 
@@ -76,8 +78,10 @@ _ds390_reset_regparm (void)
 }
 
 static int
-_ds390_regparm (sym_link * l)
+_ds390_regparm (sym_link * l, bool reentrant)
 {
+    if (IS_SPEC(l) && (SPEC_NOUN(l) == V_BIT))
+        return 0;
     if (options.parms_in_bank1 == 0) {
        /* simple can pass only the first parameter in a register */
        if (regParmFlg)
@@ -857,6 +861,10 @@ PORT ds390_port =
        /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
     1, 2, 2, 4, 1, 2, 3, 1, 4, 4
   },
+  
+  /* tags for generic pointers */
+  { 0x00, 0x40, 0x60, 0x80 },          /* far, near, xstack, code */
+
   {
     "XSEG    (XDATA)",
     "STACK   (DATA)",
@@ -873,6 +881,7 @@ PORT ds390_port =
     "HOME    (CODE)",
     "XISEG   (XDATA)", // initialized xdata
     "XINIT   (CODE)", // a code copy of xiseg
+    "CONST   (CODE)",          // const_name - const data (code or not)
     NULL,
     NULL,
     1
@@ -1169,6 +1178,9 @@ PORT tininative_port =
        /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
     1, 2, 2, 4, 1, 3, 3, 1, 4, 4
   },
+  /* tags for generic pointers */
+  { 0x00, 0x40, 0x60, 0x80 },          /* far, near, xstack, code */
+
   {
     "XSEG    (XDATA)",
     "STACK   (DATA)",
@@ -1185,6 +1197,7 @@ PORT tininative_port =
     "HOME    (CODE)",
     NULL,
     NULL,
+    "CONST   (CODE)",          // const_name - const data (code or not)
     NULL,
     NULL,
     1
@@ -1396,6 +1409,10 @@ PORT ds400_port =
        /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
     1, 2, 2, 4, 1, 2, 3, 1, 4, 4
   },
+
+  /* tags for generic pointers */
+  { 0x00, 0x40, 0x60, 0x80 },          /* far, near, xstack, code */
+
   {
     "XSEG    (XDATA)",
     "STACK   (DATA)",
@@ -1412,6 +1429,7 @@ PORT ds400_port =
     "HOME    (CODE)",
     "XISEG   (XDATA)", // initialized xdata
     "XINIT   (CODE)", // a code copy of xiseg
+    "CONST   (CODE)",          // const_name - const data (code or not)
     NULL,
     NULL,
     1