firmware-tools/ptgen: fix endianness conversion for PTE .start, .length field.
[openwrt/openwrt.git] / tools / firmware-utils / src / ptgen.c
index 6379ed7a5904b7ddc48316ce52549c06f3c50d6e..68bad6fd974f261a6073047c3b5e8c95f0b4efdb 100644 (file)
@@ -31,9 +31,9 @@
 #include <stdint.h>
 
 #if __BYTE_ORDER == __BIG_ENDIAN
-#define cpu_to_le16(x) bswap_16(x)
+#define cpu_to_le32(x) bswap_32(x)
 #elif __BYTE_ORDER == __LITTLE_ENDIAN
-#define cpu_to_le16(x) (x)
+#define cpu_to_le32(x) (x)
 #else
 #error unknown endianness!
 #endif
@@ -142,11 +142,11 @@ static int gen_ptable(uint32_t signature, int nr)
                start = sect + sectors;
                if (kb_align != 0)
                        start = round_to_kb(start);
-               pte[i].start = cpu_to_le16(start);
+               pte[i].start = cpu_to_le32(start);
                sect = start + parts[i].size * 2;
                if (kb_align == 0)
                        sect = round_to_cyl(sect);
-               pte[i].length = cpu_to_le16(len = sect - start);
+               pte[i].length = cpu_to_le32(len = sect - start);
                to_chs(start, pte[i].chs_start);
                to_chs(start + len - 1, pte[i].chs_end);
                if (verbose)