<div dir="ltr">>There's another number, set during the kernel build, that tells the<br><div>
kernel what address it should expect to be loaded at.</div><div><br></div><div>Thank you for the reply. I have added a linker script specifying the same load address as one one config.txt. The simple kernel(hello world) is only able to run, when both addresses(in linker script and config.txt) are 0x80000. I don't know how that number can be set during the build other than in the linker script. I would love to know about it. Can you point me towards the resources to learn about it?</div><div><br></div><div>>You need to find some way to ensure that the boot loader and the initial part<br>
of the kernel (the one that proceeds to unpack the rest of the kernel, set up<br>
KASLR, and relocation if neded) agree on what address things start off at.<div class="gmail-adL"><br>
</div><div class="gmail-adL">How can I set the load address for the initial part of the kernel other than in the linker script?<br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 3 Nov 2021 at 02:59, Valdis Klētnieks <<a href="mailto:valdis.kletnieks@vt.edu" target="_blank">valdis.kletnieks@vt.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, 02 Nov 2021 17:13:16 +0500, Mushahid Hussain said:<br>
<br>
> I have written a simple kernel which prints Hello World to UART. The simple<br>
> kernel works successfully and prints Hello World to UART, if I load it at<br>
> 0x80000, which is the default load address for the 64-bit kernel.<br>
><br>
> There's a configuration(config.txt)[1] kernel_address on Raspberry Pi 4 but<br>
> whenever I change the load address by even 1 byte, the simple kernel would<br>
> not run. It is only able to run at 0x80000.<br>
<br>
The config.txt value is for the boot loader, to tell it where the kernel should<br>
be loaded.  There's another number, set during the kernel build, that tells the<br>
kernel what address it should expect to be loaded at.<br>
<br>
So if your micro-kernel is build to load at 0x80000 and then you tell the boot<br>
loader to load at 0x80001, or vice versa, things will go badly.<br>
<br>
You need to find some way to ensure that the boot loader and the initial part<br>
of the kernel (the one that proceeds to unpack the rest of the kernel, set up<br>
KASLR, and relocation if neded) agree on what address things start off at.<br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr"><div dir="ltr">Mushahid Hussain<br></div></div>