summaryrefslogtreecommitdiff
path: root/arch/s390/boot/compressed/misc.c
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2010-03-24 11:49:57 +0100
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2010-03-24 11:49:54 +0100
commit06c0dd72aea3985d0ea036f771ebb1d1083bf69f (patch)
tree680414dff917976c6b43aaec5688d03c71272e96 /arch/s390/boot/compressed/misc.c
parent7b26d82f5ea7de5667f87bb5ac6570111d7bff9f (diff)
downloadlinux-3.10-06c0dd72aea3985d0ea036f771ebb1d1083bf69f.tar.gz
linux-3.10-06c0dd72aea3985d0ea036f771ebb1d1083bf69f.tar.bz2
linux-3.10-06c0dd72aea3985d0ea036f771ebb1d1083bf69f.zip
[S390] fix boot failures with compressed kernels
Fix two bugs with the kernel image compression: 1) reset the bss section of the compressed vmlinux 2) clear the high half of the registers for 64 bit early enough for the decompression step Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/boot/compressed/misc.c')
-rw-r--r--arch/s390/boot/compressed/misc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/s390/boot/compressed/misc.c b/arch/s390/boot/compressed/misc.c
index a97d6952582..14e0479d388 100644
--- a/arch/s390/boot/compressed/misc.c
+++ b/arch/s390/boot/compressed/misc.c
@@ -24,8 +24,8 @@
/* Symbols defined by linker scripts */
extern char input_data[];
extern int input_len;
-extern int _text;
-extern int _end;
+extern char _text, _end;
+extern char _bss, _ebss;
static void error(char *m);
@@ -129,12 +129,12 @@ unsigned long decompress_kernel(void)
unsigned long output_addr;
unsigned char *output;
+ check_ipl_parmblock((void *) 0, (unsigned long) output + SZ__bss_start);
+ memset(&_bss, 0, &_ebss - &_bss);
free_mem_ptr = (unsigned long)&_end;
free_mem_end_ptr = free_mem_ptr + HEAP_SIZE;
output = (unsigned char *) ((free_mem_end_ptr + 4095UL) & -4096UL);
- check_ipl_parmblock((void *) 0, (unsigned long) output + SZ__bss_start);
-
#ifdef CONFIG_BLK_DEV_INITRD
/*
* Move the initrd right behind the end of the decompressed