#define EXTRA_HEADER_INFO_FLAG 0x80000000
#define EXTRA_SHRINK_FLAG 0x40000000
-#define EXTRA_SPARE_FLAGS 0x30000000
+#define EXTRA_SHADOWS_FLAG 0x20000000
+#define EXTRA_SPARE_FLAGS 0x10000000
#define ALL_EXTRA_FLAGS 0xF0000000
{
pt->t.chunkId |= EXTRA_SHRINK_FLAG;
}
+ if(t->extraShadows)
+ {
+ pt->t.chunkId |= EXTRA_SHADOWS_FLAG;
+ }
pt->t.objectId &= ~EXTRA_OBJECT_TYPE_MASK;
pt->t.objectId |= (t->extraObjectType << EXTRA_OBJECT_TYPE_SHIFT);
yaffs_DumpPackedTags2(pt);
yaffs_DumpTags2(t);
- yaffs_ECCCalculateOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&pt->ecc);
-
+#ifndef YAFFS_IGNORE_TAGS_ECC
+ {
+ yaffs_ECCCalculateOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&pt->ecc);
+ }
+#endif
}
void yaffs_UnpackTags2(yaffs_ExtendedTags *t, yaffs_PackedTags2 *pt)
if(pt->t.sequenceNumber != 0xFFFFFFFF)
{
// Page is in use
- yaffs_ECCOther ecc;
- yaffs_ECCCalculateOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&ecc);
- t->eccResult = yaffs_ECCCorrectOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&pt->ecc,&ecc);
+#ifdef YAFFS_IGNORE_TAGS_ECC
+ {
+ t->eccResult = 0;
+ }
+#else
+ {
+ yaffs_ECCOther ecc;
+ yaffs_ECCCalculateOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&ecc);
+ t->eccResult = yaffs_ECCCorrectOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&pt->ecc,&ecc);
+ }
+#endif
t->blockBad = 0;
t->chunkUsed = 1;
t->objectId = pt->t.objectId;
t->extraHeaderInfoAvailable = 1;
t->extraParentObjectId = pt->t.chunkId & (~(ALL_EXTRA_FLAGS));
t->extraIsShrinkHeader = (pt->t.chunkId & EXTRA_SHRINK_FLAG) ? 1 : 0;
+ t->extraShadows = (pt->t.chunkId & EXTRA_SHADOWS_FLAG) ? 1 : 0;
t->extraObjectType = pt->t.objectId >> EXTRA_OBJECT_TYPE_SHIFT;
t->objectId &= ~EXTRA_OBJECT_TYPE_MASK;