* doc/sdccman.lyx: updated PIC14/16 command line args, updated PIC14
[fw/sdcc] / src / port.h
index 0b0ae7580e45a6c8109c2a5807fe23508dc047e4..a52bed1b806cae20954ab7262787db0397706b7f 100644 (file)
@@ -8,6 +8,8 @@
 #include "SDCCicode.h"
 #include "SDCCargs.h"
 #include "SDCCpeeph.h"
+#include "dbuf.h"
+#include "mcs51/peep.h"
 
 #define TARGET_ID_MCS51    1
 #define TARGET_ID_GBZ80    2
 */
 #define TARGET_IS_MCS51 (port->id==TARGET_ID_MCS51)
 #define TARGET_IS_GBZ80 (port->id==TARGET_ID_GBZ80)
-#define TARGET_IS_Z80 (port->id==TARGET_ID_Z80)
-#define TARGET_IS_AVR (port->id==TARGET_ID_AVR)
+#define TARGET_IS_Z80   (port->id==TARGET_ID_Z80)
+#define TARGET_Z80_LIKE ((port->id==TARGET_ID_Z80) || (port->id==TARGET_ID_GBZ80))
+#define TARGET_IS_AVR   (port->id==TARGET_ID_AVR)
 #define TARGET_IS_DS390 (port->id==TARGET_ID_DS390)
 #define TARGET_IS_DS400 (port->id==TARGET_ID_DS400)
 #define TARGET_IS_PIC   (port->id==TARGET_ID_PIC)
 #define TARGET_IS_PIC16 (port->id==TARGET_ID_PIC16)
-#define TARGET_IS_XA51 (port->id==TARGET_ID_XA51)
-#define TARGET_IS_HC08 (port->id==TARGET_ID_HC08)
+#define TARGET_IS_XA51  (port->id==TARGET_ID_XA51)
+#define TARGET_IS_HC08  (port->id==TARGET_ID_HC08)
 
 #define MAX_BUILTIN_ARGS        16
 /* definition of builtin functions */
 typedef struct builtins
   {
-    char *name;                 /* name of builtin function */
-    char *rtype;                /* return type as string : see typefromStr */
-    int  nParms;                /* number of parms : max 8 */
+    char *name;                         /* name of builtin function */
+    char *rtype;                        /* return type as string : see typefromStr */
+    int  nParms;                        /* number of parms : max 8 */
     char *parm_types[MAX_BUILTIN_ARGS]; /* each parm type as string : see typeFromStr */
   } builtins;
 
@@ -131,6 +134,7 @@ typedef struct
         int (*getSize)(lineNode *line);
         bitVect * (*getRegsRead)(lineNode *line);
         bitVect * (*getRegsWritten)(lineNode *line);
+        bool (*deadMove) (const char *reg, lineNode *currPl, lineNode *head);
       }
     peep;
 
@@ -180,6 +184,8 @@ typedef struct
         const char *xinit_name; // a code copy of xidata
         const char *const_name; // const data (code or not)
         const char *cabs_name; // const absolute data (code or not)
+       const char *xabs_name; // absolute xdata/pdata
+       const char *iabs_name; // absolute idata/data
         struct memmap *default_local_map; // default location for auto vars
         struct memmap *default_globl_map; // default location for globl vars
         int code_ro;            /* code space read-only 1=yes */
@@ -291,7 +297,7 @@ typedef struct
      * it returns zero, default (8051) IVT generation code
      * will be used.
      */
-    int (*genIVT) (FILE * of, symbol ** intTable, int intCount);
+    int (*genIVT) (struct dbuf_s *oBuf, symbol ** intTable, int intCount);
 
     void (*genXINIT) (FILE * of);