X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=as%2Flink%2Fmcs51%2Flkarea.c;h=58f96c1d71dd81c418f7ea992b4099d7ceac39fe;hb=fe70b7eab884c7121911b83e66d0e49cba3737c8;hp=e779836d28056b3600dada6502668bf377ed4ae0;hpb=d25410272593de279e84cf891961c535b8c7fc70;p=fw%2Fsdcc diff --git a/as/link/mcs51/lkarea.c b/as/link/mcs51/lkarea.c index e779836d..58f96c1d 100644 --- a/as/link/mcs51/lkarea.c +++ b/as/link/mcs51/lkarea.c @@ -494,7 +494,8 @@ char idatamap[256]; 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) @@ -576,10 +577,11 @@ 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; } @@ -746,10 +748,7 @@ Addr_T lnksect2 (struct area *tap, int locIndex) /*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; @@ -758,10 +757,7 @@ Addr_T lnksect2 (struct area *tap, int locIndex) } 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;