Commit 1180e01d authored by Ingo Molnar's avatar Ingo Molnar

x86: more cleanups in arch/x86/boot/compressed/misc.c

Before:
   total: 7 errors, 8 warnings, 471 lines checked
After:
   total: 5 errors, 5 warnings, 479 lines checked

( the rest cannot be eliminated due to zlib interface cruftiness. )

No code changed:

arch/x86/boot/compressed/misc.o:

   text	   data	    bss	    dec	    hex	filename
  10716	      8	   2152	  12876	   324c	misc.o.before
  10716	      8	   2152	  12876	   324c	misc.o.after

md5:
   2c20c903986a3c9bca44306c6646067e  misc.o.before.asm
   2c20c903986a3c9bca44306c6646067e  misc.o.after.asm
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent fd77c7ca
...@@ -58,8 +58,8 @@ ...@@ -58,8 +58,8 @@
* 1 bit (last block flag) * 1 bit (last block flag)
* 2 bits (block type) * 2 bits (block type)
* *
* 1 block occurs every 32K -1 bytes or when there 50% compression has been achieved. * 1 block occurs every 32K -1 bytes or when there 50% compression
* The smallest block type encoding is always used. * has been achieved. The smallest block type encoding is always used.
* *
* stored: * stored:
* 32 bits length in bytes. * 32 bits length in bytes.
...@@ -95,9 +95,9 @@ ...@@ -95,9 +95,9 @@
* *
* All of which is enough to compute an amount of extra data that is required * All of which is enough to compute an amount of extra data that is required
* to be safe. To avoid problems at the block level allocating 5 extra bytes * to be safe. To avoid problems at the block level allocating 5 extra bytes
* per 32767 bytes of data is sufficient. To avoind problems internal to a block * per 32767 bytes of data is sufficient. To avoind problems internal to a
* adding an extra 32767 bytes (the worst case uncompressed block size) is * block adding an extra 32767 bytes (the worst case uncompressed block size)
* sufficient, to ensure that in the worst case the decompressed data for * is sufficient, to ensure that in the worst case the decompressed data for
* block will stop the byte before the compressed data for a block begins. * block will stop the byte before the compressed data for a block begins.
* To avoid problems with the compressed data's meta information an extra 18 * To avoid problems with the compressed data's meta information an extra 18
* bytes are needed. Leading to the formula: * bytes are needed. Leading to the formula:
...@@ -121,47 +121,54 @@ ...@@ -121,47 +121,54 @@
#undef memset #undef memset
#undef memcpy #undef memcpy
#define memzero(s, n) memset ((s), 0, (n)) #define memzero(s, n) memset((s), 0, (n))
typedef unsigned char uch; typedef unsigned char uch;
typedef unsigned short ush; typedef unsigned short ush;
typedef unsigned long ulg; typedef unsigned long ulg;
#define WSIZE 0x80000000 /* /*
* Window size must be at least 32k, * Window size must be at least 32k, and a power of two.
* and a power of two * We don't actually have a window just a huge output buffer,
* We don't actually have a window just * so we report a 2G window size, as that should always be
* a huge output buffer so I report * larger than our output buffer:
* a 2G windows size, as that should
* always be larger than our output buffer.
*/ */
#define WSIZE 0x80000000
/* Input buffer: */
static unsigned char *inbuf;
/* Sliding window buffer (and final output buffer): */
static unsigned char *window;
/* Valid bytes in inbuf: */
static unsigned insize;
static uch *inbuf; /* input buffer */ /* Index of next byte to be processed in inbuf: */
static uch *window; /* Sliding window buffer, (and final output buffer) */ static unsigned inptr;
static unsigned insize; /* valid bytes in inbuf */ /* Bytes in output buffer: */
static unsigned inptr; /* index of next byte to be processed in inbuf */ static unsigned outcnt;
static unsigned outcnt; /* bytes in output buffer */
/* gzip flag byte */ /* gzip flag byte */
#define ASCII_FLAG 0x01 /* bit 0 set: file probably ASCII text */ #define ASCII_FLAG 0x01 /* bit 0 set: file probably ASCII text */
#define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */ #define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gz file */
#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */ #define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
#define ORIG_NAME 0x08 /* bit 3 set: original file name present */ #define ORIG_NAM 0x08 /* bit 3 set: original file name present */
#define COMMENT 0x10 /* bit 4 set: file comment present */ #define COMMENT 0x10 /* bit 4 set: file comment present */
#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */ #define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */
#define RESERVED 0xC0 /* bit 6,7: reserved */ #define RESERVED 0xC0 /* bit 6, 7: reserved */
#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf()) #define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf())
/* Diagnostic functions */ /* Diagnostic functions */
#ifdef DEBUG #ifdef DEBUG
# define Assert(cond, msg) {if(!(cond)) error(msg); } # define Assert(cond, msg) do { if (!(cond)) error(msg); } while (0)
# define Trace(x) fprintf x # define Trace(x) do { fprintf x; } while (0)
# define Tracev(x) {if (verbose) fprintf x ; } # define Tracev(x) do { if (verbose) fprintf x ; } while (0)
# define Tracevv(x) {if (verbose > 1) fprintf x ; } # define Tracevv(x) do { if (verbose > 1) fprintf x ; } while (0)
# define Tracec(c, x) {if (verbose && (c)) fprintf x ; } # define Tracec(c, x) do { if (verbose && (c)) fprintf x ; } while (0)
# define Tracecv(c, x) {if (verbose > 1 && (c)) fprintf x ; } # define Tracecv(c, x) do { if (verbose > 1 && (c)) fprintf x ; } while (0)
#else #else
# define Assert(cond, msg) # define Assert(cond, msg)
# define Trace(x) # define Trace(x)
...@@ -349,9 +356,9 @@ static void flush_window(void) ...@@ -349,9 +356,9 @@ static void flush_window(void)
/* With my window equal to my output buffer /* With my window equal to my output buffer
* I only need to compute the crc here. * I only need to compute the crc here.
*/ */
ulg c = crc; /* temporary variable */ unsigned long c = crc; /* temporary variable */
unsigned n; unsigned n;
uch *in, ch; unsigned char *in, ch;
in = window; in = window;
for (n = 0; n < outcnt; n++) { for (n = 0; n < outcnt; n++) {
...@@ -359,7 +366,7 @@ static void flush_window(void) ...@@ -359,7 +366,7 @@ static void flush_window(void)
c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8); c = crc_32_tab[((int)c ^ ch) & 0xff] ^ (c >> 8);
} }
crc = c; crc = c;
bytes_out += (ulg)outcnt; bytes_out += (unsigned long)outcnt;
outcnt = 0; outcnt = 0;
} }
...@@ -423,8 +430,9 @@ static void parse_elf(void *output) ...@@ -423,8 +430,9 @@ static void parse_elf(void *output)
} }
asmlinkage void decompress_kernel(void *rmode, memptr heap, asmlinkage void decompress_kernel(void *rmode, memptr heap,
uch *input_data, unsigned long input_len, unsigned char *input_data,
uch *output) unsigned long input_len,
unsigned char *output)
{ {
real_mode = rmode; real_mode = rmode;
...@@ -447,12 +455,12 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap, ...@@ -447,12 +455,12 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap,
inptr = 0; inptr = 0;
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
if ((ulg)output & (__KERNEL_ALIGN - 1)) if ((unsigned long)output & (__KERNEL_ALIGN - 1))
error("Destination address not 2M aligned"); error("Destination address not 2M aligned");
if ((ulg)output >= 0xffffffffffUL) if ((unsigned long)output >= 0xffffffffffUL)
error("Destination address too large"); error("Destination address too large");
#else #else
if ((u32)output & (CONFIG_PHYSICAL_ALIGN -1)) if ((u32)output & (CONFIG_PHYSICAL_ALIGN - 1))
error("Destination address not CONFIG_PHYSICAL_ALIGN aligned"); error("Destination address not CONFIG_PHYSICAL_ALIGN aligned");
if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff)) if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff))
error("Destination address too large"); error("Destination address too large");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment