diff --git a/src/driver/nand/nand.c b/src/driver/nand/nand.c
index 1261694f9eb4eb007bdb647305f834b5a061c16f..19a2399f3efc785ab800bc45834c2c0764e019da 100644 (file)
--- a/src/driver/nand/nand.c
+++ b/src/driver/nand/nand.c
Int32 size;
Int32 ret;
- Int32 i, j;
+ Int32 i, j, startBlock;
Bool badBlock;
/* Initialize the control info */
return (-1);
nandmcb.numBadBlocks = 0;
- for (i = 0; i < nandmcb.devInfo.totalBlocks; i++) {
+ startBlock = ibln->bootAddress[iblEndianIdx][iblImageIdx]/(nandmcb.devInfo.pageSizeBytes*nandmcb.devInfo.pagesPerBlock);
+ for (i = startBlock; i < nandmcb.devInfo.totalBlocks; i++) {
badBlock = FALSE;
for (j = 0; j < ibl_N_BAD_BLOCK_PAGE; j++)
/* Construct the logical to physical block array */
- for (i = j = 0; i < nandmcb.devInfo.totalBlocks; i++) {
+ for (i = j = startBlock; i < nandmcb.devInfo.totalBlocks; i++) {
if (nandmcb.blocks[i] != 0xff)
nandmcb.logicalToPhysMap[j++] = i;
}
/* Construct the physical to logical block array */
- for (i = j = 0; i < nandmcb.devInfo.totalBlocks; i++) {
+ for (i = j = startBlock; i < nandmcb.devInfo.totalBlocks; i++) {
if (nandmcb.blocks[i] == 0xff)
nandmcb.physToLogicalMap[i] = 0xff;
else