summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/mtd/cfi_flash.c5
-rw-r--r--examples/standalone/mips.lds2
-rw-r--r--examples/standalone/sparc.lds2
-rw-r--r--examples/standalone/stubs.c4
4 files changed, 9 insertions, 4 deletions
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index dd394a8..0909fe7 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -744,8 +744,12 @@ static void flash_add_byte (flash_info_t * info, cfiword_t * cword, uchar c)
static flash_sect_t find_sector (flash_info_t * info, ulong addr)
{
static flash_sect_t saved_sector = 0; /* previously found sector */
+ static flash_info_t *saved_info = 0; /* previously used flash bank */
flash_sect_t sector = saved_sector;
+ if ((info != saved_info) || (sector >= info->sector_count))
+ sector = 0;
+
while ((info->start[sector] < addr)
&& (sector < info->sector_count - 1))
sector++;
@@ -757,6 +761,7 @@ static flash_sect_t find_sector (flash_info_t * info, ulong addr)
sector--;
saved_sector = sector;
+ saved_info = info;
return sector;
}
diff --git a/examples/standalone/mips.lds b/examples/standalone/mips.lds
index 68ae217..63a1c92 100644
--- a/examples/standalone/mips.lds
+++ b/examples/standalone/mips.lds
@@ -55,5 +55,5 @@ SECTIONS
.sbss (NOLOAD) : { *(.sbss) }
.bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
- __bss_end__ = .;
+ _end = .;
}
diff --git a/examples/standalone/sparc.lds b/examples/standalone/sparc.lds
index 7f060b6..9733daa 100644
--- a/examples/standalone/sparc.lds
+++ b/examples/standalone/sparc.lds
@@ -57,5 +57,5 @@ SECTIONS
}
. = ALIGN(4);
__bss_end = .;
- __bss_end__ = .;
+ _end = .;
}
diff --git a/examples/standalone/stubs.c b/examples/standalone/stubs.c
index 1379df7..2d2e709 100644
--- a/examples/standalone/stubs.c
+++ b/examples/standalone/stubs.c
@@ -187,14 +187,14 @@ void __attribute__((unused)) dummy(void)
#include <_exports.h>
}
-extern unsigned long __bss_start, __bss_end__;
+extern unsigned long __bss_start, _end;
void app_startup(char * const *argv)
{
unsigned char * cp = (unsigned char *) &__bss_start;
/* Zero out BSS */
- while (cp < (unsigned char *)&__bss_end__) {
+ while (cp < (unsigned char *)&_end) {
*cp++ = 0;
}