+2007-01-05 Maarten Brock <sourceforge.brock AT dse.nl>
+
+ * as/link/mcs51/lkarea.c (lnkarea2, lnksect2): replaced [di]seg_ap->a_addr
+ with [di]ram_start to fix a regresion
+
2007-01-03 Bernhard Held <bernhard AT bernhardheld.de>
* configure.in: added missing mcs51 in status output
unsigned long codemap[524288];
unsigned long xdatamap[131072];
struct area *dseg_ap = NULL;
-struct area *iseg_ap = NULL;
+Addr_T dram_start = 0;
+Addr_T iram_start = 0;
/*Modified version of the functions for packing variables in internal data memory*/
VOID lnkarea2 (void)
else if (!strcmp(ap->a_id, "DSEG"))
{
dseg_ap = ap; /*Need it later*/
+ dram_start = ap->a_addr;
}
else if (!strcmp(ap->a_id, "ISEG"))
{
- iseg_ap = ap; /*Need it later*/
+ iram_start = ap->a_addr;
}
ap = ap->a_ap;
}
/*Notice that only ISEG and SSEG can be in the indirectly addressable internal RAM*/
if( (!strcmp(tap->a_id, "ISEG")) || (!strcmp(tap->a_id, "SSEG")) )
{
- if (iseg_ap)
- ramstart = iseg_ap->a_addr;
- else
- ramstart = 0;
+ ramstart = iram_start;
if ((iram_size <= 0) || (ramstart + iram_size > 0x100))
ramlimit = 0x100;
}
else
{
- if (dseg_ap)
- ramstart = dseg_ap->a_addr;
- else
- ramstart = 0;
+ ramstart = dram_start;
if ((iram_size <= 0) || (ramstart + iram_size > 0x80))
ramlimit = 0x80;