On Fri, Oct 26, 2018 at 01:55:08PM +0200, Christian Weisgerber wrote:
> Move the calculation of the entry point to after the description
> of the .text section. LOADADDR(.text) is not available earlier
> with lld.
>
> With this, lld builds working kernels on i386.
>
> Also: Should this be __start_phys? It seems odd that we put a
> non-reserved symbol into the kernel namespace. start_phys is not
> referenced anywhere by the kernel code and this is the only place
> it appears in the source tree.
I think this was used ages ago in hibernate, but we removed that need
later. Probably forgot to clean up all the mess.
-ml
>
> Index: sys/arch/i386/conf/ld.script
> ===================================================================
> RCS file: /cvs/src/sys/arch/i386/conf/ld.script,v
> retrieving revision 1.9
> diff -u -p -r1.9 ld.script
> --- sys/arch/i386/conf/ld.script 11 Apr 2018 15:44:08 -0000 1.9
> +++ sys/arch/i386/conf/ld.script 25 Oct 2018 20:35:18 -0000
> @@ -41,8 +41,6 @@ __ALIGN_SIZE = 0x1000;
> __kernel_base_virt = 0xd0200000 + SIZEOF_HEADERS;
> __kernel_base_phys = __kernel_base_virt & 0xfffffff;
>
> -/* We use physical address to jump to kernel */
> -start_phys = LOADADDR(.text) + (start - __kernel_base_virt);
> ENTRY(start_phys)
> SECTIONS
> {
> @@ -56,6 +54,8 @@ SECTIONS
> locore0.o(.text)
> *(.text .text.*)
> } :text =0xcccccccc
> + /* We use physical address to jump to kernel */
> + start_phys = LOADADDR(.text) + (start - __kernel_base_virt);
>
> . = ALIGN(__ALIGN_SIZE);
> __kernel_kutext_phys = . & 0xfffffff;
> --
> Christian "naddy" Weisgerber [email protected]
>