aboutsummaryrefslogtreecommitdiff
path: root/boot/head.S
blob: 61496651b2670b77460353ac7282168493dd8c37 (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
        .set ALIGN,      1<<0
        .set MEMINFO,    1<<1
        .set GFXMODE,    1<<2 # this flag enables the graphics fields
        .set FLAGS,      ALIGN | MEMINFO | GFXMODE
        .set MAGIC,      0x1BADB002 # multiboot magic
        .set CHECKSUM,   -(MAGIC + FLAGS)

.section .multiboot
        .align 4
multiboot_header:
        .long MAGIC
        .long FLAGS
        .long CHECKSUM
        .long 0
        .long 0
        .long 0
        .long 0
        .long 0
        .long 0
        .long 0 # screen height (don't care)
        .long 0 # screen width (don't care)
        .long 32 # screen BPP: MUST be 32

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

.section .text
        .global _start
        .type _start, @function
_start:
        cli
        movl $stack_top, %esp
        push %eax # multiboot magic
        push %ebx # multiboot header
        call main
        cli
        hlt
.Lhang:                   # Idle
        jmp .Lhang