summaryrefslogtreecommitdiff
path: root/kc/entry_x86_64.S
blob: c42633564cd1f12487832fa7ad78dda21130d2b0 (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
31
32
33
34
35
36
37
38
#include <kc.h>

.section .text.start

.hidden kc_entry
.global kc_entry
.type kc_entry, @function
kc_entry:
    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 kc_main
    mov %rbp, %rsp
    pop %rbp
    ret
.size kc_entry, . - kc_entry

.section .text

.hidden kc_resolve_symbol
.global kc_resolve_symbol
.type kc_resolve_symbol, @function
kc_resolve_symbol:
    cli
    hlt
    jmp kc_resolve_symbol
.size kc_resolve_symbol, . - kc_resolve_symbol