* as/link/mcs51/lkarea.c (lnkarea2): handle absolute areas, restructured
[fw/sdcc] / src / ds390 / main.c
index a2e54083077fccf695156f1f7567b2e234ce1386..11f515c3b07609282a1848f196e7e2345f9b4ef2 100644 (file)
@@ -32,6 +32,8 @@ static char *_ds390_keywords[] =
   "pdata",
   "reentrant",
   "sfr",
+  "sfr16",
+  "sfr32",
   "sbit",
   "using",
   "xdata",
@@ -859,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,9 +879,12 @@ PORT ds390_port =
     "OSEG    (OVR,DATA)",
     "GSFINAL (CODE)",
     "HOME    (CODE)",
-    "XISEG   (XDATA)", // initialized xdata
-    "XINIT   (CODE)", // a code copy of xiseg
+    "XISEG   (XDATA)",         // initialized xdata
+    "XINIT   (CODE)",          // a code copy of xiseg
     "CONST   (CODE)",          // const_name - const data (code or not)
+    "CABS    (ABS,CODE)",      // cabs_name - const absolute data (code or not)
+    "XABS    (ABS,XDATA)",     // xabs_name - absolute xdata/pdata
+    "IABS    (ABS,DATA)",      // iabs_name - absolute idata/data
     NULL,
     NULL,
     1
@@ -1172,6 +1181,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)",
@@ -1189,6 +1201,9 @@ PORT tininative_port =
     NULL,
     NULL,
     "CONST   (CODE)",          // const_name - const data (code or not)
+    "CABS    (ABS,CODE)",      // cabs_name - const absolute data (code or not)
+    "XABS    (ABS,XDATA)",     // xabs_name - absolute xdata/pdata
+    "IABS    (ABS,DATA)",      // iabs_name - absolute idata/data
     NULL,
     NULL,
     1
@@ -1400,6 +1415,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)",
@@ -1417,6 +1436,9 @@ PORT ds400_port =
     "XISEG   (XDATA)", // initialized xdata
     "XINIT   (CODE)", // a code copy of xiseg
     "CONST   (CODE)",          // const_name - const data (code or not)
+    "CABS    (ABS,CODE)",      // cabs_name - const absolute data (code or not)
+    "XABS    (ABS,XDATA)",     // xabs_name - absolute xdata/pdata
+    "IABS    (ABS,DATA)",      // iabs_name - absolute idata/data
     NULL,
     NULL,
     1