}
 
        ret = req->avail_out - stream->avail_out;
-       pr_debug("avail_in %u, avail_out %u (consumed %u, produced %u)\n",
+       pr_debug("avail_in %lu, avail_out %lu (consumed %lu, produced %u)\n",
                 stream->avail_in, stream->avail_out,
                 req->avail_in - stream->avail_in, ret);
        req->next_in = stream->next_in;
        }
 
        ret = req->avail_out - stream->avail_out;
-       pr_debug("avail_in %u, avail_out %u (consumed %u, produced %u)\n",
+       pr_debug("avail_in %lu, avail_out %lu (consumed %lu, produced %u)\n",
                 stream->avail_in, stream->avail_out,
                 req->avail_in - stream->avail_in, ret);
        req->next_in = stream->next_in;
        }
 
        ret = req->avail_out - stream->avail_out;
-       pr_debug("avail_in %u, avail_out %u (consumed %u, produced %u)\n",
+       pr_debug("avail_in %lu, avail_out %lu (consumed %lu, produced %u)\n",
                 stream->avail_in, stream->avail_out,
                 req->avail_in - stream->avail_in, ret);
        req->next_in = stream->next_in;
        }
 
        ret = req->avail_out - stream->avail_out;
-       pr_debug("avail_in %u, avail_out %u (consumed %u, produced %u)\n",
+       pr_debug("avail_in %lu, avail_out %lu (consumed %lu, produced %u)\n",
                 stream->avail_in, stream->avail_out,
                 req->avail_in - stream->avail_in, ret);
        req->next_in = stream->next_in;
 
                                               "zisofs: zisofs_inflate returned"
                                               " %d, inode = %lu,"
                                               " page idx = %d, bh idx = %d,"
-                                              " avail_in = %d,"
-                                              " avail_out = %d\n",
+                                              " avail_in = %ld,"
+                                              " avail_out = %ld\n",
                                               zerr, inode->i_ino, curpage,
                                               curbh, stream.avail_in,
                                               stream.avail_out);
 
 
        while (def_strm.total_out < *dstlen - STREAM_END_SPACE && def_strm.total_in < *sourcelen) {
                def_strm.avail_out = *dstlen - (def_strm.total_out + STREAM_END_SPACE);
-               def_strm.avail_in = min((unsigned)(*sourcelen-def_strm.total_in), def_strm.avail_out);
-               jffs2_dbg(1, "calling deflate with avail_in %d, avail_out %d\n",
+               def_strm.avail_in = min_t(unsigned long,
+                       (*sourcelen-def_strm.total_in), def_strm.avail_out);
+               jffs2_dbg(1, "calling deflate with avail_in %ld, avail_out %ld\n",
                          def_strm.avail_in, def_strm.avail_out);
                ret = zlib_deflate(&def_strm, Z_PARTIAL_FLUSH);
-               jffs2_dbg(1, "deflate returned with avail_in %d, avail_out %d, total_in %ld, total_out %ld\n",
+               jffs2_dbg(1, "deflate returned with avail_in %ld, avail_out %ld, total_in %ld, total_out %ld\n",
                          def_strm.avail_in, def_strm.avail_out,
                          def_strm.total_in, def_strm.total_out);
                if (ret != Z_OK) {
 
 #ifndef DECOMPRESS_BUNZIP2_H
 #define DECOMPRESS_BUNZIP2_H
 
-int bunzip2(unsigned char *inbuf, int len,
-           int(*fill)(void*, unsigned int),
-           int(*flush)(void*, unsigned int),
+int bunzip2(unsigned char *inbuf, long len,
+           long (*fill)(void*, unsigned long),
+           long (*flush)(void*, unsigned long),
            unsigned char *output,
-           int *pos,
+           long *pos,
            void(*error)(char *x));
 #endif
 
 #ifndef DECOMPRESS_GENERIC_H
 #define DECOMPRESS_GENERIC_H
 
-typedef int (*decompress_fn) (unsigned char *inbuf, int len,
-                             int(*fill)(void*, unsigned int),
-                             int(*flush)(void*, unsigned int),
+typedef int (*decompress_fn) (unsigned char *inbuf, long len,
+                             long (*fill)(void*, unsigned long),
+                             long (*flush)(void*, unsigned long),
                              unsigned char *outbuf,
-                             int *posp,
+                             long *posp,
                              void(*error)(char *x));
 
 /* inbuf   - input buffer
 
 
 /* Utility routine to detect the decompression method */
-decompress_fn decompress_method(const unsigned char *inbuf, int len,
+decompress_fn decompress_method(const unsigned char *inbuf, long len,
                                const char **name);
 
 #endif
 
 #ifndef LINUX_DECOMPRESS_INFLATE_H
 #define LINUX_DECOMPRESS_INFLATE_H
 
-int gunzip(unsigned char *inbuf, int len,
-          int(*fill)(void*, unsigned int),
-          int(*flush)(void*, unsigned int),
+int gunzip(unsigned char *inbuf, long len,
+          long (*fill)(void*, unsigned long),
+          long (*flush)(void*, unsigned long),
           unsigned char *output,
-          int *pos,
+          long *pos,
           void(*error_fn)(char *x));
 #endif
 
 #ifndef DECOMPRESS_UNLZ4_H
 #define DECOMPRESS_UNLZ4_H
 
-int unlz4(unsigned char *inbuf, int len,
-       int(*fill)(void*, unsigned int),
-       int(*flush)(void*, unsigned int),
+int unlz4(unsigned char *inbuf, long len,
+       long (*fill)(void*, unsigned long),
+       long (*flush)(void*, unsigned long),
        unsigned char *output,
-       int *pos,
+       long *pos,
        void(*error)(char *x));
 #endif
 
 #ifndef DECOMPRESS_UNLZMA_H
 #define DECOMPRESS_UNLZMA_H
 
-int unlzma(unsigned char *, int,
-          int(*fill)(void*, unsigned int),
-          int(*flush)(void*, unsigned int),
+int unlzma(unsigned char *, long,
+          long (*fill)(void*, unsigned long),
+          long (*flush)(void*, unsigned long),
           unsigned char *output,
-          int *posp,
+          long *posp,
           void(*error)(char *x)
        );
 
 
 #ifndef DECOMPRESS_UNLZO_H
 #define DECOMPRESS_UNLZO_H
 
-int unlzo(unsigned char *inbuf, int len,
-       int(*fill)(void*, unsigned int),
-       int(*flush)(void*, unsigned int),
+int unlzo(unsigned char *inbuf, long len,
+       long (*fill)(void*, unsigned long),
+       long (*flush)(void*, unsigned long),
        unsigned char *output,
-       int *pos,
+       long *pos,
        void(*error)(char *x));
 #endif
 
 #ifndef DECOMPRESS_UNXZ_H
 #define DECOMPRESS_UNXZ_H
 
-int unxz(unsigned char *in, int in_size,
-        int (*fill)(void *dest, unsigned int size),
-        int (*flush)(void *src, unsigned int size),
-        unsigned char *out, int *in_used,
+int unxz(unsigned char *in, long in_size,
+        long (*fill)(void *dest, unsigned long size),
+        long (*flush)(void *src, unsigned long size),
+        unsigned char *out, long *in_used,
         void (*error)(char *x));
 
 #endif
 
 
 typedef struct z_stream_s {
     const Byte *next_in;   /* next input byte */
-    uInt     avail_in;  /* number of bytes available at next_in */
+       uLong avail_in;  /* number of bytes available at next_in */
     uLong    total_in;  /* total nb of input bytes read so far */
 
     Byte    *next_out;  /* next output byte should be put there */
-    uInt     avail_out; /* remaining free space at next_out */
+       uLong avail_out; /* remaining free space at next_out */
     uLong    total_out; /* total nb of bytes output so far */
 
     char     *msg;      /* last error message, NULL if no error */
 
 static int decompress_error;
 static int crd_infd, crd_outfd;
 
-static int __init compr_fill(void *buf, unsigned int len)
+static long __init compr_fill(void *buf, unsigned long len)
 {
-       int r = sys_read(crd_infd, buf, len);
+       long r = sys_read(crd_infd, buf, len);
        if (r < 0)
                printk(KERN_ERR "RAMDISK: error while reading compressed data");
        else if (r == 0)
        return r;
 }
 
-static int __init compr_flush(void *window, unsigned int outcnt)
+static long __init compr_flush(void *window, unsigned long outcnt)
 {
-       int written = sys_write(crd_outfd, window, outcnt);
+       long written = sys_write(crd_outfd, window, outcnt);
        if (written != outcnt) {
                if (decompress_error == 0)
                        printk(KERN_ERR
-                              "RAMDISK: incomplete write (%d != %d)\n",
+                              "RAMDISK: incomplete write (%ld != %ld)\n",
                               written, outcnt);
                decompress_error = 1;
                return -1;
 
 } state, next_state;
 
 static __initdata char *victim;
-static __initdata unsigned count;
+static unsigned long count __initdata;
 static __initdata loff_t this_header, next_header;
 
 static inline void __init eat(unsigned n)
 
 static __initdata char *vcollected;
 static __initdata char *collected;
-static __initdata int remains;
+static long remains __initdata;
 static __initdata char *collect;
 
 static void __init read_into(char *buf, unsigned size, enum state next)
 
 static int __init do_collect(void)
 {
-       unsigned n = remains;
+       unsigned long n = remains;
        if (count < n)
                n = count;
        memcpy(collect, victim, n);
        [Reset]         = do_reset,
 };
 
-static int __init write_buffer(char *buf, unsigned len)
+static long __init write_buffer(char *buf, unsigned long len)
 {
        count = len;
        victim = buf;
        return len - count;
 }
 
-static int __init flush_buffer(void *bufv, unsigned len)
+static long __init flush_buffer(void *bufv, unsigned long len)
 {
        char *buf = (char *) bufv;
-       int written;
-       int origLen = len;
+       long written;
+       long origLen = len;
        if (message)
                return -1;
        while ((written = write_buffer(buf, len)) < len && !message) {
        return origLen;
 }
 
-static unsigned my_inptr;   /* index of next byte to be processed in inbuf */
+static unsigned long my_inptr; /* index of next byte to be processed in inbuf */
 
 #include <linux/decompress/generic.h>
 
-static char * __init unpack_to_rootfs(char *buf, unsigned len)
+static char * __init unpack_to_rootfs(char *buf, unsigned long len)
 {
-       int written, res;
+       long written;
        decompress_fn decompress;
        const char *compress_name;
        static __initdata char msg_buf[64];
                decompress = decompress_method(buf, len, &compress_name);
                pr_debug("Detected %s compressed data\n", compress_name);
                if (decompress) {
-                       res = decompress(buf, len, NULL, flush_buffer, NULL,
+                       int res = decompress(buf, len, NULL, flush_buffer, NULL,
                                   &my_inptr, error);
                        if (res)
                                error("decompressor failed");
 
        { {0, 0}, NULL, NULL }
 };
 
-decompress_fn __init decompress_method(const unsigned char *inbuf, int len,
+decompress_fn __init decompress_method(const unsigned char *inbuf, long len,
                                const char **name)
 {
        const struct compress_format *cf;
 
        /* State for interrupting output loop */
        int writeCopies, writePos, writeRunCountdown, writeCount, writeCurrent;
        /* I/O tracking data (file handles, buffers, positions, etc.) */
-       int (*fill)(void*, unsigned int);
-       int inbufCount, inbufPos /*, outbufPos*/;
+       long (*fill)(void*, unsigned long);
+       long inbufCount, inbufPos /*, outbufPos*/;
        unsigned char *inbuf /*,*outbuf*/;
        unsigned int inbufBitCount, inbufBits;
        /* The CRC values stored in the block header and calculated from the
        goto decode_next_byte;
 }
 
-static int INIT nofill(void *buf, unsigned int len)
+static long INIT nofill(void *buf, unsigned long len)
 {
        return -1;
 }
 /* Allocate the structure, read file header.  If in_fd ==-1, inbuf must contain
    a complete bunzip file (len bytes long).  If in_fd!=-1, inbuf and len are
    ignored, and data is read from file handle into temporary buffer. */
-static int INIT start_bunzip(struct bunzip_data **bdp, void *inbuf, int len,
-                            int (*fill)(void*, unsigned int))
+static int INIT start_bunzip(struct bunzip_data **bdp, void *inbuf, long len,
+                            long (*fill)(void*, unsigned long))
 {
        struct bunzip_data *bd;
        unsigned int i, j, c;
 
 /* Example usage: decompress src_fd to dst_fd.  (Stops at end of bzip2 data,
    not end of file.) */
-STATIC int INIT bunzip2(unsigned char *buf, int len,
-                       int(*fill)(void*, unsigned int),
-                       int(*flush)(void*, unsigned int),
+STATIC int INIT bunzip2(unsigned char *buf, long len,
+                       long (*fill)(void*, unsigned long),
+                       long (*flush)(void*, unsigned long),
                        unsigned char *outbuf,
-                       int *pos,
+                       long *pos,
                        void(*error)(char *x))
 {
        struct bunzip_data *bd;
 }
 
 #ifdef PREBOOT
-STATIC int INIT decompress(unsigned char *buf, int len,
-                       int(*fill)(void*, unsigned int),
-                       int(*flush)(void*, unsigned int),
+STATIC int INIT decompress(unsigned char *buf, long len,
+                       long (*fill)(void*, unsigned long),
+                       long (*flush)(void*, unsigned long),
                        unsigned char *outbuf,
-                       int *pos,
+                       long *pos,
                        void(*error)(char *x))
 {
        return bunzip2(buf, len - 4, fill, flush, outbuf, pos, error);
 
 
 #define GZIP_IOBUF_SIZE (16*1024)
 
-static int INIT nofill(void *buffer, unsigned int len)
+static long INIT nofill(void *buffer, unsigned long len)
 {
        return -1;
 }
 
 /* Included from initramfs et al code */
-STATIC int INIT gunzip(unsigned char *buf, int len,
-                      int(*fill)(void*, unsigned int),
-                      int(*flush)(void*, unsigned int),
+STATIC int INIT gunzip(unsigned char *buf, long len,
+                      long (*fill)(void*, unsigned long),
+                      long (*flush)(void*, unsigned long),
                       unsigned char *out_buf,
-                      int *pos,
+                      long *pos,
                       void(*error)(char *x)) {
        u8 *zbuf;
        struct z_stream_s *strm;
 
                /* Write any data generated */
                if (flush && strm->next_out > out_buf) {
-                       int l = strm->next_out - out_buf;
+                       long l = strm->next_out - out_buf;
                        if (l != flush(out_buf, l)) {
                                rc = -1;
                                error("write error");
 
 #define LZ4_DEFAULT_UNCOMPRESSED_CHUNK_SIZE (8 << 20)
 #define ARCHIVE_MAGICNUMBER 0x184C2102
 
-STATIC inline int INIT unlz4(u8 *input, int in_len,
-                               int (*fill) (void *, unsigned int),
-                               int (*flush) (void *, unsigned int),
-                               u8 *output, int *posp,
+STATIC inline int INIT unlz4(u8 *input, long in_len,
+                               long (*fill)(void *, unsigned long),
+                               long (*flush)(void *, unsigned long),
+                               u8 *output, long *posp,
                                void (*error) (char *x))
 {
        int ret = -1;
        u8 *inp;
        u8 *inp_start;
        u8 *outp;
-       int size = in_len;
+       long size = in_len;
 #ifdef PREBOOT
        size_t out_len = get_unaligned_le32(input + in_len);
 #endif
 }
 
 #ifdef PREBOOT
-STATIC int INIT decompress(unsigned char *buf, int in_len,
-                             int(*fill)(void*, unsigned int),
-                             int(*flush)(void*, unsigned int),
+STATIC int INIT decompress(unsigned char *buf, long in_len,
+                             long (*fill)(void*, unsigned long),
+                             long (*flush)(void*, unsigned long),
                              unsigned char *output,
-                             int *posp,
+                             long *posp,
                              void(*error)(char *x)
        )
 {
 
 #define LZMA_IOBUF_SIZE        0x10000
 
 struct rc {
-       int (*fill)(void*, unsigned int);
+       long (*fill)(void*, unsigned long);
        uint8_t *ptr;
        uint8_t *buffer;
        uint8_t *buffer_end;
-       int buffer_size;
+       long buffer_size;
        uint32_t code;
        uint32_t range;
        uint32_t bound;
 #define RC_MODEL_TOTAL_BITS 11
 
 
-static int INIT nofill(void *buffer, unsigned int len)
+static long INIT nofill(void *buffer, unsigned long len)
 {
        return -1;
 }
 
 /* Called once */
 static inline void INIT rc_init(struct rc *rc,
-                                      int (*fill)(void*, unsigned int),
-                                      char *buffer, int buffer_size)
+                                      long (*fill)(void*, unsigned long),
+                                      char *buffer, long buffer_size)
 {
        if (fill)
                rc->fill = fill;
        size_t buffer_pos;
        int bufsize;
        size_t global_pos;
-       int(*flush)(void*, unsigned int);
+       long (*flush)(void*, unsigned long);
        struct lzma_header *header;
 };
 
 
 
 
-STATIC inline int INIT unlzma(unsigned char *buf, int in_len,
-                             int(*fill)(void*, unsigned int),
-                             int(*flush)(void*, unsigned int),
+STATIC inline int INIT unlzma(unsigned char *buf, long in_len,
+                             long (*fill)(void*, unsigned long),
+                             long (*flush)(void*, unsigned long),
                              unsigned char *output,
-                             int *posp,
+                             long *posp,
                              void(*error)(char *x)
        )
 {
 }
 
 #ifdef PREBOOT
-STATIC int INIT decompress(unsigned char *buf, int in_len,
-                             int(*fill)(void*, unsigned int),
-                             int(*flush)(void*, unsigned int),
+STATIC int INIT decompress(unsigned char *buf, long in_len,
+                             long (*fill)(void*, unsigned long),
+                             long (*flush)(void*, unsigned long),
                              unsigned char *output,
-                             int *posp,
+                             long *posp,
                              void(*error)(char *x)
        )
 {
 
 #define HEADER_SIZE_MIN       (9 + 7     + 4 + 8     + 1       + 4)
 #define HEADER_SIZE_MAX       (9 + 7 + 1 + 8 + 8 + 4 + 1 + 255 + 4)
 
-STATIC inline int INIT parse_header(u8 *input, int *skip, int in_len)
+STATIC inline long INIT parse_header(u8 *input, long *skip, long in_len)
 {
        int l;
        u8 *parse = input;
        return 1;
 }
 
-STATIC inline int INIT unlzo(u8 *input, int in_len,
-                               int (*fill) (void *, unsigned int),
-                               int (*flush) (void *, unsigned int),
-                               u8 *output, int *posp,
+STATIC int INIT unlzo(u8 *input, long in_len,
+                               long (*fill)(void *, unsigned long),
+                               long (*flush)(void *, unsigned long),
+                               u8 *output, long *posp,
                                void (*error) (char *x))
 {
        u8 r = 0;
-       int skip = 0;
+       long skip = 0;
        u32 src_len, dst_len;
        size_t tmp;
        u8 *in_buf, *in_buf_save, *out_buf;
 
  * both input and output buffers are available as a single chunk, i.e. when
  * fill() and flush() won't be used.
  */
-STATIC int INIT unxz(unsigned char *in, int in_size,
-                    int (*fill)(void *dest, unsigned int size),
-                    int (*flush)(void *src, unsigned int size),
-                    unsigned char *out, int *in_used,
+STATIC int INIT unxz(unsigned char *in, long in_size,
+                    long (*fill)(void *dest, unsigned long size),
+                    long (*flush)(void *src, unsigned long size),
+                    unsigned char *out, long *in_used,
                     void (*error)(char *x))
 {
        struct xz_buf b;
                                 * returned by xz_dec_run(), but probably
                                 * it's not too bad.
                                 */
-                               if (flush(b.out, b.out_pos) != (int)b.out_pos)
+                               if (flush(b.out, b.out_pos) != (long)b.out_pos)
                                        ret = XZ_BUF_ERROR;
 
                                b.out_pos = 0;