* as/link/mcs51/lkarea.c (lnkarea2, lnksect2): replaced [di]seg_ap->a_addr
authorMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 5 Jan 2007 07:19:10 +0000 (07:19 +0000)
committerMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 5 Jan 2007 07:19:10 +0000 (07:19 +0000)
  with [di]ram_start to fix a regresion

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4556 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
as/link/mcs51/lkarea.c

index bad25b29cefaf540f9cefed7c91e26605c785c71..e45f33bd71b2a0064ec8bb56f342d5600dade77a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+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
index e779836d28056b3600dada6502668bf377ed4ae0..58f96c1d71dd81c418f7ea992b4099d7ceac39fe 100644 (file)
@@ -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;