+struct yaffs_checkpt_chunk_hdr {
+ int version;
+ int seq;
+ u32 sum;
+ u32 xor;
+} ;
+
+
+static int apply_chunk_offset(struct yaffs_dev *dev, int chunk)
+{
+ return chunk - dev->chunk_offset;
+}
+
+static int apply_block_offset(struct yaffs_dev *dev, int block)
+{
+ return block - dev->block_offset;
+}
+
+
+static void yaffs2_do_endian_hdr(struct yaffs_dev *dev,
+ struct yaffs_checkpt_chunk_hdr *hdr)
+{
+ if (!dev->swap_endian)
+ return;
+ hdr->version = swap_s32(hdr->version);
+ hdr->seq = swap_s32(hdr->seq);
+ hdr->sum = swap_u32(hdr->sum);
+ hdr->xor = swap_u32(hdr->xor);
+}
+
+static void yaffs2_checkpt_init_chunk_hdr(struct yaffs_dev *dev)
+{
+ struct yaffs_checkpt_chunk_hdr hdr;
+
+ hdr.version = YAFFS_CHECKPOINT_VERSION;
+ hdr.seq = dev->checkpt_page_seq;
+ hdr.sum = dev->checkpt_sum;
+ hdr.xor = dev->checkpt_xor;
+
+ dev->checkpt_byte_offs = sizeof(hdr);
+
+ yaffs2_do_endian_hdr(dev, &hdr);
+ memcpy(dev->checkpt_buffer, &hdr, sizeof(hdr));
+}
+
+static int yaffs2_checkpt_check_chunk_hdr(struct yaffs_dev *dev)