}
-void dump_cblock(FILE *of)
+void dump_sfr(FILE *of)
{
+
int start=-1;
int addr=0;
int bank_base;
+ static int udata_flag=0;
//dump_map(); /* display the register map */
-
+ fprintf(stdout,";dump_sfr \n");
if (pic->maxRAMaddress < 0) {
fprintf(stderr, "missing \"#pragma maxram\" setting\n");
return;
* assumes that the first register in the contiguous group
* of registers represents the bank for the whole group */
- fprintf(of," cblock 0X%04X\t; Bank %d\n",start,finalMapping[start].bank);
+ if ( (start != addr) && (!udata_flag) ) {
+ udata_flag = 1;
+ //fprintf(of,"\tudata\n");
+ }
for( ; start < addr; start++) {
- if((finalMapping[start].reg) && !finalMapping[start].reg->isEmitted ) {
- fprintf(of,"\t%s",finalMapping[start].reg->name);
+ if((finalMapping[start].reg) &&
+ (!finalMapping[start].reg->isEmitted) &&
+ (!finalMapping[start].instance) &&
+ (!finalMapping[start].isSFR)) {
- /* If this register is aliased in multiple banks, then
- * mangle the variable name with the alias address: */
- if(finalMapping[start].alias & start)
- fprintf(of,"_%x",bank_base);
+ fprintf(of,"%s\tres\t%i\n",
+ finalMapping[start].reg->name,
+ finalMapping[start].reg->size);
- if(finalMapping[start].instance)
- fprintf(of,"_%d",finalMapping[start].instance);
-
-
- fputc('\n',of);
-
- //finalMapping[start].reg->isEmitted = 1;
+ finalMapping[start].reg->isEmitted = 1;
}
}
- fprintf(of," endc\n");
-
start = -1;
}
do {
- //fprintf(stdout,"mapping %s to address 0x%02x, reg size = %d\n",reg->name, (reg->address+alias+i),reg->size);
+ fprintf(stdout,"mapping %s to address 0x%02x, reg size = %d\n",reg->name, (reg->address+alias+i),reg->size);
finalMapping[reg->address + alias + i].reg = reg;
finalMapping[reg->address + alias + i].instance = i;
} while (alias>=0);
}
- // fprintf(stderr,"%s - %s addr = 0x%03x, size %d\n",__FUNCTION__,reg->name, reg->address,reg->size);
+ fprintf(stderr,"%s - %s addr = 0x%03x, size %d\n",__FUNCTION__,reg->name, reg->address,reg->size);
reg->isMapped = 1;
{
int i;
- //fprintf(stderr,"%s - %s start_address = 0x%03x\n",__FUNCTION__,reg->name, start_address);
+ fprintf(stderr,"%s - %s start_address = 0x%03x\n",__FUNCTION__,reg->name, start_address);
if(reg->isFixed) {
if (validAddress(reg->address,reg->size)) {
for (reg = setFirstItem(regset) ; reg ;
reg = setNextItem(regset)) {
- //fprintf(stdout,"assigning %s isFixed=%d, wasUsed=%d\n",reg->name,reg->isFixed,reg->wasUsed);
+ fprintf(stdout,"assigning %s isFixed=%d, wasUsed=%d\n",reg->name,reg->isFixed,reg->wasUsed);
if((!reg->isFixed) && ( used || reg->wasUsed))
address = assignRegister(reg,address);