X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fport.h;h=1533620f9e003e341a1e6478c895af0a5d7392c1;hb=fd94924a3d743c1c82f4b370d9401d7239172789;hp=af16bfcf2698fa9218fb8ea7cc806edeecc89a3b;hpb=88911079e8f9eb7fb3dfb08c32e805bb7b5e62c1;p=fw%2Fsdcc diff --git a/src/port.h b/src/port.h index af16bfcf..1533620f 100644 --- a/src/port.h +++ b/src/port.h @@ -8,7 +8,7 @@ #include "SDCCicode.h" #include "SDCCargs.h" #include "SDCCpeeph.h" -#include "mcs51/peep.h" +#include "dbuf.h" #define TARGET_ID_MCS51 1 #define TARGET_ID_GBZ80 2 @@ -24,23 +24,25 @@ /* Macro to test the target we are compiling for. Can only be used after SDCCmain has defined the port */ -#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_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_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_Z80_LIKE (TARGET_IS_Z80 || TARGET_IS_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_MCS51_LIKE (TARGET_IS_MCS51 || TARGET_IS_DS390 || TARGET_IS_DS400) #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 */ + 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; @@ -65,10 +67,10 @@ typedef struct /** Unique id for this target */ const int id; /** Target name used for -m */ - const char *target; + const char * const target; /** Target name string, used for --help */ - const char *target_name; + const char * const target_name; /** Specific processor for the given target family. specified by -p */ char *processor; @@ -132,7 +134,8 @@ typedef struct int (*getSize)(lineNode *line); bitVect * (*getRegsRead)(lineNode *line); bitVect * (*getRegsWritten)(lineNode *line); - bool (*deadMove) (const char *op, lineNode *currPl, lineNode *head); + bool (*deadMove) (const char *reg, lineNode *currPl, lineNode *head); + bool (*notUsed) (const char *reg, lineNode *currPl, lineNode *head); } peep; @@ -165,25 +168,30 @@ typedef struct /** memory regions related stuff */ struct { - const char *xstack_name; - const char *istack_name; + const char * const xstack_name; + const char * const istack_name; + /* + * The following 2 items can't be const pointers + * due to ugly implementation in z80 target; + * this should be fixed in src/z80/main.c (borutr) + */ const char *code_name; const char *data_name; - const char *idata_name; - const char *pdata_name; - const char *xdata_name; - const char *bit_name; - const char *reg_name; - const char *static_name; - const char *overlay_name; - const char *post_static_name; - const char *home_name; - const char *xidata_name; // initialized xdata - 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 + const char * const idata_name; + const char * const pdata_name; + const char * const xdata_name; + const char * const bit_name; + const char * const reg_name; + const char * const static_name; + const char * const overlay_name; + const char * const post_static_name; + const char * const home_name; + const char * const xidata_name; // initialized xdata + const char * const xinit_name; // a code copy of xidata + const char * const const_name; // const data (code or not) + const char * const cabs_name; // const absolute data (code or not) + const char * const xabs_name; // absolute xdata/pdata + const char * const 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 */ @@ -295,7 +303,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);