================= Start of Patch ===========================
diff -Naur linux-2.6.24_old/fs/jffs2/
erase.c linux-2.6.24_new/fs/jffs2/erase.c
--- linux-2.6.24_old/fs/jffs2/erase.c   2008-01-24 17:58:37.000000000 -0500
+++ linux-2.6.24_new/fs/jffs2/erase.c   2008-12-10 18:39:34.000000000 -0500
@@ -346,7 +346,20 @@
               wordebuf = ebuf-sizeof(*wordebuf);
               retlen /= sizeof(*wordebuf);
               do {
+#ifdef CONFIG_ARXXPPC
+       unsigned short* wordebuf16;
+       unsigned long testebuf;
+
+       ++wordebuf;
+       wordebuf16 = (unsigned short*)(wordebuf);
+       testebuf = *wordebuf16 & 0x0000ffff;
+       wordebuf16++;
+       testebuf |= ((*wordebuf16 & 0x0000ffff) << 16);
+
+       if (testebuf != ~0)
+#else
                  if (*++wordebuf != ~0)
+#endif /* CONFIG_ARXXPPC */
                          break;
               } while(--retlen);
               c->mtd->unpoint(c->mtd, ebuf, jeb->offset, c->sector_size);
@@ -382,7 +395,20 @@
               for (i=0; i<readlen; i += sizeof(unsigned long)) {
                       /* It's OK. We know it's properly aligned */
                       unsigned long *datum = ebuf + i;
+
+#ifdef CONFIG_ARXXPPC
+      unsigned short* datum16;
+      unsigned long  testdatum;
+
+      datum16 = (unsigned short*)(ebuf + i);
+      testdatum = *datum16 & 0x0000ffff;
+      datum16++;
+      testdatum |= ((*datum16 & 0x0000ffff) << 16);
+
+      if (testdatum + 1) {
+#else
                       if (*datum + 1) {
+#endif /* CONFIG_ARXXPPC */
                               *bad_offset += i;
                               printk(KERN_WARNING "Newly-erased block
contained word 0x%lx at
offset 0x%08x\n", *datum, *bad_offset);
                               goto fail;
diff -Naur linux-2.6.24_old/fs/jffs2/scan.c linux-2.6.24_new/fs/jffs2/scan.c
--- linux-2.6.24_old/fs/jffs2/scan.c    2008-01-24 17:58:37.000000000 -0500
+++ linux-2.6.24_new/fs/jffs2/scan.c    2008-12-10 18:46:46.000000000 -0500
@@ -35,7 +35,7 @@
 static uint32_t pseudo_random;

 static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct
jffs2_eraseblock *jeb,
-                                 unsigned char *buf, uint32_t
buf_size, struct jffs2_summary *s);
+                                 unsigned char *buf, uint32_t
flash_ofs, uint32_t buf_size,
