diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-10 18:30:41 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-10 18:30:41 -0400 |
| commit | 82782ca77d1bfb32b0334cce40a25b91bd8ec016 (patch) | |
| tree | d8c73212af80ed9aa314612e2b8b9e6cf74c47f7 /arch/x86/boot/compressed/misc.c | |
| parent | f0d5e12bd42b7173ebbbf59279c867605f859814 (diff) | |
| parent | 6799687a53a28536fd027ccb644833f66a778925 (diff) | |
Merge branch 'x86-kbuild-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-kbuild-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (46 commits)
x86, boot: add new generated files to the appropriate .gitignore files
x86, boot: correct the calculation of ZO_INIT_SIZE
x86-64: align __PHYSICAL_START, remove __KERNEL_ALIGN
x86, boot: correct sanity checks in boot/compressed/misc.c
x86: add extension fields for bootloader type and version
x86, defconfig: update kernel position parameters
x86, defconfig: update to current, no material changes
x86: make CONFIG_RELOCATABLE the default
x86: default CONFIG_PHYSICAL_START and CONFIG_PHYSICAL_ALIGN to 16 MB
x86: document new bzImage fields
x86, boot: make kernel_alignment adjustable; new bzImage fields
x86, boot: remove dead code from boot/compressed/head_*.S
x86, boot: use LOAD_PHYSICAL_ADDR on 64 bits
x86, boot: make symbols from the main vmlinux available
x86, boot: determine compressed code offset at compile time
x86, boot: use appropriate rep string for move and clear
x86, boot: zero EFLAGS on 32 bits
x86, boot: set up the decompression stack as early as possible
x86, boot: straighten out ranges to copy/zero in compressed/head*.S
x86, boot: stylistic cleanups for boot/compressed/head_64.S
...
Fixed trivial conflict in arch/x86/configs/x86_64_defconfig manually
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, | |||
| 325 | free_mem_ptr = heap; /* Heap */ | 325 | free_mem_ptr = heap; /* Heap */ |
| 326 | free_mem_end_ptr = heap + BOOT_HEAP_SIZE; | 326 | free_mem_end_ptr = heap + BOOT_HEAP_SIZE; |
| 327 | 327 | ||
| 328 | if ((unsigned long)output & (MIN_KERNEL_ALIGN - 1)) | ||
| 329 | error("Destination address inappropriately aligned"); | ||
| 328 | #ifdef CONFIG_X86_64 | 330 | #ifdef CONFIG_X86_64 |
| 329 | if ((unsigned long)output & (__KERNEL_ALIGN - 1)) | 331 | if (heap > 0x3fffffffffffUL) |
| 330 | error("Destination address not 2M aligned"); | ||
| 331 | if ((unsigned long)output >= 0xffffffffffUL) | ||
| 332 | error("Destination address too large"); | 332 | error("Destination address too large"); |
| 333 | #else | 333 | #else |
| 334 | if ((u32)output & (CONFIG_PHYSICAL_ALIGN - 1)) | ||
| 335 | error("Destination address not CONFIG_PHYSICAL_ALIGN aligned"); | ||
| 336 | if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff)) | 334 | if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff)) |
| 337 | error("Destination address too large"); | 335 | error("Destination address too large"); |
| 336 | #endif | ||
| 338 | #ifndef CONFIG_RELOCATABLE | 337 | #ifndef CONFIG_RELOCATABLE |
| 339 | if ((u32)output != LOAD_PHYSICAL_ADDR) | 338 | if ((unsigned long)output != LOAD_PHYSICAL_ADDR) |
| 340 | error("Wrong destination address"); | 339 | error("Wrong destination address"); |
| 341 | #endif | 340 | #endif |
| 342 | #endif | ||
| 343 | 341 | ||
| 344 | if (!quiet) | 342 | if (!quiet) |
| 345 | putstr("\nDecompressing Linux... "); | 343 | putstr("\nDecompressing Linux... "); |
