Hello, For anyone's help..
I asked this question to unix stackexchage and received an answer. https://unix.stackexchange.com/questions/674155/what-does-loadaddr-0x2000800 0-mean-in-linux-kernel-make-command regards, Chan Kim From: Chan Kim <[email protected]> Sent: Thursday, October 21, 2021 3:00 PM To: [email protected] Subject: What does LOADADDR=0x20008000 mean in linux kernel make command? and what is kernel load address? Hello all, I'm learning u-boot these days and have a question. Using qemu model, I could (using qemu) load the "Image" (for arm64) on memory location I want and I could run the kernel booting using `booti ker_add initrd_addr dtb_addr` command. As you know in arm64, the uImage format is not supported. Then, when building linux kernel for arm (32 bit) using u-boot, what does "make LOADADDR=0x20008000 uImage" mean? Regardless of this LOADADDR, we can load (from SD card or network) the uImage anywhere we want using u-boot shell. Then what is this LOADADDR? Does it mean that when we run `bootm` command, the u-boot program relocates the kernel image inside the uImage to 0x20008000? (and the kernel built not using position independent, PC-relative addressing..using hard absolute addresses..) Some years ago, we used kernel start address during the build and I had to load the kernel image exactly on that address. But this time I could load 'Image' anywhere I want and could run it. Why? Is it because I (not knowingly) compiled the arm64 'Image' using position independent address(-PIE option)? If someone with expertise could explain to me what's happening here, I would really really appreciate it. Thank you. Best regards, Chan Kim
_______________________________________________ Kernelnewbies mailing list [email protected] https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
