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