E: Loading and executing kernel from a non-standard address usin g SY SLINUX

Phillip Lougher (phillip@lougher.demon.co.uk)
Fri, 7 Mar 2003 00:12:37 +0000


On Wed, 5 Mar 2003 ravikumar.chakaravarthy@amd.com wrote:
> Yup,
> Thanks I got that. The physical address is computed using (virtual address) -
> PAGE_OFFSET. So if my decompressed kernel is loaded at the physical address
> 0x200000 (I defined this address), I would need the linker to know it. Actually
> I went past that stage and now I got into start_kernel.. however it seems to be
> hanging somewhere after that. Is there any other kernel changes I need to make
> to avoid this hanging for a normal boot.
>

You cannot get the kernel to run from a different physical address by changing
PAGE_OFFSET. This is not what PAGE_OFFSET is for. PAGE_OFFSET specifies the
offset of virtual memory from the start of physical memory, which is assumed to
be 0x0.

You should never want to change PAGE_OFFSET.

> Thats why I tried to change
> the PAGE_OFFSET value to 0xc0100000, which should be the right value
> corresponding to (0x200000).

Wrong.

If you really do want the kernel to run at 0x200000 physical, you should
try changing the link address to 0xc0200000. I'm no expert on the
i386 kernel (I know the PPC kernel), but there's no guarantee that this
will work, if there's any code which assumes the kernel is at 0x100000
physical.

Phillip

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