From bf4d2d862e0b140febabd5897c78f54ef8773a67 Mon Sep 17 00:00:00 2001 From: Peter Korsgaard Date: Fri, 4 Dec 2009 09:24:01 +0100 Subject: busybox: 1.15.2 patches Signed-off-by: Peter Korsgaard --- package/busybox/busybox-1.15.2-flash.patch | 84 ++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 package/busybox/busybox-1.15.2-flash.patch (limited to 'package/busybox/busybox-1.15.2-flash.patch') diff --git a/package/busybox/busybox-1.15.2-flash.patch b/package/busybox/busybox-1.15.2-flash.patch new file mode 100644 index 000000000..f91540706 --- /dev/null +++ b/package/busybox/busybox-1.15.2-flash.patch @@ -0,0 +1,84 @@ +diff -urpN busybox-1.15.2/miscutils/flash_eraseall.c busybox-1.15.2-flash/miscutils/flash_eraseall.c +--- busybox-1.15.2/miscutils/flash_eraseall.c 2009-09-26 15:14:57.000000000 +0200 ++++ busybox-1.15.2-flash/miscutils/flash_eraseall.c 2009-11-29 00:01:46.000000000 +0100 +@@ -12,22 +12,35 @@ + + #include "libbb.h" + #include +-#include ++#include + + #define OPTION_J (1 << 0) + #define OPTION_Q (1 << 1) + #define IS_NAND (1 << 2) + #define BBTEST (1 << 3) + +-struct globals { +- /* This is used in the cpu_to_je/je_to_cpu macros in jffs2_user.h */ +- int tgt_endian; +-}; +-#define G (*(struct globals*)&bb_common_bufsiz1) +-#define target_endian (G.tgt_endian) +-#define INIT_G() do { \ +- target_endian = __BYTE_ORDER; \ +-} while (0) ++/* mtd/jffs2-user.h used to have this atrocity: ++extern int target_endian; ++ ++#define t16(x) ({ __u16 __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_16(__b); }) ++#define t32(x) ({ __u32 __b = (x); (target_endian==__BYTE_ORDER)?__b:bswap_32(__b); }) ++ ++#define cpu_to_je16(x) ((jint16_t){t16(x)}) ++#define cpu_to_je32(x) ((jint32_t){t32(x)}) ++#define cpu_to_jemode(x) ((jmode_t){t32(x)}) ++ ++#define je16_to_cpu(x) (t16((x).v16)) ++#define je32_to_cpu(x) (t32((x).v32)) ++#define jemode_to_cpu(x) (t32((x).m)) ++ ++but mtd/jffs2-user.h is gone now (at least 2.6.31.6 does not have it anymore) ++*/ ++ ++/* We always use native endianness */ ++#undef cpu_to_je16 ++#undef cpu_to_je32 ++#define cpu_to_je16(v) ((jint16_t){(v)}) ++#define cpu_to_je32(v) ((jint32_t){(v)}) + + static uint32_t crc32(uint32_t val, const void *ss, int len, + uint32_t *crc32_table) +@@ -40,9 +53,11 @@ static uint32_t crc32(uint32_t val, cons + + static void show_progress(mtd_info_t *meminfo, erase_info_t *erase) + { +- printf("\rErasing %d Kibyte @ %x -- %2llu %% complete.", +- (unsigned)meminfo->erasesize / 1024, erase->start, +- (unsigned long long) erase->start * 100 / meminfo->size); ++ printf("\rErasing %u Kibyte @ %x - %2u%% complete.", ++ (unsigned)meminfo->erasesize / 1024, ++ erase->start, ++ (unsigned) ((unsigned long long) erase->start * 100 / meminfo->size) ++ ); + fflush(stdout); + } + +@@ -57,17 +72,15 @@ int flash_eraseall_main(int argc UNUSED_ + unsigned int flags; + char *mtd_name; + +- INIT_G(); + opt_complementary = "=1"; + flags = BBTEST | getopt32(argv, "jq"); + + mtd_name = argv[optind]; +- xstat(mtd_name, &st); ++ fd = xopen(mtd_name, O_RDWR); ++ fstat(fd, &st); + if (!S_ISCHR(st.st_mode)) + bb_error_msg_and_die("%s: not a char device", mtd_name); + +- fd = xopen(mtd_name, O_RDWR); +- + xioctl(fd, MEMGETINFO, &meminfo); + erase.length = meminfo.erasesize; + if (meminfo.type == MTD_NANDFLASH) -- cgit v1.2.3