summaryrefslogtreecommitdiff
path: root/src/boot.s
blob: a0f0c2ea4b57a7b3bbafc18a1666568666f167fa (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
.set ALIGN,    1<<0
.set MEMINFO,  1<<1
.set FLAGS,    ALIGN | MEMINFO
.set MAGIC,    0x1BADB002
.set CHECKSUM, -(MAGIC + FLAGS)
 
.section .multiboot
.align 4
.long MAGIC
.long FLAGS
.long CHECKSUM

.global _start
.global load_gdt

load_gdt:
    movl 4(%esp), %edx
    lgdt (%edx)
    ret

.section .bss
.align 16
stack_bottom:
.skip 16384 # 16 KiB
stack_top:

.section .text
.type _start, @function
_start:
	call init_gdt_table
	mov 0x10, %ax
	mov %ds, %ax
	mov %es, %ax
	mov %fs, %ax
	mov %gs, %ax
	mov %ss, %ax
	mov $stack_top, %esp
	cli
	call _init
	call kernel_main
1:	hlt
	jmp 1b
 
.size _start, . - _start