X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCmem.h;h=ebdc158e878213f7b288aae0b1081b6eed7010c3;hb=d7ea4ed7cf4844be678bacdf2ed38e4073335013;hp=03961ad3d292087b7b589be72007af0840136b32;hpb=53149b16f40e4d1a76ae913cb53fb62825833ae6;p=fw%2Fsdcc diff --git a/src/SDCCmem.h b/src/SDCCmem.h index 03961ad3..ebdc158e 100644 --- a/src/SDCCmem.h +++ b/src/SDCCmem.h @@ -5,25 +5,30 @@ #ifndef SDCCMEM_H #define SDCCMEM_H -struct set ; -struct value ; -typedef struct memmap{ - unsigned char pageno;/* page no for this variable */ - char *sname; /* character prefix for map */ - char dbName ; /* debugger address space name */ - 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 ; +struct set; +struct value; +struct eBBlock; -extern FILE *junkFile ; +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; + +extern FILE *junkFile; /* memory map prefixes MOF added the DATA,CODE,XDATA,BIT */ #define XSTACK_NAME port->mem.xstack_name @@ -35,24 +40,31 @@ extern FILE *junkFile ; #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 + /* 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 *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 *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 int fatalError; -extern struct set *ovrSetSets; +extern struct set *ovrSetSets; + +extern int maxRegBank; /* easy access macros */ #define IN_BITSPACE(map) (map && map->bitsp) @@ -61,18 +73,22 @@ extern struct set *ovrSetSets; #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 PTR_TYPE(map) (map ? (map->ptrType ? map->ptrType : POINTER)\ + : GPOINTER) /* forward decls for functions */ -memmap *allocMap (char,char,char,char,char,char,unsigned,char *,char ); -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( ); - +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); #endif