X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_checkptrw.c;h=59ca34afe3ee749aff52f664bfff11d8369ab86e;hp=16ee1e0695c6b468941f4fcd0c6b983324e6d7db;hb=21b2dedaa32ab309f6d1daec966528b7586bd207;hpb=bf0323aab4b4a577fcb2dafc573b443aabcedc02 diff --git a/yaffs_checkptrw.c b/yaffs_checkptrw.c index 16ee1e0..59ca34a 100644 --- a/yaffs_checkptrw.c +++ b/yaffs_checkptrw.c @@ -13,6 +13,7 @@ #include "yaffs_checkptrw.h" #include "yaffs_getblockinfo.h" +#include "yaffs_endian.h" struct yaffs_checkpt_chunk_hdr { int version; @@ -32,6 +33,18 @@ 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; @@ -43,6 +56,7 @@ static void yaffs2_checkpt_init_chunk_hdr(struct yaffs_dev *dev) dev->checkpt_byte_offs = sizeof(hdr); + yaffs2_do_endian_hdr(dev, &hdr); memcpy(dev->checkpt_buffer, &hdr, sizeof(hdr)); } @@ -51,6 +65,7 @@ static int yaffs2_checkpt_check_chunk_hdr(struct yaffs_dev *dev) struct yaffs_checkpt_chunk_hdr hdr; memcpy(&hdr, dev->checkpt_buffer, sizeof(hdr)); + yaffs2_do_endian_hdr(dev, &hdr); dev->checkpt_byte_offs = sizeof(hdr);