summaryrefslogtreecommitdiff
path: root/kjarna_runtime/start_x86_64.S
blob: f7725c621641b2d8b4117312e71150469e887c9a (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <kc.h>

.section .text.start

.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

.section .text

.hidden _rtld_link
.global _rtld_link
.type _rtld_link, @function
_rtld_link:
	push %rbp
	mov %rsp, %rbp
	push %rdx
	push %rsi
	push %rdi
	mov 8(%rbp), %rdi
	mov 16(%rbp), %rsi
	push %rbp
	mov %rsp, %rbp
	and $-0x10, %rsp
	call kc_dynamic_link
	mov %rbp, %rsp
	pop %rbp
	pop %rdi
	pop %rsi
	pop %rdx
	mov %rbp, %rsp
	pop %rbp
	add $0x10, %rsp
	jmp *(%rax)
.size _rtld_link, . - _rtld_link