summaryrefslogtreecommitdiff
path: root/service/arch/x86_64/start.S
blob: a9d5ada42b000d8a67b2e253803776cdaaea94b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.section .text.start

.extern kc_image_base;
.extern _DYNAMIC;
.extern kc_dynamic_init;
.extern kjarna_entry

.hidden _start
.global _start
.type _start, @function
_start:
    push %rbp
    push %rdi
    push %rsi
    mov %rsp, %rbp
    and $-0x10, %rsp
    lea kc_image_base(%rip), %rdi
    lea _DYNAMIC(%rip), %rsi
    call kc_dynamic_init
    mov %rbp, %rsp
    pop %rsi
    pop %rdi
    mov %rsp, %rbp
    and $-0x10, %rsp
    call kjarna_entry
    mov %rbp, %rsp
    pop %rbp
    ret
.size _start, . - _start