On 03/02/16 14:09, Borislav Petkov wrote:
> On Wed, Mar 02, 2016 at 01:54:50PM -0800, H. Peter Anvin wrote:
>> A relocating bootloader is one that doesn't load the kernel at
>> CONFIG_PHYSICAL_ADDRESS.  The EFI stub is one example.
>>
>> __START_KERNEL_map is not relocated.  On x86-64 we do relocation by
>> pointing the page tables at a different address.
>>
>> So I really think we need this to be a leaq, so we take a nonstandard
>> load address into consideration.
> 
> Hmm, but __START_KERNEL_map is a simple macro:
> 
> #define __START_KERNEL_map      _AC(0xffffffff80000000, UL)

That should not be a problem.
> 
> Ok, I think you want to do something like this for stack_start too:
> 
>         /*
>          * Compute the delta between the address I am compiled to run at and 
> the
>          * address I am actually running at.
>          */
>         leaq    _text(%rip), %rbp
>         subq    $_text - __START_KERNEL_map, %rbp
>       ...
> 
> in the normal case %rbp is 0, of course.
> 

Not sure if we need a reference to _text here.

        -hpa

Reply via email to