* as/link/mcs51/lkarea.c (lnkarea2): handle absolute areas, restructured
[fw/sdcc] / src / ds390 / main.c
index 7f735daae2c767b140325effde37255bc5fdfd26..11f515c3b07609282a1848f196e7e2345f9b4ef2 100644 (file)
@@ -707,7 +707,7 @@ asmLineNodeFromLineNode (lineNode *ln, int currentDPS)
   asmLineNode *aln = ds390newAsmLineNode(currentDPS);
   char *op, op1[256], op2[256];
   int opsize;
-  const unsigned char *p;
+  const char *p;
   char inst[8];
   ds390opcodedata *opdat;
 
@@ -861,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)",
@@ -875,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
@@ -1174,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)",
@@ -1191,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
@@ -1402,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)",
@@ -1419,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