lkml.org 
[lkml]   [2018]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/4] x86/boot/compressed/64: Use stack from trampoline memory
    Date
    As the first step on using trampoline memory, let's make 32-bit code use
    stack there.

    Separate stack is required to return back from trampoline and we cannot
    user stack from 64-bit mode as it may be above 4G.

    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    ---
    arch/x86/boot/compressed/head_64.S | 6 ++++++
    1 file changed, 6 insertions(+)

    diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
    index f0c3a2f7e528..0014459d9bcb 100644
    --- a/arch/x86/boot/compressed/head_64.S
    +++ b/arch/x86/boot/compressed/head_64.S
    @@ -33,6 +33,7 @@
    #include <asm/processor-flags.h>
    #include <asm/asm-offsets.h>
    #include <asm/bootparam.h>
    +#include "pgtable.h"

    /*
    * Locally defined symbols should be marked hidden:
    @@ -359,6 +360,8 @@ ENTRY(startup_64)
    pushq %rax
    lretq
    lvl5:
    + /* Restore the stack, the 32-bit trampoline uses its own stack */
    + leaq boot_stack_end(%rbx), %rsp

    /*
    * cleanup_trampoline() would restore trampoline memory.
    @@ -513,6 +516,9 @@ compatible_mode:
    movl %eax, %ds
    movl %eax, %ss

    + /* Setup new stack */
    + leal TRAMPOLINE_32BIT_STACK_END(%ecx), %esp
    +
    /* Disable paging */
    movl %cr0, %eax
    btrl $X86_CR0_PG_BIT, %eax
    --
    2.16.1
    \
     
     \ /
      Last update: 2018-03-12 11:04    [W:2.372 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site