diff options
Diffstat (limited to 'arch/x86/boot/compressed/misc.c')
| -rw-r--r-- | arch/x86/boot/compressed/misc.c | 12 | 
1 files changed, 5 insertions, 7 deletions
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index e45be73684f..842b2a36174 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c @@ -325,21 +325,19 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap,  	free_mem_ptr     = heap;	/* Heap */  	free_mem_end_ptr = heap + BOOT_HEAP_SIZE; +	if ((unsigned long)output & (MIN_KERNEL_ALIGN - 1)) +		error("Destination address inappropriately aligned");  #ifdef CONFIG_X86_64 -	if ((unsigned long)output & (__KERNEL_ALIGN - 1)) -		error("Destination address not 2M aligned"); -	if ((unsigned long)output >= 0xffffffffffUL) +	if (heap > 0x3fffffffffffUL)  		error("Destination address too large");  #else -	if ((u32)output & (CONFIG_PHYSICAL_ALIGN - 1)) -		error("Destination address not CONFIG_PHYSICAL_ALIGN aligned");  	if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff))  		error("Destination address too large"); +#endif  #ifndef CONFIG_RELOCATABLE -	if ((u32)output != LOAD_PHYSICAL_ADDR) +	if ((unsigned long)output != LOAD_PHYSICAL_ADDR)  		error("Wrong destination address");  #endif -#endif  	if (!quiet)  		putstr("\nDecompressing Linux... ");  |