lkml.org 
[lkml]   [2023]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] nolibc: optimise _start() on x86_64
    Just jump into _start_c, it is not going to return anyway.

    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    ---

    Also, kernel clears all registers before starting process,
    I'm not sure why

    xor ebp, ebp

    was added.

    tools/include/nolibc/arch-x86_64.h | 3 +--
    1 file changed, 1 insertion(+), 2 deletions(-)

    --- a/tools/include/nolibc/arch-x86_64.h
    +++ b/tools/include/nolibc/arch-x86_64.h
    @@ -167,8 +167,7 @@ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_
    "xor %ebp, %ebp\n" /* zero the stack frame */
    "mov %rsp, %rdi\n" /* save stack pointer to %rdi, as arg1 of _start_c */
    "and $-16, %rsp\n" /* %rsp must be 16-byte aligned before call */
    - "call _start_c\n" /* transfer to c runtime */
    - "hlt\n" /* ensure it does not return */
    + "jmp _start_c\n" /* transfer to c runtime */
    );
    __builtin_unreachable();
    }
    \
     
     \ /
      Last update: 2023-12-02 13:45    [W:6.065 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site