Re: [Yaffs] yaffs 2.6.29 patch

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Salvador Pinto Abreu
Date:  
To: yaffs
Subject: Re: [Yaffs] yaffs 2.6.29 patch
On Feb 3, 2009, at 18:55, Alexandros C. Couloumbis wrote:

> the linker though produces the following error:
>
> fs/built-in.o: In function `yaffs_internal_read_super':
> yaffs_fs.c:(.text.yaffs_internal_read_super+0x7c8): undefined
> reference
> to `__udivdi3'
> yaffs_fs.c:(.text.yaffs_internal_read_super+0x7c8): relocation
> truncated
> to fit: R_MIPS_26 against `__udivdi3'
> make[5]: *** [vmlinux] Error 1


there's no 64bit division in the ARM kernel; try this patch to
yaffs_fs.c. (line numbers may vary.)


@@ -1875,7 +2062,13 @@

    /* Set up the memory size parameters.... */


+#ifdef __LINUX_ARM_ARCH__
+    { uint64_t res = mtd->size;
+      do_div (res, (YAFFS_CHUNKS_PER_BLOCK * YAFFS_BYTES_PER_CHUNK));
+      nBlocks = res; }
+#else
    nBlocks = mtd->size / (YAFFS_CHUNKS_PER_BLOCK * YAFFS_BYTES_PER_CHUNK);
+#endif
    dev->startBlock = 0;
    dev->endBlock = nBlocks - 1;
    dev->nChunksPerBlock = YAFFS_CHUNKS_PER_BLOCK;
@@ -1901,7 +2094,13 @@
        dev->totalBytesPerChunk = mtd->oobblock;
        dev->nChunksPerBlock = mtd->erasesize / mtd->oobblock;
#endif
+#ifdef __LINUX_ARM_ARCH__
+        { uint64_t res = mtd->size;
+          do_div (res, mtd->erasesize);
+          nBlocks = res; }
+#else
        nBlocks = mtd->size / mtd->erasesize;
+#endif


        dev->startBlock = 0;
        dev->endBlock = nBlocks - 1;



Regards
Salvador Abreu