* fixed GCC 4.4.0 mingw compilation:
[fw/sdcc] / src / SDCCmem.h
index ce734cf58f1f2c6763414b14947ce61292559843..c0f0633d418ec36c19d237dfa027520630e2b231 100644 (file)
@@ -5,28 +5,32 @@
 #ifndef SDCCMEM_H
 #define SDCCMEM_H
 
-struct set ;
-struct value ;
+#include "dbuf.h"
+
+struct set;
+struct value;
 struct eBBlock;
 
-typedef  struct memmap{
-    unsigned char  pageno;    /* page no for this variable  */
-    const char     *sname;    /*   character prefix for map */
-    char     dbName ;         /* debugger address space name */
-    int      ptrType;         /* pointer Type for this space */
-    int      slbl ;           /* label counter for space    */
-    unsigned sloc    ;        /* starting location          */
-    unsigned fmap : 1;        /* 1 = 16bit addressing reqd  */
-    unsigned paged : 1;       /* this is a paged mem space  */
-    unsigned direct: 1;       /* 1= indirect access only    */
-    unsigned bitsp: 1;        /* 1 = bit addressable space  */
-    unsigned codesp:1;        /* 1 = code space             */
-    unsigned regsp: 1;        /* 1= sfr space               */
-    FILE    *oFile   ;        /* object file associated     */
-    struct  set *syms;        /* symbols defined in this segment */
-} memmap ;
+typedef struct memmap
+  {
+    unsigned char pageno;       /* page no for this variable  */
+    const char *sname;          /*   character prefix for map */
+    char dbName;                /* debugger address space name */
+    int ptrType;                /* pointer Type for this space */
+    int slbl;                   /* label counter for space    */
+    unsigned sloc;              /* starting location          */
+    unsigned fmap:1;            /* 1 = 16bit addressing reqd  */
+    unsigned paged:1;           /* this is a paged mem space  */
+    unsigned direct:1;          /* 1 = indirect access only   */
+    unsigned bitsp:1;           /* 1 = bit addressable space  */
+    unsigned codesp:1;          /* 1 = code space             */
+    unsigned regsp:1;           /* 1 = sfr space              */
+    struct dbuf_s oBuf;         /* object buffer associated   */
+    struct set *syms;           /* symbols defined in this segment */
+  }
+memmap;
 
-extern FILE    *junkFile ;     
+extern FILE *junkFile;
 
 /* memory map prefixes  MOF added the DATA,CODE,XDATA,BIT */
 #define  XSTACK_NAME   port->mem.xstack_name
@@ -34,60 +38,72 @@ extern FILE *junkFile ;
 #define  CODE_NAME     port->mem.code_name
 #define  DATA_NAME     port->mem.data_name
 #define  IDATA_NAME    port->mem.idata_name
+#define  PDATA_NAME    port->mem.pdata_name
 #define  XDATA_NAME    port->mem.xdata_name
+#define  XIDATA_NAME   port->mem.xidata_name
+#define  XINIT_NAME    port->mem.xinit_name
 #define  BIT_NAME      port->mem.bit_name
 #define  REG_NAME      port->mem.reg_name
 #define  STATIC_NAME   port->mem.static_name
-#define         HOME_NAME     port->mem.home_name
+#define  HOME_NAME     port->mem.home_name
+#define  OVERLAY_NAME  port->mem.overlay_name
+#define  CONST_NAME    port->mem.const_name
+#define  CABS_NAME     port->mem.cabs_name
+#define  XABS_NAME     port->mem.xabs_name
+#define  IABS_NAME     port->mem.iabs_name
+
 /* forward definition for variables */
