why the decompressed procedure move kernel from address 0x100000(1M)to 0x1000000(16M) +x

From: hacklu
Date: Thu May 17 2012 - 01:56:06 EST


hi all,
recently, I got some puzzle when I read source code of the system boot. I need some help.

at the end of src/arch/x86/boot/header.S, kernel jump to 0x100000(where is the src/arch/x86/boot/compressed/head_32.S).
in __this__ head_32.S, I found the kernel is move to 0x1000000(mostly is to here) +x. the x distance is used for decompressed buf. must leave some distance for decompressing without overlap.

after the move, kernel is decompressed at 0x1000000(16m). and jump to it.

so why not decompressed kernel at 0x100000(1M) to 0x1000000(16m) directly without moving?

is the move necessary?

thanks for reading above.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/