[OpenWrt-Devel] [PATCH] firmware-tools/ptgen: fix endianness conversion for PTE .start, .length field.

Yousong Zhou yszhou4tech at gmail.com
Sun Jun 14 00:13:37 EDT 2015


They are of 32-bit little endian integers.

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 tools/firmware-utils/src/ptgen.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c
index 6379ed7..68bad6f 100644
--- a/tools/firmware-utils/src/ptgen.c
+++ b/tools/firmware-utils/src/ptgen.c
@@ -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)
-- 
1.7.10.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list