-extern   memmap  *xstack;    /* xternal stack data         */
-extern   memmap  *istack;    /* internal stack             */
-extern   memmap  *code  ;    /* code segment               */
-extern   memmap  *data  ;    /* internal data upto 128     */
-extern   memmap  *xdata ;    /* external data             */
-extern   memmap  *idata ;    /* internal data upto 256     */
-extern   memmap  *bit   ;    /* bit addressable space      */
-extern   memmap  *statsg;    /* static code segment        */
-extern   memmap  *sfr   ;    /* register space             */
-extern   memmap  *sfrbit;    /* sfr bit space              */
-extern   memmap  *reg   ;    /* register space            */
-extern   memmap  *_const;    /* constant segment           */
-extern   memmap  *generic;   /* unknown                    */
-extern   memmap  *overlay;   /* the overlay segment        */
-extern   memmap  *eeprom;    /* eepromp space              */
-extern   memmap  *eeprom;    /* eepromp space              */
-extern  memmap  *home;      /* Non-banked home space      */
+extern memmap *xstack;          /* xternal stack data           */
+extern memmap *istack;          /* internal stack               */
+extern memmap *code;            /* code segment                 */
+extern memmap *data;            /* internal data upto 128       */
+extern memmap *pdata;           /* paged external data upto 256 */
+extern memmap *xdata;           /* external data                */
+extern memmap *xidata;          /* the initialized xdata        */
+extern memmap *xinit;           /* the initializers for xidata  */
+extern memmap *idata;           /* internal data upto 256       */
+extern memmap *bit;             /* bit addressable space        */
+extern memmap *statsg;          /* static code segment          */
+extern memmap *c_abs;           /* constant absolute data       */
+extern memmap *x_abs;           /* absolute xdata/pdata         */
+extern memmap *i_abs;           /* absolute idata upto 256      */
+extern memmap *d_abs;           /* absolute data upto 128       */
+extern memmap *sfr;             /* register space               */
+extern memmap *sfrbit;          /* sfr bit space                */
+extern memmap *reg;             /* register space               */
+extern memmap *generic;         /* unknown                      */
+extern memmap *overlay;         /* the overlay segment          */
+extern memmap *eeprom;          /* eeprom space                 */
+extern memmap *home;            /* Non-banked home space        */
 
 extern int fatalError;
 
-extern   struct  set     *ovrSetSets;
-
-extern int maxRegBank;
+extern struct set *ovrSetSets;
 
 /* easy access macros */
-#define IN_BITSPACE(map)       (map && map->bitsp)
+#define IN_BITSPACE(map)        (map && map->bitsp)
 #define IN_STACK(x)  (IS_SPEC(x) && (SPEC_OCLS(x) == xstack || SPEC_OCLS(x) == istack ))
 #define IN_FARSPACE(map)        (map && map->fmap)
 #define IN_DIRSPACE(map)        (map && map->direct)
 #define IN_PAGEDSPACE(map)      (map && map->paged )
 #define IN_CODESPACE(map)       (map && map->codesp)
-#define IN_REGSP(map)          (map && map->regsp)
+#define IN_REGSP(map)           (map && map->regsp)
 #define PTR_TYPE(map)           (map ? (map->ptrType ? map->ptrType : POINTER)\
-                                     : GPOINTER)
+                                     : port->unqualified_pointer)
 
 /* forward decls for functions    */
-memmap     *allocMap       (char,char,char,char,char,char,unsigned, const char *,char,int );
-void        initMem        (                                );
-void        allocGlobal    (struct symbol  *                );
-void        allocLocal     (struct symbol  *                );
-void        allocParms     (struct value   *                );
-void        deallocParms   (struct value   *                );
-void        deallocLocal   (struct symbol  *                );
-int         allocVariables (struct symbol  *                );
-void        overlay2Set    (                                );
-void        overlay2data   (                                );
-void        redoStackOffsets(                               );
-void        printAllocInfo (struct symbol *, FILE *         );
-void        doOverlays     (struct eBBlock **, int count    );
+memmap *allocMap (char, char, char, char, char, char, unsigned, const char *, char, int);
+void initMem ();
+void allocGlobal (struct symbol *);
+void allocLocal (struct symbol *);
+void allocParms (struct value *);
+void deallocParms (struct value *);
+void deallocLocal (struct symbol *);
+int allocVariables (struct symbol *);
+void overlay2Set ();
+void overlay2data ();
+void redoStackOffsets ();
+void printAllocInfo (struct symbol *, struct dbuf_s *);
+void doOverlays (struct eBBlock **, int count);
+void deleteFromSeg(struct symbol *);
 #endif