On Tue, 02 Nov 2021 17:13:16 +0500, Mushahid Hussain said: > I have written a simple kernel which prints Hello World to UART. The simple > kernel works successfully and prints Hello World to UART, if I load it at > 0x80000, which is the default load address for the 64-bit kernel. > > There's a configuration(config.txt)[1] kernel_address on Raspberry Pi 4 but > whenever I change the load address by even 1 byte, the simple kernel would > not run. It is only able to run at 0x80000. The config.txt value is for the boot loader, to tell it where the kernel should be loaded. There's another number, set during the kernel build, that tells the kernel what address it should expect to be loaded at. So if your micro-kernel is build to load at 0x80000 and then you tell the boot loader to load at 0x80001, or vice versa, things will go badly. You need to find some way to ensure that the boot loader and the initial part of the kernel (the one that proceeds to unpack the rest of the kernel, set up KASLR, and relocation if neded) agree on what address things start off at.
Attachment:
pgpsviwvi0qAS.pgp
Description: PGP signature
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies