symbols in a single overlay */
set *ovrSetSets = NULL;
-int maxRegBank = 0;
int fatalError = 0; /* fatal error flag */
/*-----------------------------------------------------------------*/
SPEC_EXTR (sym->etype) = 0;
addSym (TypedefTab, sym, sym->name, sym->level, sym->block, 0);
- continue; /* go to the next one */
+ continue; /* go to the next one */
}
- /* make sure it already exist */
+ /* make sure it already exists */
csym = findSymWithLevel (SymbolTab, sym);
if (!csym || (csym && csym->level != sym->level))
csym = sym;
/* check the declaration */
checkDecl (csym,0);
- /* if this is a function or a pointer to function */
- /* then args processing */
+ /* if this is a function or a pointer to a */
+ /* function then do args processing */
if (funcInChain (csym->type))
{
processFuncArgs (csym);
-
- /* if register bank specified then update maxRegBank */
- if (maxRegBank < FUNC_REGBANK (csym->type))
- maxRegBank = FUNC_REGBANK (csym->type);
- /*JCF: Mark the register bank as used*/
- RegBankUsed[FUNC_REGBANK(csym->type)]=1;
}
/* if this is a extern variable then change the */
- /* level to zero temporarily */
+ /* level to zero temporarily */
if (IS_EXTERN (csym->etype) || IS_FUNC (csym->type))
{
saveLevel = csym->level;
if (IS_LITERAL (sym->etype))
continue;
- /* generate the actual declaration */
+ /* generate the actual declaration */
if (csym->level)
{
allocLocal (csym);
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 */
+ 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;
#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 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 *pdata; /* paged external data upto 256 */
-extern memmap *xdata; /* external data */
+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 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;
-
/* 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)\
: port->unqualified_pointer)
}
/*-----------------------------------------------------------------*/
-/* aggregateToPointer: change an agggregate type function */
-/* argument to a pointer to that type. */
+/* aggregateToPointer: change an aggregate type function */
+/* argument to a pointer to that type. */
/*-----------------------------------------------------------------*/
value *
aggregateToPointer (value * val)
werror (E_SHADOWREGS_NO_ISR, sym->name);
}
-
for (argCnt=1, acargs = FUNC_ARGS(sym->type);
acargs;
acargs=acargs->next, argCnt++) {
werror (E_PREV_DEF_CONFLICT, csym->name, "using");
}
+ /*JCF: Mark the register bank as used*/
+ RegBankUsed[FUNC_REGBANK (sym->type)] = 1;
+
if (IFFUNC_ISNAKED (csym->type) != IFFUNC_ISNAKED (sym->type))
{
werror (E_PREV_DEF_CONFLICT, csym->name, "_naked");