aboutsummaryrefslogtreecommitdiff
path: root/boot.S
blob: 90cf9d1b9e6ec9df4c742389d6eb4f3d7e0f6d5c (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
        .set ALIGN,      1<<0
        .set MEMINFO,    1<<1
        .set FLAGS,      ALIGN | MEMINFO
        .set MAGIC,      0x1BADB002 # "1 Bad Boot"
        .set CHECKSUM,   -(MAGIC + FLAGS)

.section .multiboot
        .align 4
multiboot_header:
        .long MAGIC
        .long FLAGS
        .long CHECKSUM

.section .stack
stack_bottom:                   # Stack grows up in addresses, so bottom is
                                # lower than the top
        .skip 32768             # 32KB stack
stack_top:

.section .text
        .global _start
        .type _start, @function
_start:                         # This is where execution begins
        movl $stack_bottom, %esp        # Initialize the stack
        push %ebp               # Add register ebp to the arguments of kernel_main
        call kernel_main        # Start the kernel, shouldn't return
        cli
        hlt
.kernel_hang:                   # Idle
        jmp .kernel_hang
        .size _start, . - _start